Repository: PrefectHQ/ui
Branch: master
Commit: 991683a4b050
Files: 1132
Total size: 4.3 MB
Directory structure:
gitextract_a0dbiq0z/
├── .browserslistrc
├── .dockerignore
├── .eslintignore
├── .eslintrc.js
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug---.md
│ │ └── general---.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── codeql-config.yml
│ └── workflows/
│ └── codeql-analysis.yml
├── .gitignore
├── .nvmrc
├── .prettierignore
├── .prettierrc.js
├── .salesforce_env_development
├── .salesforce_env_production
├── .stylelintignore
├── Changelog.md
├── Dockerfile
├── LICENSE
├── README.md
├── babel.config.js
├── changelog-template.hbs
├── export.sh
├── file-downloader.js
├── intercept.sh
├── jest.config.js
├── netlify.toml
├── nginx.conf
├── package.json
├── postcss.config.js
├── public/
│ ├── _redirects
│ ├── browserconfig.xml
│ ├── fonts/
│ │ ├── font-awesome/
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── all.css
│ │ │ │ ├── brands.css
│ │ │ │ ├── duotone.css
│ │ │ │ ├── fontawesome.css
│ │ │ │ ├── regular.css
│ │ │ │ ├── solid.css
│ │ │ │ └── svg-with-js.css
│ │ │ ├── current-ui.yaml
│ │ │ ├── js/
│ │ │ │ ├── all.js
│ │ │ │ ├── brands.js
│ │ │ │ ├── duotone.js
│ │ │ │ ├── fontawesome.js
│ │ │ │ ├── regular.js
│ │ │ │ └── solid.js
│ │ │ ├── js-packages/
│ │ │ │ └── @fortawesome/
│ │ │ │ ├── fontawesome-common-types/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ └── package.json
│ │ │ │ ├── fontawesome-pro/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── all.css
│ │ │ │ │ │ ├── brands.css
│ │ │ │ │ │ ├── duotone.css
│ │ │ │ │ │ ├── fontawesome.css
│ │ │ │ │ │ ├── regular.css
│ │ │ │ │ │ ├── solid.css
│ │ │ │ │ │ └── svg-with-js.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── all.js
│ │ │ │ │ │ ├── brands.js
│ │ │ │ │ │ ├── duotone.js
│ │ │ │ │ │ ├── fontawesome.js
│ │ │ │ │ │ ├── regular.js
│ │ │ │ │ │ └── solid.js
│ │ │ │ │ ├── less/
│ │ │ │ │ │ ├── _animated.less
│ │ │ │ │ │ ├── _bordered-pulled.less
│ │ │ │ │ │ ├── _core.less
│ │ │ │ │ │ ├── _fixed-width.less
│ │ │ │ │ │ ├── _icons.less
│ │ │ │ │ │ ├── _larger.less
│ │ │ │ │ │ ├── _list.less
│ │ │ │ │ │ ├── _mixins.less
│ │ │ │ │ │ ├── _rotated-flipped.less
│ │ │ │ │ │ ├── _screen-reader.less
│ │ │ │ │ │ ├── _stacked.less
│ │ │ │ │ │ ├── _variables.less
│ │ │ │ │ │ ├── brands.less
│ │ │ │ │ │ ├── duotone.less
│ │ │ │ │ │ ├── fontawesome.less
│ │ │ │ │ │ ├── regular.less
│ │ │ │ │ │ └── solid.less
│ │ │ │ │ ├── metadata/
│ │ │ │ │ │ ├── categories.yml
│ │ │ │ │ │ ├── icons.yml
│ │ │ │ │ │ └── sponsors.yml
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── scss/
│ │ │ │ │ ├── _animated.scss
│ │ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ │ ├── _core.scss
│ │ │ │ │ ├── _fixed-width.scss
│ │ │ │ │ ├── _icons.scss
│ │ │ │ │ ├── _larger.scss
│ │ │ │ │ ├── _list.scss
│ │ │ │ │ ├── _mixins.scss
│ │ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ │ ├── _screen-reader.scss
│ │ │ │ │ ├── _stacked.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ ├── brands.scss
│ │ │ │ │ ├── duotone.scss
│ │ │ │ │ ├── fontawesome.scss
│ │ │ │ │ ├── regular.scss
│ │ │ │ │ └── solid.scss
│ │ │ │ ├── fontawesome-svg-core/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.es.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── styles.css
│ │ │ │ ├── pro-brands-svg-icons/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── faAws.d.ts
│ │ │ │ │ ├── faAws.js
│ │ │ │ │ ├── faCcAmazonPay.d.ts
│ │ │ │ │ ├── faCcAmazonPay.js
│ │ │ │ │ ├── faCcAmex.d.ts
│ │ │ │ │ ├── faCcAmex.js
│ │ │ │ │ ├── faCcApplePay.d.ts
│ │ │ │ │ ├── faCcApplePay.js
│ │ │ │ │ ├── faCcDinersClub.d.ts
│ │ │ │ │ ├── faCcDinersClub.js
│ │ │ │ │ ├── faCcDiscover.d.ts
│ │ │ │ │ ├── faCcDiscover.js
│ │ │ │ │ ├── faCcJcb.d.ts
│ │ │ │ │ ├── faCcJcb.js
│ │ │ │ │ ├── faCcMastercard.d.ts
│ │ │ │ │ ├── faCcMastercard.js
│ │ │ │ │ ├── faCcPaypal.d.ts
│ │ │ │ │ ├── faCcPaypal.js
│ │ │ │ │ ├── faCcStripe.d.ts
│ │ │ │ │ ├── faCcStripe.js
│ │ │ │ │ ├── faCcVisa.d.ts
│ │ │ │ │ ├── faCcVisa.js
│ │ │ │ │ ├── faDiscourse.d.ts
│ │ │ │ │ ├── faDiscourse.js
│ │ │ │ │ ├── faDocker.d.ts
│ │ │ │ │ ├── faDocker.js
│ │ │ │ │ ├── faGithub.d.ts
│ │ │ │ │ ├── faGithub.js
│ │ │ │ │ ├── faInstagram.d.ts
│ │ │ │ │ ├── faInstagram.js
│ │ │ │ │ ├── faMicrosoft.d.ts
│ │ │ │ │ ├── faMicrosoft.js
│ │ │ │ │ ├── faRev.d.ts
│ │ │ │ │ ├── faRev.js
│ │ │ │ │ ├── faSlack.d.ts
│ │ │ │ │ ├── faSlack.js
│ │ │ │ │ ├── faTwitter.d.ts
│ │ │ │ │ ├── faTwitter.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.es.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── pro-duotone-svg-icons/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── faAbacus.d.ts
│ │ │ │ │ ├── faAbacus.js
│ │ │ │ │ ├── faAlignSlash.d.ts
│ │ │ │ │ ├── faAlignSlash.js
│ │ │ │ │ ├── faAtomAlt.d.ts
│ │ │ │ │ ├── faAtomAlt.js
│ │ │ │ │ ├── faBadgeCheck.d.ts
│ │ │ │ │ ├── faBadgeCheck.js
│ │ │ │ │ ├── faBell.d.ts
│ │ │ │ │ ├── faBell.js
│ │ │ │ │ ├── faBooks.d.ts
│ │ │ │ │ ├── faBooks.js
│ │ │ │ │ ├── faBracketsCurly.d.ts
│ │ │ │ │ ├── faBracketsCurly.js
│ │ │ │ │ ├── faChartNetwork.d.ts
│ │ │ │ │ ├── faChartNetwork.js
│ │ │ │ │ ├── faChartScatter.d.ts
│ │ │ │ │ ├── faChartScatter.js
│ │ │ │ │ ├── faCheck.d.ts
│ │ │ │ │ ├── faCheck.js
│ │ │ │ │ ├── faCircle.d.ts
│ │ │ │ │ ├── faCircle.js
│ │ │ │ │ ├── faClouds.d.ts
│ │ │ │ │ ├── faClouds.js
│ │ │ │ │ ├── faCogs.d.ts
│ │ │ │ │ ├── faCogs.js
│ │ │ │ │ ├── faCommentDots.d.ts
│ │ │ │ │ ├── faCommentDots.js
│ │ │ │ │ ├── faConciergeBell.d.ts
│ │ │ │ │ ├── faConciergeBell.js
│ │ │ │ │ ├── faDotCircle.d.ts
│ │ │ │ │ ├── faDotCircle.js
│ │ │ │ │ ├── faEnvelope.d.ts
│ │ │ │ │ ├── faEnvelope.js
│ │ │ │ │ ├── faExchangeAlt.d.ts
│ │ │ │ │ ├── faExchangeAlt.js
│ │ │ │ │ ├── faFileAlt.d.ts
│ │ │ │ │ ├── faFileAlt.js
│ │ │ │ │ ├── faFileCode.d.ts
│ │ │ │ │ ├── faFileCode.js
│ │ │ │ │ ├── faGlobe.d.ts
│ │ │ │ │ ├── faGlobe.js
│ │ │ │ │ ├── faGlobeAfrica.d.ts
│ │ │ │ │ ├── faGlobeAfrica.js
│ │ │ │ │ ├── faGlobeAmericas.d.ts
│ │ │ │ │ ├── faGlobeAmericas.js
│ │ │ │ │ ├── faGlobeAsia.d.ts
│ │ │ │ │ ├── faGlobeAsia.js
│ │ │ │ │ ├── faGlobeEurope.d.ts
│ │ │ │ │ ├── faGlobeEurope.js
│ │ │ │ │ ├── faGraduationCap.d.ts
│ │ │ │ │ ├── faGraduationCap.js
│ │ │ │ │ ├── faHistory.d.ts
│ │ │ │ │ ├── faHistory.js
│ │ │ │ │ ├── faKey.d.ts
│ │ │ │ │ ├── faKey.js
│ │ │ │ │ ├── faKeySkeleton.d.ts
│ │ │ │ │ ├── faKeySkeleton.js
│ │ │ │ │ ├── faLaptop.d.ts
│ │ │ │ │ ├── faLaptop.js
│ │ │ │ │ ├── faLaptopCode.d.ts
│ │ │ │ │ ├── faLaptopCode.js
│ │ │ │ │ ├── faLaptopHouse.d.ts
│ │ │ │ │ ├── faLaptopHouse.js
│ │ │ │ │ ├── faLifeRing.d.ts
│ │ │ │ │ ├── faLifeRing.js
│ │ │ │ │ ├── faLightbulb.d.ts
│ │ │ │ │ ├── faLightbulb.js
│ │ │ │ │ ├── faListAlt.d.ts
│ │ │ │ │ ├── faListAlt.js
│ │ │ │ │ ├── faListUl.d.ts
│ │ │ │ │ ├── faListUl.js
│ │ │ │ │ ├── faLockAlt.d.ts
│ │ │ │ │ ├── faLockAlt.js
│ │ │ │ │ ├── faMapMarkerAlt.d.ts
│ │ │ │ │ ├── faMapMarkerAlt.js
│ │ │ │ │ ├── faMoonStars.d.ts
│ │ │ │ │ ├── faMoonStars.js
│ │ │ │ │ ├── faNetworkWired.d.ts
│ │ │ │ │ ├── faNetworkWired.js
│ │ │ │ │ ├── faPlanetRinged.d.ts
│ │ │ │ │ ├── faPlanetRinged.js
│ │ │ │ │ ├── faQuestionCircle.d.ts
│ │ │ │ │ ├── faQuestionCircle.js
│ │ │ │ │ ├── faQuoteLeft.d.ts
│ │ │ │ │ ├── faQuoteLeft.js
│ │ │ │ │ ├── faRandom.d.ts
│ │ │ │ │ ├── faRandom.js
│ │ │ │ │ ├── faRocket.d.ts
│ │ │ │ │ ├── faRocket.js
│ │ │ │ │ ├── faSearch.d.ts
│ │ │ │ │ ├── faSearch.js
│ │ │ │ │ ├── faServer.d.ts
│ │ │ │ │ ├── faServer.js
│ │ │ │ │ ├── faSignOut.d.ts
│ │ │ │ │ ├── faSignOut.js
│ │ │ │ │ ├── faSirenOn.d.ts
│ │ │ │ │ ├── faSirenOn.js
│ │ │ │ │ ├── faSmile.d.ts
│ │ │ │ │ ├── faSmile.js
│ │ │ │ │ ├── faSnowman.d.ts
│ │ │ │ │ ├── faSnowman.js
│ │ │ │ │ ├── faSun.d.ts
│ │ │ │ │ ├── faSun.js
│ │ │ │ │ ├── faTasks.d.ts
│ │ │ │ │ ├── faTasks.js
│ │ │ │ │ ├── faUniversity.d.ts
│ │ │ │ │ ├── faUniversity.js
│ │ │ │ │ ├── faUser.d.ts
│ │ │ │ │ ├── faUser.js
│ │ │ │ │ ├── faUserHardHat.d.ts
│ │ │ │ │ ├── faUserHardHat.js
│ │ │ │ │ ├── faUserShield.d.ts
│ │ │ │ │ ├── faUserShield.js
│ │ │ │ │ ├── faUsers.d.ts
│ │ │ │ │ ├── faUsers.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.es.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── pro-regular-svg-icons/
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── attribution.js
│ │ │ │ │ ├── faCheckCircle.d.ts
│ │ │ │ │ ├── faCheckCircle.js
│ │ │ │ │ ├── faDesktop.d.ts
│ │ │ │ │ ├── faDesktop.js
│ │ │ │ │ ├── faEye.d.ts
│ │ │ │ │ ├── faEye.js
│ │ │ │ │ ├── faFileCode.d.ts
│ │ │ │ │ ├── faFileCode.js
│ │ │ │ │ ├── faInfo.d.ts
│ │ │ │ │ ├── faInfo.js
│ │ │ │ │ ├── faInfoCircle.d.ts
│ │ │ │ │ ├── faInfoCircle.js
│ │ │ │ │ ├── faPlus.d.ts
│ │ │ │ │ ├── faPlus.js
│ │ │ │ │ ├── faQuestionCircle.d.ts
│ │ │ │ │ ├── faQuestionCircle.js
│ │ │ │ │ ├── faRocket.d.ts
│ │ │ │ │ ├── faRocket.js
│ │ │ │ │ ├── faSave.d.ts
│ │ │ │ │ ├── faSave.js
│ │ │ │ │ ├── faSlash.d.ts
│ │ │ │ │ ├── faSlash.js
│ │ │ │ │ ├── faTimes.d.ts
│ │ │ │ │ ├── faTimes.js
│ │ │ │ │ ├── faUndo.d.ts
│ │ │ │ │ ├── faUndo.js
│ │ │ │ │ ├── faUndoAlt.d.ts
│ │ │ │ │ ├── faUndoAlt.js
│ │ │ │ │ ├── faUser.d.ts
│ │ │ │ │ ├── faUser.js
│ │ │ │ │ ├── faUserFriends.d.ts
│ │ │ │ │ ├── faUserFriends.js
│ │ │ │ │ ├── faUsers.d.ts
│ │ │ │ │ ├── faUsers.js
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.es.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ └── pro-solid-svg-icons/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── attribution.js
│ │ │ │ ├── faAlarmExclamation.d.ts
│ │ │ │ ├── faAlarmExclamation.js
│ │ │ │ ├── faAlignLeft.d.ts
│ │ │ │ ├── faAlignLeft.js
│ │ │ │ ├── faBookDead.d.ts
│ │ │ │ ├── faBookDead.js
│ │ │ │ ├── faCheck.d.ts
│ │ │ │ ├── faCheck.js
│ │ │ │ ├── faCircle.d.ts
│ │ │ │ ├── faCircle.js
│ │ │ │ ├── faCloud.d.ts
│ │ │ │ ├── faCloud.js
│ │ │ │ ├── faCreditCard.d.ts
│ │ │ │ ├── faCreditCard.js
│ │ │ │ ├── faDesktop.d.ts
│ │ │ │ ├── faDesktop.js
│ │ │ │ ├── faEnvelope.d.ts
│ │ │ │ ├── faEnvelope.js
│ │ │ │ ├── faEye.d.ts
│ │ │ │ ├── faEye.js
│ │ │ │ ├── faFingerprint.d.ts
│ │ │ │ ├── faFingerprint.js
│ │ │ │ ├── faHistory.d.ts
│ │ │ │ ├── faHistory.js
│ │ │ │ ├── faHome.d.ts
│ │ │ │ ├── faHome.js
│ │ │ │ ├── faPlus.d.ts
│ │ │ │ ├── faPlus.js
│ │ │ │ ├── faRobot.d.ts
│ │ │ │ ├── faRobot.js
│ │ │ │ ├── faRocket.d.ts
│ │ │ │ ├── faRocket.js
│ │ │ │ ├── faSave.d.ts
│ │ │ │ ├── faSave.js
│ │ │ │ ├── faSlash.d.ts
│ │ │ │ ├── faSlash.js
│ │ │ │ ├── faSpinnerThird.d.ts
│ │ │ │ ├── faSpinnerThird.js
│ │ │ │ ├── faSquareFull.d.ts
│ │ │ │ ├── faSquareFull.js
│ │ │ │ ├── faTimes.d.ts
│ │ │ │ ├── faTimes.js
│ │ │ │ ├── faTimesCircle.d.ts
│ │ │ │ ├── faTimesCircle.js
│ │ │ │ ├── faUndo.d.ts
│ │ │ │ ├── faUndo.js
│ │ │ │ ├── faUndoAlt.d.ts
│ │ │ │ ├── faUndoAlt.js
│ │ │ │ ├── faUser.d.ts
│ │ │ │ ├── faUser.js
│ │ │ │ ├── faUsers.d.ts
│ │ │ │ ├── faUsers.js
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.es.js
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── less/
│ │ │ │ ├── _animated.less
│ │ │ │ ├── _bordered-pulled.less
│ │ │ │ ├── _core.less
│ │ │ │ ├── _fixed-width.less
│ │ │ │ ├── _icons.less
│ │ │ │ ├── _larger.less
│ │ │ │ ├── _list.less
│ │ │ │ ├── _mixins.less
│ │ │ │ ├── _rotated-flipped.less
│ │ │ │ ├── _screen-reader.less
│ │ │ │ ├── _stacked.less
│ │ │ │ ├── _variables.less
│ │ │ │ ├── brands.less
│ │ │ │ ├── duotone.less
│ │ │ │ ├── fontawesome.less
│ │ │ │ ├── regular.less
│ │ │ │ └── solid.less
│ │ │ ├── metadata/
│ │ │ │ ├── categories.yml
│ │ │ │ ├── icons.json
│ │ │ │ ├── icons.yml
│ │ │ │ └── sponsors.yml
│ │ │ ├── otfs/
│ │ │ │ ├── Font Awesome 5 Brands-Regular-400.otf
│ │ │ │ ├── Font Awesome 5 Duotone-Solid-900.otf
│ │ │ │ ├── Font Awesome 5 Pro-Regular-400.otf
│ │ │ │ ├── Font Awesome 5 Pro-Solid-900.otf
│ │ │ │ └── README.md
│ │ │ └── scss/
│ │ │ ├── _animated.scss
│ │ │ ├── _bordered-pulled.scss
│ │ │ ├── _core.scss
│ │ │ ├── _fixed-width.scss
│ │ │ ├── _icons.scss
│ │ │ ├── _larger.scss
│ │ │ ├── _list.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _rotated-flipped.scss
│ │ │ ├── _screen-reader.scss
│ │ │ ├── _stacked.scss
│ │ │ ├── _variables.scss
│ │ │ ├── brands.scss
│ │ │ ├── duotone.scss
│ │ │ ├── fontawesome.scss
│ │ │ ├── regular.scss
│ │ │ └── solid.scss
│ │ └── fonts.css
│ ├── index.html
│ ├── settings.json
│ └── site.webmanifest
├── requirements.txt
├── runtime.txt
├── src/
│ ├── App.vue
│ ├── __mocks__/
│ │ └── apollo.js
│ ├── apollo.js
│ ├── app.js
│ ├── assets/
│ │ ├── demo-flow/
│ │ │ └── demo-flow.json
│ │ └── fonts/
│ │ └── prefect-icons/
│ │ ├── style.scss
│ │ └── variables.scss
│ ├── auth/
│ │ ├── authentication.js
│ │ ├── authorization.js
│ │ └── index.js
│ ├── components/
│ │ ├── AcceptConfirmInputRow.vue
│ │ ├── Alert.vue
│ │ ├── Artifacts/
│ │ │ ├── Artifact-NodeTree.vue
│ │ │ ├── Artifact.vue
│ │ │ └── Artifacts.vue
│ │ ├── BreadCrumbs.vue
│ │ ├── CancelButton.vue
│ │ ├── Card-Title.vue
│ │ ├── ChartCard/
│ │ │ ├── ChartCard.vue
│ │ │ ├── ChartCardHeader-Ring.vue
│ │ │ └── ChartCardHeader-Simple.vue
│ │ ├── CloudHookForm.vue
│ │ ├── ConcurrencyInfo.vue
│ │ ├── ConfirmDialog.vue
│ │ ├── CustomInputs/
│ │ │ ├── BaseCodeTextarea.vue
│ │ │ ├── BaseDictInput.vue
│ │ │ ├── CheckboxDictInput.vue
│ │ │ ├── CodeInput.vue
│ │ │ ├── DictInput.vue
│ │ │ ├── DictInput2.vue
│ │ │ ├── Highlight.vue
│ │ │ ├── JsonInput.vue
│ │ │ ├── JsonInput2.vue
│ │ │ ├── KeyValueInput.vue
│ │ │ ├── KeyValueTypeInputs/
│ │ │ │ ├── ArrayInput.vue
│ │ │ │ ├── BooleanInput.vue
│ │ │ │ ├── DateInput.vue
│ │ │ │ ├── JsonParsingInput.vue
│ │ │ │ ├── NullInput.vue
│ │ │ │ ├── NumberInput.vue
│ │ │ │ ├── ObjectInput.vue
│ │ │ │ ├── StringInput.vue
│ │ │ │ └── index.js
│ │ │ ├── ListInput.vue
│ │ │ ├── MultiLineInput.vue
│ │ │ ├── ResettableWrapper.vue
│ │ │ ├── YamlInput.vue
│ │ │ ├── YamlInput2.vue
│ │ │ └── readonlyProps.js
│ │ ├── DateTime.vue
│ │ ├── DeleteFlowButton.vue
│ │ ├── DurationSpan.vue
│ │ ├── EditableTextField.vue
│ │ ├── EmphasizedIcon.vue
│ │ ├── EndOfLifeBanner.vue
│ │ ├── ExternalLink.vue
│ │ ├── Feedback.vue
│ │ ├── Footer.vue
│ │ ├── FullPagination.vue
│ │ ├── Functional/
│ │ │ ├── CronClock.vue
│ │ │ ├── IntervalClock.vue
│ │ │ ├── Transition-Height.js
│ │ │ └── TruncatedSpan.vue
│ │ ├── GetCloud.vue
│ │ ├── GlobalSearchBar/
│ │ │ ├── GlobalSearch.vue
│ │ │ ├── GlobalSearchIcon.vue
│ │ │ ├── GlobalSearchResult.vue
│ │ │ └── MResult.vue
│ │ ├── HavingTrouble.vue
│ │ ├── HeartbeatTimeline.vue
│ │ ├── Icons/
│ │ │ ├── Hashicorp.vue
│ │ │ ├── Nomad.vue
│ │ │ ├── PagerDuty.vue
│ │ │ ├── Prefect.vue
│ │ │ ├── mr.vue
│ │ │ ├── newPagerDuty.vue
│ │ │ └── twilio.vue
│ │ ├── KeyValueTable.vue
│ │ ├── Label.vue
│ │ ├── LabelEdit.vue
│ │ ├── LabelWarning.vue
│ │ ├── LastTenRuns.vue
│ │ ├── License/
│ │ │ ├── ChangePlanDialog.vue
│ │ │ └── UpgradeAlert.vue
│ │ ├── LogsCard/
│ │ │ ├── DownloadMenu.vue
│ │ │ ├── FilterMenu.vue
│ │ │ ├── LogRow.vue
│ │ │ └── LogsCard.vue
│ │ ├── MenuTooltip.vue
│ │ ├── Nav/
│ │ │ ├── ApplicationNav.vue
│ │ │ ├── ChatLauncher.vue
│ │ │ ├── ConnectionMenu.vue
│ │ │ ├── CurrentTime.vue
│ │ │ ├── HelpMenu.vue
│ │ │ ├── Links.vue
│ │ │ ├── MenuLink.vue
│ │ │ ├── NotificationMenu.vue
│ │ │ ├── TeamMenu.vue
│ │ │ ├── TeamSideNav.vue
│ │ │ ├── TeamSideNavButton.vue
│ │ │ ├── TeamSwitcher.vue
│ │ │ └── UserMenu.vue
│ │ ├── NavTabBar.vue
│ │ ├── Parameters.vue
│ │ ├── ParametersForm.vue
│ │ ├── PaymentCard.vue
│ │ ├── PlanCard.vue
│ │ ├── Plans/
│ │ │ ├── CardDetails.vue
│ │ │ ├── Enterprise.vue
│ │ │ ├── PlanSelectionForm.vue
│ │ │ ├── Standard.vue
│ │ │ └── Starter.vue
│ │ ├── PrefectSchedule.vue
│ │ ├── ResumeButton.vue
│ │ ├── RunConfig/
│ │ │ ├── ArgumentHeading.vue
│ │ │ ├── ArgumentInput.vue
│ │ │ ├── ArgumentReference.vue
│ │ │ ├── DateTimeSelector.vue
│ │ │ ├── DockerRunForm.vue
│ │ │ ├── EcsRunForm.vue
│ │ │ ├── KubernetesRunForm.vue
│ │ │ ├── LocalRunForm.vue
│ │ │ ├── RunConfig.vue
│ │ │ ├── RunConfigTypeButton.vue
│ │ │ ├── RunConfigTypeSelect.vue
│ │ │ ├── UniversalRunForm.vue
│ │ │ ├── adjectives.js
│ │ │ └── animals.js
│ │ ├── RunStateTooltip.vue
│ │ ├── ScheduleToggle.vue
│ │ ├── Schematics/
│ │ │ ├── Legend.vue
│ │ │ ├── Preview-Dynamic.vue
│ │ │ ├── Preview-SearchResult.vue
│ │ │ ├── Preview-Static.vue
│ │ │ ├── Preview-Tile.vue
│ │ │ ├── Schematic-Flow.vue
│ │ │ ├── Schematic-Node.vue
│ │ │ └── Tooltip.vue
│ │ ├── SetStateDialog.vue
│ │ ├── Snackbars/
│ │ │ └── Snackbars.vue
│ │ ├── SupportBanner.vue
│ │ ├── SystemActions/
│ │ │ ├── CancelAll.vue
│ │ │ ├── ClearLate.vue
│ │ │ └── WorkQueue.vue
│ │ ├── TaskRunMenu.vue
│ │ ├── TaskRunTooltip.vue
│ │ ├── TeamListItem.vue
│ │ ├── TimelineTooltip.vue
│ │ ├── Tree/
│ │ │ └── Tree.vue
│ │ ├── TutorialBanner.vue
│ │ ├── UpgradeBadge.vue
│ │ ├── Visualizations/
│ │ │ ├── BarChart.vue
│ │ │ ├── RingChart.vue
│ │ │ ├── StackedLineChart.vue
│ │ │ ├── Timeline/
│ │ │ │ └── Bar.js
│ │ │ └── Timeline.vue
│ │ └── WorkQueueBanner.vue
│ ├── directives/
│ │ └── disable-read-only.js
│ ├── filters/
│ │ ├── duration.js
│ │ ├── filterOnePercent.js
│ │ ├── round.js
│ │ └── shorten.js
│ ├── graphql/
│ │ ├── Account/
│ │ │ ├── invitations.gql
│ │ │ └── license-users.gql
│ │ ├── Agent/
│ │ │ ├── FlowRuns.gql
│ │ │ ├── agent-hooks.gql
│ │ │ ├── agents.js
│ │ │ ├── delete-agent.gql
│ │ │ ├── in-progress-flow-runs.gql
│ │ │ ├── recent-runs.gql
│ │ │ ├── table-flow-runs-count.gql
│ │ │ ├── table-flow-runs.gql
│ │ │ └── timeline-flow-runs.gql
│ │ ├── Artifacts/
│ │ │ ├── task-run-artifacts-aggregate.gql
│ │ │ ├── task-run-artifacts.gql
│ │ │ └── task-run-ids.gql
│ │ ├── Automations/
│ │ │ ├── actions.gql
│ │ │ ├── agent-config-by-pk.gql
│ │ │ ├── agent-config.gql
│ │ │ ├── delete-agent-config.gql
│ │ │ ├── flow-config-by-pk.gql
│ │ │ ├── flow-only-hooks.gql
│ │ │ ├── flows.gql
│ │ │ └── hooks.gql
│ │ ├── Calendar/
│ │ │ ├── calendar-day-flow-runs.gql
│ │ │ ├── calendar-day-ongoing-flow-runs.gql
│ │ │ ├── calendar-day-running-flow-runs.gql
│ │ │ ├── calendar-day-scheduled-flow-runs.gql
│ │ │ ├── calendar-flow-groups.gql
│ │ │ ├── calendar-flow-runs.gql
│ │ │ ├── calendar-flows.gql
│ │ │ ├── calendar-ongoing-flow-runs.gql
│ │ │ ├── calendar-running-flow-runs.gql
│ │ │ └── calendar-scheduled-flow-runs.gql
│ │ ├── Dashboard/
│ │ │ ├── committed-usage.gql
│ │ │ ├── failures-count.gql
│ │ │ ├── failures-drawer.gql
│ │ │ ├── flow-count.gql
│ │ │ ├── flow-failures.gql
│ │ │ ├── flow-run-drawer.gql
│ │ │ ├── flow-runs-count.gql
│ │ │ ├── flow-runs.gql
│ │ │ ├── flows.js
│ │ │ ├── heartbeat.gql
│ │ │ ├── in-progress-flow-runs.gql
│ │ │ ├── invoice.gql
│ │ │ ├── last-flow-runs.gql
│ │ │ ├── project-name.gql
│ │ │ ├── project.gql
│ │ │ ├── projects.gql
│ │ │ ├── task-failures.gql
│ │ │ ├── timeline-flow-runs.gql
│ │ │ ├── timeline-flow.gql
│ │ │ ├── timeline-scheduled-flow-runs.gql
│ │ │ ├── upcoming-flow-runs-count.gql
│ │ │ ├── upcoming-flow-runs.gql
│ │ │ └── usage.gql
│ │ ├── FirstRunWorkflow/
│ │ │ ├── flow-run.gql
│ │ │ └── project-names.gql
│ │ ├── Flow/
│ │ │ ├── cloud-hooks.gql
│ │ │ ├── errors.gql
│ │ │ ├── flow-by-pk.gql
│ │ │ ├── flow-drawer.gql
│ │ │ ├── flow-run-by-pk.gql
│ │ │ ├── flow-runs.gql
│ │ │ ├── flow-versions-count.gql
│ │ │ ├── flow-versions-runs.gql
│ │ │ ├── flow-versions.js
│ │ │ ├── flow.js
│ │ │ ├── heartbeat.gql
│ │ │ ├── last-flow-run.gql
│ │ │ ├── past-flow-runs.gql
│ │ │ ├── project-names.gql
│ │ │ ├── table-flow-runs-count.gql
│ │ │ ├── table-flow-runs.gql
│ │ │ ├── table-tasks-count.gql
│ │ │ ├── table-tasks.gql
│ │ │ ├── timeline-flow-runs.gql
│ │ │ ├── upcoming-flow-runs.gql
│ │ │ └── version-group.gql
│ │ ├── FlowLabelLimit/
│ │ │ ├── delete-flow-concurrency-limit.gql
│ │ │ ├── flow-label-limit.gql
│ │ │ └── update-flow-concurrency-limit.gql
│ │ ├── FlowLabelUsage/
│ │ │ └── flow-label-usage.gql
│ │ ├── FlowRun/
│ │ │ ├── cancel-flow-run.gql
│ │ │ ├── failed-task-runs.gql
│ │ │ ├── flow-run.js
│ │ │ ├── gantt-task-runs.gql
│ │ │ ├── heartbeat.gql
│ │ │ ├── states-aggregate.gql
│ │ │ ├── states.gql
│ │ │ ├── table-task-runs-count.gql
│ │ │ ├── table-task-runs.gql
│ │ │ ├── task-run-drawer.gql
│ │ │ ├── task-run-ids.gql
│ │ │ ├── task-runs-aggregate.gql
│ │ │ ├── task-runs.gql
│ │ │ ├── timeline-chart-task-runs.gql
│ │ │ └── timeline-chart-tasks.gql
│ │ ├── FlowRunLogs/
│ │ │ └── flow-run-metadata.gql
│ │ ├── GlobalSearch/
│ │ │ ├── search-by-id.gql
│ │ │ └── search-by-name.gql
│ │ ├── Integrations/
│ │ │ └── PagerDutyActions.gql
│ │ ├── KV/
│ │ │ ├── delete-key-value.gql
│ │ │ ├── get-key-value.gql
│ │ │ └── set-key-value.gql
│ │ ├── License/
│ │ │ ├── create-self-serve-license.gql
│ │ │ ├── create-usage-based-license.gql
│ │ │ ├── license.gql
│ │ │ ├── update-customer.gql
│ │ │ ├── update-self-serve-cloud-license.gql
│ │ │ └── update-stripe-customer.gql
│ │ ├── Logs/
│ │ │ ├── flow-run-logs-scoping.gql
│ │ │ ├── flow-run-logs.gql
│ │ │ ├── retrieve-archived-logs.gql
│ │ │ ├── task-run-logs-scoping.gql
│ │ │ └── task-run-logs.gql
│ │ ├── MappedTasks/
│ │ │ └── mapped-children.gql
│ │ ├── Middleware/
│ │ │ ├── flow-group.gql
│ │ │ └── flow.gql
│ │ ├── Mutations/
│ │ │ ├── add-config-to-flow.gql
│ │ │ ├── cancel-flow-run.gql
│ │ │ ├── create-action.gql
│ │ │ ├── create-agent-config.gql
│ │ │ ├── create-agent-sla-failed-hook.gql
│ │ │ ├── create-cloud-hook.gql
│ │ │ ├── create-custom-role.gql
│ │ │ ├── create-flow-run-state-changed-hook.gql
│ │ │ ├── create-flow-run.gql
│ │ │ ├── create-flow-sla-failed-hook.gql
│ │ │ ├── create-flow-sla.gql
│ │ │ ├── create-project.gql
│ │ │ ├── create-runner-token.gql
│ │ │ ├── create-tenant.gql
│ │ │ ├── create-tutorial-flow-run.gql
│ │ │ ├── delete-cloud-hook.gql
│ │ │ ├── delete-flow-group-schedule.gql
│ │ │ ├── delete-flow-run.gql
│ │ │ ├── delete-hook.gql
│ │ │ ├── delete_action.gql
│ │ │ ├── delete_custom-role.gql
│ │ │ ├── deploy-flow.gql
│ │ │ ├── disable-flow-heartbeat.gql
│ │ │ ├── disable-flow-lazarus-process.gql
│ │ │ ├── disable-flow-version-lock.gql
│ │ │ ├── enable-flow-heartbeat.gql
│ │ │ ├── enable-flow-lazarus-process.gql
│ │ │ ├── enable-flow-version-lock.gql
│ │ │ ├── mark-as-read.gql
│ │ │ ├── pause-tenant-work-queue.gql
│ │ │ ├── resume-tenant-work-queue.gql
│ │ │ ├── set-cloud-hook-active.gql
│ │ │ ├── set-cloud-hook-inactive.gql
│ │ │ ├── set-default-params.gql
│ │ │ ├── set-flow-description.gql
│ │ │ ├── set-flow-group-schedule.gql
│ │ │ ├── set-flow-run-labels.gql
│ │ │ ├── set-flow-run-name.gql
│ │ │ ├── set-labels.gql
│ │ │ ├── set-schedule-active.gql
│ │ │ ├── set-schedule-inactive.gql
│ │ │ ├── set-task-run-name.gql
│ │ │ ├── test-cloud-hook.gql
│ │ │ ├── update-custom-role.gql
│ │ │ ├── update-flow-project.gql
│ │ │ └── update-tenant-settings.gql
│ │ ├── Nav/
│ │ │ ├── flow-runs.gql
│ │ │ ├── flow.gql
│ │ │ ├── flows.gql
│ │ │ ├── projects.gql
│ │ │ ├── task.gql
│ │ │ └── tasks.gql
│ │ ├── Notifications/
│ │ │ ├── all-notifications.gql
│ │ │ ├── membership-invitation.gql
│ │ │ ├── notifications-count-unread.gql
│ │ │ ├── notifications-count.gql
│ │ │ ├── notifications.js
│ │ │ └── teams.gql
│ │ ├── Playground/
│ │ │ └── schema.gql
│ │ ├── Project/
│ │ │ ├── flow-ids.gql
│ │ │ ├── flows-aggregate.gql
│ │ │ ├── flows.gql
│ │ │ └── project.gql
│ │ ├── Projects/
│ │ │ ├── projects-aggregate.gql
│ │ │ └── projects.gql
│ │ ├── Schematics/
│ │ │ ├── flow-list.gql
│ │ │ ├── flow-run.gql
│ │ │ ├── flow.gql
│ │ │ ├── task-run.gql
│ │ │ └── task.gql
│ │ ├── Secrets/
│ │ │ ├── delete-secret.gql
│ │ │ └── set-secret.gql
│ │ ├── Task/
│ │ │ ├── activity.gql
│ │ │ ├── heartbeat.gql
│ │ │ ├── last-task-run.gql
│ │ │ ├── table-task-runs-count.gql
│ │ │ ├── table-task-runs.gql
│ │ │ ├── task-drawer.gql
│ │ │ ├── task-runs-count.gql
│ │ │ ├── task-runs-drawer-count.gql
│ │ │ ├── task-runs-drawer.gql
│ │ │ ├── task-runs.gql
│ │ │ └── task.gql
│ │ ├── TaskRun/
│ │ │ ├── activity.gql
│ │ │ ├── dependencies.gql
│ │ │ ├── heartbeat.gql
│ │ │ ├── set-flow-run-states.gql
│ │ │ ├── set-task-run-states.gql
│ │ │ ├── table-mapped-task-runs-count.gql
│ │ │ ├── table-mapped-task-runs.gql
│ │ │ ├── task-run-states-count.gql
│ │ │ ├── task-run-states.gql
│ │ │ ├── task-run.gql
│ │ │ └── utility_downstream_tasks.gql
│ │ ├── TaskTagLimit/
│ │ │ ├── delete-task-concurrency-limit.gql
│ │ │ ├── task-tag-limit.gql
│ │ │ └── update-task-concurrency-limit.gql
│ │ ├── TaskTagUsage/
│ │ │ └── task-tag-usage.gql
│ │ ├── TeamSettings/
│ │ │ ├── actions.gql
│ │ │ ├── cloud-hooks.gql
│ │ │ ├── data-to-clear.js
│ │ │ ├── delete-action.gql
│ │ │ ├── delete-project.gql
│ │ │ ├── flow-version-groups.js
│ │ │ ├── flows.gql
│ │ │ ├── membership-invitation-roles.gql
│ │ │ ├── membership-roles.gql
│ │ │ ├── memberships.gql
│ │ │ ├── modify-project.gql
│ │ │ ├── permissions.gql
│ │ │ ├── project.gql
│ │ │ ├── projects.gql
│ │ │ ├── roles.gql
│ │ │ ├── test-action.gql
│ │ │ └── usage.gql
│ │ ├── Tenant/
│ │ │ ├── accept-membership-invitation.gql
│ │ │ ├── create-enterprise-tenant.gql
│ │ │ ├── create-membership-invitation.gql
│ │ │ ├── delete-enterprise-tenant.gql
│ │ │ ├── delete-membership-invitation.gql
│ │ │ ├── delete-membership.gql
│ │ │ ├── delete-tenant.gql
│ │ │ ├── membership-invitation.gql
│ │ │ ├── membership.gql
│ │ │ ├── pending-invitations-by-email.gql
│ │ │ ├── pending-invitations.gql
│ │ │ ├── set-membership-role.gql
│ │ │ ├── tenant-by-pk.gql
│ │ │ ├── tenant-by-slug.gql
│ │ │ ├── tenant-id-by-membership-id.gql
│ │ │ ├── tenant-secret-names.gql
│ │ │ ├── tenant-token.gql
│ │ │ ├── tenant-users.gql
│ │ │ ├── tenants.js
│ │ │ └── update-tenant.gql
│ │ ├── Tokens/
│ │ │ ├── api-keys.gql
│ │ │ ├── api-tokens.gql
│ │ │ ├── create-api-key.gql
│ │ │ ├── create-api-token.gql
│ │ │ ├── delete-api-key.gql
│ │ │ ├── delete-token.gql
│ │ │ └── user-tokens.gql
│ │ ├── Update/
│ │ │ └── write-run-logs.gql
│ │ ├── User/
│ │ │ ├── create-service-account.gql
│ │ │ ├── delete-service-account.gql
│ │ │ ├── update-user-details.gql
│ │ │ ├── update-user-settings.gql
│ │ │ └── user.gql
│ │ ├── api.gql
│ │ ├── concurrent-runs.gql
│ │ ├── hello.gql
│ │ ├── log-in.gql
│ │ ├── log-out.gql
│ │ ├── refresh-token.gql
│ │ └── support/
│ │ └── send-feedback.gql
│ ├── layouts/
│ │ ├── AgentLayout.vue
│ │ ├── DashboardLargeActivityLayout.vue
│ │ ├── DashboardLargeChartLayout.vue
│ │ ├── DashboardLayout.vue
│ │ ├── FullPageLayout.vue
│ │ ├── ManagementLayout.vue
│ │ ├── NotificationsLayout.vue
│ │ ├── SubPageNav.vue
│ │ ├── TileLayout-Alternate.vue
│ │ ├── TileLayout-Full.vue
│ │ ├── TileLayout.vue
│ │ └── TutorialLayout.vue
│ ├── main.js
│ ├── middleware/
│ │ ├── flowNavGuard.js
│ │ └── prefectAuth.js
│ ├── mixins/
│ │ ├── authMixin.js
│ │ ├── cancelLateRunsMixin.js
│ │ ├── changeStateMixin.js
│ │ ├── cloudHookMixin.js
│ │ ├── eventsMixin.js
│ │ ├── flowRunHistoryMixin.js
│ │ ├── formatTimeMixin.js
│ │ ├── heartbeatMixin.js
│ │ ├── membershipInvitationMixin.js
│ │ ├── parametersMixin.js
│ │ ├── paymentMixin.js
│ │ ├── polling/
│ │ │ ├── pollsAgentsMixin.js
│ │ │ ├── pollsFlowsMixin.js
│ │ │ ├── pollsProjectsMixin.js
│ │ │ └── pollsTenantsMixin.js
│ │ ├── runFlowNow.js
│ │ └── teamProfileMixin.js
│ ├── pages/
│ │ ├── AccessDenied.vue
│ │ ├── Admin/
│ │ │ ├── Account/
│ │ │ │ ├── Account.vue
│ │ │ │ ├── Billing.vue
│ │ │ │ ├── ClearDataDialog.vue
│ │ │ │ ├── License.vue
│ │ │ │ ├── Profile.vue
│ │ │ │ ├── Usage/
│ │ │ │ │ ├── CurrentUsers.vue
│ │ │ │ │ ├── Usage.vue
│ │ │ │ │ ├── UsageCycle.vue
│ │ │ │ │ ├── UsageTimeline.vue
│ │ │ │ │ └── UsageToday.vue
│ │ │ │ └── Users.vue
│ │ │ ├── Admin.vue
│ │ │ └── Teams/
│ │ │ ├── InviteUsers.vue
│ │ │ ├── NewTeam.vue
│ │ │ ├── TeamForm.vue
│ │ │ ├── Teams.vue
│ │ │ └── TeamsOverview.vue
│ │ ├── Agents/
│ │ │ ├── AgentFlowRunHistory.vue
│ │ │ ├── AgentFlowRunTable-Tile.vue
│ │ │ ├── AgentPage.vue
│ │ │ ├── AgentTile.vue
│ │ │ ├── Agents.vue
│ │ │ └── SubmittableRuns.vue
│ │ ├── Auth/
│ │ │ ├── Auth.vue
│ │ │ ├── ForgotPassword.vue
│ │ │ ├── Logout.vue
│ │ │ ├── SignIn.vue
│ │ │ └── SignUp.vue
│ │ ├── Calendar/
│ │ │ ├── Calendar-Day.vue
│ │ │ ├── Calendar-FlowFilter.vue
│ │ │ ├── Calendar-View.vue
│ │ │ ├── FlowName.vue
│ │ │ └── RunMenu.vue
│ │ ├── Dashboard/
│ │ │ ├── Agents-Tile.vue
│ │ │ ├── ApiHealthCheck-Tile.vue
│ │ │ ├── Automations/
│ │ │ │ ├── AddAction.vue
│ │ │ │ ├── AddAutomationCard.vue
│ │ │ │ ├── AutomationCard.vue
│ │ │ │ ├── Automations.vue
│ │ │ │ ├── CreateAgentConfigForm.vue
│ │ │ │ └── DeleteAgentConfig.vue
│ │ │ ├── Dashboard.vue
│ │ │ ├── FailedFlows-Tile.vue
│ │ │ ├── FailedTasks-Tile.vue
│ │ │ ├── FlowRunHeartbeat-Tile.vue
│ │ │ ├── FlowRunHistory-Tile.vue
│ │ │ ├── FlowTable-Tile.vue
│ │ │ ├── InProgress-Tile.vue
│ │ │ ├── NewProject-Dialog.vue
│ │ │ ├── Notifications-Tile.vue
│ │ │ ├── Project-Selector.vue
│ │ │ ├── Summary-Tile.vue
│ │ │ ├── Task-Item.vue
│ │ │ ├── UpcomingRuns-Tile.vue
│ │ │ └── UsageTiles/
│ │ │ ├── CommittedUsage-Tile.vue
│ │ │ ├── CycleUsage-Tile.vue
│ │ │ └── UpgradeUsage-Tile.vue
│ │ ├── Flow/
│ │ │ ├── Actions.vue
│ │ │ ├── Automations-Tile.vue
│ │ │ ├── Describe.vue
│ │ │ ├── Details-Tile.vue
│ │ │ ├── Errors-Tile.vue
│ │ │ ├── Flow.vue
│ │ │ ├── FlowRunHeartbeat-Tile.vue
│ │ │ ├── FlowRunHistory-Tile.vue
│ │ │ ├── FlowRunTable-Tile.vue
│ │ │ ├── Run.vue
│ │ │ ├── Schematic-Tile.vue
│ │ │ ├── Settings/
│ │ │ │ ├── ClockForm.vue
│ │ │ │ ├── ClockForms/
│ │ │ │ │ ├── Cron.vue
│ │ │ │ │ ├── Interval.vue
│ │ │ │ │ └── Simple.vue
│ │ │ │ ├── CloudHooks.vue
│ │ │ │ ├── DefaultParameters.vue
│ │ │ │ ├── General.vue
│ │ │ │ ├── ScheduleParameters.vue
│ │ │ │ └── Schedules.vue
│ │ │ ├── Settings.vue
│ │ │ ├── Summary-Tile.vue
│ │ │ ├── TasksTable-Tile.vue
│ │ │ ├── UpcomingRuns-Tile.vue
│ │ │ └── Versions-Tile.vue
│ │ ├── FlowRun/
│ │ │ ├── Actions.vue
│ │ │ ├── Details-Tile.vue
│ │ │ ├── FlowRun.vue
│ │ │ ├── Restart-Dialog.vue
│ │ │ ├── Schematic-Tile.vue
│ │ │ ├── TaskRunHeartbeat-Tile.vue
│ │ │ ├── TaskRunTable-Tile.vue
│ │ │ └── Timeline-Tile.vue
│ │ ├── GettingStarted/
│ │ │ ├── ConnectAgent-Section.vue
│ │ │ ├── CreateTenant-Section.vue
│ │ │ ├── GettingStarted.vue
│ │ │ └── StartPrefectServer-Section.vue
│ │ ├── Integrations/
│ │ │ └── PagerDuty.vue
│ │ ├── InteractiveAPI/
│ │ │ └── InteractiveAPI.vue
│ │ ├── NotFoundPage.vue
│ │ ├── Notifications/
│ │ │ ├── NotificationGroup.vue
│ │ │ ├── NotificationTypes/
│ │ │ │ ├── Approval-Notification.vue
│ │ │ │ ├── FlowRun-Notification.vue
│ │ │ │ ├── Membership-Notification.vue
│ │ │ │ ├── Message-Notification.vue
│ │ │ │ └── WhatsNew-Notification.vue
│ │ │ ├── Notifications.vue
│ │ │ └── utils.js
│ │ ├── Onboard/
│ │ │ ├── AcceptInvitationPage.vue
│ │ │ ├── NameTeam.vue
│ │ │ ├── Onboard-Page.vue
│ │ │ ├── Resources.vue
│ │ │ └── Welcome.vue
│ │ ├── Plans.vue
│ │ ├── Schematics/
│ │ │ ├── Schematics.vue
│ │ │ └── View.vue
│ │ ├── Support.vue
│ │ ├── Task/
│ │ │ ├── Dependencies-Tile.vue
│ │ │ ├── Details-Tile.vue
│ │ │ ├── Task.vue
│ │ │ ├── TaskRunHeartbeat-Tile.vue
│ │ │ └── TaskRunTable-Tile.vue
│ │ ├── TaskRun/
│ │ │ ├── Actions.vue
│ │ │ ├── Dependencies-Tile.vue
│ │ │ ├── Details-Tile.vue
│ │ │ ├── MappedTaskRuns-Tile.vue
│ │ │ ├── Restart-Dialog.vue
│ │ │ ├── TaskRun.vue
│ │ │ └── TaskRunHeartbeat-Tile.vue
│ │ ├── TeamSettings/
│ │ │ ├── Actions.vue
│ │ │ ├── CloudHooks.vue
│ │ │ ├── CreateRoleTable.vue
│ │ │ ├── FlowConcurrency.vue
│ │ │ ├── FlowGroups.vue
│ │ │ ├── KV.vue
│ │ │ ├── Members/
│ │ │ │ ├── Invitations-Table.vue
│ │ │ │ └── Members-Table.vue
│ │ │ ├── Members.vue
│ │ │ ├── PlanComparison.vue
│ │ │ ├── Projects.vue
│ │ │ ├── Roles.vue
│ │ │ ├── Secrets.vue
│ │ │ ├── Service-Accounts-Table.vue
│ │ │ ├── Service-Accounts.vue
│ │ │ ├── TaskConcurrency.vue
│ │ │ ├── TeamSettings.vue
│ │ │ └── Tokens.vue
│ │ ├── TeamSwitched.vue
│ │ ├── Tutorials/
│ │ │ ├── FlowRun/
│ │ │ │ ├── CreatePersonalAccessTokenStep.vue
│ │ │ │ ├── CreateProjectStep.vue
│ │ │ │ ├── DeployFlowStep.vue
│ │ │ │ ├── FlowRunTutorial.vue
│ │ │ │ ├── RunAFlowStep.vue
│ │ │ │ └── RunLocalAgentStep.vue
│ │ │ ├── Markdown/
│ │ │ │ └── Universal-Deploy.md
│ │ │ └── Tutorials.vue
│ │ └── UserSettings/
│ │ ├── APIKeys.vue
│ │ ├── Profile.vue
│ │ ├── Teams.vue
│ │ ├── Tokens.vue
│ │ └── UserSettings.vue
│ ├── plugins/
│ │ ├── logrocket.js
│ │ ├── okta.js
│ │ └── vuetify.js
│ ├── router.js
│ ├── store/
│ │ ├── agent/
│ │ │ └── index.js
│ │ ├── alert/
│ │ │ └── index.js
│ │ ├── api/
│ │ │ └── index.js
│ │ ├── auth/
│ │ │ └── index.js
│ │ ├── data/
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── license/
│ │ │ └── index.js
│ │ ├── polling/
│ │ │ └── index.js
│ │ ├── refresh/
│ │ │ └── index.js
│ │ ├── sideNav/
│ │ │ └── index.js
│ │ ├── tenant/
│ │ │ └── index.js
│ │ └── user/
│ │ └── index.js
│ ├── styles/
│ │ ├── atelier-sulphurpool-light.scss
│ │ ├── global.scss
│ │ ├── json-input-style.scss
│ │ ├── md-style.scss
│ │ ├── playground.scss
│ │ ├── slash.scss
│ │ └── yaml-input-style.scss
│ ├── utils/
│ │ ├── Tree.js
│ │ ├── array.js
│ │ ├── automations.js
│ │ ├── cloudHooks.js
│ │ ├── cron.js
│ │ ├── curveMetro.js
│ │ ├── dateTime.js
│ │ ├── error.js
│ │ ├── features.js
│ │ ├── html.js
│ │ ├── json.js
│ │ ├── markdownParser.js
│ │ ├── moment.js
│ │ ├── ordinal.js
│ │ ├── plans.js
│ │ ├── regEx.js
│ │ ├── roles.js
│ │ ├── states.js
│ │ ├── string.js
│ │ ├── types.js
│ │ └── yaml.js
│ ├── vue-apollo.js
│ └── workers/
│ ├── auth.worker.js
│ ├── cache.worker.js
│ ├── schematic.js
│ ├── timeline.js
│ └── util/
│ └── worker-interface.js
├── start_server.sh
├── stylelint.config.js
├── tests/
│ ├── .eslintrc.js
│ ├── __mocks__/
│ │ ├── @auth0/
│ │ │ ├── auth0-js.js
│ │ │ └── auth0-spa-js.js
│ │ └── @okta/
│ │ └── okta-auth-js.js
│ ├── jestSetup.js
│ └── unit/
│ ├── auth/
│ │ ├── authentication-construction.spec.js
│ │ ├── authentication.spec.js
│ │ ├── authorization.spec.js
│ │ └── index.spec.js
│ ├── main.spec.js
│ ├── middleware/
│ │ └── flowNavGuard.spec.js
│ └── store/
│ ├── agent.spec.js
│ ├── alert.spec.js
│ ├── api.spec.js
│ ├── auth.spec.js
│ ├── data.spec.js
│ ├── license.spec.js
│ ├── mockTokens.js
│ ├── refresh.spec.js
│ ├── sidenav.spec.js
│ ├── tenant.spec.js
│ └── user.spec.js
└── vue.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .browserslistrc
================================================
> 1%
last 2 versions
not ie <= 10
================================================
FILE: .dockerignore
================================================
**/node_modules
**/dist
================================================
FILE: .eslintignore
================================================
tests/__coverage__
src/graphql
node_modules
src/workers/auth.worker.js
================================================
FILE: .eslintrc.js
================================================
module.exports = {
root: true,
env: {
node: true
},
extends: [
'plugin:vue/essential',
'plugin:vue/recommended',
'@vue/prettier',
'eslint:recommended'
],
plugins: ['vuetify'],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'prettier/prettier': [
'warn',
{
singleQuote: true,
semi: false,
trailingComma: 'none',
printWidth: 80,
htmlWhitespaceSensitivity: 'strict'
}
],
quotes: ['warn', 'single', { avoidEscape: true }],
semi: ['warn', 'never'],
'vuetify/grid-unknown-attributes': 'error',
'vuetify/no-deprecated-classes': 'error',
'vue/valid-v-slot': 'off'
},
parserOptions: {
parser: 'babel-eslint'
}
}
================================================
FILE: .github/CODEOWNERS
================================================
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# These owners will be the default owners for everything in the repo.
* @znicholasbrown @zhen0
*.gql @cicdw @jlowin
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
# *.js @octocat @github/js
# You can also use email addresses if you prefer.
# docs/* docs@example.com
================================================
FILE: .github/ISSUE_TEMPLATE/bug---.md
================================================
---
name: "Bug \U0001F41B"
about: Report an issue/bug with existing functionality.
title: '1.0 BUG: '
labels: bug
assignees: ''
---
***If your bug is related to Cloud 2.0 or Prefect 2.0, please submit your issue in the [Prefect Repo](https://github.com/PrefectHQ/prefect)***
**Bug Description**
**Steps To Reproduce**
1.
**Browsers Tested:**
* [ ] Chrome
* [ ] Firefox
* [ ] Safari
* [ ] Edge
* [ ] IE
----------
**Notes**
================================================
FILE: .github/ISSUE_TEMPLATE/general---.md
================================================
---
name: "General \U0001F680"
about: Create a ticket for a general feature.
title: ''
labels: enhancement
assignees: ''
---
**Why**
**What**
* [ ]
**Notes**
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Description
## Linked Issues
## Tests and performance
- [ ] Changes to any .js files are covered by existing tests or this PR adds new tests (if not please explain why below)
- [ ] No new packages are added or package size and performance considerations are discussed below
- [ ] PR Title fits our [changelog format](https://github.com/PrefectHQ/ui#readme)
## Releases/Changelog cuts only
- [ ] Completed the [QA Checklist](https://www.notion.so/prefect/Cloud-UI-QA-Checklist-038a5a5d40a249d78232917ad1b923b9) in staging
================================================
FILE: .github/codeql-config.yml
================================================
paths-ignore:
- tests/**/test_*.py
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ dev, master ]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml
queries: security-and-quality
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
================================================
FILE: .gitignore
================================================
.DS_Store
node_modules
/dist
tests/__coverage__
.firebase
# Generated from integration tests
tests/e2e/videos
tests/e2e/screenshots
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
# python
.mypy_cache
__pycache__/
*.py[cod]
*$py.class
# external font/JS files downloaded during build
src/styles/graphiql.css
public/fonts/*.ttf
public/fonts/*.otf
public/fonts/*.js
================================================
FILE: .nvmrc
================================================
v14.17.3
================================================
FILE: .prettierignore
================================================
================================================
FILE: .prettierrc.js
================================================
const eslintrc = require('./.eslintrc')
module.exports = eslintrc.rules['prettier/prettier'][1]
================================================
FILE: .salesforce_env_development
================================================
VUE_APP_SF_SFCID=00D7h0000009q6r
VUE_APP_SF_TEAM=Chat_Service_Team
VUE_APP_SF_URL1=https://prefect--partial.sandbox.my.salesforce.com
VUE_APP_SF_URL2=https://prefect--partial.sandbox.my.site.com/partners
VUE_APP_SF_BASE_LIVE_AGENT_CONTENT_URL=https://c.la3-c1cs-ia5.salesforceliveagent.com/content
VUE_APP_SF_DEPLOYMENT_ID=5722E0000000dd5
VUE_APP_SF_BUTTON_ID=5732E0000000eF1
VUE_APP_SF_BASE_LIVE_AGENT_URL=https://d.la3-c1cs-ia5.salesforceliveagent.com/chat
VUE_APP_SF_URL3=https://prefect--partial.sandbox.my.salesforce.com/embeddedservice/5.0/esw.min.js
================================================
FILE: .salesforce_env_production
================================================
VUE_APP_SF_SFCID=00D2E000000o3Ut
VUE_APP_SF_TEAM=Chat_Service_Team
VUE_APP_SF_URL1=https://prefect.my.salesforce.com
VUE_APP_SF_URL2=https://prefect.force.com/partners
VUE_APP_SF_BASE_LIVE_AGENT_CONTENT_URL=https://c.la1-c2-ia2.salesforceliveagent.com/content
VUE_APP_SF_DEPLOYMENT_ID=5722E0000000dd5
VUE_APP_SF_BUTTON_ID=5732E0000000eF1
VUE_APP_SF_BASE_LIVE_AGENT_URL=https://d.la1-c2-ia2.salesforceliveagent.com/chat
VUE_APP_SF_URL3=https://prefect.my.salesforce.com/embeddedservice/5.0/esw.min.js
================================================
FILE: .stylelintignore
================================================
src/styles/playground.scss
src/styles/scss
src/styles/graphiql.css
public/fonts.css
src/workers
================================================
FILE: Changelog.md
================================================
# Changelog
#### [2022-12-15](https://github.com/PrefectHQ/ui/compare/2022-10-03...2022-12-15)
- BugFix: Remove skipped state from the change state mixin [`#1352`](https://github.com/PrefectHQ/ui/pull/1352)
- Enhancement: Switch default to user from admin [`#1355`](https://github.com/PrefectHQ/ui/pull/1355)
- Bump decode-uri-component from 0.2.0 to 0.2.2 [`#1351`](https://github.com/PrefectHQ/ui/pull/1351)
- Bump qs from 6.5.2 to 6.5.3 [`#1353`](https://github.com/PrefectHQ/ui/pull/1353)
- Bump express from 4.17.1 to 4.18.2 [`#1354`](https://github.com/PrefectHQ/ui/pull/1354)
- Bump minimatch from 3.0.4 to 3.0.8 [`#1348`](https://github.com/PrefectHQ/ui/pull/1348)
- Enhancement: Add explicit call to log out API route [`#1344`](https://github.com/PrefectHQ/ui/pull/1344)
#### [2022-10-03](https://github.com/PrefectHQ/ui/compare/2022-09-14...2022-10-03)
- Chore: Update Build image to use Circle2.0 image [`#1342`](https://github.com/PrefectHQ/ui/pull/1342)
- Feature: adapts chatbot to match new SFDC changes [`#1338`](https://github.com/PrefectHQ/ui/pull/1338)
- BugFix: Make z into Z [`#1336`](https://github.com/PrefectHQ/ui/pull/1336)
- Chore: Remove font awesome conflict detection [`#1333`](https://github.com/PrefectHQ/ui/pull/1333)
- Changelog for 2022-09-14 release [`#1332`](https://github.com/PrefectHQ/ui/pull/1332)
#### [2022-09-14](https://github.com/PrefectHQ/ui/compare/2022-06-02...2022-09-14)
- Security: Update vue cli related packages [`#1328`](https://github.com/PrefectHQ/ui/pull/1328)
- BugFix: Add version to graphiql css and re-update fully to node-fetch 2.6.7 [`#1327`](https://github.com/PrefectHQ/ui/pull/1327)
- BugFix: Upgrade from Python 3.7 to 3.8 [`#1331`](https://github.com/PrefectHQ/ui/pull/1331)
- Security: Force EJS update [`#1315`](https://github.com/PrefectHQ/ui/pull/1315)
- Bump terser from 4.8.0 to 4.8.1 [`#1308`](https://github.com/PrefectHQ/ui/pull/1308)
- Security: Remove Font Awesome Conflict Detection [`#1314`](https://github.com/PrefectHQ/ui/pull/1314)
- Bump shell-quote from 1.7.2 to 1.7.3 [`#1292`](https://github.com/PrefectHQ/ui/pull/1292)
- Bump parse-url from 6.0.0 to 6.0.2 [`#1294`](https://github.com/PrefectHQ/ui/pull/1294)
- Bump eventsource from 1.1.0 to 1.1.1 [`#1288`](https://github.com/PrefectHQ/ui/pull/1288)
- Bump dset from 3.1.1 to 3.1.2 [`#1284`](https://github.com/PrefectHQ/ui/pull/1284)
- Bump async from 2.6.3 to 2.6.4 [`#1274`](https://github.com/PrefectHQ/ui/pull/1274)
- Bugfix: Service account roles [`#1313`](https://github.com/PrefectHQ/ui/pull/1313)
#### [2022-06-02](https://github.com/PrefectHQ/ui/compare/2022-05-17...2022-06-02)
- Cut changelog ahead of 2022-06-02 release [`#1289`](https://github.com/PrefectHQ/ui/pull/1289)
- Bugfix: Chat launcher icon added nav bar, previous launch button hidden [`#1287`](https://github.com/PrefectHQ/ui/pull/1287)
- Bugfix: replaces env variables and CSP URLs related to Salesforce partial environment [`#1286`](https://github.com/PrefectHQ/ui/pull/1286)
#### [2022-05-17](https://github.com/PrefectHQ/ui/compare/2022-04-21...2022-05-17)
- 2022-05-17 [`#1283`](https://github.com/PrefectHQ/ui/pull/1283)
- Enable sf chat plugin in Cloud production environments [`#1282`](https://github.com/PrefectHQ/ui/pull/1282)
- Bugfix: adds new Salesforce URL to script-src Content Security Policy [`#1281`](https://github.com/PrefectHQ/ui/pull/1281)
#### [2022-04-21](https://github.com/PrefectHQ/ui/compare/2022-02-17...2022-04-21)
- Cut changelog ahead of 2022-04-21 release [`#1270`](https://github.com/PrefectHQ/ui/pull/1270)
- Improve access-denied checks [`#1266`](https://github.com/PrefectHQ/ui/pull/1266)
- Disable salesforce plugin in production environments [`#1267`](https://github.com/PrefectHQ/ui/pull/1267)
- copies salesforce related URLS to script-src policy [`#1259`](https://github.com/PrefectHQ/ui/pull/1259)
- add override [`#1258`](https://github.com/PrefectHQ/ui/pull/1258)
- remove conflict detection [`#1257`](https://github.com/PrefectHQ/ui/pull/1257)
- Audit fix [`#1256`](https://github.com/PrefectHQ/ui/pull/1256)
- Bump minimist from 1.2.5 to 1.2.6 [`#1255`](https://github.com/PrefectHQ/ui/pull/1255)
- Bump trim-newlines from 3.0.0 to 3.0.1 [`#1254`](https://github.com/PrefectHQ/ui/pull/1254)
- Feature: Adds Salesforce Chat Bot [`#1250`](https://github.com/PrefectHQ/ui/pull/1250)
- Bump url-parse from 1.5.7 to 1.5.10 [`#1246`](https://github.com/PrefectHQ/ui/pull/1246)
- Cut changelog ahead of 2022-02-24 release [`#1245`](https://github.com/PrefectHQ/ui/pull/1245)
- Bump url-parse from 1.5.1 to 1.5.7 [`#1240`](https://github.com/PrefectHQ/ui/pull/1240)
- BugFix: Add error handling to the delete-service-account mutation [`#1243`](https://github.com/PrefectHQ/ui/pull/1243)
- Feature: Expose discourse links [`#1244`](https://github.com/PrefectHQ/ui/pull/1244)
- Changelog: Cut changelog ahead of 2022-02-17 release [`#1237`](https://github.com/PrefectHQ/ui/pull/1237)
#### [2022-02-17](https://github.com/PrefectHQ/ui/compare/2022-02-04...2022-02-17)
#### [2022-02-04](https://github.com/PrefectHQ/ui/compare/2022-01-14...2022-02-04)
- Cut changelog ahead of 2022-02-24 release [`#1245`](https://github.com/PrefectHQ/ui/pull/1245)
- Bump url-parse from 1.5.1 to 1.5.7 [`#1240`](https://github.com/PrefectHQ/ui/pull/1240)
- BugFix: Add error handling to the delete-service-account mutation [`#1243`](https://github.com/PrefectHQ/ui/pull/1243)
- Feature: Expose discourse links [`#1244`](https://github.com/PrefectHQ/ui/pull/1244)
- Changelog: Cut changelog ahead of 2022-02-17 release [`#1237`](https://github.com/PrefectHQ/ui/pull/1237)
- BugFix: Update placeholder text on task search [`#1234`](https://github.com/PrefectHQ/ui/pull/1234)
- BugFix: Fix Skip on SetStateDialog [`#1235`](https://github.com/PrefectHQ/ui/pull/1235)
- Feature: Enable deletion of agent configs in automations [`#1153`](https://github.com/PrefectHQ/ui/pull/1153)
- BugFix: Update link to legal page on website [`#1219`](https://github.com/PrefectHQ/ui/pull/1219)
- BugFix: Improve loading logic for automation tab on Flow Page [`#1223`](https://github.com/PrefectHQ/ui/pull/1223)
- Admin: Remove new and beta badges [`#1230`](https://github.com/PrefectHQ/ui/pull/1230)
- BugFix: Remove v-intersect as it was causing odd behavior [`#1224`](https://github.com/PrefectHQ/ui/pull/1224)
- BugFix: Do not call unsubscribe agents if it is not a function [`#1225`](https://github.com/PrefectHQ/ui/pull/1225)
- Bump follow-redirects from 1.14.7 to 1.14.8 [`#1228`](https://github.com/PrefectHQ/ui/pull/1228)
- Bump node-sass from 5.0.0 to 7.0.0 [`#1226`](https://github.com/PrefectHQ/ui/pull/1226)
- BugFix: Flow Concurrency and Task Concurrency browser refresh [`#1220`](https://github.com/PrefectHQ/ui/pull/1220)
- Update: Change the wording on the teams page to redirect users based on their license [`#1210`](https://github.com/PrefectHQ/ui/pull/1210)
- BugFix: Web hook URL validation [`#1212`](https://github.com/PrefectHQ/ui/pull/1212)
- Bump follow-redirects from 1.14.0 to 1.14.7 [`#1211`](https://github.com/PrefectHQ/ui/pull/1211)
- Bump nanoid from 3.1.23 to 3.2.0 [`#1214`](https://github.com/PrefectHQ/ui/pull/1214)
- Bump markdown-it from 12.2.0 to 12.3.2 [`#1203`](https://github.com/PrefectHQ/ui/pull/1203)
- Feature: Allow dates in the past to be used as parameter values when using date picker [`#1213`](https://github.com/PrefectHQ/ui/pull/1213)
- BugFix: Remove "user content" from each heading in the tutorial menu [`#1209`](https://github.com/PrefectHQ/ui/pull/1209)
- BugFix: Schematic node view issues [`#1204`](https://github.com/PrefectHQ/ui/pull/1204)
- Changelog: Cut changelog ahead of 2022-01-14 release [`#1207`](https://github.com/PrefectHQ/ui/pull/1207)
#### [2022-01-14](https://github.com/PrefectHQ/ui/compare/2021-12-22...2022-01-14)
- BugFix: Enable editing in readme [`#1202`](https://github.com/PrefectHQ/ui/pull/1202)
- BugFix: Remove confusing reference to RBAC on plans page [`#1192`](https://github.com/PrefectHQ/ui/pull/1192)
- BugFix: Hide calendar schedule banner on Server [`#1200`](https://github.com/PrefectHQ/ui/pull/1200)
- BugFix: Update Flow/Task Concurrency header values [`#1201`](https://github.com/PrefectHQ/ui/pull/1201)
- Feature: Add create_flow_run system action to automations [`#1152`](https://github.com/PrefectHQ/ui/pull/1152)
- BugFix: Disable add service account and invite buttons until roles are loaded [`#1195`](https://github.com/PrefectHQ/ui/pull/1195)
- BugFix: Remove automations tab from flow page on Server [`#1199`](https://github.com/PrefectHQ/ui/pull/1199)
- Bugfix: Add loading state to the cloud hooks table [`#1197`](https://github.com/PrefectHQ/ui/pull/1197)
- Bugfix: Go to Project button on dashboard [`#1155`](https://github.com/PrefectHQ/ui/pull/1155)
- Admin: Update PR template [`#1157`](https://github.com/PrefectHQ/ui/pull/1157)
- BugFix: Improve error handling on restart button and refetch state after restart [`#1181`](https://github.com/PrefectHQ/ui/pull/1181)
- BugFix: Ensure label warning updates [`#1188`](https://github.com/PrefectHQ/ui/pull/1188)
- Admin: Add input sanitizer as default for log rocket [`#1186`](https://github.com/PrefectHQ/ui/pull/1186)
- BugFix: Add once to intersect on lastTenRuns [`#1187`](https://github.com/PrefectHQ/ui/pull/1187)
- Admin: adopting auto-changelog [`#1171`](https://github.com/PrefectHQ/ui/pull/1171)
#### [2021-12-22](https://github.com/PrefectHQ/ui/compare/2021-12-15...2021-12-22)
- Changelog: Cut changelog ahead of 2021-12-22 release [`#1184`](https://github.com/PrefectHQ/ui/pull/1184)
- Bugfix: Add log rocket prop [`#1183`](https://github.com/PrefectHQ/ui/pull/1183)
- BugFix: removed unused onIntersect methods [`#1166`](https://github.com/PrefectHQ/ui/pull/1166)
- added http-security-headers to apollo graphql network traffic [`#1173`](https://github.com/PrefectHQ/ui/pull/1173)
- BugFix: Replacing link to docs in task run concurrency page [`#1176`](https://github.com/PrefectHQ/ui/pull/1176)
- Cut Changelog ahead of 2021-12-15 release [`#1175`](https://github.com/PrefectHQ/ui/pull/1175)
#### [2021-12-15](https://github.com/PrefectHQ/ui/compare/2021-12-14a...2021-12-15)
- BugFix: added missing icon for help getting-started [`#1164`](https://github.com/PrefectHQ/ui/pull/1164)
- Bugfix: Check tenant is in route params tenant before calling setCurrentTenant [`#1174`](https://github.com/PrefectHQ/ui/pull/1174)
- Bugfix: Send to sales for more users [`#1172`](https://github.com/PrefectHQ/ui/pull/1172)
#### [2021-12-14a](https://github.com/PrefectHQ/ui/compare/2021-12-14...2021-12-14a)
- Changelog: Cut hotifx changelog [`#1165`](https://github.com/PrefectHQ/ui/pull/1165)
- HOTFIX: Remove intersection observers from Members, Invitations-Table, Members-Table components [`#1162`](https://github.com/PrefectHQ/ui/pull/1162)
- HOTFIX: Remove intersection observer on notifications group component [`#1163`](https://github.com/PrefectHQ/ui/pull/1163)
- rolling back watcher change [`#1158`](https://github.com/PrefectHQ/ui/pull/1158)
#### [2021-12-14](https://github.com/PrefectHQ/ui/compare/2021-11-09...2021-12-14)
- Changelog: Cut changelog ahead of 14-12-2021 release [`#1156`](https://github.com/PrefectHQ/ui/pull/1156)
- Feature: Show project name in the run history flow run pop up box [`#1139`](https://github.com/PrefectHQ/ui/pull/1139)
- Performance: More careful polling of graphql data [`#1125`](https://github.com/PrefectHQ/ui/pull/1125)
- Dependabot: Bump tmpl from 1.0.4 to 1.0.5 [`#1055`](https://github.com/PrefectHQ/ui/pull/1055)
- Feature: Elevate labels in the details tile [`#1151`](https://github.com/PrefectHQ/ui/pull/1151)
- Dependabot: Bump object-path from 0.11.5 to 0.11.8 [`#1054`](https://github.com/PrefectHQ/ui/pull/1054)
- Bump axios from 0.21.1 to 0.21.4 [`#1052`](https://github.com/PrefectHQ/ui/pull/1052)
- resolved high priority codeQL alerts [`#1150`](https://github.com/PrefectHQ/ui/pull/1150)
- Bugfix: Check for skipped state in task run table to fix endless duration [`#1134`](https://github.com/PrefectHQ/ui/pull/1134)
- code review changes for 1120 [`#1148`](https://github.com/PrefectHQ/ui/pull/1148)
- Performance: Add virtual-scroll to dashboard tiles and improve duration calculations [`#1120`](https://github.com/PrefectHQ/ui/pull/1120)
- Performance: Removed watchers and/or increased watchers specificity [`#1143`](https://github.com/PrefectHQ/ui/pull/1143)
- Feature: Add loading state to RestartDialog [`#1144`](https://github.com/PrefectHQ/ui/pull/1144)
- Bugfix: Do not add 'allFlows' if a user has only one flow [`#1129`](https://github.com/PrefectHQ/ui/pull/1129)
- Update free usage task runs count to 20,000 [`#1145`](https://github.com/PrefectHQ/ui/pull/1145)
- Bugfix: Update artifact docs link in the 'beta' badge popover [`#1127`](https://github.com/PrefectHQ/ui/pull/1127)
- Bugfix: Improve agent sorting [`#1137`](https://github.com/PrefectHQ/ui/pull/1137)
- Bugfix: Set min-width in titlebars to account for shorter names [`#1136`](https://github.com/PrefectHQ/ui/pull/1136)
- Performance: Update inputs in flow settings - parameters [`#1103`](https://github.com/PrefectHQ/ui/pull/1103)
- 1095/schedules [`#1104`](https://github.com/PrefectHQ/ui/pull/1104)
- 1095/team settings [`#1101`](https://github.com/PrefectHQ/ui/pull/1101)
- Admin: Add Evan to code owners [`#1135`](https://github.com/PrefectHQ/ui/pull/1135)
- Bugfix: Font-awesome-subsetting [`#1132`](https://github.com/PrefectHQ/ui/pull/1132)
- 1095/automations [`#1102`](https://github.com/PrefectHQ/ui/pull/1102)
- Bugfix: Checks for slashes in Cron regex to set interval schedule via Cron [`#1123`](https://github.com/PrefectHQ/ui/pull/1123)
- Bugfix: Fix broken link to the account page [`#1131`](https://github.com/PrefectHQ/ui/pull/1131)
- Feature: Adjust column width in v-data-table to account for longer names [`#1121`](https://github.com/PrefectHQ/ui/pull/1121)
- fixed incorrect syntax for flex-align [`#1128`](https://github.com/PrefectHQ/ui/pull/1128)
- Bugfix: removed avoidable watchers when side-nav is not open [`#1124`](https://github.com/PrefectHQ/ui/pull/1124)
- Bugfix: Performance - Remove global event listeners from App.vue [`#1119`](https://github.com/PrefectHQ/ui/pull/1119)
- Feature: Expand space in the title bars to account for longer names [`#1098`](https://github.com/PrefectHQ/ui/pull/1098)
- Feature: Enhancements to run page run-config inputs with new dict, json, yaml inputs [`#1095`](https://github.com/PrefectHQ/ui/pull/1095)
- Bugfix: Artifacts docs link correction [`#1126`](https://github.com/PrefectHQ/ui/pull/1126)
- Bugfix: Allow users to search for flows by both flow id and flow group id [`#1089`](https://github.com/PrefectHQ/ui/pull/1089)
#### [2021-11-09](https://github.com/PrefectHQ/ui/compare/2021-11-01...2021-11-09)
- Cut changelog ahead of 2021-11-09 release [`#1122`](https://github.com/PrefectHQ/ui/pull/1122)
- Bump graphiql from 1.4.1 to 1.4.7 [`#1117`](https://github.com/PrefectHQ/ui/pull/1117)
- Bump remark-html from 13.0.1 to 13.0.2 [`#1041`](https://github.com/PrefectHQ/ui/pull/1041)
- performance: improved logic for displaying current time in user-menu [`#1099`](https://github.com/PrefectHQ/ui/pull/1099)
- tree shaking moment dependency [`#1109`](https://github.com/PrefectHQ/ui/pull/1109)
- tree shaking lodash dependency [`#1107`](https://github.com/PrefectHQ/ui/pull/1107)
- tree shaking highlightjs dependency [`#1108`](https://github.com/PrefectHQ/ui/pull/1108)
- when creating/editing schedule, make action button available across tabs [`#1096`](https://github.com/PrefectHQ/ui/pull/1096)
#### [2021-11-01](https://github.com/PrefectHQ/ui/compare/2021-10-06...2021-11-01)
- cut changelog ahead of 11/01/2021 release [`#1106`](https://github.com/PrefectHQ/ui/pull/1106)
- fix ordering of submitted and running [`#1105`](https://github.com/PrefectHQ/ui/pull/1105)
- Update plan definitions to reflect (soon to be) reality [`#1100`](https://github.com/PrefectHQ/ui/pull/1100)
- User settings/teams - removeUser mutation error handling [`#1094`](https://github.com/PrefectHQ/ui/pull/1094)
- Dont expose token to logrocket [`#1091`](https://github.com/PrefectHQ/ui/pull/1091)
- Create codeql-config.yml [`#1037`](https://github.com/PrefectHQ/ui/pull/1037)
- Fix tags in slack orb in CircleCI config [`#1053`](https://github.com/PrefectHQ/ui/pull/1053)
- Warning that users will be locked out if not part of a team [`#1078`](https://github.com/PrefectHQ/ui/pull/1078)
- Disable start run button for late flow runs [`#1087`](https://github.com/PrefectHQ/ui/pull/1087)
- Filter by scheduled runs in the runs tab [`#1079`](https://github.com/PrefectHQ/ui/pull/1079)
- When editing a schedule, update the action button to "Save" [`#1083`](https://github.com/PrefectHQ/ui/pull/1083)
- Fixed-tile-v-tabs [`#1081`](https://github.com/PrefectHQ/ui/pull/1081)
- Pd update [`#1073`](https://github.com/PrefectHQ/ui/pull/1073)
- Update the command on the connect an agent intro section [`#1076`](https://github.com/PrefectHQ/ui/pull/1076)
#### [2021-10-06](https://github.com/PrefectHQ/ui/compare/2021-10-05...2021-10-06)
- Add UniversalRun to possible run config options on flow details apge [`#1074`](https://github.com/PrefectHQ/ui/pull/1074)
#### [2021-10-05](https://github.com/PrefectHQ/ui/compare/2021-09-20...2021-10-05)
- update tabs on tiles [`#1064`](https://github.com/PrefectHQ/ui/pull/1064)
- Remove requirement to add an API Secret for Pager Duty [`#1065`](https://github.com/PrefectHQ/ui/pull/1065)
- member invitation bug - invite a user on the free tier the first time the modal appears [`#1062`](https://github.com/PrefectHQ/ui/pull/1062)
- added nvmrc for project that sets node version to 14-17-3 [`#1058`](https://github.com/PrefectHQ/ui/pull/1058)
#### [2021-09-20](https://github.com/PrefectHQ/ui/compare/2021-09-07...2021-09-20)
- pagerduty integration [`#1038`](https://github.com/PrefectHQ/ui/pull/1038)
- add run config tab in flow run details [`#1047`](https://github.com/PrefectHQ/ui/pull/1047)
- update tutorial [`#1042`](https://github.com/PrefectHQ/ui/pull/1042)
- fix text color in flow details tile [`#1044`](https://github.com/PrefectHQ/ui/pull/1044)
#### [2021-09-07](https://github.com/PrefectHQ/ui/compare/2021-08-18...2021-09-07)
- Cut changelog ahead of 2021-09-07 release [`#1039`](https://github.com/PrefectHQ/ui/pull/1039)
- Add a copy method to task run result locations [`#1033`](https://github.com/PrefectHQ/ui/pull/1033)
- Artifact title overlap fix [`#1032`](https://github.com/PrefectHQ/ui/pull/1032)
- fix webhook url language and remove ref to secret [`#1036`](https://github.com/PrefectHQ/ui/pull/1036)
- Update the dict component to ignore null k/v pairs [`#1029`](https://github.com/PrefectHQ/ui/pull/1029)
- Increase default number of flows shown in the flow table [`#1027`](https://github.com/PrefectHQ/ui/pull/1027)
- Remove global max width [`#1026`](https://github.com/PrefectHQ/ui/pull/1026)
- Remove parent query [`#1025`](https://github.com/PrefectHQ/ui/pull/1025)
- Skipped state duration and end time fix [`#1030`](https://github.com/PrefectHQ/ui/pull/1030)
- Route to task run page on timeline click [`#1024`](https://github.com/PrefectHQ/ui/pull/1024)
- Clean up remaining FA_TOKEN refs [`#1020`](https://github.com/PrefectHQ/ui/pull/1020)
- Fix role reset [`#1019`](https://github.com/PrefectHQ/ui/pull/1019)
- Remove references to certain task attributes [`#1011`](https://github.com/PrefectHQ/ui/pull/1011)
- Remove reliance on private FA npm server [`#1013`](https://github.com/PrefectHQ/ui/pull/1013)
#### [2021-08-18](https://github.com/PrefectHQ/ui/compare/2021-08-17...2021-08-18)
- Cut changelog ahead of 2021-08-18 release [`#1007`](https://github.com/PrefectHQ/ui/pull/1007)
- Check authorization token expiration on initial login flow [`#1006`](https://github.com/PrefectHQ/ui/pull/1006)
- Cut changelog ahead of 2021-08-17 release [`#1003`](https://github.com/PrefectHQ/ui/pull/1003)
#### [2021-08-17](https://github.com/PrefectHQ/ui/compare/2021-08-05...2021-08-17)
- Expose retry for archived runs [`#1002`](https://github.com/PrefectHQ/ui/pull/1002)
- Service account roles [`#1001`](https://github.com/PrefectHQ/ui/pull/1001)
- Add host config to the docker run config [`#988`](https://github.com/PrefectHQ/ui/pull/988)
- Upgrade CircleCI/slack orb, rename variables [`#991`](https://github.com/PrefectHQ/ui/pull/991)
- Auto-populate flow group schedules when editing [`#989`](https://github.com/PrefectHQ/ui/pull/989)
- Separate primary and secondary Apollo client links [`#987`](https://github.com/PrefectHQ/ui/pull/987)
- Update browser visibility handler to use new login logic [`#986`](https://github.com/PrefectHQ/ui/pull/986)
- Add secret name and value routes to limit and offset exceptions [`#955`](https://github.com/PrefectHQ/ui/pull/955)
#### [2021-08-05](https://github.com/PrefectHQ/ui/compare/2021-08-02...2021-08-05)
- Cut changelog ahead of 2021-08-05 release [`#985`](https://github.com/PrefectHQ/ui/pull/985)
- Update the data store retrieval patterns to handle more than 1000 flows [`#984`](https://github.com/PrefectHQ/ui/pull/984)
- Fall back to in-memory token exchange if worker exchange fails or takes too long [`#982`](https://github.com/PrefectHQ/ui/pull/982)
- Fix worker error handling [`#981`](https://github.com/PrefectHQ/ui/pull/981)
- Move logrocket to first executed code [`#980`](https://github.com/PrefectHQ/ui/pull/980)
#### [2021-08-02](https://github.com/PrefectHQ/ui/compare/2021-07-29...2021-08-02)
- Fix start server settings [`#974`](https://github.com/PrefectHQ/ui/pull/974)
#### [2021-07-29](https://github.com/PrefectHQ/ui/compare/2021-07-22...2021-07-29)
- Cut changelog ahead of 2021-07-29 release [`#970`](https://github.com/PrefectHQ/ui/pull/970)
- Allow hash characters in cron form validation [`#966`](https://github.com/PrefectHQ/ui/pull/966)
- Add Automations tile to Flow page [`#941`](https://github.com/PrefectHQ/ui/pull/941)
- Fix Bash syntax error in start_server.sh [`#964`](https://github.com/PrefectHQ/ui/pull/964)
#### [2021-07-22](https://github.com/PrefectHQ/ui/compare/2021-07-21...2021-07-22)
- Cut changelog ahead of 2021-07-22 release [`#961`](https://github.com/PrefectHQ/ui/pull/961)
- Safari hotfix [`#960`](https://github.com/PrefectHQ/ui/pull/960)
#### [2021-07-21](https://github.com/PrefectHQ/ui/compare/2021-07-13...2021-07-21)
- Cut changelog ahead of 2021-07-21 release [`#959`](https://github.com/PrefectHQ/ui/pull/959)
- Auth exceptions [`#957`](https://github.com/PrefectHQ/ui/pull/957)
- remove jq [`#958`](https://github.com/PrefectHQ/ui/pull/958)
- Setup nginx to run on rootless mode [`#946`](https://github.com/PrefectHQ/ui/pull/946)
- add sort to healthy agents to prevent jumping [`#947`](https://github.com/PrefectHQ/ui/pull/947)
#### [2021-07-13](https://github.com/PrefectHQ/ui/compare/2021-06-24...2021-07-13)
- Cut changelog ahead of 2021-07-13 release [`#943`](https://github.com/PrefectHQ/ui/pull/943)
- Parameters and context view legibility fix [`#939`](https://github.com/PrefectHQ/ui/pull/939)
- Move logrocket initialization to its own plugin [`#940`](https://github.com/PrefectHQ/ui/pull/940)
- Account page server fix [`#938`](https://github.com/PrefectHQ/ui/pull/938)
- Improve type handling when passing parameters to create flow run mutation [`#936`](https://github.com/PrefectHQ/ui/pull/936)
- Fix seconds on automation edit [`#937`](https://github.com/PrefectHQ/ui/pull/937)
- Schedule timezone [`#922`](https://github.com/PrefectHQ/ui/pull/922)
- Dark roles [`#925`](https://github.com/PrefectHQ/ui/pull/925)
- Fix missing indentation in doc code snippet [`#932`](https://github.com/PrefectHQ/ui/pull/932)
- Create codeql-analysis.yml [`#919`](https://github.com/PrefectHQ/ui/pull/919)
- Add current tenant name to account header if no account_name is found [`#923`](https://github.com/PrefectHQ/ui/pull/923)
- Cut changelog ahead of 2021-06-24 release [`#921`](https://github.com/PrefectHQ/ui/pull/921)
#### [2021-06-24](https://github.com/PrefectHQ/ui/compare/2021-06-23a...2021-06-24)
- More permissions [`#920`](https://github.com/PrefectHQ/ui/pull/920)
- Use role id instead of name in members page invite mutation [`#918`](https://github.com/PrefectHQ/ui/pull/918)
#### [2021-06-23a](https://github.com/PrefectHQ/ui/compare/2021-06-23...2021-06-23a)
- Cut changelog ahead of 2021-06-23a release [`#917`](https://github.com/PrefectHQ/ui/pull/917)
- schedule toggle [`#916`](https://github.com/PrefectHQ/ui/pull/916)
#### [2021-06-23](https://github.com/PrefectHQ/ui/compare/2021-06-17...2021-06-23)
- Cut changelog ahead of 2021-06-23 release [`#915`](https://github.com/PrefectHQ/ui/pull/915)
- Small fixes [`#914`](https://github.com/PrefectHQ/ui/pull/914)
- Improved account management [`#909`](https://github.com/PrefectHQ/ui/pull/909)
- other permission updates [`#910`](https://github.com/PrefectHQ/ui/pull/910)
- Depressed prop on upgrade badge [`#913`](https://github.com/PrefectHQ/ui/pull/913)
- members and service account permissions and formatting [`#908`](https://github.com/PrefectHQ/ui/pull/908)
- Add a check on all permissions that bypasses the license for Server [`#912`](https://github.com/PrefectHQ/ui/pull/912)
- Roles [`#881`](https://github.com/PrefectHQ/ui/pull/881)
- remove outdated migration date [`#902`](https://github.com/PrefectHQ/ui/pull/902)
- Improve Agents on Server [`#901`](https://github.com/PrefectHQ/ui/pull/901)
#### [2021-06-17](https://github.com/PrefectHQ/ui/compare/2021-06-02...2021-06-17)
- Cut changelog ahead of 2021-06-17 release [`#900`](https://github.com/PrefectHQ/ui/pull/900)
- remove setAgents from app.vue [`#898`](https://github.com/PrefectHQ/ui/pull/898)
- Adds the netlify script to the csp [`#897`](https://github.com/PrefectHQ/ui/pull/897)
- Improve expired auth and id token handling [`#896`](https://github.com/PrefectHQ/ui/pull/896)
- Add agents [`#852`](https://github.com/PrefectHQ/ui/pull/852)
- Add options to the survey on the name team page [`#895`](https://github.com/PrefectHQ/ui/pull/895)
- Templating Task Name [`#863`](https://github.com/PrefectHQ/ui/pull/863)
- Update interactive api allow list [`#891`](https://github.com/PrefectHQ/ui/pull/891)
- Map index [`#890`](https://github.com/PrefectHQ/ui/pull/890)
- KV Copy [`#887`](https://github.com/PrefectHQ/ui/pull/887)
#### [2021-06-02](https://github.com/PrefectHQ/ui/compare/2021-06-01...2021-06-02)
- Cut changelog ahead of 2021-06-02 release [`#880`](https://github.com/PrefectHQ/ui/pull/880)
- KV Store Formatting inserts spacing into some values [`#879`](https://github.com/PrefectHQ/ui/pull/879)
- KV Store [`#804`](https://github.com/PrefectHQ/ui/pull/804)
#### [2021-06-01](https://github.com/PrefectHQ/ui/compare/2021-05-25...2021-06-01)
- Cut changelog ahead of 2021-06-01 release [`#875`](https://github.com/PrefectHQ/ui/pull/875)
- Fix routing from invitation [`#862`](https://github.com/PrefectHQ/ui/pull/862)
- Automations update [`#818`](https://github.com/PrefectHQ/ui/pull/818)
#### [2021-05-25](https://github.com/PrefectHQ/ui/compare/2021-05-24...2021-05-25)
- Cut changelog ahead of 2021-05-25 release [`#859`](https://github.com/PrefectHQ/ui/pull/859)
- Remove fetchpolicy on tenant settings mutation [`#858`](https://github.com/PrefectHQ/ui/pull/858)
#### [2021-05-24](https://github.com/PrefectHQ/ui/compare/2021-05-17...2021-05-24)
- Cut changelog ahead of 2021-05-24 release [`#857`](https://github.com/PrefectHQ/ui/pull/857)
- Improve usability of the quick run button [`#846`](https://github.com/PrefectHQ/ui/pull/846)
- Allow configurable base url and relative public assets path [`#849`](https://github.com/PrefectHQ/ui/pull/849)
- Fix broken api store core version ref [`#847`](https://github.com/PrefectHQ/ui/pull/847)
- Remove options button for server [`#848`](https://github.com/PrefectHQ/ui/pull/848)
- Fix issue with overlapping sidebar/application nav on small screens [`#850`](https://github.com/PrefectHQ/ui/pull/850)
- Remove Server/Cloud switcher [`#844`](https://github.com/PrefectHQ/ui/pull/844)
- Run page improvements/fixes [`#839`](https://github.com/PrefectHQ/ui/pull/839)
- stop disable next for pager duty config [`#835`](https://github.com/PrefectHQ/ui/pull/835)
- Add 3 new tenant-wide actions [`#825`](https://github.com/PrefectHQ/ui/pull/825)
- Separate auth from the primary application [`#811`](https://github.com/PrefectHQ/ui/pull/811)
#### [2021-05-17](https://github.com/PrefectHQ/ui/compare/2021-05-14...2021-05-17)
- Cut changelog ahead of 2021-05-17 release [`#842`](https://github.com/PrefectHQ/ui/pull/842)
- allowed users error [`#841`](https://github.com/PrefectHQ/ui/pull/841)
- Stop json param value flicker [`#837`](https://github.com/PrefectHQ/ui/pull/837)
#### [2021-05-14](https://github.com/PrefectHQ/ui/compare/2021-05-05...2021-05-14)
- Cut changelog ahead of 2021-05-14 release [`#833`](https://github.com/PrefectHQ/ui/pull/833)
- Fix issue setting default tenant in server and bypassing auth [`#828`](https://github.com/PrefectHQ/ui/pull/828)
- Created by field service accounts [`#808`](https://github.com/PrefectHQ/ui/pull/808)
- Show Maintenance Mode Warning [`#815`](https://github.com/PrefectHQ/ui/pull/815)
- Members page doesn't load properly [`#824`](https://github.com/PrefectHQ/ui/pull/824)
- licensing and permissions [`#763`](https://github.com/PrefectHQ/ui/pull/763)
- Add Tooltip to flow run task table [`#814`](https://github.com/PrefectHQ/ui/pull/814)
- Clarify Task Run usage tile [`#816`](https://github.com/PrefectHQ/ui/pull/816)
- Switch token to key on getting started [`#820`](https://github.com/PrefectHQ/ui/pull/820)
#### [2021-05-05](https://github.com/PrefectHQ/ui/compare/2021-05-04...2021-05-05)
- Cut changelog ahead of 2021-05-05 release [`#812`](https://github.com/PrefectHQ/ui/pull/812)
- don't disable context and environment key field [`#810`](https://github.com/PrefectHQ/ui/pull/810)
- allow editing in json editor for checked params [`#787`](https://github.com/PrefectHQ/ui/pull/787)
#### [2021-05-04](https://github.com/PrefectHQ/ui/compare/2021-04-23...2021-05-04)
- Cut changelog ahead of 2021-05-04 release [`#809`](https://github.com/PrefectHQ/ui/pull/809)
- update tutorials [`#806`](https://github.com/PrefectHQ/ui/pull/806)
- Add logging level to run config [`#769`](https://github.com/PrefectHQ/ui/pull/769)
- Gracefully handle null default tenants [`#802`](https://github.com/PrefectHQ/ui/pull/802)
- add animation hint for new automation card [`#784`](https://github.com/PrefectHQ/ui/pull/784)
- take usage tile off dashboard and add to account page [`#782`](https://github.com/PrefectHQ/ui/pull/782)
#### [2021-04-23](https://github.com/PrefectHQ/ui/compare/2021-04-22...2021-04-23)
- More auth [`#791`](https://github.com/PrefectHQ/ui/pull/791)
#### [2021-04-22](https://github.com/PrefectHQ/ui/compare/2021-04-21...2021-04-22)
- Fix issues with Server loading in the latest release. [`#788`](https://github.com/PrefectHQ/ui/pull/788)
- add loading indicator for initial load [`#789`](https://github.com/PrefectHQ/ui/pull/789)
#### [2021-04-21](https://github.com/PrefectHQ/ui/compare/2021-04-15...2021-04-21)
- Cut changelog ahead of 2021-04-21 release [`#785`](https://github.com/PrefectHQ/ui/pull/785)
- Fix auth loop [`#783`](https://github.com/PrefectHQ/ui/pull/783)
- Fix some issues with checking auth when returning to the application [`#774`](https://github.com/PrefectHQ/ui/pull/774)
#### [2021-04-15](https://github.com/PrefectHQ/ui/compare/2021-04-09a...2021-04-15)
- Cut changelog ahead of 2021-04-15 release [`#779`](https://github.com/PrefectHQ/ui/pull/779)
- default parameters [`#773`](https://github.com/PrefectHQ/ui/pull/773)
- update deploy tutorial for API keys [`#770`](https://github.com/PrefectHQ/ui/pull/770)
- update user menu to mention keys instead of tokens [`#778`](https://github.com/PrefectHQ/ui/pull/778)
- don't stringify strings [`#777`](https://github.com/PrefectHQ/ui/pull/777)
- add breadcrumb to flow version, change flow name breadcrumb to overview [`#759`](https://github.com/PrefectHQ/ui/pull/759)
- don't save backend in localstorage [`#772`](https://github.com/PrefectHQ/ui/pull/772)
- Remove precommit hook [`#771`](https://github.com/PrefectHQ/ui/pull/771)
- kinda hacky fix for weird rounding bug [`#768`](https://github.com/PrefectHQ/ui/pull/768)
- make error message easier to read [`#767`](https://github.com/PrefectHQ/ui/pull/767)
- Add loading state to sign out button [`#766`](https://github.com/PrefectHQ/ui/pull/766)
#### [2021-04-09a](https://github.com/PrefectHQ/ui/compare/2021-04-09...2021-04-09a)
- Cut changelog ahead of 2021-04-09a release [`#760`](https://github.com/PrefectHQ/ui/pull/760)
- Add MS teams action [`#751`](https://github.com/PrefectHQ/ui/pull/751)
#### [2021-04-09](https://github.com/PrefectHQ/ui/compare/2021-04-07...2021-04-09)
- Cut changelog ahead of 2021-04-09 release [`#756`](https://github.com/PrefectHQ/ui/pull/756)
- Improve onboarding license creation [`#754`](https://github.com/PrefectHQ/ui/pull/754)
- include tenant when creating personal API keys [`#753`](https://github.com/PrefectHQ/ui/pull/753)
- Display flow version in flow run [`#736`](https://github.com/PrefectHQ/ui/pull/736)
#### [2021-04-07](https://github.com/PrefectHQ/ui/compare/2021-04-06a...2021-04-07)
- Cut changelog ahead of 2021-04-07 release [`#750`](https://github.com/PrefectHQ/ui/pull/750)
- Update all slack invite links to redirect to the prefect.io slack link [`#747`](https://github.com/PrefectHQ/ui/pull/747)
- fix legibility issues with /plans page in dark mode [`#748`](https://github.com/PrefectHQ/ui/pull/748)
- check if flow version is archived for restart button state [`#714`](https://github.com/PrefectHQ/ui/pull/714)
- Make "current" label more legible [`#737`](https://github.com/PrefectHQ/ui/pull/737)
#### [2021-04-06a](https://github.com/PrefectHQ/ui/compare/2021-04-06...2021-04-06a)
- Cut changelog ahead of 2021-04-06a release [`#744`](https://github.com/PrefectHQ/ui/pull/744)
- Check rbac feature on permissions blob instead of plan names [`#743`](https://github.com/PrefectHQ/ui/pull/743)
#### [2021-04-06](https://github.com/PrefectHQ/ui/compare/2021-04-05...2021-04-06)
- Cut changelog ahead of 2021-04-06 release [`#742`](https://github.com/PrefectHQ/ui/pull/742)
- Committed runs on license instead of tenant patch [`#741`](https://github.com/PrefectHQ/ui/pull/741)
- Rbac patch [`#740`](https://github.com/PrefectHQ/ui/pull/740)
#### [2021-04-05](https://github.com/PrefectHQ/ui/compare/2021-03-25...2021-04-05)
- Cut changelog ahead of 2021-04-05 release [`#739`](https://github.com/PrefectHQ/ui/pull/739)
- Fix gutters on pages using the tile layout [`#738`](https://github.com/PrefectHQ/ui/pull/738)
- Add an agent config creation step to the automations agent SLA form [`#708`](https://github.com/PrefectHQ/ui/pull/708)
- Add scheduling error message to toast [`#725`](https://github.com/PrefectHQ/ui/pull/725)
- Usage timeline bugfixes [`#722`](https://github.com/PrefectHQ/ui/pull/722)
- Add the proper permissions to role-based invitations [`#719`](https://github.com/PrefectHQ/ui/pull/719)
- Add the proper permissions to flow and task concurrency pages [`#720`](https://github.com/PrefectHQ/ui/pull/720)
- Small fixes to onboarding [`#721`](https://github.com/PrefectHQ/ui/pull/721)
- Usage displays/updates [`#692`](https://github.com/PrefectHQ/ui/pull/692)
- bugfix to show helpful error message on failed service account creation [`#716`](https://github.com/PrefectHQ/ui/pull/716)
- Log URL [`#712`](https://github.com/PrefectHQ/ui/pull/712)
- Disable the automations tab [`#711`](https://github.com/PrefectHQ/ui/pull/711)
- Fix tenant switching in Safari [`#710`](https://github.com/PrefectHQ/ui/pull/710)
- Add remaining states to the state filter [`#706`](https://github.com/PrefectHQ/ui/pull/706)
- Package updates 2021-03-29 [`#707`](https://github.com/PrefectHQ/ui/pull/707)
- Hooks (AKA Automations) [`#695`](https://github.com/PrefectHQ/ui/pull/695)
- Token redesign [`#678`](https://github.com/PrefectHQ/ui/pull/678)
- Make the duration header not sortable [`#699`](https://github.com/PrefectHQ/ui/pull/699)
- fix artifact colors to be dark mode friendly [`#693`](https://github.com/PrefectHQ/ui/pull/693)
- add loading state to quick run button [`#696`](https://github.com/PrefectHQ/ui/pull/696)
- Add generic message notification type [`#674`](https://github.com/PrefectHQ/ui/pull/674)
#### [2021-03-25](https://github.com/PrefectHQ/ui/compare/2021-03-16...2021-03-25)
- Cut changelog ahead of 2021-03-25 release [`#694`](https://github.com/PrefectHQ/ui/pull/694)
- Schedule default parameters [`#683`](https://github.com/PrefectHQ/ui/pull/683)
- Improve authorization expiration handling [`#690`](https://github.com/PrefectHQ/ui/pull/690)
- delete entire flow group with new mutation [`#689`](https://github.com/PrefectHQ/ui/pull/689)
- More flow run page improvements [`#688`](https://github.com/PrefectHQ/ui/pull/688)
- Update readme with sections on testing, docker, and local development [`#691`](https://github.com/PrefectHQ/ui/pull/691)
- Flow run page and general performance improvements [`#679`](https://github.com/PrefectHQ/ui/pull/679)
- Named routes [`#662`](https://github.com/PrefectHQ/ui/pull/662)
- Randomize survey [`#677`](https://github.com/PrefectHQ/ui/pull/677)
- Missing state in state filter [`#675`](https://github.com/PrefectHQ/ui/pull/675)
#### [2021-03-16](https://github.com/PrefectHQ/ui/compare/2021-03-15a...2021-03-16)
- Cut changelog ahead of 2021-03-16 release [`#676`](https://github.com/PrefectHQ/ui/pull/676)
- License creation/slug error [`#672`](https://github.com/PrefectHQ/ui/pull/672)
- Update links to new page [`#673`](https://github.com/PrefectHQ/ui/pull/673)
- remove popover [`#665`](https://github.com/PrefectHQ/ui/pull/665)
#### [2021-03-15a](https://github.com/PrefectHQ/ui/compare/2021-03-15...2021-03-15a)
- Cut changelog ahead of 2021-03-15a release [`#671`](https://github.com/PrefectHQ/ui/pull/671)
- Remove references to the detail blob from the task run table tile [`#670`](https://github.com/PrefectHQ/ui/pull/670)
#### [2021-03-15](https://github.com/PrefectHQ/ui/compare/2021-03-09...2021-03-15)
- Cut changelog ahead of 2021-03-15 release [`#668`](https://github.com/PrefectHQ/ui/pull/668)
- Dark mode!! [`#656`](https://github.com/PrefectHQ/ui/pull/656)
- Flow group created by [`#657`](https://github.com/PrefectHQ/ui/pull/657)
- Fix a couple bugs from color consolidation [`#652`](https://github.com/PrefectHQ/ui/pull/652)
- Flow run state filter [`#645`](https://github.com/PrefectHQ/ui/pull/645)
- Cancel late [`#653`](https://github.com/PrefectHQ/ui/pull/653)
- Mapped case task runs [`#650`](https://github.com/PrefectHQ/ui/pull/650)
#### [2021-03-09](https://github.com/PrefectHQ/ui/compare/2021-03-02...2021-03-09)
- Cut changelog ahead of 2021-03-09 release [`#651`](https://github.com/PrefectHQ/ui/pull/651)
- clean up agents with NaN secondsSinceLastQuery [`#646`](https://github.com/PrefectHQ/ui/pull/646)
- Color cleanup: change hard-coded colors into variables throughout app [`#640`](https://github.com/PrefectHQ/ui/pull/640)
- State table [`#633`](https://github.com/PrefectHQ/ui/pull/633)
#### [2021-03-02](https://github.com/PrefectHQ/ui/compare/2021-02-23...2021-03-02)
- Cut changelog ahead of 2021-03-02 release [`#638`](https://github.com/PrefectHQ/ui/pull/638)
- Redirect links [`#631`](https://github.com/PrefectHQ/ui/pull/631)
- Interactive api header [`#628`](https://github.com/PrefectHQ/ui/pull/628)
- Fix agent controls z-index [`#617`](https://github.com/PrefectHQ/ui/pull/617)
#### [2021-02-23](https://github.com/PrefectHQ/ui/compare/2021-02-12...2021-02-23)
- Cut changelog ahead of 2021-02-23 release [`#627`](https://github.com/PrefectHQ/ui/pull/627)
- make content a sibling of background so it'll scroll [`#616`](https://github.com/PrefectHQ/ui/pull/616)
- Tenant and user headers [`#621`](https://github.com/PrefectHQ/ui/pull/621)
- "How did you hear about us" dropdown [`#615`](https://github.com/PrefectHQ/ui/pull/615)
- add double check for flow id to avoid race condition between flow nav… [`#590`](https://github.com/PrefectHQ/ui/pull/590)
- Clean up bug [`#591`](https://github.com/PrefectHQ/ui/pull/591)
#### [2021-02-12](https://github.com/PrefectHQ/ui/compare/2021-02-11...2021-02-12)
- VU Hotfix [`#611`](https://github.com/PrefectHQ/ui/pull/611)
- HOTFIX: Runconfig [`#610`](https://github.com/PrefectHQ/ui/pull/610)
#### [2021-02-11](https://github.com/PrefectHQ/ui/compare/2021-02-03...2021-02-11)
- Cut changelog ahead of 2021-02-11 release [`#607`](https://github.com/PrefectHQ/ui/pull/607)
- Runconfig pre release [`#606`](https://github.com/PrefectHQ/ui/pull/606)
- unbreak netlify [`#605`](https://github.com/PrefectHQ/ui/pull/605)
- lets get docker working [`#601`](https://github.com/PrefectHQ/ui/pull/601)
- Run configs and run tab update [`#585`](https://github.com/PrefectHQ/ui/pull/585)
- Add Flow Descriptions [`#563`](https://github.com/PrefectHQ/ui/pull/563)
- dockerrrrrr [`#598`](https://github.com/PrefectHQ/ui/pull/598)
- need to get creds into docker to build prod [`#597`](https://github.com/PrefectHQ/ui/pull/597)
- Airgapping the UI [`#595`](https://github.com/PrefectHQ/ui/pull/595)
- Show label warning on Server [`#593`](https://github.com/PrefectHQ/ui/pull/593)
- don't show tutorial banner on server [`#592`](https://github.com/PrefectHQ/ui/pull/592)
#### [2021-02-03](https://github.com/PrefectHQ/ui/compare/2021-01-28...2021-02-03)
- Cut changelog ahead of 2021-02-03 release [`#589`](https://github.com/PrefectHQ/ui/pull/589)
- Users [`#587`](https://github.com/PrefectHQ/ui/pull/587)
- Update .env file with new auth variables [`#583`](https://github.com/PrefectHQ/ui/pull/583)
- Use role_detail instead of role [`#577`](https://github.com/PrefectHQ/ui/pull/577)
#### [2021-01-28](https://github.com/PrefectHQ/ui/compare/2021-01-25...2021-01-28)
- Cut changelog ahead of 2021-01-28 release [`#580`](https://github.com/PrefectHQ/ui/pull/580)
- Improve auth errors [`#576`](https://github.com/PrefectHQ/ui/pull/576)
- Schedule TZ Details Tile [`#570`](https://github.com/PrefectHQ/ui/pull/570)
- Refresh token improvements [`#574`](https://github.com/PrefectHQ/ui/pull/574)
- Dev => Master [`#556`](https://github.com/PrefectHQ/ui/pull/556)
#### [2021-01-25](https://github.com/PrefectHQ/ui/compare/2021-01-19...2021-01-25)
- Wrap link artifacts in router links to allow relative navigation [`#559`](https://github.com/PrefectHQ/ui/pull/559)
- Flow Group schedule timezones [`#532`](https://github.com/PrefectHQ/ui/pull/532)
- 404 TLC [`#562`](https://github.com/PrefectHQ/ui/pull/562)
- make sure we're on the correct tab when mounting page [`#561`](https://github.com/PrefectHQ/ui/pull/561)
#### [2021-01-19](https://github.com/PrefectHQ/ui/compare/2021-01-07...2021-01-19)
- Cut changelog ahead of 2021-01-19 release [`#560`](https://github.com/PrefectHQ/ui/pull/560)
- Add new date method to prevent over-querying [`#558`](https://github.com/PrefectHQ/ui/pull/558)
- don't show 'none' in details tile if flowgroup has a schedule [`#553`](https://github.com/PrefectHQ/ui/pull/553)
- Update deploy jobs to distinguish between dev and staging [`#538`](https://github.com/PrefectHQ/ui/pull/538)
#### [2021-01-07](https://github.com/PrefectHQ/ui/compare/2021-01-05...2021-01-07)
- Cut changelog ahead of 2021-01-07 release [`#537`](https://github.com/PrefectHQ/ui/pull/537)
- Iapi hotfix [`#533`](https://github.com/PrefectHQ/ui/pull/533)
- Navbar slug fix [`#534`](https://github.com/PrefectHQ/ui/pull/534)
- tutorial banner [`#516`](https://github.com/PrefectHQ/ui/pull/516)
- add support for url-encoded queries [`#529`](https://github.com/PrefectHQ/ui/pull/529)
#### [2021-01-05](https://github.com/PrefectHQ/ui/compare/2020-12-18...2021-01-05)
- Cut changelog ahead of 2021-01-05 release [`#531`](https://github.com/PrefectHQ/ui/pull/531)
- Touchups [`#530`](https://github.com/PrefectHQ/ui/pull/530)
- simplify and improve calendar backend and tenant switch [`#524`](https://github.com/PrefectHQ/ui/pull/524)
- Navigation update (top level flow visibility remix) [`#520`](https://github.com/PrefectHQ/ui/pull/520)
- add beforeDestroy hook to fix blank page on reload [`#526`](https://github.com/PrefectHQ/ui/pull/526)
- Add truncate/tooltip to notification tile [`#527`](https://github.com/PrefectHQ/ui/pull/527)
- Simpler query [`#518`](https://github.com/PrefectHQ/ui/pull/518)
- interactive API: graphiql [`#509`](https://github.com/PrefectHQ/ui/pull/509)
- Calendar view [`#433`](https://github.com/PrefectHQ/ui/pull/433)
#### [2020-12-18](https://github.com/PrefectHQ/ui/compare/2020-12-14...2020-12-18)
- Cut changelog ahead of 2020-12-18 release [`#517`](https://github.com/PrefectHQ/ui/pull/517)
- Remove decrossing from schematic calculations [`#515`](https://github.com/PrefectHQ/ui/pull/515)
- Enable artifacts [`#512`](https://github.com/PrefectHQ/ui/pull/512)
- Flow Run (& Task Run & Task) 404 [`#511`](https://github.com/PrefectHQ/ui/pull/511)
- Assorted visual bugs [`#507`](https://github.com/PrefectHQ/ui/pull/507)
#### [2020-12-14](https://github.com/PrefectHQ/ui/compare/2020-12-07...2020-12-14)
- Cut changelog ahead of 2020-12-14 release [`#506`](https://github.com/PrefectHQ/ui/pull/506)
- Stylesheet/CSS audit [`#495`](https://github.com/PrefectHQ/ui/pull/495)
- Artifact link [`#498`](https://github.com/PrefectHQ/ui/pull/498)
- Add task run name to global search [`#485`](https://github.com/PrefectHQ/ui/pull/485)
#### [2020-12-07](https://github.com/PrefectHQ/ui/compare/2020-11-30...2020-12-07)
- Update Changelog.md [`#493`](https://github.com/PrefectHQ/ui/pull/493)
- Fix z-index on artifacts link [`#491`](https://github.com/PrefectHQ/ui/pull/491)
- Flow run artifacts [`#484`](https://github.com/PrefectHQ/ui/pull/484)
- Tokens [`#488`](https://github.com/PrefectHQ/ui/pull/488)
- Update Universal Deploy tutorial [`#482`](https://github.com/PrefectHQ/ui/pull/482)
- Set State Modal [`#465`](https://github.com/PrefectHQ/ui/pull/465)
- remove tutorial and update link in help text [`#480`](https://github.com/PrefectHQ/ui/pull/480)
- Footer [`#451`](https://github.com/PrefectHQ/ui/pull/451)
- add fixed height to subnav row to fix jumping bug [`#476`](https://github.com/PrefectHQ/ui/pull/476)
- Table Rows [`#475`](https://github.com/PrefectHQ/ui/pull/475)
#### [2020-11-30](https://github.com/PrefectHQ/ui/compare/2020-11-13...2020-11-30)
- Cut changelog [`#474`](https://github.com/PrefectHQ/ui/pull/474)
- [RELEASE-BLOCKING] - Fix positioning of agent controls [`#470`](https://github.com/PrefectHQ/ui/pull/470)
- Team slug wording [`#471`](https://github.com/PrefectHQ/ui/pull/471)
- Fix schematic node finished task run durations [`#468`](https://github.com/PrefectHQ/ui/pull/468)
- Sub page nav [`#441`](https://github.com/PrefectHQ/ui/pull/441)
- tutorials [`#434`](https://github.com/PrefectHQ/ui/pull/434)
- Task run restart bugfix [`#452`](https://github.com/PrefectHQ/ui/pull/452)
- Display the core version in the sidebar [`#431`](https://github.com/PrefectHQ/ui/pull/431)
- Editable task run names [`#449`](https://github.com/PrefectHQ/ui/pull/449)
- Editable flow run names [`#448`](https://github.com/PrefectHQ/ui/pull/448)
- Truncated flow name [`#440`](https://github.com/PrefectHQ/ui/pull/440)
#### [2020-11-13](https://github.com/PrefectHQ/ui/compare/2020-11-12...2020-11-13)
- Update Changelog.md [`#436`](https://github.com/PrefectHQ/ui/pull/436)
- Artifacts description [`#435`](https://github.com/PrefectHQ/ui/pull/435)
#### [2020-11-12](https://github.com/PrefectHQ/ui/compare/2020-11-11...2020-11-12)
- Update Changelog.md [`#432`](https://github.com/PrefectHQ/ui/pull/432)
- Timeline [`#278`](https://github.com/PrefectHQ/ui/pull/278)
- npm update [`#428`](https://github.com/PrefectHQ/ui/pull/428)
#### [2020-11-11](https://github.com/PrefectHQ/ui/compare/2020-11-10...2020-11-11)
- Update Changelog.md [`#429`](https://github.com/PrefectHQ/ui/pull/429)
- Create a "Your Teams" page in the User prefs [`#403`](https://github.com/PrefectHQ/ui/pull/403)
- md parser [`#390`](https://github.com/PrefectHQ/ui/pull/390)
- Allow querying agents from IAPI and bulk clearing agents [`#425`](https://github.com/PrefectHQ/ui/pull/425)
- fetch task runs for mark as dialog [`#411`](https://github.com/PrefectHQ/ui/pull/411)
- Accept invitation [`#417`](https://github.com/PrefectHQ/ui/pull/417)
#### [2020-11-10](https://github.com/PrefectHQ/ui/compare/2020-10-29a...2020-11-10)
- Update Changelog.md [`#416`](https://github.com/PrefectHQ/ui/pull/416)
- Fix issue with notifications tile actions not being aligned to bottom [`#410`](https://github.com/PrefectHQ/ui/pull/410)
- Parameters tab [`#401`](https://github.com/PrefectHQ/ui/pull/401)
- Add more info to flow Run Config details section [`#400`](https://github.com/PrefectHQ/ui/pull/400)
- Adjust state filter [`#402`](https://github.com/PrefectHQ/ui/pull/402)
- Multiple email Cloud Hooks [`#372`](https://github.com/PrefectHQ/ui/pull/372)
- Make agents and upcoming tiles refresh when switch backend [`#395`](https://github.com/PrefectHQ/ui/pull/395)
- Refetch task run states after flow run finishes [`#398`](https://github.com/PrefectHQ/ui/pull/398)
- Add icon for resource manager tasks [`#396`](https://github.com/PrefectHQ/ui/pull/396)
- Scrollbar bug [`#399`](https://github.com/PrefectHQ/ui/pull/399)
#### [2020-10-29a](https://github.com/PrefectHQ/ui/compare/2020-10-29...2020-10-29a)
- Update Changelog.md [`#391`](https://github.com/PrefectHQ/ui/pull/391)
- Run state tab indicators [`#389`](https://github.com/PrefectHQ/ui/pull/389)
- Secrets popover [`#377`](https://github.com/PrefectHQ/ui/pull/377)
- update no agents warning [`#382`](https://github.com/PrefectHQ/ui/pull/382)
- add json and string type choices for secrets and validate json [`#370`](https://github.com/PrefectHQ/ui/pull/370)
#### [2020-10-29](https://github.com/PrefectHQ/ui/compare/2020-10-23...2020-10-29)
- Update Changelog.md [`#388`](https://github.com/PrefectHQ/ui/pull/388)
- Fix authentication check for agents [`#387`](https://github.com/PrefectHQ/ui/pull/387)
- Add more information to the name your tenant screen [`#368`](https://github.com/PrefectHQ/ui/pull/368)
- Late count indicator [`#373`](https://github.com/PrefectHQ/ui/pull/373)
#### [2020-10-23](https://github.com/PrefectHQ/ui/compare/2020-10-21...2020-10-23)
- Update Changelog.md [`#375`](https://github.com/PrefectHQ/ui/pull/375)
- Mapped children [`#364`](https://github.com/PrefectHQ/ui/pull/364)
- Add page titles to major pages (dashboard, project, flow, runs) [`#367`](https://github.com/PrefectHQ/ui/pull/367)
- Accept invitations [`#359`](https://github.com/PrefectHQ/ui/pull/359)
- Cloud Hook Prefix [`#363`](https://github.com/PrefectHQ/ui/pull/363)
- Remove flow join from the flow run history query [`#365`](https://github.com/PrefectHQ/ui/pull/365)
#### [2020-10-21](https://github.com/PrefectHQ/ui/compare/2020-10-13...2020-10-21)
- update changelog [`#362`](https://github.com/PrefectHQ/ui/pull/362)
- Update the API connection menu to include helpful links for Server users [`#355`](https://github.com/PrefectHQ/ui/pull/355)
- Server connection state bugfix [`#360`](https://github.com/PrefectHQ/ui/pull/360)
- Whitescreen bugfix [`#354`](https://github.com/PrefectHQ/ui/pull/354)
- "what's new" notifications marked as read [`#344`](https://github.com/PrefectHQ/ui/pull/344)
- Styling [`#330`](https://github.com/PrefectHQ/ui/pull/330)
#### [2020-10-13](https://github.com/PrefectHQ/ui/compare/2020-10-09...2020-10-13)
- Update Changelog.md [`#326`](https://github.com/PrefectHQ/ui/pull/326)
- impose height in last ten runs div to keep row consistency [`#323`](https://github.com/PrefectHQ/ui/pull/323)
- Loading hooks bug [`#321`](https://github.com/PrefectHQ/ui/pull/321)
- BUGFIX: Prevent dashboard flickering on load, missing team slug [`#313`](https://github.com/PrefectHQ/ui/pull/313)
- October package updates [`#317`](https://github.com/PrefectHQ/ui/pull/317)
- Support labels in `flow.run_config` in label warning [`#312`](https://github.com/PrefectHQ/ui/pull/312)
- authnavguard speed [`#303`](https://github.com/PrefectHQ/ui/pull/303)
- Take labels from `flow.run_config` if present [`#309`](https://github.com/PrefectHQ/ui/pull/309)
#### [2020-10-09](https://github.com/PrefectHQ/ui/compare/2020-10-05...2020-10-09)
- Update Changelog.md [`#310`](https://github.com/PrefectHQ/ui/pull/310)
- Invalid state hotfix [`#308`](https://github.com/PrefectHQ/ui/pull/308)
- Add `Run Config` section to flow details [`#307`](https://github.com/PrefectHQ/ui/pull/307)
- BUGFIX: Fix version display in flow page version dropdown [`#305`](https://github.com/PrefectHQ/ui/pull/305)
- use membership id instead of route query for invitation id [`#306`](https://github.com/PrefectHQ/ui/pull/306)
- Fix race condition with onboard/welcome flow [`#304`](https://github.com/PrefectHQ/ui/pull/304)
- Flow run labels [`#300`](https://github.com/PrefectHQ/ui/pull/300)
- add handler for task runs that don't have names [`#299`](https://github.com/PrefectHQ/ui/pull/299)
- Display task run names on flow run page and task run page [`#302`](https://github.com/PrefectHQ/ui/pull/302)
- Apollo url speed racer [`#295`](https://github.com/PrefectHQ/ui/pull/295)
- Restart [`#285`](https://github.com/PrefectHQ/ui/pull/285)
- Auth nav unit tests [`#266`](https://github.com/PrefectHQ/ui/pull/266)
- Pluralization bug [`#298`](https://github.com/PrefectHQ/ui/pull/298)
- Refactor circleCI to inlude a slack notification for prod approvals [`#294`](https://github.com/PrefectHQ/ui/pull/294)
#### [2020-10-05](https://github.com/PrefectHQ/ui/compare/2020-10-01...2020-10-05)
- Update Changelog.md [`#291`](https://github.com/PrefectHQ/ui/pull/291)
- Expose agent persistence for server users [`#249`](https://github.com/PrefectHQ/ui/pull/249)
- update url regex [`#277`](https://github.com/PrefectHQ/ui/pull/277)
- Remove "A nonexistant user" from flow and flow run details for server instances [`#269`](https://github.com/PrefectHQ/ui/pull/269)
#### [2020-10-01](https://github.com/PrefectHQ/ui/compare/2020-09-29...2020-10-01)
- Cut changelog [`#279`](https://github.com/PrefectHQ/ui/pull/279)
- To the dashboard [`#275`](https://github.com/PrefectHQ/ui/pull/275)
- Invitations [`#274`](https://github.com/PrefectHQ/ui/pull/274)
- Allow label editing on older versions of core and disable empty entries [`#273`](https://github.com/PrefectHQ/ui/pull/273)
- Properly redirect to home when server instance has no tenants [`#270`](https://github.com/PrefectHQ/ui/pull/270)
- Update UI connection info on home view [`#271`](https://github.com/PrefectHQ/ui/pull/271)
#### [2020-09-29](https://github.com/PrefectHQ/ui/compare/2020-09-28a...2020-09-29)
- Update Changelog.md [`#268`](https://github.com/PrefectHQ/ui/pull/268)
- Task run table duration fix [`#267`](https://github.com/PrefectHQ/ui/pull/267)
- add flow nav guard test [`#248`](https://github.com/PrefectHQ/ui/pull/248)
- add isCloud to label warning until agent updates are made in core for… [`#264`](https://github.com/PrefectHQ/ui/pull/264)
#### [2020-09-28a](https://github.com/PrefectHQ/ui/compare/2020-09-28...2020-09-28a)
- Cut changelog [`#262`](https://github.com/PrefectHQ/ui/pull/262)
- remove links to Cloud tutorials in server [`#255`](https://github.com/PrefectHQ/ui/pull/255)
- BUGFIX: User invitations with unlimited accounts [`#260`](https://github.com/PrefectHQ/ui/pull/260)
- User store tests [`#245`](https://github.com/PrefectHQ/ui/pull/245)
#### [2020-09-28](https://github.com/PrefectHQ/ui/compare/2020-09-24...2020-09-28)
- Cut changelog ahead of 2020-09-28 release [`#259`](https://github.com/PrefectHQ/ui/pull/259)
- Show user notifications on the notifications tile [`#258`](https://github.com/PrefectHQ/ui/pull/258)
#### [2020-09-24](https://github.com/PrefectHQ/ui/compare/2020-09-23...2020-09-24)
- Cut changelog [`#254`](https://github.com/PrefectHQ/ui/pull/254)
- Fix delete_agent mutation agentId type [`#253`](https://github.com/PrefectHQ/ui/pull/253)
- Log times [`#247`](https://github.com/PrefectHQ/ui/pull/247)
#### [2020-09-23](https://github.com/PrefectHQ/ui/compare/2020-09-17...2020-09-23)
- Cut changelog [`#246`](https://github.com/PrefectHQ/ui/pull/246)
- Apollo endpoint usability update [`#241`](https://github.com/PrefectHQ/ui/pull/241)
- Show version group [`#236`](https://github.com/PrefectHQ/ui/pull/236)
- Agent tab store [`#238`](https://github.com/PrefectHQ/ui/pull/238)
- Labels with agent store [`#217`](https://github.com/PrefectHQ/ui/pull/217)
- Use cache reset method instead of the manual store reset [`#237`](https://github.com/PrefectHQ/ui/pull/237)
#### [2020-09-17](https://github.com/PrefectHQ/ui/compare/2020-09-15...2020-09-17)
- BUGFIX: task concurrency query [`#235`](https://github.com/PrefectHQ/ui/pull/235)
- Performance work (part...3?) [`#232`](https://github.com/PrefectHQ/ui/pull/232)
- Cut changelog [`#233`](https://github.com/PrefectHQ/ui/pull/233)
- BUGFIX: Flow concurrency usage [`#231`](https://github.com/PrefectHQ/ui/pull/231)
- Unit tests store tenant [`#195`](https://github.com/PrefectHQ/ui/pull/195)
- Clear late runs [`#227`](https://github.com/PrefectHQ/ui/pull/227)
#### [2020-09-15](https://github.com/PrefectHQ/ui/compare/2020-09-08...2020-09-15)
- Changelog cut ahead of 2020-09-15 release [`#228`](https://github.com/PrefectHQ/ui/pull/228)
- Provide a way to modify the default server url. [`#219`](https://github.com/PrefectHQ/ui/pull/219)
- Barchart bugfix VU [`#216`](https://github.com/PrefectHQ/ui/pull/216)
- Notifications tile [`#220`](https://github.com/PrefectHQ/ui/pull/220)
- Remove task runs from the upcoming runs query [`#218`](https://github.com/PrefectHQ/ui/pull/218)
- Performance work part 2 [`#212`](https://github.com/PrefectHQ/ui/pull/212)
#### [2020-09-08](https://github.com/PrefectHQ/ui/compare/2020-09-01...2020-09-08)
- Cut changelog [`#209`](https://github.com/PrefectHQ/ui/pull/209)
- Performance work [`#201`](https://github.com/PrefectHQ/ui/pull/201)
- Show the token name on the agent card instead of the token id [`#200`](https://github.com/PrefectHQ/ui/pull/200)
- Add flow concurrency page [`#199`](https://github.com/PrefectHQ/ui/pull/199)
- Filtering scheduled flows from the heartbeattimeline [`#188`](https://github.com/PrefectHQ/ui/pull/188)
- auth0 Vuex store unit tests [`#162`](https://github.com/PrefectHQ/ui/pull/162)
- Some more GraphQL cleanup [`#193`](https://github.com/PrefectHQ/ui/pull/193)
- improve approve button [`#192`](https://github.com/PrefectHQ/ui/pull/192)
- Membership management tweaks [`#190`](https://github.com/PrefectHQ/ui/pull/190)
#### [2020-09-01](https://github.com/PrefectHQ/ui/compare/2020-08-31a...2020-09-01)
- Cut changelog [`#189`](https://github.com/PrefectHQ/ui/pull/189)
- Fix mapped children restart from failure bug [`#187`](https://github.com/PrefectHQ/ui/pull/187)
- Make some of the flow run restart dialog code clearer [`#186`](https://github.com/PrefectHQ/ui/pull/186)
- Unit tests store api [`#127`](https://github.com/PrefectHQ/ui/pull/127)
- Rename Mark As -> Set State everywhere [`#183`](https://github.com/PrefectHQ/ui/pull/183)
- Add link to task run page from gantt chart [`#185`](https://github.com/PrefectHQ/ui/pull/185)
- Unit tests store license [`#164`](https://github.com/PrefectHQ/ui/pull/164)
- Order params [`#176`](https://github.com/PrefectHQ/ui/pull/176)
#### [2020-08-31a](https://github.com/PrefectHQ/ui/compare/2020-08-31...2020-08-31a)
- Cut changelog [`#181`](https://github.com/PrefectHQ/ui/pull/181)
- August package updates [`#180`](https://github.com/PrefectHQ/ui/pull/180)
- Display # of mapped children (when available) [`#179`](https://github.com/PrefectHQ/ui/pull/179)
#### [2020-08-31](https://github.com/PrefectHQ/ui/compare/2020-08-28...2020-08-31)
- Cut changelog [`#178`](https://github.com/PrefectHQ/ui/pull/178)
- Scrollbars update [`#177`](https://github.com/PrefectHQ/ui/pull/177)
- remove requirement that api token name is more than 2 characters [`#174`](https://github.com/PrefectHQ/ui/pull/174)
#### [2020-08-28](https://github.com/PrefectHQ/ui/compare/2020-08-27...2020-08-28)
- BUGFIX: Flow page details tile [`#171`](https://github.com/PrefectHQ/ui/pull/171)
- Cut changelog [`#170`](https://github.com/PrefectHQ/ui/pull/170)
- Durations [`#169`](https://github.com/PrefectHQ/ui/pull/169)
- Unit tests store refresh [`#165`](https://github.com/PrefectHQ/ui/pull/165)
- State manipulation improvements [`#163`](https://github.com/PrefectHQ/ui/pull/163)
- Fix membership invitation toasts [`#166`](https://github.com/PrefectHQ/ui/pull/166)
#### [2020-08-27](https://github.com/PrefectHQ/ui/compare/2020-08-26...2020-08-27)
- Cut changelog [`#161`](https://github.com/PrefectHQ/ui/pull/161)
- Don't show maintenance mode on load (unless it's true) [`#159`](https://github.com/PrefectHQ/ui/pull/159)
- Remove run count [`#158`](https://github.com/PrefectHQ/ui/pull/158)
#### [2020-08-26](https://github.com/PrefectHQ/ui/compare/2020-08-25...2020-08-26)
- Cut changelog [`#156`](https://github.com/PrefectHQ/ui/pull/156)
- Maintenance mode [`#155`](https://github.com/PrefectHQ/ui/pull/155)
#### [2020-08-25](https://github.com/PrefectHQ/ui/compare/2020-08-24...2020-08-25)
- Cut changelog ahead of release [`#143`](https://github.com/PrefectHQ/ui/pull/143)
- Add Flow ID to the Flow Details tile [`#142`](https://github.com/PrefectHQ/ui/pull/142)
- Include stripe [`#140`](https://github.com/PrefectHQ/ui/pull/140)
#### [2020-08-24](https://github.com/PrefectHQ/ui/compare/2020-08-22...2020-08-24)
- Cut changelog ahead of release [`#138`](https://github.com/PrefectHQ/ui/pull/138)
- Add cancelling state [`#137`](https://github.com/PrefectHQ/ui/pull/137)
#### [2020-08-22](https://github.com/PrefectHQ/ui/compare/2020-08-20...2020-08-22)
- Logs refresh [`#128`](https://github.com/PrefectHQ/ui/pull/128)
- Alert and agent store/vuex unit tests [`#124`](https://github.com/PrefectHQ/ui/pull/124)
#### [2020-08-20](https://github.com/PrefectHQ/ui/compare/2020-08-19...2020-08-20)
- Cut changelog ahead of release [`#125`](https://github.com/PrefectHQ/ui/pull/125)
- Tenant switch [`#123`](https://github.com/PrefectHQ/ui/pull/123)
#### [2020-08-19](https://github.com/PrefectHQ/ui/compare/2020-08-18...2020-08-19)
- Fix inputs on task concurrency limiting mutation [`#122`](https://github.com/PrefectHQ/ui/pull/122)
### 2020-08-18
- Cut changelog [`#121`](https://github.com/PrefectHQ/ui/pull/121)
- Update CircleCI to deploy prod artifacts on tag [`#120`](https://github.com/PrefectHQ/ui/pull/120)
- Hopefully fix permissions for the deployment buckets [`#119`](https://github.com/PrefectHQ/ui/pull/119)
- Update build script to export current timestamp [`#118`](https://github.com/PrefectHQ/ui/pull/118)
- Add auto-deploy to staging job [`#117`](https://github.com/PrefectHQ/ui/pull/117)
- Labels [`#106`](https://github.com/PrefectHQ/ui/pull/106)
- Various Updates [`#116`](https://github.com/PrefectHQ/ui/pull/116)
- Add Cloud alert [`#108`](https://github.com/PrefectHQ/ui/pull/108)
- Update tenant CLI command in CreateTenant section [`#105`](https://github.com/PrefectHQ/ui/pull/105)
- Update the schedule toggle component to use an optimistic response [`#104`](https://github.com/PrefectHQ/ui/pull/104)
- Add Created On column to Flow Table [`#103`](https://github.com/PrefectHQ/ui/pull/103)
- fix variable casing on restart button and name restart mutation [`#98`](https://github.com/PrefectHQ/ui/pull/98)
- Flow run tutorial fix [`#96`](https://github.com/PrefectHQ/ui/pull/96)
- Remove toasted [`#95`](https://github.com/PrefectHQ/ui/pull/95)
- Flow Run Cancellation [`#92`](https://github.com/PrefectHQ/ui/pull/92)
- Fix issue with task failures tile having wrong color [`#89`](https://github.com/PrefectHQ/ui/pull/89)
- Fix admin settings references and Cloud Hooks form [`#86`](https://github.com/PrefectHQ/ui/pull/86)
- Fix issue with updating tenant settings [`#84`](https://github.com/PrefectHQ/ui/pull/84)
- Use template for versions query, add id to query to prevent invariant violations in the apollo cache [`#83`](https://github.com/PrefectHQ/ui/pull/83)
- Add a netlify config [`#82`](https://github.com/PrefectHQ/ui/pull/82)
- Update wording in the license section of the README [`#81`](https://github.com/PrefectHQ/ui/pull/81)
- Schematics update [`#77`](https://github.com/PrefectHQ/ui/pull/77)
- Extend late window by a little [`#76`](https://github.com/PrefectHQ/ui/pull/76)
- Team settings fixes [`#75`](https://github.com/PrefectHQ/ui/pull/75)
- Team fixes [`#72`](https://github.com/PrefectHQ/ui/pull/72)
- Tag images with master instead of alpha [`#73`](https://github.com/PrefectHQ/ui/pull/73)
- Delete fix [`#74`](https://github.com/PrefectHQ/ui/pull/74)
- User profile fix [`#71`](https://github.com/PrefectHQ/ui/pull/71)
- README.md [`#51`](https://github.com/PrefectHQ/ui/pull/51)
- Universal deploy bugfix [`#70`](https://github.com/PrefectHQ/ui/pull/70)
- Flow run tutorial bugfix [`#69`](https://github.com/PrefectHQ/ui/pull/69)
- Typography fix [`#68`](https://github.com/PrefectHQ/ui/pull/68)
- In Progress tile [`#67`](https://github.com/PrefectHQ/ui/pull/67)
- Errors tile change [`#66`](https://github.com/PrefectHQ/ui/pull/66)
- Heights and spacing [`#65`](https://github.com/PrefectHQ/ui/pull/65)
- Use and display state timestamp on the failed flow tile [`#64`](https://github.com/PrefectHQ/ui/pull/64)
- Gantt chart [`#59`](https://github.com/PrefectHQ/ui/pull/59)
- Fix spacing on tenant creation section [`#62`](https://github.com/PrefectHQ/ui/pull/62)
- Update frame-ancestors csp [`#61`](https://github.com/PrefectHQ/ui/pull/61)
- Update padding and height [`#60`](https://github.com/PrefectHQ/ui/pull/60)
- Updates, fixes, and performance improvements [`#58`](https://github.com/PrefectHQ/ui/pull/58)
- Add redirects file to public folder to handle netlify redirects [`#46`](https://github.com/PrefectHQ/ui/pull/46)
- Sidebar removal [`#42`](https://github.com/PrefectHQ/ui/pull/42)
- dont install node in the deploy step [`#57`](https://github.com/PrefectHQ/ui/pull/57)
- npm run build [`#55`](https://github.com/PrefectHQ/ui/pull/55)
- upgrade node [`#56`](https://github.com/PrefectHQ/ui/pull/56)
- deploy from master not dev [`#54`](https://github.com/PrefectHQ/ui/pull/54)
- deploy to dev [`#48`](https://github.com/PrefectHQ/ui/pull/48)
- Disable committing vscode editor settings to the repo [`#53`](https://github.com/PrefectHQ/ui/pull/53)
- Speed up failures tile [`#44`](https://github.com/PrefectHQ/ui/pull/44)
- Speed up task failures tile [`#45`](https://github.com/PrefectHQ/ui/pull/45)
- Fix ordering for last 10 runs (and possible speedup?) [`#50`](https://github.com/PrefectHQ/ui/pull/50)
- Speed up last task run query [`#49`](https://github.com/PrefectHQ/ui/pull/49)
- Remove LogRocket from Server deployments [`#43`](https://github.com/PrefectHQ/ui/pull/43)
- Add Docker related things [`#41`](https://github.com/PrefectHQ/ui/pull/41)
- 9 tenant screen [`#30`](https://github.com/PrefectHQ/ui/pull/30)
- Create LICENSE [`#39`](https://github.com/PrefectHQ/ui/pull/39)
- Remove hasura aggregates from flow failure tile [`#29`](https://github.com/PrefectHQ/ui/pull/29)
- Remove pnpm, update package-lock, fix eslintrc [`#28`](https://github.com/PrefectHQ/ui/pull/28)
- Remove cypress from dependencies [`#27`](https://github.com/PrefectHQ/ui/pull/27)
- Skip and then restart polling for global queries [`#20`](https://github.com/PrefectHQ/ui/pull/20)
- Task error improvement [`#23`](https://github.com/PrefectHQ/ui/pull/23)
- Default params [`#24`](https://github.com/PrefectHQ/ui/pull/24)
- Adds concurrency info component [`#21`](https://github.com/PrefectHQ/ui/pull/21)
- fix update membership mutation [`#25`](https://github.com/PrefectHQ/ui/pull/25)
- Error message tile size [`#13`](https://github.com/PrefectHQ/ui/pull/13)
- Add environment variables for stripe, auth0, and logrocket [`#16`](https://github.com/PrefectHQ/ui/pull/16)
- Don't join to task table when querying for last task run [`#17`](https://github.com/PrefectHQ/ui/pull/17)
- Don't join to flow table when querying for last flow run [`#18`](https://github.com/PrefectHQ/ui/pull/18)
- Update 2 (to be merged after Update) [`#8`](https://github.com/PrefectHQ/ui/pull/8)
- Failed Task Tile [`#6`](https://github.com/PrefectHQ/ui/pull/6)
- Update [`#7`](https://github.com/PrefectHQ/ui/pull/7)
- Allow switching between backends [`#5`](https://github.com/PrefectHQ/ui/pull/5)
- 2 [`#4`](https://github.com/PrefectHQ/ui/pull/4)
- 1 [`#3`](https://github.com/PrefectHQ/ui/pull/3)
- Dev [`#2`](https://github.com/PrefectHQ/ui/pull/2)
- Hello world! [`#1`](https://github.com/PrefectHQ/ui/pull/1)
================================================
FILE: Dockerfile
================================================
# syntax = docker/dockerfile:1.0-experimental
FROM node:14.7.0 as ui
# Set version args from CMD input
ARG PREFECT_VERSION=development
ENV PREFECT_VERSION=$PREFECT_VERSION
# Write the arg into the .env file
RUN echo "VUE_APP_PREFECT_VERSION=${PREFECT_VERSION}" >> .env
# Move application files to the app directory
COPY ./ /app
COPY ./LICENSE LICENSE
# Switch to the app directory
WORKDIR /app
# Install dependencies
RUN npm ci
# Build static files
RUN npm run build
FROM nginx:stable
# Copy the previously built static files to the nginx container
COPY --from=ui /app/dist /var/www
# Replace the default nginx config
# with the one we've defined here
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
# Copy and allow all users to execute both the script to start the server
# and the script that intercepts termination requests
COPY ./start_server.sh /start_server.sh
RUN chmod a+x /start_server.sh
COPY ./intercept.sh /intercept.sh
RUN chmod a+x /intercept.sh
# Allow write access to www to ensure we can set the configuration file.
# This is to enable rootless mode
ARG UID=101
ARG GID=101
RUN sed -i 's,listen 80;,listen 8080;,' /etc/nginx/conf.d/default.conf \
&& sed -i '/user nginx;/d' /etc/nginx/nginx.conf \
&& sed -i 's,/var/run/nginx.pid,/tmp/nginx.pid,' /etc/nginx/nginx.conf \
&& sed -i "/^http {/a \ proxy_temp_path /tmp/proxy_temp;\n client_body_temp_path /tmp/client_temp;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n" /etc/nginx/nginx.conf
RUN chown -R $UID:0 /var/cache/nginx \
&& chmod -R g+w /var/cache/nginx \
&& chown -R $UID:0 /etc/nginx \
&& chmod -R g+w /etc/nginx \
&& chown -R $UID:0 /var/www \
&& chmod -R g+w /var/www
USER $UID
STOPSIGNAL SIGINT
CMD ["/intercept.sh"]
================================================
FILE: LICENSE
================================================
Prefect Community License
Version 1.0
A copy of this license may be found at
https://www.prefect.io/legal/prefect-community-license
The Prefect Community License (this “Agreement”) sets forth the terms on which
Prefect Technologies, Inc. (“Prefect”) makes available Prefect source code
through one or more files each within a directory or containing a header stating
the contents are subject to Prefect copyright (the “Software”). BY INSTALLING,
DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO
THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO SUCH TERMS
AND CONDITIONS, YOU MUST NOT USE THE SOFTWARE. IF YOU ARE RECEIVING THE
SOFTWARE ON BEHALF OF A LEGAL ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE
THE ACTUAL AUTHORITY TO AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT ON
BEHALF OF SUCH ENTITY. “Licensee” as used herein means you, an individual, or
the entity on behalf of whom you are receiving the Software.
1. LICENSE GRANT AND LIMITATIONS
A. License. Provided that Licensee remains in compliance with the terms and
conditions that are set forth in this Agreement, Prefect grants you the
following limited, revocable, non-exclusive, non-transferrable,
non-sublicensable, worldwide license during the term of this Agreement to (a)
only use the Software internally; (b) prepare modifications and derivative
works of the Software; (c) distribute the Software (including without
limitation in source code or object code form); and (d) reproduce copies of
the Software (the “License”).
B. Limitations on License Grant. In consideration of the rights granted
herein by this Agreement, Licensee’s distribution of the Software is subject
to the following conditions:
i. Licensee is not granted the right to, and Licensee shall not, exercise
the License for an Excluded Purpose. For purposes of this Agreement,
“Excluded Purpose” includes, but is not limited to, using the Software, or
any derivative works thereof, to make available any software-as-a-service,
platform-as-a-service, infrastructure-as-a-service or other similar
service that competes with Prefect products or services.
ii. Licensee must cause any Software modified by Licensee to carry
prominent notices stating that Licensee modified the Software; and
iii. On any copy of the Software distributed by the Licensee, Licensee
shall reproduce and not remove or alter all Prefect or third-party
copyright or other notices contained in the Software, and Licensee must
provide the following notice with any copy:
“This software is made available by Prefect Technologies, Inc.,
under the terms of the Prefect Community License Agreement located
at https://www.prefect.io/legal/prefect-community-license . BY
INSTALLING, DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE
SOFTWARE, YOU AGREE TO THE TERMS OF SUCH LICENSE AGREEMENT.”
C. Modifications. Licensee may add its own copyright notices to
modifications made by Licensee and may provide additional or different
license terms and conditions for use, reproduction, or distribution of
Licensee’s modifications. While redistributing the Software or modifications
thereof, Licensee may choose to offer, for a fee or free of charge, support,
warranty, indemnity, or other obligations. Licensee, and not Prefect, will
be solely responsible for any such obligations.
D. No Sublicense. The License does not include any right to sublicense the
Software. Each recipient to which Licensee provides the Software, however,
may exercise the License so long as such recipient agrees to the terms and
conditions of this Agreement.
2. TERM AND TERMINATION
A. Term. This Agreement will continue unless and until earlier terminated as
set forth herein.
B. Termination. If Licensee breaches any of the conditions or obligations
set forth under this Agreement, this Agreement shall automatically terminate,
and the License rights granted therein shall be automatically and permanently
revoked.
3. INTELLECTUAL PROPERTY
As between the parties, Prefect retains all right, title, and interest in the
Software, and all intellectual property rights contained therein, regardless of
whether such intellectual property rights are registered or unregistered.
Prefect hereby similarly reserves all rights in its trademarks and service
marks, and all goodwill developed therefrom shall inure to the benefit of
Prefect; no licenses therein are granted by way of this Agreement. Prefect
hereby reserves all rights not expressly granted to Licensee by way of this
Agreement.
4. DISCLAIMER OF WARRANTIES
EXCEPT AS SPECIFICALLY PROVIDED FOR HEREIN, THE SOFTWARE AND ANY MATERIALS ARE
PROVIDED “AS IS”. PREFECT AND ANY THIRD-PARTY PROVIDERS SPECIFICALLY DISCLAIM,
WITHOUT LIMITATION, ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED,
INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT OR THOSE WARRANTIES ARISING
FROM A COURSE OF PERFORMANCE, A COURSE OF DEALING OR TRADE USAGE. EXCEPT AS
EXPRESSLY PROVIDED HEREIN, PREFECT MAKES NO REPRESENTATION OR WARRANTY (I) AS TO
THE SOFTWARE; (II) AS TO THE RESULTS TO BE ATTAINED BY LICENSEE OR ANY THIRD
PARTY FROM THE SOFTWARE; (III) AS TO THE LIFE OF ANY URL USED BY THE SOFTWARE;
OR (IV) THAT ALL USES THAT CAN BE MADE OF THE SOFTWARE COMPLY WITH APPLICABLE
LAW; RATHER, IT IS LICENSEE’S RESPONSIBILITY TO CONFORM ITS USE OF THE SOFTWARE
WITH THE LAW. LICENSEE ACKNOWLEDGES THAT CERTAIN SOFTWARE AND EQUIPMENT USED BY
IT MAY NOT BE CAPABLE OF SUPPORTING CERTAIN FEATURES OF THE SOFTWARE. EACH PARTY
HERETO HEREBY ACKNOWLEDGES THAT IT HAS NOT RELIED UPON ANY REPRESENTATIONS OR
WARRANTIES MADE BY THE OTHER EXCEPT AS SPECIFICALLY SET FORTH IN THIS AGREEMENT.
5. LIMITATIONS ON LIABILITY
EXCEPT FOR A BREACH OF SECTION 6 AND REGARDLESS OF THE FORM OF ACTION, IN NO
EVENT WILL EITHER PARTY (OR ITS OFFICERS, DIRECTORS, EMPLOYEES, MEMBERS,
MANAGERS OR AGENTS) BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, PUNITIVE,
EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS,
LOST DATA, BUSINESS INTERRUPTION, LOSS OF REPUTATION OR COSTS OF SUBSTITUTE
SERVICES) THAT THE OTHER PARTY MAY INCUR OR EXPERIENCE ARISING OUT OF OR
RELATING TO THE SOFTWARE, THIS AGREEMENT OR ITS TERMINATION, EVEN IF ADVISED OF
THE POSSIBILITY THEREOF. FURTHER, PREFECT SHALL NOT BE LIABLE (AND ITS OFFICERS,
DIRECTORS, MEMBERS, MANAGERS, EMPLOYEES AND AGENTS, AND AFFILIATES THEREOF) TO
LICENSEE FOR DAMAGES FOR ANY CAUSE WHATSOEVER NOTWITHSTANDING THE FORM OF SUCH
CLAIMS (INCLUDING NEGLIGENCE).
6. MISCELLANEOUS
A. Governing law and venue. This Agreement shall be governed by and construed
in accordance with the laws of the State of Delaware applicable to contracts
to be performed entirely within Delaware. Any action or proceeding to enforce
or arising out of this Agreement shall be commenced in the state and federal
courts located in Delaware. The parties hereto consent to the exclusive
jurisdiction of such courts, agree that venue will be proper in such courts
and waive any objections based upon forum non conveniens. The choice of
forum set forth in this Section 7 will not be deemed to preclude the
enforcement of any judgment obtained in such forum or the taking of any
action under this Agreement to enforce such judgment in any other
jurisdiction.
B. Export Control Restrictions. Licensee warrants that its use of the
Software shall comply with all export control laws of the United States and
Licensee agrees to indemnify, defend and hold Prefect harmless from any
liability, claim, loss or expense suffered or incurred by Prefect as a result
of a breach of this warranty.
C. Assignment. This Agreement shall be binding upon Licensee’s successors and
permitted assigns; neither this Agreement nor any right or obligation arising
under it may be assigned, licensed, sublicensed, sold, mortgaged, pledged or
otherwise disposed of (collectively, a “disposition”) by Licensee without the
prior written consent of Prefect, and any attempted disposition shall be null
and void. Prefect may freely assign its rights under this Agreement to any
third party.
D. Entire Agreement; Modifications; No Waiver. This Agreement constitutes
the entire Agreement of the parties with respect to the subject matter
hereof, supersedes any and all existing agreements relating to the subject
matter hereof, and may not be modified or amended except by a written
instrument signed by both parties. No failure or delay in exercising any
right, power or remedy under the Agreement shall operate as a waiver thereof,
nor shall any single or partial exercise of any right under this Agreement
preclude any other or further exercise thereof or the exercise of any other
right.
E. Severability. If any provision of this Agreement shall be held to be
illegal, invalid or unenforceable, such illegality, invalidity or
unenforceability shall apply only to such provision and shall not in any
manner affect or render illegal, invalid or unenforceable any other provision
of this Agreement, and this Agreement shall be reformed, construed and
enforced to the fullest extent as if any such illegal, invalid or
unenforceable provision were not contained herein.
F. Survival. The obligations under Sections 3 and 6.B, as well as any other
provision that by its nature is intended to survive, shall survive the
termination or expiration of this Agreement.
================================================
FILE: README.md
================================================
# Prefect UI
Note: This repo is for Prefect UI development. To run the Prefect UI as part of [Prefect Server](https://github.com/PrefectHQ/server/), install [Prefect](https://github.com/prefecthq/prefect) and run `prefect server start`.
### Installation
Prefect UI requires [Node.js](https://nodejs.org/) v14 and [npm](https://www.npmjs.com/) v6 to run.
You'll also need an API token from a professional Font Awesome account to build the project locally; this token should be placed in a git-ignored `.env` file (e.g. `.env.development.local`) as it's referenced by `.npmrc` for accessing the private FA npm registry.
Before starting the development server, you'll need to install project dependencies:
```sh
$ git clone https://github.com/PrefectHQ/ui.git
$ cd ui
$ npm install
```
Then, you can start the Prefect UI development server:
```sh
$ npm run serve
```
The Prefect UI should be available at [http://localhost:8080](http://localhost:8080); changes to the code in the `src/` directory will result in a hot reload of the application. For more information on hot-reloading or the development server, take a look at the [Webpack](https://webpack.js.org/) and [Vue CLI](https://cli.vuejs.org/) documentation.
### Testing
Prefect UI contains various unit tests for things like the Vuex store and Vue Router middleware; running theses tests locally requires [Jest](https://jestjs.io/). We recommend using a node package executor like [npx](https://www.npmjs.com/package/npx) for this dependency.
Running all unit tests:
```
$ npx jest
```
Running specific tests:
```
$ npx jest auth
# This will run tests found in middleware/authNavGuard.spec.js, store/auth.spec.js, and store/auth0.spec.js
```
### Development
We welcome contributions!
Prefect UI is built on [Vue.js](https://vuejs.org/), a modern front-end JavaScript framework. We generally depend on Google's Material Design guidelines, drawing on and extending the [Vuetify](https://vuetifyjs.com/en/) component library.
#### Building for production
For production builds:
```sh
$ npm run build
```
Compiled and minified code and assets are placed in the `dist/` folder; `dist/index.html` is the built application's entrypoint.
### The Prefect UI Docker image
This repo comes with a Dockerfile for building a UI image; it's generally not recommended to build this yourself but to instead use one of the versioned images found in the [PrefectHQ Dockerhub registry](https://hub.docker.com/r/prefecthq/ui).
#### Serving the built application
The Prefect UI requires a functional Prefect API to operate. For details on starting Prefect Server, visit the [docs](https://docs.prefect.io/api/latest/#ui-and-server).
#### Submitting a PR
PR Titles should include a prefix that sets out the purpose of the PR. Most PRs will begin with the prefix Bugfix or Feature. The title should describe the work and purpose of the PR clearly and succinctly and should be appropriate and safe for the Prefect community.
###### Example
Feature: Add create flow run method to automations
## License
Prefect UI is lovingly made by the team at [Prefect](https://www.prefect.io) and licensed under the [Prefect Community License](https://www.prefect.io/legal/prefect-community-license/). For information on how you can use, extend, and depend on Prefect UI to automate your data, take a look at our [license](https://github.com/PrefectHQ/ui/blob/master/LICENSE) or [contact us](https://www.prefect.io/pricing#contact).
================================================
FILE: babel.config.js
================================================
module.exports = {
presets: [['@vue/app', { useBuiltIns: 'entry' }]],
plugins: [
'@babel/plugin-proposal-nullish-coalescing-operator',
'@babel/plugin-proposal-optional-chaining'
]
}
================================================
FILE: changelog-template.hbs
================================================
# Changelog
{{#each releases}}
{{#if href}}
###{{#unless major}}#{{/unless}} [{{title}}]({{href}})
{{else}}
### {{title}}
{{/if}}
{{#if summary}}
{{summary}}
{{/if}}
{{#each merges}}
- {{#if commit.breaking}}**Breaking change:** {{/if}}{{message}}{{#if href}} [`#{{id}}`]({{href}}){{/if}}
{{/each}}
{{#each fixes}}
- {{#if commit.breaking}}**Breaking change:** {{/if}}{{commit.subject}}{{#each fixes}}{{#if href}} [`#{{id}}`]({{href}}){{/if}}{{/each}}
{{/each}}
{{#each commits}}
- {{#if breaking}}**Breaking change:** {{/if}}{{subject}}{{#if href}} [`{{shorthash}}`]({{href}}){{/if}}
{{/each}}
{{/each}}
================================================
FILE: export.sh
================================================
#!/bin/sh
touch .env
echo "" >> .env
cat ".salesforce_env_${VUE_APP_ENVIRONMENT}" | while read line; do
echo $line >> .env
done
================================================
FILE: file-downloader.js
================================================
const { https } = require('follow-redirects')
const fs = require('fs')
const downloads = [
{
filePath: './src/styles/graphiql.css',
url: 'https://unpkg.com/graphiql@1.4.7/graphiql.min.css'
},
{
filePath: './public/fonts/material-icons.ttf',
url:
'https://fonts.gstatic.com/s/materialicons/v76/flUhRq6tzZclQEJ-Vdg-IuiaDsNZ.ttf'
},
{
filePath: './public/fonts/material-icons-outlined.otf',
url:
'https://fonts.gstatic.com/s/materialiconsoutlined/v44/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUcd.otf'
},
{
filePath: './public/fonts/roboto-100.ttf',
url: 'https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgWxP.ttf'
},
{
filePath: './public/fonts/roboto-300.ttf',
url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5vAw.ttf'
},
{
filePath: './public/fonts/roboto-400.ttf',
url: 'https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Me5Q.ttf'
},
{
filePath: './public/fonts/roboto-500.ttf',
url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9vAw.ttf'
},
{
filePath: './public/fonts/roboto-700.ttf',
url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlvAw.ttf'
}
]
downloads.forEach(loc => {
const file = fs.createWriteStream(loc.filePath)
https.get(loc.url, loc.options, function(res) {
res.pipe(file)
file.on('finish', function() {
file.close()
})
})
})
================================================
FILE: intercept.sh
================================================
#!/usr/bin/env bash
function _intercept {
kill -TERM $child
exit 0
}
trap _intercept SIGTERM
trap _intercept SIGINT
trap _intercept SIGQUIT
trap _intercept EXIT
/start_server.sh & tail -f /dev/null & child=$!
wait "$child"
================================================
FILE: jest.config.js
================================================
// Temporary workaround re: https://github.com/vuejs/vue-cli/issues/1879
process.env.VUE_CLI_BABEL_TARGET_NODE = true
process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true
process.env.VUE_APP_GRAPHQL_HTTP = 'http://test.io'
module.exports = {
automock: false,
timers: 'fake',
collectCoverageFrom: [
'src/**/*.{js,vue}',
'!**/node_modules/**',
'!**/dist/**',
'!src/main.js',
'!src/router.js'
],
coverageDirectory: 'tests/__coverage__',
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest'
},
moduleNameMapper: {
'\\.(css|scss|less)$': '/__mocks__/styleMock.js',
'^@/(.*)$': '/src/$1'
},
transformIgnorePatterns: ['/node_modules/'],
roots: ['src', 'tests'],
setupFiles: ['jest-localstorage-mock', 'jest-fetch-mock', 'jest-canvas-mock'],
setupFilesAfterEnv: ['/tests/jestSetup.js'],
snapshotSerializers: ['jest-serializer-vue'],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
testURL: 'http://localhost/'
}
================================================
FILE: netlify.toml
================================================
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[[headers]]
# Define which paths this specific [[headers]] block will cover.
for = "/*"
[headers.values]
# X-Content-Type-Options controls whether browsers attempt to detect
# the content type, rather than relyihng on the Content-Type header.
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
X-Content-Type-Options = "nosniff"
# Strict-Transport-Security to require HTTPS connections in supported
# browsers. These settings are required to be eligible for inclusion
# in the HSTS Preload list; see: https://hstspreload.org/
Strict-Transport-Security = """\
max-age=31536000; \
includeSubDomains; \
preload \
"""
# Content-Security-Policy to prevent XSS attacks.
Content-Security-Policy = """ \
default-src \
* \
; \
script-src \
'self' \
'unsafe-eval' \
'unsafe-inline' \
https://aleysian-prefect.cs29.force.com \
https://c.la1-c1cs-ph2.salesforceliveagent.com \
https://c.la1-c2-ia2.salesforceliveagent.com \
https://cdn.lr-ingest.io \
https://d.la1-c1cs-ph2.salesforceliveagent.com \
https://d.la1-c2-ia2.salesforceliveagent.com \
https://d.la1-c2-ph2.salesforceliveagent.com \
https://d.la2-c1-ia5.salesforceliveagent.com \
https://d.la3-c1cs-ia2.salesforceliveagent.com
https://d.la3-c1cs-ia5.salesforceliveagent.com \
https://js.stripe.com \
https://partial-prefect.cs1.force.com \
https://prefect--aleysian.my.salesforce.com \
https://prefect--partial.my.salesforce.com \
https://prefect--partial.sandbox.my.salesforce.com \
https://prefect--partial.sandbox.my.site.com \
https://prefect.force.com \
https://prefect.my.salesforce-site.com \
https://prefect.my.salesforce.com \
https://prefect.my.site.com \
https://service.force.com \
https://static.lightning.force.com \
; \
script-src-elem \
'self' \
'unsafe-eval' \
'unsafe-inline' \
https://aleysian-prefect.cs29.force.com \
https://c.la1-c1cs-ph2.salesforceliveagent.com \
https://c.la1-c2-ia2.salesforceliveagent.com \
https://cdn.lr-ingest.io \
https://d.la1-c1cs-ph2.salesforceliveagent.com \
https://d.la1-c2-ia2.salesforceliveagent.com \
https://d.la1-c2-ph2.salesforceliveagent.com \
https://d.la2-c1-ia5.salesforceliveagent.com \
https://d.la3-c1cs-ia2.salesforceliveagent.com
https://d.la3-c1cs-ia5.salesforceliveagent.com \
https://js.stripe.com \
https://partial-prefect.cs1.force.com \
https://prefect--aleysian.my.salesforce.com \
https://prefect--partial.my.salesforce.com \
https://prefect--partial.sandbox.my.salesforce.com \
https://prefect--partial.sandbox.my.site.com \
https://prefect.force.com \
https://prefect.my.salesforce-site.com \
https://prefect.my.salesforce.com \
https://prefect.my.site.com \
https://service.force.com \
https://static.lightning.force.com \
; \
img-src \
* \
data: \
; \
style-src \
'self' \
'unsafe-inline' \
https://aleysian-prefect.cs29.force.com \
https://c.la1-c1cs-ph2.salesforceliveagent.com \
https://c.la1-c2-ia2.salesforceliveagent.com \
https://cdn.lr-ingest.io \
https://d.la1-c1cs-ph2.salesforceliveagent.com \
https://d.la1-c2-ia2.salesforceliveagent.com \
https://d.la1-c2-ph2.salesforceliveagent.com \
https://d.la2-c1-ia5.salesforceliveagent.com \
https://d.la3-c1cs-ia2.salesforceliveagent.com
https://d.la3-c1cs-ia5.salesforceliveagent.com \
https://js.stripe.com \
https://partial-prefect.cs1.force.com \
https://prefect--aleysian.my.salesforce.com \
https://prefect--partial.my.salesforce.com \
https://prefect--partial.sandbox.my.salesforce.com \
https://prefect--partial.sandbox.my.site.com \
https://prefect.force.com \
https://prefect.my.salesforce-site.com \
https://prefect.my.salesforce.com \
https://prefect.my.site.com \
https://service.force.com \
https://static.lightning.force.com \
; \
style-src-elem \
'self' \
'unsafe-inline' \
https://aleysian-prefect.cs29.force.com \
https://c.la1-c1cs-ph2.salesforceliveagent.com \
https://c.la1-c2-ia2.salesforceliveagent.com \
https://cdn.lr-ingest.io \
https://d.la1-c1cs-ph2.salesforceliveagent.com \
https://d.la1-c2-ia2.salesforceliveagent.com \
https://d.la1-c2-ph2.salesforceliveagent.com \
https://d.la2-c1-ia5.salesforceliveagent.com \
https://d.la3-c1cs-ia2.salesforceliveagent.com
https://d.la3-c1cs-ia5.salesforceliveagent.com \
https://js.stripe.com \
https://partial-prefect.cs1.force.com \
https://prefect--aleysian.my.salesforce.com \
https://prefect--partial.my.salesforce.com \
https://prefect--partial.sandbox.my.salesforce.com \
https://prefect--partial.sandbox.my.site.com \
https://prefect.force.com \
https://prefect.my.salesforce-site.com \
https://prefect.my.salesforce.com \
https://prefect.my.site.com \
https://service.force.com \
https://static.lightning.force.com \
; \
font-src \
data: \
'self' \
; \
frame-ancestors \
'self' \
; \
frame-src \
'self' \
https://*.okta.com \
https://*.prefect.io \
https://js.stripe.com \
https://prefect--partial.my.salesforce.com \
https://prefect--partial.sandbox.my.salesforce.com \
https://prefect.auth0.com \
https://prefect.my.salesforce.com \
https://service.force.com \
; \
child-src \
data: \
blob: \
; \
worker-src \
'self' \
data: \
blob: \
; \
"""
# Referrer-Policy controls the Referer header in requests.
#
# same-origin allows analytics tools to understand user journeys.
Referrer-Policy = "same-origin"
# X-Permitted-Cross-Domain-Policies controls whether this site can be
# embedded into Flash applications or PDF documents.
X-Permitted-Cross-Domain-Policies = "none"
# Permissions-Policy controls the features that the site can request.
#
# https://developer.chrome.com/en/docs/privacy-sandbox/permissions-policy/
# https://github.com/w3c/webappsec-permissions-policy/blob/main/features.md
#
# payment
# https://js.stripe.com - supports PaymentRequest
Permissions-Policy = """\
accelerometer=(), \
ambient-light-sensor=(), \
autoplay=(), \
battery=(), \
camera=(), \
cross-origin-isolated=(), \
display-capture=(), \
document-domain=(), \
encrypted-media=(), \
execution-while-not-rendered=(), \
execution-while-out-of-viewport=(), \
fullscreen=(), \
geolocation=(), \
gyroscope=(), \
hid=(), \
idle-detection=(), \
magnetometer=(), \
microphone=(), \
midi=(), \
navigation-override=(), \
payment=(self "https://js.stripe.com"), \
picture-in-picture=(), \
publickey-credentials-get=(), \
screen-wake-lock=(), \
serial=(), \
sync-xhr=(), \
usb=(), \
web-share=(), \
xr-spatial-tracking=() \
"""
================================================
FILE: nginx.conf
================================================
server {
# We'll want to make this dynamic at some point
listen 8080;
root /var/www;
index index.html;
location / {
try_files $uri /index.html;
}
}
================================================
FILE: package.json
================================================
{
"name": "prefect-ui",
"version": "0.12.4",
"private": true,
"scripts": {
"serve": "node file-downloader.js && export VUE_APP_RELEASE_TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ') && vue-cli-service serve --port 8080",
"build": "node file-downloader.js && export VUE_APP_RELEASE_TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ') && vue-cli-service build",
"lint": "vue-cli-service lint",
"lint:ci": "vue-cli-service lint --no-fix",
"preinstall": "npx npm-force-resolutions",
"test:e2e": "vue-cli-service test:e2e",
"test:integration": "vue-cli-service test:e2e --headless --mode development",
"test:snapshots": "vue-cli-service test:unit -u",
"test:unit": "vue-cli-service test:unit",
"test:coverage": "vue-cli-service test:unit --coverage",
"changelog": "auto-changelog --commit-limit 0 --template changelog-template.hbs --tag-pattern [0-9]{4}-[0-9]{2}-[0-9]{2}"
},
"dependencies": {
"@auth0/auth0-spa-js": "^1.14.0",
"@okta/okta-auth-js": "^5.2.2",
"apollo-link-batch-http": "^1.2.14",
"caniuse-lite": "^1.0.30001390",
"codemirror": "^5.60.0",
"cronstrue": "^1.110.0",
"d3": "^6.6.2",
"d3-dag": "0.3.5",
"d3-regression": "^1.3.8",
"d3-zoom": "^2.0.0",
"graphiql": "^1.4.7",
"graphql": "^15.5.0",
"highlight.js": "^10.7.2",
"js-beautify": "^1.13.5",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"logrocket": "^1.0.14",
"logrocket-vuex": "0.0.3",
"moment": "^2.29.1",
"moment-duration-format": ">=2.3.2",
"moment-timezone": "^0.5.37",
"nth-check": "2.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"remark": "^13.0.0",
"remark-autolink-headings": "^6.0.1",
"remark-breaks": "^2.0.2",
"remark-gfm": "^1.0.0",
"remark-html": "^13.0.2",
"remark-slug": "^6.0.0",
"velocity-animate": ">=1.5.2",
"vue": "^2.6.12",
"vue-apollo": "^3.0.7",
"vue-codemirror": ">=4.0.6",
"vue-meta": "^2.4.0",
"vue-router": "^3.5.1",
"vue-router-multiguard": ">=1.0.3",
"vue-scrollto": "^2.20.0",
"vuetify": "^2.4.8",
"vuex": "^3.6.2",
"yaml": "2.0.0-5"
},
"devDependencies": {
"@babel/core": "^7.13.14",
"@babel/plugin-proposal-optional-chaining": "^7.13.12",
"@babel/plugin-transform-runtime": "^7.13.10",
"@babel/runtime": "^7.13.10",
"@vue/cli-plugin-babel": "4.5.14",
"@vue/cli-plugin-eslint": "4.5.14",
"@vue/cli-plugin-unit-jest": "4.5.14",
"@vue/cli-service": "4.5.14",
"@vue/eslint-config-prettier": ">=6.0.0",
"@vue/test-utils": "^1.1.3",
"auto-changelog": "^2.3.0",
"autoprefixer": "^9.8.6",
"babel-eslint": ">=10.0.3",
"babel-jest": "^26.6.3",
"babel-polyfill": "^6.26.0",
"eslint": "^7.23.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^7.8.0",
"eslint-plugin-vuetify": "^1.0.0-beta.8",
"graphql-tag": ">=2.10.2",
"html-loader": "^1.3.2",
"ignore-loader": ">=0.1.2",
"jest-canvas-mock": "^2.3.1",
"jest-fetch-mock": ">=3.0.1",
"jest-localstorage-mock": "^2.4.8",
"node-sass": "^7.0.0",
"postcss-scss": "^3.0.5",
"sass": "^1.32.8",
"sass-loader": "^10.1.1",
"sinon": "^9.2.4",
"start-server-and-test": "^1.12.1",
"style-loader": "^2.0.0",
"stylelint": "^13.12.0",
"stylelint-a11y": ">=1.2.1",
"stylelint-config-recommended": "^4.0.0",
"stylelint-config-sass-guidelines": "^7.1.0",
"stylelint-order": ">=4.1.0",
"stylelint-scss": "^3.19.0",
"vue-cli-plugin-apollo": "^0.22.2",
"vue-cli-plugin-vuetify": "^2.3.1",
"vue-cli-plugin-webpack-bundle-analyzer": "^2.0.0",
"vue-template-compiler": "^2.6.12",
"vuetify-loader": "^1.7.2",
"worker-plugin": "^5.0.0",
"workerize-loader": ">=1.2.1"
},
"peerDependencies": {
"postcss": "^8.0.0"
},
"resolutions": {
"node-fetch": "2.6.7",
"ejs": "3.1.7"
}
}
================================================
FILE: postcss.config.js
================================================
module.exports = {
parser: 'postcss-scss',
syntax: 'postcss-scss',
plugins: {
autoprefixer: {}
}
}
================================================
FILE: public/_redirects
================================================
/* /index.html 200
================================================
FILE: public/browserconfig.xml
================================================
#2d89ef
================================================
FILE: public/fonts/font-awesome/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/README.md
================================================
# Font Awesome 5.15.4
Thanks for downloading Font Awesome! We're so excited you're here.
Our documentation is available online. Just head here:
https://fontawesome.com
================================================
FILE: public/fonts/font-awesome/css/all.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
.fa,
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.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%; }
.fa-stack-1x {
line-height: inherit; }
.fa-stack-2x {
font-size: 2em; }
.fa-inverse {
color: #fff; }
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-abacus:before {
content: "\f640"; }
.fa-alarm-exclamation:before {
content: "\f843"; }
.fa-align-left:before {
content: "\f036"; }
.fa-align-slash:before {
content: "\f846"; }
.fa-atom-alt:before {
content: "\f5d3"; }
.fa-aws:before {
content: "\f375"; }
.fa-badge-check:before {
content: "\f336"; }
.fa-bell:before {
content: "\f0f3"; }
.fa-book-dead:before {
content: "\f6b7"; }
.fa-books:before {
content: "\f5db"; }
.fa-brackets-curly:before {
content: "\f7ea"; }
.fa-cc-amazon-pay:before {
content: "\f42d"; }
.fa-cc-amex:before {
content: "\f1f3"; }
.fa-cc-apple-pay:before {
content: "\f416"; }
.fa-cc-diners-club:before {
content: "\f24c"; }
.fa-cc-discover:before {
content: "\f1f2"; }
.fa-cc-jcb:before {
content: "\f24b"; }
.fa-cc-mastercard:before {
content: "\f1f1"; }
.fa-cc-paypal:before {
content: "\f1f4"; }
.fa-cc-stripe:before {
content: "\f1f5"; }
.fa-cc-visa:before {
content: "\f1f0"; }
.fa-chart-network:before {
content: "\f78a"; }
.fa-chart-scatter:before {
content: "\f7ee"; }
.fa-check:before {
content: "\f00c"; }
.fa-check-circle:before {
content: "\f058"; }
.fa-circle:before {
content: "\f111"; }
.fa-cloud:before {
content: "\f0c2"; }
.fa-clouds:before {
content: "\f744"; }
.fa-cogs:before {
content: "\f085"; }
.fa-comment-dots:before {
content: "\f4ad"; }
.fa-concierge-bell:before {
content: "\f562"; }
.fa-credit-card:before {
content: "\f09d"; }
.fa-desktop:before {
content: "\f108"; }
.fa-discourse:before {
content: "\f393"; }
.fa-docker:before {
content: "\f395"; }
.fa-dot-circle:before {
content: "\f192"; }
.fa-envelope:before {
content: "\f0e0"; }
.fa-exchange-alt:before {
content: "\f362"; }
.fa-eye:before {
content: "\f06e"; }
.fa-file-alt:before {
content: "\f15c"; }
.fa-file-code:before {
content: "\f1c9"; }
.fa-fingerprint:before {
content: "\f577"; }
.fa-github:before {
content: "\f09b"; }
.fa-globe:before {
content: "\f0ac"; }
.fa-globe-africa:before {
content: "\f57c"; }
.fa-globe-americas:before {
content: "\f57d"; }
.fa-globe-asia:before {
content: "\f57e"; }
.fa-globe-europe:before {
content: "\f7a2"; }
.fa-graduation-cap:before {
content: "\f19d"; }
.fa-history:before {
content: "\f1da"; }
.fa-home:before {
content: "\f015"; }
.fa-info:before {
content: "\f129"; }
.fa-info-circle:before {
content: "\f05a"; }
.fa-instagram:before {
content: "\f16d"; }
.fa-key:before {
content: "\f084"; }
.fa-key-skeleton:before {
content: "\f6f3"; }
.fa-laptop:before {
content: "\f109"; }
.fa-laptop-code:before {
content: "\f5fc"; }
.fa-laptop-house:before {
content: "\e066"; }
.fa-life-ring:before {
content: "\f1cd"; }
.fa-lightbulb:before {
content: "\f0eb"; }
.fa-list-alt:before {
content: "\f022"; }
.fa-list-ul:before {
content: "\f0ca"; }
.fa-lock-alt:before {
content: "\f30d"; }
.fa-map-marker-alt:before {
content: "\f3c5"; }
.fa-microsoft:before {
content: "\f3ca"; }
.fa-moon-stars:before {
content: "\f755"; }
.fa-network-wired:before {
content: "\f6ff"; }
.fa-planet-ringed:before {
content: "\e020"; }
.fa-plus:before {
content: "\f067"; }
.fa-question-circle:before {
content: "\f059"; }
.fa-quote-left:before {
content: "\f10d"; }
.fa-random:before {
content: "\f074"; }
.fa-rev:before {
content: "\f5b2"; }
.fa-robot:before {
content: "\f544"; }
.fa-rocket:before {
content: "\f135"; }
.fa-save:before {
content: "\f0c7"; }
.fa-search:before {
content: "\f002"; }
.fa-server:before {
content: "\f233"; }
.fa-sign-out:before {
content: "\f08b"; }
.fa-siren-on:before {
content: "\e02e"; }
.fa-slack:before {
content: "\f198"; }
.fa-slash:before {
content: "\f715"; }
.fa-smile:before {
content: "\f118"; }
.fa-snowman:before {
content: "\f7d0"; }
.fa-spinner-third:before {
content: "\f3f4"; }
.fa-square-full:before {
content: "\f45c"; }
.fa-sun:before {
content: "\f185"; }
.fa-tasks:before {
content: "\f0ae"; }
.fa-times:before {
content: "\f00d"; }
.fa-times-circle:before {
content: "\f057"; }
.fa-twitter:before {
content: "\f099"; }
.fa-undo:before {
content: "\f0e2"; }
.fa-undo-alt:before {
content: "\f2ea"; }
.fa-university:before {
content: "\f19c"; }
.fa-user:before {
content: "\f007"; }
.fa-user-friends:before {
content: "\f500"; }
.fa-user-hard-hat:before {
content: "\f82c"; }
.fa-user-shield:before {
content: "\f505"; }
.fa-users:before {
content: "\f0c0"; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-duotone-900.eot");
src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); }
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900; }
.fad:before {
position: absolute;
color: var(--fa-primary-color, inherit);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad:after {
color: var(--fa-secondary-color, inherit);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:before,
.fad.fa-swap-opacity:before {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:after,
.fad.fa-swap-opacity:after {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad.fa-inverse {
color: #fff; }
.fad.fa-stack-1x, .fad.fa-stack-2x {
position: absolute; }
.fad.fa-stack-1x:before,
.fad.fa-stack-2x:before,
.fad.fa-fw:before {
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%); }
.fad.fa-abacus:after {
content: "\10f640"; }
.fad.fa-align-slash:after {
content: "\10f846"; }
.fad.fa-atom-alt:after {
content: "\10f5d3"; }
.fad.fa-badge-check:after {
content: "\10f336"; }
.fad.fa-bell:after {
content: "\10f0f3"; }
.fad.fa-books:after {
content: "\10f5db"; }
.fad.fa-brackets-curly:after {
content: "\10f7ea"; }
.fad.fa-chart-network:after {
content: "\10f78a"; }
.fad.fa-chart-scatter:after {
content: "\10f7ee"; }
.fad.fa-check:after {
content: "\10f00c"; }
.fad.fa-circle:after {
content: "\10f111"; }
.fad.fa-clouds:after {
content: "\10f744"; }
.fad.fa-cogs:after {
content: "\10f085"; }
.fad.fa-comment-dots:after {
content: "\10f4ad"; }
.fad.fa-concierge-bell:after {
content: "\10f562"; }
.fad.fa-dot-circle:after {
content: "\10f192"; }
.fad.fa-envelope:after {
content: "\10f0e0"; }
.fad.fa-exchange-alt:after {
content: "\10f362"; }
.fad.fa-file-alt:after {
content: "\10f15c"; }
.fad.fa-file-code:after {
content: "\10f1c9"; }
.fad.fa-globe:after {
content: "\10f0ac"; }
.fad.fa-globe-africa:after {
content: "\10f57c"; }
.fad.fa-globe-americas:after {
content: "\10f57d"; }
.fad.fa-globe-asia:after {
content: "\10f57e"; }
.fad.fa-globe-europe:after {
content: "\10f7a2"; }
.fad.fa-graduation-cap:after {
content: "\10f19d"; }
.fad.fa-history:after {
content: "\10f1da"; }
.fad.fa-key:after {
content: "\10f084"; }
.fad.fa-key-skeleton:after {
content: "\10f6f3"; }
.fad.fa-laptop:after {
content: "\10f109"; }
.fad.fa-laptop-code:after {
content: "\10f5fc"; }
.fad.fa-laptop-house:after {
content: "\10e066"; }
.fad.fa-life-ring:after {
content: "\10f1cd"; }
.fad.fa-lightbulb:after {
content: "\10f0eb"; }
.fad.fa-list-alt:after {
content: "\10f022"; }
.fad.fa-list-ul:after {
content: "\10f0ca"; }
.fad.fa-lock-alt:after {
content: "\10f30d"; }
.fad.fa-map-marker-alt:after {
content: "\10f3c5"; }
.fad.fa-moon-stars:after {
content: "\10f755"; }
.fad.fa-network-wired:after {
content: "\10f6ff"; }
.fad.fa-planet-ringed:after {
content: "\10e020"; }
.fad.fa-question-circle:after {
content: "\10f059"; }
.fad.fa-quote-left:after {
content: "\10f10d"; }
.fad.fa-random:after {
content: "\10f074"; }
.fad.fa-rocket:after {
content: "\10f135"; }
.fad.fa-search:after {
content: "\10f002"; }
.fad.fa-server:after {
content: "\10f233"; }
.fad.fa-sign-out:after {
content: "\10f08b"; }
.fad.fa-siren-on:after {
content: "\10e02e"; }
.fad.fa-smile:after {
content: "\10f118"; }
.fad.fa-snowman:after {
content: "\10f7d0"; }
.fad.fa-sun:after {
content: "\10f185"; }
.fad.fa-tasks:after {
content: "\10f0ae"; }
.fad.fa-university:after {
content: "\10f19c"; }
.fad.fa-user:after {
content: "\10f007"; }
.fad.fa-user-hard-hat:after {
content: "\10f82c"; }
.fad.fa-user-shield:after {
content: "\10f505"; }
.fad.fa-users:after {
content: "\10f0c0"; }
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }
================================================
FILE: public/fonts/font-awesome/css/brands.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
================================================
FILE: public/fonts/font-awesome/css/duotone.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-duotone-900.eot");
src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); }
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900; }
.fad:before {
position: absolute;
color: var(--fa-primary-color, inherit);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad:after {
color: var(--fa-secondary-color, inherit);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:before,
.fad.fa-swap-opacity:before {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:after,
.fad.fa-swap-opacity:after {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad.fa-inverse {
color: #fff; }
.fad.fa-stack-1x, .fad.fa-stack-2x {
position: absolute; }
.fad.fa-stack-1x:before,
.fad.fa-stack-2x:before,
.fad.fa-fw:before {
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%); }
.fad.fa-abacus:after {
content: "\10f640"; }
.fad.fa-align-slash:after {
content: "\10f846"; }
.fad.fa-atom-alt:after {
content: "\10f5d3"; }
.fad.fa-badge-check:after {
content: "\10f336"; }
.fad.fa-bell:after {
content: "\10f0f3"; }
.fad.fa-books:after {
content: "\10f5db"; }
.fad.fa-brackets-curly:after {
content: "\10f7ea"; }
.fad.fa-chart-network:after {
content: "\10f78a"; }
.fad.fa-chart-scatter:after {
content: "\10f7ee"; }
.fad.fa-check:after {
content: "\10f00c"; }
.fad.fa-circle:after {
content: "\10f111"; }
.fad.fa-clouds:after {
content: "\10f744"; }
.fad.fa-cogs:after {
content: "\10f085"; }
.fad.fa-comment-dots:after {
content: "\10f4ad"; }
.fad.fa-concierge-bell:after {
content: "\10f562"; }
.fad.fa-dot-circle:after {
content: "\10f192"; }
.fad.fa-envelope:after {
content: "\10f0e0"; }
.fad.fa-exchange-alt:after {
content: "\10f362"; }
.fad.fa-file-alt:after {
content: "\10f15c"; }
.fad.fa-file-code:after {
content: "\10f1c9"; }
.fad.fa-globe:after {
content: "\10f0ac"; }
.fad.fa-globe-africa:after {
content: "\10f57c"; }
.fad.fa-globe-americas:after {
content: "\10f57d"; }
.fad.fa-globe-asia:after {
content: "\10f57e"; }
.fad.fa-globe-europe:after {
content: "\10f7a2"; }
.fad.fa-graduation-cap:after {
content: "\10f19d"; }
.fad.fa-history:after {
content: "\10f1da"; }
.fad.fa-key:after {
content: "\10f084"; }
.fad.fa-key-skeleton:after {
content: "\10f6f3"; }
.fad.fa-laptop:after {
content: "\10f109"; }
.fad.fa-laptop-code:after {
content: "\10f5fc"; }
.fad.fa-laptop-house:after {
content: "\10e066"; }
.fad.fa-life-ring:after {
content: "\10f1cd"; }
.fad.fa-lightbulb:after {
content: "\10f0eb"; }
.fad.fa-list-alt:after {
content: "\10f022"; }
.fad.fa-list-ul:after {
content: "\10f0ca"; }
.fad.fa-lock-alt:after {
content: "\10f30d"; }
.fad.fa-map-marker-alt:after {
content: "\10f3c5"; }
.fad.fa-moon-stars:after {
content: "\10f755"; }
.fad.fa-network-wired:after {
content: "\10f6ff"; }
.fad.fa-planet-ringed:after {
content: "\10e020"; }
.fad.fa-question-circle:after {
content: "\10f059"; }
.fad.fa-quote-left:after {
content: "\10f10d"; }
.fad.fa-random:after {
content: "\10f074"; }
.fad.fa-rocket:after {
content: "\10f135"; }
.fad.fa-search:after {
content: "\10f002"; }
.fad.fa-server:after {
content: "\10f233"; }
.fad.fa-sign-out:after {
content: "\10f08b"; }
.fad.fa-siren-on:after {
content: "\10e02e"; }
.fad.fa-smile:after {
content: "\10f118"; }
.fad.fa-snowman:after {
content: "\10f7d0"; }
.fad.fa-sun:after {
content: "\10f185"; }
.fad.fa-tasks:after {
content: "\10f0ae"; }
.fad.fa-university:after {
content: "\10f19c"; }
.fad.fa-user:after {
content: "\10f007"; }
.fad.fa-user-hard-hat:after {
content: "\10f82c"; }
.fad.fa-user-shield:after {
content: "\10f505"; }
.fad.fa-users:after {
content: "\10f0c0"; }
================================================
FILE: public/fonts/font-awesome/css/fontawesome.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
.fa,
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.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%; }
.fa-stack-1x {
line-height: inherit; }
.fa-stack-2x {
font-size: 2em; }
.fa-inverse {
color: #fff; }
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-abacus:before {
content: "\f640"; }
.fa-alarm-exclamation:before {
content: "\f843"; }
.fa-align-left:before {
content: "\f036"; }
.fa-align-slash:before {
content: "\f846"; }
.fa-atom-alt:before {
content: "\f5d3"; }
.fa-aws:before {
content: "\f375"; }
.fa-badge-check:before {
content: "\f336"; }
.fa-bell:before {
content: "\f0f3"; }
.fa-book-dead:before {
content: "\f6b7"; }
.fa-books:before {
content: "\f5db"; }
.fa-brackets-curly:before {
content: "\f7ea"; }
.fa-cc-amazon-pay:before {
content: "\f42d"; }
.fa-cc-amex:before {
content: "\f1f3"; }
.fa-cc-apple-pay:before {
content: "\f416"; }
.fa-cc-diners-club:before {
content: "\f24c"; }
.fa-cc-discover:before {
content: "\f1f2"; }
.fa-cc-jcb:before {
content: "\f24b"; }
.fa-cc-mastercard:before {
content: "\f1f1"; }
.fa-cc-paypal:before {
content: "\f1f4"; }
.fa-cc-stripe:before {
content: "\f1f5"; }
.fa-cc-visa:before {
content: "\f1f0"; }
.fa-chart-network:before {
content: "\f78a"; }
.fa-chart-scatter:before {
content: "\f7ee"; }
.fa-check:before {
content: "\f00c"; }
.fa-check-circle:before {
content: "\f058"; }
.fa-circle:before {
content: "\f111"; }
.fa-cloud:before {
content: "\f0c2"; }
.fa-clouds:before {
content: "\f744"; }
.fa-cogs:before {
content: "\f085"; }
.fa-comment-dots:before {
content: "\f4ad"; }
.fa-concierge-bell:before {
content: "\f562"; }
.fa-credit-card:before {
content: "\f09d"; }
.fa-desktop:before {
content: "\f108"; }
.fa-discourse:before {
content: "\f393"; }
.fa-docker:before {
content: "\f395"; }
.fa-dot-circle:before {
content: "\f192"; }
.fa-envelope:before {
content: "\f0e0"; }
.fa-exchange-alt:before {
content: "\f362"; }
.fa-eye:before {
content: "\f06e"; }
.fa-file-alt:before {
content: "\f15c"; }
.fa-file-code:before {
content: "\f1c9"; }
.fa-fingerprint:before {
content: "\f577"; }
.fa-github:before {
content: "\f09b"; }
.fa-globe:before {
content: "\f0ac"; }
.fa-globe-africa:before {
content: "\f57c"; }
.fa-globe-americas:before {
content: "\f57d"; }
.fa-globe-asia:before {
content: "\f57e"; }
.fa-globe-europe:before {
content: "\f7a2"; }
.fa-graduation-cap:before {
content: "\f19d"; }
.fa-history:before {
content: "\f1da"; }
.fa-home:before {
content: "\f015"; }
.fa-info:before {
content: "\f129"; }
.fa-info-circle:before {
content: "\f05a"; }
.fa-instagram:before {
content: "\f16d"; }
.fa-key:before {
content: "\f084"; }
.fa-key-skeleton:before {
content: "\f6f3"; }
.fa-laptop:before {
content: "\f109"; }
.fa-laptop-code:before {
content: "\f5fc"; }
.fa-laptop-house:before {
content: "\e066"; }
.fa-life-ring:before {
content: "\f1cd"; }
.fa-lightbulb:before {
content: "\f0eb"; }
.fa-list-alt:before {
content: "\f022"; }
.fa-list-ul:before {
content: "\f0ca"; }
.fa-lock-alt:before {
content: "\f30d"; }
.fa-map-marker-alt:before {
content: "\f3c5"; }
.fa-microsoft:before {
content: "\f3ca"; }
.fa-moon-stars:before {
content: "\f755"; }
.fa-network-wired:before {
content: "\f6ff"; }
.fa-planet-ringed:before {
content: "\e020"; }
.fa-plus:before {
content: "\f067"; }
.fa-question-circle:before {
content: "\f059"; }
.fa-quote-left:before {
content: "\f10d"; }
.fa-random:before {
content: "\f074"; }
.fa-rev:before {
content: "\f5b2"; }
.fa-robot:before {
content: "\f544"; }
.fa-rocket:before {
content: "\f135"; }
.fa-save:before {
content: "\f0c7"; }
.fa-search:before {
content: "\f002"; }
.fa-server:before {
content: "\f233"; }
.fa-sign-out:before {
content: "\f08b"; }
.fa-siren-on:before {
content: "\e02e"; }
.fa-slack:before {
content: "\f198"; }
.fa-slash:before {
content: "\f715"; }
.fa-smile:before {
content: "\f118"; }
.fa-snowman:before {
content: "\f7d0"; }
.fa-spinner-third:before {
content: "\f3f4"; }
.fa-square-full:before {
content: "\f45c"; }
.fa-sun:before {
content: "\f185"; }
.fa-tasks:before {
content: "\f0ae"; }
.fa-times:before {
content: "\f00d"; }
.fa-times-circle:before {
content: "\f057"; }
.fa-twitter:before {
content: "\f099"; }
.fa-undo:before {
content: "\f0e2"; }
.fa-undo-alt:before {
content: "\f2ea"; }
.fa-university:before {
content: "\f19c"; }
.fa-user:before {
content: "\f007"; }
.fa-user-friends:before {
content: "\f500"; }
.fa-user-hard-hat:before {
content: "\f82c"; }
.fa-user-shield:before {
content: "\f505"; }
.fa-users:before {
content: "\f0c0"; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
================================================
FILE: public/fonts/font-awesome/css/regular.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }
================================================
FILE: public/fonts/font-awesome/css/solid.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }
================================================
FILE: public/fonts/font-awesome/css/svg-with-js.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse {
color: #fff; }
================================================
FILE: public/fonts/font-awesome/current-ui.yaml
================================================
projectName: current-ui
version: 5.15.4
icons:
- github:
- brands
- slack:
- brands
- twitter:
- brands
- instagram:
- brands
- times:
- solid
- regular
- times-circle:
- solid
- plus:
- regular
- solid
- undo-alt:
- regular
- solid
- info:
- regular
- user:
- solid
- duotone
- regular
- history:
- solid
- duotone
- check-circle:
- regular
- cloud:
- solid
- list-ul:
- duotone
- fingerprint:
- solid
- file-code:
- duotone
- regular
- search:
- duotone
- credit-card:
- solid
- server:
- duotone
- question-circle:
- duotone
- regular
- laptop:
- duotone
- file-alt:
- duotone
- books:
- duotone
- graduation-cap:
- duotone
- life-ring:
- duotone
- circle:
- duotone
- solid
- bell:
- duotone
- exchange-alt:
- duotone
- clouds:
- duotone
- random:
- duotone
- users:
- duotone
- solid
- regular
- key:
- duotone
- key-skeleton:
- duotone
- brackets-curly:
- duotone
- user-hard-hat:
- duotone
- abacus:
- duotone
- envelope:
- solid
- duotone
- cogs:
- duotone
- sun:
- duotone
- moon-stars:
- duotone
- sign-out:
- duotone
- smile:
- duotone
- map-marker-alt:
- duotone
- cc-amazon-pay:
- brands
- cc-amex:
- brands
- cc-apple-pay:
- brands
- cc-diners-club:
- brands
- cc-discover:
- brands
- cc-visa:
- brands
- cc-stripe:
- brands
- cc-paypal:
- brands
- cc-mastercard:
- brands
- cc-jcb:
- brands
- university:
- duotone
- lightbulb:
- duotone
- tasks:
- duotone
- check:
- duotone
- solid
- user-shield:
- duotone
- siren-on:
- duotone
- globe-africa:
- duotone
- globe-asia:
- duotone
- globe-americas:
- duotone
- globe-europe:
- duotone
- planet-ringed:
- duotone
- snowman:
- duotone
- globe:
- duotone
- laptop-house:
- duotone
- docker:
- brands
- aws:
- brands
- align-slash:
- duotone
- alarm-exclamation:
- solid
- slash:
- solid
- regular
- list-alt:
- duotone
- spinner-third:
- solid
- atom-alt:
- duotone
- network-wired:
- duotone
- chart-scatter:
- duotone
- chart-network:
- duotone
- lock-alt:
- duotone
- rocket:
- duotone
- solid
- regular
- home:
- solid
- quote-left:
- duotone
- desktop:
- solid
- regular
- save:
- solid
- regular
- eye:
- solid
- regular
- undo:
- solid
- regular
- book-dead:
- solid
- rev:
- brands
- robot:
- solid
- align-left:
- solid
- user-friends:
- regular
- microsoft:
- brands
- info-circle:
- regular
- square-full:
- solid
- concierge-bell:
- duotone
- badge-check:
- duotone
- dot-circle:
- duotone
- laptop-code:
- duotone
- discourse:
- brands
- comment-dots:
- duotone
================================================
FILE: public/fonts/font-awesome/js/all.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],
"cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],
"cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"],
"cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],
"cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],
"cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],
"cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],
"cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],
"cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],
"cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],
"cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],
"discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],
"docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],
"github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
"instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
"microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
"rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],
"slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],
"twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
bunker(function () {
defineIcons('fab', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]],
"align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]],
"atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]],
"badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]],
"bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]],
"books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]],
"brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]],
"chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]],
"circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]],
"clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]],
"cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]],
"comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]],
"dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]],
"envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]],
"exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]],
"file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]],
"file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]],
"globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]],
"globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]],
"globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]],
"globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]],
"globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]],
"graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]],
"history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]],
"key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]],
"laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]],
"laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]],
"laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]],
"life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]],
"lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]],
"list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]],
"list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]],
"lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]],
"map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]],
"moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]],
"network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]],
"planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]],
"question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]],
"quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]],
"random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]],
"rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]],
"search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]],
"server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]],
"sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]],
"siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]],
"smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]],
"snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]],
"sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]],
"tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]],
"university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]],
"user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]],
"user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]],
"user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]],
"users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
bunker(function () {
defineIcons('fad', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"],
"eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"],
"file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"],
"info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"],
"info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"],
"plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"],
"question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"],
"rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"],
"slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"],
"times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"],
"undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"],
"undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"],
"user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"],
"user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"],
"users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
bunker(function () {
defineIcons('far', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"],
"align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"],
"book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"],
"check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"],
"circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"],
"cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"],
"credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"],
"envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"],
"eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"],
"fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"],
"history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"],
"home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"],
"plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"],
"robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"],
"rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"],
"slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"],
"spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"],
"square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"],
"times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"],
"times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"],
"undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"],
"undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"],
"user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"],
"users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
bunker(function () {
defineIcons('fas', icons);
});
}());
(function () {
'use strict';
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.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-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
function bootstrap() {
if (IS_BROWSER) {
if (!WINDOW.FontAwesome) {
WINDOW.FontAwesome = api;
}
domready(function () {
autoReplace();
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements
});
});
}
namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, {
addPack: function addPack(prefix, icons) {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons);
build();
autoReplace();
},
addShims: function addShims(shims) {
var _namespace$shims;
(_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));
build();
autoReplace();
}
});
}
bunker(bootstrap);
}());
================================================
FILE: public/fonts/font-awesome/js/brands.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],
"cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],
"cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"],
"cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],
"cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],
"cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],
"cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],
"cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],
"cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],
"cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],
"cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],
"discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],
"docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],
"github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
"instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
"microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
"rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],
"slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],
"twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
bunker(function () {
defineIcons('fab', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js/duotone.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]],
"align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]],
"atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]],
"badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]],
"bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]],
"books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]],
"brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]],
"chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]],
"circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]],
"clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]],
"cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]],
"comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]],
"dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]],
"envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]],
"exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]],
"file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]],
"file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]],
"globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]],
"globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]],
"globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]],
"globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]],
"globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]],
"graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]],
"history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]],
"key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]],
"laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]],
"laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]],
"laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]],
"life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]],
"lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]],
"list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]],
"list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]],
"lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]],
"map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]],
"moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]],
"network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]],
"planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]],
"question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]],
"quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]],
"random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]],
"rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]],
"search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]],
"server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]],
"sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]],
"siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]],
"smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]],
"snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]],
"sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]],
"tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]],
"university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]],
"user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]],
"user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]],
"user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]],
"users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
bunker(function () {
defineIcons('fad', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js/fontawesome.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.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-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
function bootstrap() {
if (IS_BROWSER) {
if (!WINDOW.FontAwesome) {
WINDOW.FontAwesome = api;
}
domready(function () {
autoReplace();
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements
});
});
}
namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, {
addPack: function addPack(prefix, icons) {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons);
build();
autoReplace();
},
addShims: function addShims(shims) {
var _namespace$shims;
(_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));
build();
autoReplace();
}
});
}
bunker(bootstrap);
}());
================================================
FILE: public/fonts/font-awesome/js/regular.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"],
"eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"],
"file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"],
"info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"],
"info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"],
"plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"],
"question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"],
"rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"],
"slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"],
"times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"],
"undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"],
"undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"],
"user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"],
"user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"],
"users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
bunker(function () {
defineIcons('far', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js/solid.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"],
"align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"],
"book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"],
"check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"],
"circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"],
"cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"],
"credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"],
"envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"],
"eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"],
"fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"],
"history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"],
"home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"],
"plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"],
"robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"],
"rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"],
"slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"],
"spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"],
"square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"],
"times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"],
"times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"],
"undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"],
"undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"],
"user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"],
"users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
bunker(function () {
defineIcons('fas', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/LICENSE.txt
================================================
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/README.md
================================================
# @fortawesome/fontawesome-common-types - SVG with JavaScript
> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
[](https://www.npmjs.com/package/@fortawesome/fontawesome-common-types)
## What is this package?
Font Awesome 5 JavaScript packages support TypeScript. This package abstracts out some of the common definitions that those packages use.
## Here be dragons
If you are trying to import types from this package we *highly* recommend you do the following instead as *all types in this package are re-exported to the main fontawesome package*.
your.ts
```
import {
IconName
} from `@fortawesome/fontawesome-svg-core`
const myIcon: IconName = "..."
```
## Issues and support
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/attribution.js
================================================
console.log(`Font Awesome Free 0.2.36 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/index.d.ts
================================================
export type IconPrefix = "fas" | "fab" | "far" | "fal" | "fad";
export type IconPathData = string | string[]
export interface IconLookup {
prefix: IconPrefix;
// IconName is defined in the code that will be generated at build time and bundled with this file.
iconName: IconName;
}
export interface IconDefinition extends IconLookup {
icon: [
number, // width
number, // height
string[], // ligatures
string, // unicode
IconPathData // svgPathData
];
}
export interface IconPack {
[key: string]: IconDefinition;
}
export type IconName = 'aws' |
'cc-amazon-pay' |
'cc-amex' |
'cc-apple-pay' |
'cc-diners-club' |
'cc-discover' |
'cc-jcb' |
'cc-mastercard' |
'cc-paypal' |
'cc-stripe' |
'cc-visa' |
'discourse' |
'docker' |
'github' |
'instagram' |
'microsoft' |
'rev' |
'slack' |
'twitter' |
'abacus' |
'align-slash' |
'atom-alt' |
'badge-check' |
'bell' |
'books' |
'brackets-curly' |
'chart-network' |
'chart-scatter' |
'check' |
'circle' |
'clouds' |
'cogs' |
'comment-dots' |
'concierge-bell' |
'dot-circle' |
'envelope' |
'exchange-alt' |
'file-alt' |
'file-code' |
'globe' |
'globe-africa' |
'globe-americas' |
'globe-asia' |
'globe-europe' |
'graduation-cap' |
'history' |
'key' |
'key-skeleton' |
'laptop' |
'laptop-code' |
'laptop-house' |
'life-ring' |
'lightbulb' |
'list-alt' |
'list-ul' |
'lock-alt' |
'map-marker-alt' |
'moon-stars' |
'network-wired' |
'planet-ringed' |
'question-circle' |
'quote-left' |
'random' |
'rocket' |
'search' |
'server' |
'sign-out' |
'siren-on' |
'smile' |
'snowman' |
'sun' |
'tasks' |
'university' |
'user' |
'user-hard-hat' |
'user-shield' |
'users' |
'check-circle' |
'desktop' |
'eye' |
'file-code' |
'info' |
'info-circle' |
'plus' |
'question-circle' |
'rocket' |
'save' |
'slash' |
'times' |
'undo' |
'undo-alt' |
'user' |
'user-friends' |
'users' |
'alarm-exclamation' |
'align-left' |
'book-dead' |
'check' |
'circle' |
'cloud' |
'credit-card' |
'desktop' |
'envelope' |
'eye' |
'fingerprint' |
'history' |
'home' |
'plus' |
'robot' |
'rocket' |
'save' |
'slash' |
'spinner-third' |
'square-full' |
'times' |
'times-circle' |
'undo' |
'undo-alt' |
'user' |
'users';
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {},
"version": "0.2.36",
"name": "@fortawesome/fontawesome-common-types",
"license": "MIT",
"types": "./index.d.ts",
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/attribution.js
================================================
console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/all.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
.fa,
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.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%; }
.fa-stack-1x {
line-height: inherit; }
.fa-stack-2x {
font-size: 2em; }
.fa-inverse {
color: #fff; }
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-abacus:before {
content: "\f640"; }
.fa-alarm-exclamation:before {
content: "\f843"; }
.fa-align-left:before {
content: "\f036"; }
.fa-align-slash:before {
content: "\f846"; }
.fa-atom-alt:before {
content: "\f5d3"; }
.fa-aws:before {
content: "\f375"; }
.fa-badge-check:before {
content: "\f336"; }
.fa-bell:before {
content: "\f0f3"; }
.fa-book-dead:before {
content: "\f6b7"; }
.fa-books:before {
content: "\f5db"; }
.fa-brackets-curly:before {
content: "\f7ea"; }
.fa-cc-amazon-pay:before {
content: "\f42d"; }
.fa-cc-amex:before {
content: "\f1f3"; }
.fa-cc-apple-pay:before {
content: "\f416"; }
.fa-cc-diners-club:before {
content: "\f24c"; }
.fa-cc-discover:before {
content: "\f1f2"; }
.fa-cc-jcb:before {
content: "\f24b"; }
.fa-cc-mastercard:before {
content: "\f1f1"; }
.fa-cc-paypal:before {
content: "\f1f4"; }
.fa-cc-stripe:before {
content: "\f1f5"; }
.fa-cc-visa:before {
content: "\f1f0"; }
.fa-chart-network:before {
content: "\f78a"; }
.fa-chart-scatter:before {
content: "\f7ee"; }
.fa-check:before {
content: "\f00c"; }
.fa-check-circle:before {
content: "\f058"; }
.fa-circle:before {
content: "\f111"; }
.fa-cloud:before {
content: "\f0c2"; }
.fa-clouds:before {
content: "\f744"; }
.fa-cogs:before {
content: "\f085"; }
.fa-comment-dots:before {
content: "\f4ad"; }
.fa-concierge-bell:before {
content: "\f562"; }
.fa-credit-card:before {
content: "\f09d"; }
.fa-desktop:before {
content: "\f108"; }
.fa-discourse:before {
content: "\f393"; }
.fa-docker:before {
content: "\f395"; }
.fa-dot-circle:before {
content: "\f192"; }
.fa-envelope:before {
content: "\f0e0"; }
.fa-exchange-alt:before {
content: "\f362"; }
.fa-eye:before {
content: "\f06e"; }
.fa-file-alt:before {
content: "\f15c"; }
.fa-file-code:before {
content: "\f1c9"; }
.fa-fingerprint:before {
content: "\f577"; }
.fa-github:before {
content: "\f09b"; }
.fa-globe:before {
content: "\f0ac"; }
.fa-globe-africa:before {
content: "\f57c"; }
.fa-globe-americas:before {
content: "\f57d"; }
.fa-globe-asia:before {
content: "\f57e"; }
.fa-globe-europe:before {
content: "\f7a2"; }
.fa-graduation-cap:before {
content: "\f19d"; }
.fa-history:before {
content: "\f1da"; }
.fa-home:before {
content: "\f015"; }
.fa-info:before {
content: "\f129"; }
.fa-info-circle:before {
content: "\f05a"; }
.fa-instagram:before {
content: "\f16d"; }
.fa-key:before {
content: "\f084"; }
.fa-key-skeleton:before {
content: "\f6f3"; }
.fa-laptop:before {
content: "\f109"; }
.fa-laptop-code:before {
content: "\f5fc"; }
.fa-laptop-house:before {
content: "\e066"; }
.fa-life-ring:before {
content: "\f1cd"; }
.fa-lightbulb:before {
content: "\f0eb"; }
.fa-list-alt:before {
content: "\f022"; }
.fa-list-ul:before {
content: "\f0ca"; }
.fa-lock-alt:before {
content: "\f30d"; }
.fa-map-marker-alt:before {
content: "\f3c5"; }
.fa-microsoft:before {
content: "\f3ca"; }
.fa-moon-stars:before {
content: "\f755"; }
.fa-network-wired:before {
content: "\f6ff"; }
.fa-planet-ringed:before {
content: "\e020"; }
.fa-plus:before {
content: "\f067"; }
.fa-question-circle:before {
content: "\f059"; }
.fa-quote-left:before {
content: "\f10d"; }
.fa-random:before {
content: "\f074"; }
.fa-rev:before {
content: "\f5b2"; }
.fa-robot:before {
content: "\f544"; }
.fa-rocket:before {
content: "\f135"; }
.fa-save:before {
content: "\f0c7"; }
.fa-search:before {
content: "\f002"; }
.fa-server:before {
content: "\f233"; }
.fa-sign-out:before {
content: "\f08b"; }
.fa-siren-on:before {
content: "\e02e"; }
.fa-slack:before {
content: "\f198"; }
.fa-slash:before {
content: "\f715"; }
.fa-smile:before {
content: "\f118"; }
.fa-snowman:before {
content: "\f7d0"; }
.fa-spinner-third:before {
content: "\f3f4"; }
.fa-square-full:before {
content: "\f45c"; }
.fa-sun:before {
content: "\f185"; }
.fa-tasks:before {
content: "\f0ae"; }
.fa-times:before {
content: "\f00d"; }
.fa-times-circle:before {
content: "\f057"; }
.fa-twitter:before {
content: "\f099"; }
.fa-undo:before {
content: "\f0e2"; }
.fa-undo-alt:before {
content: "\f2ea"; }
.fa-university:before {
content: "\f19c"; }
.fa-user:before {
content: "\f007"; }
.fa-user-friends:before {
content: "\f500"; }
.fa-user-hard-hat:before {
content: "\f82c"; }
.fa-user-shield:before {
content: "\f505"; }
.fa-users:before {
content: "\f0c0"; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-duotone-900.eot");
src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); }
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900; }
.fad:before {
position: absolute;
color: var(--fa-primary-color, inherit);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad:after {
color: var(--fa-secondary-color, inherit);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:before,
.fad.fa-swap-opacity:before {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:after,
.fad.fa-swap-opacity:after {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad.fa-inverse {
color: #fff; }
.fad.fa-stack-1x, .fad.fa-stack-2x {
position: absolute; }
.fad.fa-stack-1x:before,
.fad.fa-stack-2x:before,
.fad.fa-fw:before {
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%); }
.fad.fa-abacus:after {
content: "\10f640"; }
.fad.fa-align-slash:after {
content: "\10f846"; }
.fad.fa-atom-alt:after {
content: "\10f5d3"; }
.fad.fa-badge-check:after {
content: "\10f336"; }
.fad.fa-bell:after {
content: "\10f0f3"; }
.fad.fa-books:after {
content: "\10f5db"; }
.fad.fa-brackets-curly:after {
content: "\10f7ea"; }
.fad.fa-chart-network:after {
content: "\10f78a"; }
.fad.fa-chart-scatter:after {
content: "\10f7ee"; }
.fad.fa-check:after {
content: "\10f00c"; }
.fad.fa-circle:after {
content: "\10f111"; }
.fad.fa-clouds:after {
content: "\10f744"; }
.fad.fa-cogs:after {
content: "\10f085"; }
.fad.fa-comment-dots:after {
content: "\10f4ad"; }
.fad.fa-concierge-bell:after {
content: "\10f562"; }
.fad.fa-dot-circle:after {
content: "\10f192"; }
.fad.fa-envelope:after {
content: "\10f0e0"; }
.fad.fa-exchange-alt:after {
content: "\10f362"; }
.fad.fa-file-alt:after {
content: "\10f15c"; }
.fad.fa-file-code:after {
content: "\10f1c9"; }
.fad.fa-globe:after {
content: "\10f0ac"; }
.fad.fa-globe-africa:after {
content: "\10f57c"; }
.fad.fa-globe-americas:after {
content: "\10f57d"; }
.fad.fa-globe-asia:after {
content: "\10f57e"; }
.fad.fa-globe-europe:after {
content: "\10f7a2"; }
.fad.fa-graduation-cap:after {
content: "\10f19d"; }
.fad.fa-history:after {
content: "\10f1da"; }
.fad.fa-key:after {
content: "\10f084"; }
.fad.fa-key-skeleton:after {
content: "\10f6f3"; }
.fad.fa-laptop:after {
content: "\10f109"; }
.fad.fa-laptop-code:after {
content: "\10f5fc"; }
.fad.fa-laptop-house:after {
content: "\10e066"; }
.fad.fa-life-ring:after {
content: "\10f1cd"; }
.fad.fa-lightbulb:after {
content: "\10f0eb"; }
.fad.fa-list-alt:after {
content: "\10f022"; }
.fad.fa-list-ul:after {
content: "\10f0ca"; }
.fad.fa-lock-alt:after {
content: "\10f30d"; }
.fad.fa-map-marker-alt:after {
content: "\10f3c5"; }
.fad.fa-moon-stars:after {
content: "\10f755"; }
.fad.fa-network-wired:after {
content: "\10f6ff"; }
.fad.fa-planet-ringed:after {
content: "\10e020"; }
.fad.fa-question-circle:after {
content: "\10f059"; }
.fad.fa-quote-left:after {
content: "\10f10d"; }
.fad.fa-random:after {
content: "\10f074"; }
.fad.fa-rocket:after {
content: "\10f135"; }
.fad.fa-search:after {
content: "\10f002"; }
.fad.fa-server:after {
content: "\10f233"; }
.fad.fa-sign-out:after {
content: "\10f08b"; }
.fad.fa-siren-on:after {
content: "\10e02e"; }
.fad.fa-smile:after {
content: "\10f118"; }
.fad.fa-snowman:after {
content: "\10f7d0"; }
.fad.fa-sun:after {
content: "\10f185"; }
.fad.fa-tasks:after {
content: "\10f0ae"; }
.fad.fa-university:after {
content: "\10f19c"; }
.fad.fa-user:after {
content: "\10f007"; }
.fad.fa-user-hard-hat:after {
content: "\10f82c"; }
.fad.fa-user-shield:after {
content: "\10f505"; }
.fad.fa-users:after {
content: "\10f0c0"; }
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/brands.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/duotone.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-duotone-900.eot");
src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); }
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900; }
.fad:before {
position: absolute;
color: var(--fa-primary-color, inherit);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad:after {
color: var(--fa-secondary-color, inherit);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:before,
.fad.fa-swap-opacity:before {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.fa-swap-opacity .fad:after,
.fad.fa-swap-opacity:after {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.fad.fa-inverse {
color: #fff; }
.fad.fa-stack-1x, .fad.fa-stack-2x {
position: absolute; }
.fad.fa-stack-1x:before,
.fad.fa-stack-2x:before,
.fad.fa-fw:before {
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%); }
.fad.fa-abacus:after {
content: "\10f640"; }
.fad.fa-align-slash:after {
content: "\10f846"; }
.fad.fa-atom-alt:after {
content: "\10f5d3"; }
.fad.fa-badge-check:after {
content: "\10f336"; }
.fad.fa-bell:after {
content: "\10f0f3"; }
.fad.fa-books:after {
content: "\10f5db"; }
.fad.fa-brackets-curly:after {
content: "\10f7ea"; }
.fad.fa-chart-network:after {
content: "\10f78a"; }
.fad.fa-chart-scatter:after {
content: "\10f7ee"; }
.fad.fa-check:after {
content: "\10f00c"; }
.fad.fa-circle:after {
content: "\10f111"; }
.fad.fa-clouds:after {
content: "\10f744"; }
.fad.fa-cogs:after {
content: "\10f085"; }
.fad.fa-comment-dots:after {
content: "\10f4ad"; }
.fad.fa-concierge-bell:after {
content: "\10f562"; }
.fad.fa-dot-circle:after {
content: "\10f192"; }
.fad.fa-envelope:after {
content: "\10f0e0"; }
.fad.fa-exchange-alt:after {
content: "\10f362"; }
.fad.fa-file-alt:after {
content: "\10f15c"; }
.fad.fa-file-code:after {
content: "\10f1c9"; }
.fad.fa-globe:after {
content: "\10f0ac"; }
.fad.fa-globe-africa:after {
content: "\10f57c"; }
.fad.fa-globe-americas:after {
content: "\10f57d"; }
.fad.fa-globe-asia:after {
content: "\10f57e"; }
.fad.fa-globe-europe:after {
content: "\10f7a2"; }
.fad.fa-graduation-cap:after {
content: "\10f19d"; }
.fad.fa-history:after {
content: "\10f1da"; }
.fad.fa-key:after {
content: "\10f084"; }
.fad.fa-key-skeleton:after {
content: "\10f6f3"; }
.fad.fa-laptop:after {
content: "\10f109"; }
.fad.fa-laptop-code:after {
content: "\10f5fc"; }
.fad.fa-laptop-house:after {
content: "\10e066"; }
.fad.fa-life-ring:after {
content: "\10f1cd"; }
.fad.fa-lightbulb:after {
content: "\10f0eb"; }
.fad.fa-list-alt:after {
content: "\10f022"; }
.fad.fa-list-ul:after {
content: "\10f0ca"; }
.fad.fa-lock-alt:after {
content: "\10f30d"; }
.fad.fa-map-marker-alt:after {
content: "\10f3c5"; }
.fad.fa-moon-stars:after {
content: "\10f755"; }
.fad.fa-network-wired:after {
content: "\10f6ff"; }
.fad.fa-planet-ringed:after {
content: "\10e020"; }
.fad.fa-question-circle:after {
content: "\10f059"; }
.fad.fa-quote-left:after {
content: "\10f10d"; }
.fad.fa-random:after {
content: "\10f074"; }
.fad.fa-rocket:after {
content: "\10f135"; }
.fad.fa-search:after {
content: "\10f002"; }
.fad.fa-server:after {
content: "\10f233"; }
.fad.fa-sign-out:after {
content: "\10f08b"; }
.fad.fa-siren-on:after {
content: "\10e02e"; }
.fad.fa-smile:after {
content: "\10f118"; }
.fad.fa-snowman:after {
content: "\10f7d0"; }
.fad.fa-sun:after {
content: "\10f185"; }
.fad.fa-tasks:after {
content: "\10f0ae"; }
.fad.fa-university:after {
content: "\10f19c"; }
.fad.fa-user:after {
content: "\10f007"; }
.fad.fa-user-hard-hat:after {
content: "\10f82c"; }
.fad.fa-user-shield:after {
content: "\10f505"; }
.fad.fa-users:after {
content: "\10f0c0"; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/fontawesome.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
.fa,
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.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%; }
.fa-stack-1x {
line-height: inherit; }
.fa-stack-2x {
font-size: 2em; }
.fa-inverse {
color: #fff; }
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-abacus:before {
content: "\f640"; }
.fa-alarm-exclamation:before {
content: "\f843"; }
.fa-align-left:before {
content: "\f036"; }
.fa-align-slash:before {
content: "\f846"; }
.fa-atom-alt:before {
content: "\f5d3"; }
.fa-aws:before {
content: "\f375"; }
.fa-badge-check:before {
content: "\f336"; }
.fa-bell:before {
content: "\f0f3"; }
.fa-book-dead:before {
content: "\f6b7"; }
.fa-books:before {
content: "\f5db"; }
.fa-brackets-curly:before {
content: "\f7ea"; }
.fa-cc-amazon-pay:before {
content: "\f42d"; }
.fa-cc-amex:before {
content: "\f1f3"; }
.fa-cc-apple-pay:before {
content: "\f416"; }
.fa-cc-diners-club:before {
content: "\f24c"; }
.fa-cc-discover:before {
content: "\f1f2"; }
.fa-cc-jcb:before {
content: "\f24b"; }
.fa-cc-mastercard:before {
content: "\f1f1"; }
.fa-cc-paypal:before {
content: "\f1f4"; }
.fa-cc-stripe:before {
content: "\f1f5"; }
.fa-cc-visa:before {
content: "\f1f0"; }
.fa-chart-network:before {
content: "\f78a"; }
.fa-chart-scatter:before {
content: "\f7ee"; }
.fa-check:before {
content: "\f00c"; }
.fa-check-circle:before {
content: "\f058"; }
.fa-circle:before {
content: "\f111"; }
.fa-cloud:before {
content: "\f0c2"; }
.fa-clouds:before {
content: "\f744"; }
.fa-cogs:before {
content: "\f085"; }
.fa-comment-dots:before {
content: "\f4ad"; }
.fa-concierge-bell:before {
content: "\f562"; }
.fa-credit-card:before {
content: "\f09d"; }
.fa-desktop:before {
content: "\f108"; }
.fa-discourse:before {
content: "\f393"; }
.fa-docker:before {
content: "\f395"; }
.fa-dot-circle:before {
content: "\f192"; }
.fa-envelope:before {
content: "\f0e0"; }
.fa-exchange-alt:before {
content: "\f362"; }
.fa-eye:before {
content: "\f06e"; }
.fa-file-alt:before {
content: "\f15c"; }
.fa-file-code:before {
content: "\f1c9"; }
.fa-fingerprint:before {
content: "\f577"; }
.fa-github:before {
content: "\f09b"; }
.fa-globe:before {
content: "\f0ac"; }
.fa-globe-africa:before {
content: "\f57c"; }
.fa-globe-americas:before {
content: "\f57d"; }
.fa-globe-asia:before {
content: "\f57e"; }
.fa-globe-europe:before {
content: "\f7a2"; }
.fa-graduation-cap:before {
content: "\f19d"; }
.fa-history:before {
content: "\f1da"; }
.fa-home:before {
content: "\f015"; }
.fa-info:before {
content: "\f129"; }
.fa-info-circle:before {
content: "\f05a"; }
.fa-instagram:before {
content: "\f16d"; }
.fa-key:before {
content: "\f084"; }
.fa-key-skeleton:before {
content: "\f6f3"; }
.fa-laptop:before {
content: "\f109"; }
.fa-laptop-code:before {
content: "\f5fc"; }
.fa-laptop-house:before {
content: "\e066"; }
.fa-life-ring:before {
content: "\f1cd"; }
.fa-lightbulb:before {
content: "\f0eb"; }
.fa-list-alt:before {
content: "\f022"; }
.fa-list-ul:before {
content: "\f0ca"; }
.fa-lock-alt:before {
content: "\f30d"; }
.fa-map-marker-alt:before {
content: "\f3c5"; }
.fa-microsoft:before {
content: "\f3ca"; }
.fa-moon-stars:before {
content: "\f755"; }
.fa-network-wired:before {
content: "\f6ff"; }
.fa-planet-ringed:before {
content: "\e020"; }
.fa-plus:before {
content: "\f067"; }
.fa-question-circle:before {
content: "\f059"; }
.fa-quote-left:before {
content: "\f10d"; }
.fa-random:before {
content: "\f074"; }
.fa-rev:before {
content: "\f5b2"; }
.fa-robot:before {
content: "\f544"; }
.fa-rocket:before {
content: "\f135"; }
.fa-save:before {
content: "\f0c7"; }
.fa-search:before {
content: "\f002"; }
.fa-server:before {
content: "\f233"; }
.fa-sign-out:before {
content: "\f08b"; }
.fa-siren-on:before {
content: "\e02e"; }
.fa-slack:before {
content: "\f198"; }
.fa-slash:before {
content: "\f715"; }
.fa-smile:before {
content: "\f118"; }
.fa-snowman:before {
content: "\f7d0"; }
.fa-spinner-third:before {
content: "\f3f4"; }
.fa-square-full:before {
content: "\f45c"; }
.fa-sun:before {
content: "\f185"; }
.fa-tasks:before {
content: "\f0ae"; }
.fa-times:before {
content: "\f00d"; }
.fa-times-circle:before {
content: "\f057"; }
.fa-twitter:before {
content: "\f099"; }
.fa-undo:before {
content: "\f0e2"; }
.fa-undo-alt:before {
content: "\f2ea"; }
.fa-university:before {
content: "\f19c"; }
.fa-user:before {
content: "\f007"; }
.fa-user-friends:before {
content: "\f500"; }
.fa-user-hard-hat:before {
content: "\f82c"; }
.fa-user-shield:before {
content: "\f505"; }
.fa-users:before {
content: "\f0c0"; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/regular.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/solid.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/svg-with-js.css
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse {
color: #fff; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/all.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],
"cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],
"cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"],
"cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],
"cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],
"cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],
"cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],
"cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],
"cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],
"cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],
"cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],
"discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],
"docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],
"github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
"instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
"microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
"rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],
"slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],
"twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
bunker(function () {
defineIcons('fab', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]],
"align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]],
"atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]],
"badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]],
"bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]],
"books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]],
"brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]],
"chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]],
"circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]],
"clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]],
"cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]],
"comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]],
"dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]],
"envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]],
"exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]],
"file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]],
"file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]],
"globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]],
"globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]],
"globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]],
"globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]],
"globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]],
"graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]],
"history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]],
"key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]],
"laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]],
"laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]],
"laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]],
"life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]],
"lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]],
"list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]],
"list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]],
"lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]],
"map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]],
"moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]],
"network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]],
"planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]],
"question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]],
"quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]],
"random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]],
"rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]],
"search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]],
"server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]],
"sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]],
"siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]],
"smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]],
"snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]],
"sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]],
"tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]],
"university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]],
"user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]],
"user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]],
"user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]],
"users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
bunker(function () {
defineIcons('fad', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"],
"eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"],
"file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"],
"info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"],
"info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"],
"plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"],
"question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"],
"rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"],
"slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"],
"times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"],
"undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"],
"undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"],
"user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"],
"user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"],
"users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
bunker(function () {
defineIcons('far', icons);
});
}());
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"],
"align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"],
"book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"],
"check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"],
"circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"],
"cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"],
"credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"],
"envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"],
"eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"],
"fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"],
"history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"],
"home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"],
"plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"],
"robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"],
"rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"],
"slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"],
"spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"],
"square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"],
"times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"],
"times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"],
"undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"],
"undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"],
"user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"],
"users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
bunker(function () {
defineIcons('fas', icons);
});
}());
(function () {
'use strict';
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.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-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
function bootstrap() {
if (IS_BROWSER) {
if (!WINDOW.FontAwesome) {
WINDOW.FontAwesome = api;
}
domready(function () {
autoReplace();
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements
});
});
}
namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, {
addPack: function addPack(prefix, icons) {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons);
build();
autoReplace();
},
addShims: function addShims(shims) {
var _namespace$shims;
(_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));
build();
autoReplace();
}
});
}
bunker(bootstrap);
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/brands.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],
"cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],
"cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"],
"cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],
"cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],
"cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],
"cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],
"cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],
"cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],
"cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],
"cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],
"discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],
"docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],
"github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
"instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
"microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
"rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],
"slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],
"twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
bunker(function () {
defineIcons('fab', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/duotone.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]],
"align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]],
"atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]],
"badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]],
"bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]],
"books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]],
"brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]],
"chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]],
"circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]],
"clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]],
"cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]],
"comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]],
"concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]],
"dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]],
"envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]],
"exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]],
"file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]],
"file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]],
"globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]],
"globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]],
"globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]],
"globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]],
"globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]],
"graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]],
"history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]],
"key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]],
"key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]],
"laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]],
"laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]],
"laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]],
"life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]],
"lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]],
"list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]],
"list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]],
"lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]],
"map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]],
"moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]],
"network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]],
"planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]],
"question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]],
"quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]],
"random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]],
"rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]],
"search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]],
"server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]],
"sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]],
"siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]],
"smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]],
"snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]],
"sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]],
"tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]],
"university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]],
"user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]],
"user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]],
"user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]],
"users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
bunker(function () {
defineIcons('fad', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/fontawesome.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.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-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
function bootstrap() {
if (IS_BROWSER) {
if (!WINDOW.FontAwesome) {
WINDOW.FontAwesome = api;
}
domready(function () {
autoReplace();
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements
});
});
}
namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, {
addPack: function addPack(prefix, icons) {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons);
build();
autoReplace();
},
addShims: function addShims(shims) {
var _namespace$shims;
(_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));
build();
autoReplace();
}
});
}
bunker(bootstrap);
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/regular.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"],
"eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"],
"file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"],
"info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"],
"info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"],
"plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"],
"question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"],
"rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"],
"slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"],
"times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"],
"undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"],
"undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"],
"user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"],
"user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"],
"users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
bunker(function () {
defineIcons('far', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/solid.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function () {
'use strict';
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var PRODUCTION = function () {
try {
return "production" === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var icons = {
"alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"],
"align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"],
"book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"],
"check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"],
"circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"],
"cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"],
"credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"],
"desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"],
"envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"],
"eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"],
"fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"],
"history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"],
"home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"],
"plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"],
"robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"],
"rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"],
"save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"],
"slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"],
"spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"],
"square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"],
"times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"],
"times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"],
"undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"],
"undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"],
"user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"],
"users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
bunker(function () {
defineIcons('fas', icons);
});
}());
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_animated.less
================================================
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_bordered-pulled.less
================================================
// Bordered & Pulled
// -------------------------
.@{fa-css-prefix}-border {
border-radius: .1em;
border: solid .08em @fa-border-color;
padding: .2em .25em .15em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_core.less
================================================
// Base Class Definition
// -------------------------
.@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_fixed-width.less
================================================
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: (20em / 16);
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_icons.less
================================================
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.@{fa-css-prefix}-abacus:before { content: @fa-var-abacus; }
.@{fa-css-prefix}-alarm-exclamation:before { content: @fa-var-alarm-exclamation; }
.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
.@{fa-css-prefix}-align-slash:before { content: @fa-var-align-slash; }
.@{fa-css-prefix}-atom-alt:before { content: @fa-var-atom-alt; }
.@{fa-css-prefix}-aws:before { content: @fa-var-aws; }
.@{fa-css-prefix}-badge-check:before { content: @fa-var-badge-check; }
.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
.@{fa-css-prefix}-book-dead:before { content: @fa-var-book-dead; }
.@{fa-css-prefix}-books:before { content: @fa-var-books; }
.@{fa-css-prefix}-brackets-curly:before { content: @fa-var-brackets-curly; }
.@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; }
.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
.@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; }
.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
.@{fa-css-prefix}-chart-network:before { content: @fa-var-chart-network; }
.@{fa-css-prefix}-chart-scatter:before { content: @fa-var-chart-scatter; }
.@{fa-css-prefix}-check:before { content: @fa-var-check; }
.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
.@{fa-css-prefix}-clouds:before { content: @fa-var-clouds; }
.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
.@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; }
.@{fa-css-prefix}-concierge-bell:before { content: @fa-var-concierge-bell; }
.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
.@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; }
.@{fa-css-prefix}-docker:before { content: @fa-var-docker; }
.@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; }
.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
.@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; }
.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
.@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; }
.@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; }
.@{fa-css-prefix}-fingerprint:before { content: @fa-var-fingerprint; }
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
.@{fa-css-prefix}-globe-africa:before { content: @fa-var-globe-africa; }
.@{fa-css-prefix}-globe-americas:before { content: @fa-var-globe-americas; }
.@{fa-css-prefix}-globe-asia:before { content: @fa-var-globe-asia; }
.@{fa-css-prefix}-globe-europe:before { content: @fa-var-globe-europe; }
.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
.@{fa-css-prefix}-history:before { content: @fa-var-history; }
.@{fa-css-prefix}-home:before { content: @fa-var-home; }
.@{fa-css-prefix}-info:before { content: @fa-var-info; }
.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
.@{fa-css-prefix}-key:before { content: @fa-var-key; }
.@{fa-css-prefix}-key-skeleton:before { content: @fa-var-key-skeleton; }
.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
.@{fa-css-prefix}-laptop-code:before { content: @fa-var-laptop-code; }
.@{fa-css-prefix}-laptop-house:before { content: @fa-var-laptop-house; }
.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
.@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; }
.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
.@{fa-css-prefix}-lock-alt:before { content: @fa-var-lock-alt; }
.@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; }
.@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; }
.@{fa-css-prefix}-moon-stars:before { content: @fa-var-moon-stars; }
.@{fa-css-prefix}-network-wired:before { content: @fa-var-network-wired; }
.@{fa-css-prefix}-planet-ringed:before { content: @fa-var-planet-ringed; }
.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
.@{fa-css-prefix}-random:before { content: @fa-var-random; }
.@{fa-css-prefix}-rev:before { content: @fa-var-rev; }
.@{fa-css-prefix}-robot:before { content: @fa-var-robot; }
.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
.@{fa-css-prefix}-save:before { content: @fa-var-save; }
.@{fa-css-prefix}-search:before { content: @fa-var-search; }
.@{fa-css-prefix}-server:before { content: @fa-var-server; }
.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
.@{fa-css-prefix}-siren-on:before { content: @fa-var-siren-on; }
.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
.@{fa-css-prefix}-slash:before { content: @fa-var-slash; }
.@{fa-css-prefix}-smile:before { content: @fa-var-smile; }
.@{fa-css-prefix}-snowman:before { content: @fa-var-snowman; }
.@{fa-css-prefix}-spinner-third:before { content: @fa-var-spinner-third; }
.@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; }
.@{fa-css-prefix}-sun:before { content: @fa-var-sun; }
.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
.@{fa-css-prefix}-times:before { content: @fa-var-times; }
.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
.@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; }
.@{fa-css-prefix}-university:before { content: @fa-var-university; }
.@{fa-css-prefix}-user:before { content: @fa-var-user; }
.@{fa-css-prefix}-user-friends:before { content: @fa-var-user-friends; }
.@{fa-css-prefix}-user-hard-hat:before { content: @fa-var-user-hard-hat; }
.@{fa-css-prefix}-user-shield:before { content: @fa-var-user-shield; }
.@{fa-css-prefix}-users:before { content: @fa-var-users; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_larger.less
================================================
// Icon Sizes
// -------------------------
.larger(@factor) when (@factor > 0) {
.larger((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.@{fa-css-prefix}-xs {
font-size: .75em;
}
.@{fa-css-prefix}-sm {
font-size: .875em;
}
.larger(10);
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_list.less
================================================
// List Icons
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: (@fa-li-width * 5/4);
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: -@fa-li-width;
position: absolute;
text-align: center;
width: @fa-li-width;
line-height: inherit;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_mixins.less
================================================
// Mixins
// --------------------------
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
.fa-icon-rotate(@degrees, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
transform: scale(@horiz, @vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
.sr-only() {
border: 0;
clip: rect(0,0,0,0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
.sr-only-focusable() {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_rotated-flipped.less
================================================
// Rotated & Flipped Icons
// -------------------------
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
.@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.@{fa-css-prefix}-rotate-90,
.@{fa-css-prefix}-rotate-180,
.@{fa-css-prefix}-rotate-270,
.@{fa-css-prefix}-flip-horizontal,
.@{fa-css-prefix}-flip-vertical,
.@{fa-css-prefix}-flip-both {
filter: none;
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_screen-reader.less
================================================
// Screen Readers
// -------------------------
.sr-only { .sr-only(); }
.sr-only-focusable { .sr-only-focusable(); }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_stacked.less
================================================
// Stacked Icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: 2em;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_variables.less
================================================
// Variables
// --------------------------
@fa-font-path: "../webfonts";
@fa-font-size-base: 16px;
@fa-font-display: block;
@fa-line-height-base: 1;
@fa-css-prefix: fa;
@fa-version: "5.15.4";
@fa-border-color: #eee;
@fa-inverse: #fff;
@fa-li-width: 2em;
@fa-primary-opacity: 1;
@fa-secondary-opacity: .4;
@fa-var-abacus: "\f640";
@fa-var-alarm-exclamation: "\f843";
@fa-var-align-left: "\f036";
@fa-var-align-slash: "\f846";
@fa-var-atom-alt: "\f5d3";
@fa-var-aws: "\f375";
@fa-var-badge-check: "\f336";
@fa-var-bell: "\f0f3";
@fa-var-book-dead: "\f6b7";
@fa-var-books: "\f5db";
@fa-var-brackets-curly: "\f7ea";
@fa-var-cc-amazon-pay: "\f42d";
@fa-var-cc-amex: "\f1f3";
@fa-var-cc-apple-pay: "\f416";
@fa-var-cc-diners-club: "\f24c";
@fa-var-cc-discover: "\f1f2";
@fa-var-cc-jcb: "\f24b";
@fa-var-cc-mastercard: "\f1f1";
@fa-var-cc-paypal: "\f1f4";
@fa-var-cc-stripe: "\f1f5";
@fa-var-cc-visa: "\f1f0";
@fa-var-chart-network: "\f78a";
@fa-var-chart-scatter: "\f7ee";
@fa-var-check: "\f00c";
@fa-var-check-circle: "\f058";
@fa-var-circle: "\f111";
@fa-var-cloud: "\f0c2";
@fa-var-clouds: "\f744";
@fa-var-cogs: "\f085";
@fa-var-comment-dots: "\f4ad";
@fa-var-concierge-bell: "\f562";
@fa-var-credit-card: "\f09d";
@fa-var-desktop: "\f108";
@fa-var-discourse: "\f393";
@fa-var-docker: "\f395";
@fa-var-dot-circle: "\f192";
@fa-var-envelope: "\f0e0";
@fa-var-exchange-alt: "\f362";
@fa-var-eye: "\f06e";
@fa-var-file-alt: "\f15c";
@fa-var-file-code: "\f1c9";
@fa-var-fingerprint: "\f577";
@fa-var-github: "\f09b";
@fa-var-globe: "\f0ac";
@fa-var-globe-africa: "\f57c";
@fa-var-globe-americas: "\f57d";
@fa-var-globe-asia: "\f57e";
@fa-var-globe-europe: "\f7a2";
@fa-var-graduation-cap: "\f19d";
@fa-var-history: "\f1da";
@fa-var-home: "\f015";
@fa-var-info: "\f129";
@fa-var-info-circle: "\f05a";
@fa-var-instagram: "\f16d";
@fa-var-key: "\f084";
@fa-var-key-skeleton: "\f6f3";
@fa-var-laptop: "\f109";
@fa-var-laptop-code: "\f5fc";
@fa-var-laptop-house: "\e066";
@fa-var-life-ring: "\f1cd";
@fa-var-lightbulb: "\f0eb";
@fa-var-list-alt: "\f022";
@fa-var-list-ul: "\f0ca";
@fa-var-lock-alt: "\f30d";
@fa-var-map-marker-alt: "\f3c5";
@fa-var-microsoft: "\f3ca";
@fa-var-moon-stars: "\f755";
@fa-var-network-wired: "\f6ff";
@fa-var-planet-ringed: "\e020";
@fa-var-plus: "\f067";
@fa-var-question-circle: "\f059";
@fa-var-quote-left: "\f10d";
@fa-var-random: "\f074";
@fa-var-rev: "\f5b2";
@fa-var-robot: "\f544";
@fa-var-rocket: "\f135";
@fa-var-save: "\f0c7";
@fa-var-search: "\f002";
@fa-var-server: "\f233";
@fa-var-sign-out: "\f08b";
@fa-var-siren-on: "\e02e";
@fa-var-slack: "\f198";
@fa-var-slash: "\f715";
@fa-var-smile: "\f118";
@fa-var-snowman: "\f7d0";
@fa-var-spinner-third: "\f3f4";
@fa-var-square-full: "\f45c";
@fa-var-sun: "\f185";
@fa-var-tasks: "\f0ae";
@fa-var-times: "\f00d";
@fa-var-times-circle: "\f057";
@fa-var-twitter: "\f099";
@fa-var-undo: "\f0e2";
@fa-var-undo-alt: "\f2ea";
@fa-var-university: "\f19c";
@fa-var-user: "\f007";
@fa-var-user-friends: "\f500";
@fa-var-user-hard-hat: "\f82c";
@fa-var-user-shield: "\f505";
@fa-var-users: "\f0c0";
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/brands.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.eot');
src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/duotone.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-duotone-900.eot');
src: url('@{fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-duotone-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-duotone-900.woff') format('woff'),
url('@{fa-font-path}/fa-duotone-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg');
}
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900;
}
.fad:before {
position: absolute;
color: ~'var(--@{fa-css-prefix}-primary-color, inherit)';
opacity: @fa-primary-opacity;
opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})';
}
.fad:after {
color: ~'var(--@{fa-css-prefix}-secondary-color, inherit)';
opacity: @fa-secondary-opacity;
opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})';
}
.@{fa-css-prefix}-swap-opacity .fad:before,
.fad.@{fa-css-prefix}-swap-opacity:before {
opacity: @fa-secondary-opacity;
opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})';
}
.@{fa-css-prefix}-swap-opacity .fad:after,
.fad.@{fa-css-prefix}-swap-opacity:after {
opacity: @fa-primary-opacity;
opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})';
}
.fad.@{fa-css-prefix}-inverse {
color: @fa-inverse;
}
.fad.@{fa-css-prefix}-stack-1x, .fad.@{fa-css-prefix}-stack-2x {
position: absolute;
}
.fad.@{fa-css-prefix}-stack-1x:before,
.fad.@{fa-css-prefix}-stack-2x:before,
.fad.@{fa-css-prefix}-fw:before {
left: 50%;
transform: translateX(-50%);
}
.fad.@{fa-css-prefix}-abacus:after { content: "\10f640"; }
.fad.@{fa-css-prefix}-align-slash:after { content: "\10f846"; }
.fad.@{fa-css-prefix}-atom-alt:after { content: "\10f5d3"; }
.fad.@{fa-css-prefix}-badge-check:after { content: "\10f336"; }
.fad.@{fa-css-prefix}-bell:after { content: "\10f0f3"; }
.fad.@{fa-css-prefix}-books:after { content: "\10f5db"; }
.fad.@{fa-css-prefix}-brackets-curly:after { content: "\10f7ea"; }
.fad.@{fa-css-prefix}-chart-network:after { content: "\10f78a"; }
.fad.@{fa-css-prefix}-chart-scatter:after { content: "\10f7ee"; }
.fad.@{fa-css-prefix}-check:after { content: "\10f00c"; }
.fad.@{fa-css-prefix}-circle:after { content: "\10f111"; }
.fad.@{fa-css-prefix}-clouds:after { content: "\10f744"; }
.fad.@{fa-css-prefix}-cogs:after { content: "\10f085"; }
.fad.@{fa-css-prefix}-comment-dots:after { content: "\10f4ad"; }
.fad.@{fa-css-prefix}-concierge-bell:after { content: "\10f562"; }
.fad.@{fa-css-prefix}-dot-circle:after { content: "\10f192"; }
.fad.@{fa-css-prefix}-envelope:after { content: "\10f0e0"; }
.fad.@{fa-css-prefix}-exchange-alt:after { content: "\10f362"; }
.fad.@{fa-css-prefix}-file-alt:after { content: "\10f15c"; }
.fad.@{fa-css-prefix}-file-code:after { content: "\10f1c9"; }
.fad.@{fa-css-prefix}-globe:after { content: "\10f0ac"; }
.fad.@{fa-css-prefix}-globe-africa:after { content: "\10f57c"; }
.fad.@{fa-css-prefix}-globe-americas:after { content: "\10f57d"; }
.fad.@{fa-css-prefix}-globe-asia:after { content: "\10f57e"; }
.fad.@{fa-css-prefix}-globe-europe:after { content: "\10f7a2"; }
.fad.@{fa-css-prefix}-graduation-cap:after { content: "\10f19d"; }
.fad.@{fa-css-prefix}-history:after { content: "\10f1da"; }
.fad.@{fa-css-prefix}-key:after { content: "\10f084"; }
.fad.@{fa-css-prefix}-key-skeleton:after { content: "\10f6f3"; }
.fad.@{fa-css-prefix}-laptop:after { content: "\10f109"; }
.fad.@{fa-css-prefix}-laptop-code:after { content: "\10f5fc"; }
.fad.@{fa-css-prefix}-laptop-house:after { content: "\10e066"; }
.fad.@{fa-css-prefix}-life-ring:after { content: "\10f1cd"; }
.fad.@{fa-css-prefix}-lightbulb:after { content: "\10f0eb"; }
.fad.@{fa-css-prefix}-list-alt:after { content: "\10f022"; }
.fad.@{fa-css-prefix}-list-ul:after { content: "\10f0ca"; }
.fad.@{fa-css-prefix}-lock-alt:after { content: "\10f30d"; }
.fad.@{fa-css-prefix}-map-marker-alt:after { content: "\10f3c5"; }
.fad.@{fa-css-prefix}-moon-stars:after { content: "\10f755"; }
.fad.@{fa-css-prefix}-network-wired:after { content: "\10f6ff"; }
.fad.@{fa-css-prefix}-planet-ringed:after { content: "\10e020"; }
.fad.@{fa-css-prefix}-question-circle:after { content: "\10f059"; }
.fad.@{fa-css-prefix}-quote-left:after { content: "\10f10d"; }
.fad.@{fa-css-prefix}-random:after { content: "\10f074"; }
.fad.@{fa-css-prefix}-rocket:after { content: "\10f135"; }
.fad.@{fa-css-prefix}-search:after { content: "\10f002"; }
.fad.@{fa-css-prefix}-server:after { content: "\10f233"; }
.fad.@{fa-css-prefix}-sign-out:after { content: "\10f08b"; }
.fad.@{fa-css-prefix}-siren-on:after { content: "\10e02e"; }
.fad.@{fa-css-prefix}-smile:after { content: "\10f118"; }
.fad.@{fa-css-prefix}-snowman:after { content: "\10f7d0"; }
.fad.@{fa-css-prefix}-sun:after { content: "\10f185"; }
.fad.@{fa-css-prefix}-tasks:after { content: "\10f0ae"; }
.fad.@{fa-css-prefix}-university:after { content: "\10f19c"; }
.fad.@{fa-css-prefix}-user:after { content: "\10f007"; }
.fad.@{fa-css-prefix}-user-hard-hat:after { content: "\10f82c"; }
.fad.@{fa-css-prefix}-user-shield:after { content: "\10f505"; }
.fad.@{fa-css-prefix}-users:after { content: "\10f0c0"; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/fontawesome.less
================================================
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_larger.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/regular.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.eot');
src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/solid.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.eot');
src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/categories.yml
================================================
accessibility:
icons:
- question-circle
label: Accessibility
alert:
icons:
- alarm-exclamation
- bell
label: Alert
animals:
icons: []
label: Animals
arrows:
icons:
- exchange-alt
- history
- random
- sign-out
- undo
- undo-alt
label: Arrows
audio-video:
icons:
- circle
- random
- undo
- undo-alt
label: Audio & Video
automotive:
icons: []
label: Automotive
autumn:
icons: []
label: Autumn
beverage:
icons: []
label: Beverage
buildings:
icons:
- home
- university
label: Buildings
business:
icons:
- badge-check
- chart-network
- chart-scatter
- envelope
- file-alt
- globe
- laptop-house
- save
- tasks
label: Business
camping:
icons: []
label: Camping
charity:
icons:
- globe
label: Charity
chat:
icons:
- comment-dots
- quote-left
- smile
label: Chat
chess:
icons:
- square-full
label: Chess
childhood:
icons:
- robot
- snowman
label: Childhood
clothing:
icons:
- graduation-cap
label: Clothing
code:
icons:
- brackets-curly
- file-alt
- file-code
- laptop-code
label: Code
communication:
icons:
- bell
- envelope
label: Communication
computers:
icons:
- brackets-curly
- desktop
- laptop
- laptop-house
- save
- server
label: Computers
construction:
icons:
- user-hard-hat
label: Construction
currency:
icons: []
label: Currency
date-time:
icons:
- alarm-exclamation
- bell
label: Date & Time
design:
icons:
- eye
- save
label: Design
editors:
icons:
- align-left
- align-slash
- file-alt
- list-alt
- list-ul
- quote-left
- tasks
- undo
- undo-alt
label: Editors
education:
icons:
- atom-alt
- bell
- books
- graduation-cap
- laptop-code
label: Education
emoji:
icons:
- smile
label: Emoji
energy:
icons:
- atom-alt
- lightbulb
- sun
label: Energy
files:
icons:
- file-alt
- file-code
- save
label: Files
finance:
icons:
- credit-card
label: Finance
fitness:
icons: []
label: Fitness
food:
icons: []
label: Food
fruit-vegetable:
icons: []
label: Fruits & Vegetables
games:
icons: []
label: Games
gaming-tabletop:
icons:
- book-dead
label: Tabletop Gaming
gender:
icons: []
label: Genders
halloween:
icons:
- book-dead
- key-skeleton
label: Halloween
hands:
icons: []
label: Hands
health:
icons: []
label: Health
holiday:
icons:
- snowman
label: Holiday
hotel:
icons:
- concierge-bell
- key
label: Hotel
household:
icons:
- bell
- books
- laptop-house
- lightbulb
- siren-on
label: Household
images:
icons:
- eye
label: Images
interfaces:
icons:
- badge-check
- bell
- check
- check-circle
- circle
- cloud
- cogs
- dot-circle
- envelope
- eye
- file-alt
- fingerprint
- history
- home
- info
- info-circle
- plus
- question-circle
- quote-left
- save
- search
- sign-out
- smile
- times
- times-circle
- undo
- undo-alt
- user
label: Interfaces
logistics:
icons:
- user-hard-hat
label: Logistics
maps:
icons:
- bell
- eye
- globe
- graduation-cap
- home
- info
- info-circle
- key
- life-ring
- lightbulb
- map-marker-alt
- plus
- rocket
- search
- university
label: Maps
maritime:
icons: []
label: Maritime
marketing:
icons:
- badge-check
- lightbulb
label: Marketing
mathematics:
icons:
- abacus
- plus
- times
label: Mathematics
medical:
icons:
- plus
label: Medical
moving:
icons: []
label: Moving
music:
icons: []
label: Music
objects:
icons:
- bell
- book-dead
- cloud
- cogs
- envelope
- eye
- file-alt
- globe
- graduation-cap
- home
- key
- laptop
- life-ring
- lightbulb
- lock-alt
- map-marker-alt
- rocket
- save
- search
- sun
- university
label: Objects
payments-shopping:
icons:
- badge-check
- bell
- cc-amazon-pay
- cc-amex
- cc-apple-pay
- cc-diners-club
- cc-discover
- cc-jcb
- cc-mastercard
- cc-paypal
- cc-stripe
- cc-visa
- credit-card
- key
label: Payments & Shopping
pharmacy:
icons:
- history
label: Pharmacy
political:
icons: []
label: Political
religion:
icons: []
label: Religion
science:
icons:
- atom-alt
- chart-network
- chart-scatter
- key-skeleton
label: Science
science-fiction:
icons:
- atom-alt
- globe
- moon-stars
- planet-ringed
- robot
- rocket
label: Science Fiction
security:
icons:
- eye
- fingerprint
- key
- key-skeleton
- lock-alt
- siren-on
- user-shield
label: Security
shapes:
icons:
- circle
- cloud
label: Shapes
shopping:
icons:
- badge-check
label: Shopping
social:
icons:
- bell
- envelope
- map-marker-alt
- user
- user-friends
- users
label: Social
spinners:
icons:
- atom-alt
- life-ring
- slash
- spinner-third
- sun
label: Spinners
sports:
icons: []
label: Sports
spring:
icons: []
label: Spring
status:
icons:
- badge-check
- bell
- eye
- file-alt
- info
- info-circle
- lightbulb
- lock-alt
- map-marker-alt
- plus
- question-circle
- sign-out
- user
label: Status
summer:
icons:
- sun
label: Summer
toggle:
icons:
- check-circle
- circle
- dot-circle
label: Toggle
travel:
icons:
- concierge-bell
- globe-africa
- globe-americas
- globe-asia
- globe-europe
label: Travel
users-people:
icons:
- smile
- user
- user-friends
- user-hard-hat
- user-shield
- users
label: Users & People
vehicles:
icons:
- rocket
label: Vehicles
weather:
icons:
- cloud
- clouds
- moon-stars
- sun
label: Weather
winter:
icons: []
label: Winter
writing:
icons:
- envelope
- file-alt
- quote-left
label: Writing
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/icons.yml
================================================
abacus:
changes:
- 5.3.0
label: Abacus
search:
terms:
- addition
- ancient
- arithmetic
- calculator
- counting
- hexadecimal
- math
- subtraction
styles:
- duotone
unicode: f640
voted: false
alarm-exclamation:
changes:
- 5.9.0
label: Alarm Exclamation
search:
terms:
- alert
- date
- late
- reminder
- sleep
- snooze
- timer
- timestamp
- watch
styles:
- solid
unicode: f843
voted: false
align-left:
changes:
- '1'
- 5.0.0
- 5.9.0
label: align-left
search:
terms:
- format
- paragraph
- text
styles:
- solid
unicode: f036
voted: false
align-slash:
changes:
- 5.9.0
label: Align Slash
search:
terms:
- cancel
- format
- paragraph
- remove
styles:
- duotone
unicode: f846
voted: false
atom-alt:
changes:
- 5.2.0
- 5.12.0
label: Atom Alt
search:
terms:
- atheism
- chemistry
- electron
- ion
- isotope
- neutron
- nuclear
- proton
- science
- space
styles:
- duotone
unicode: f5d3
voted: false
aws:
changes:
- 5.0.0
- 5.1.0
label: Amazon Web Services (AWS)
search:
terms: []
styles:
- brands
unicode: f375
voted: false
badge-check:
changes:
- 5.0.0
label: Check Badge
search:
terms:
- accept
- achievement
- agree
- award
- confirm
- correct
- done
- ok
- security
- select
- success
- verified
- verify
- winner
- 'yes'
styles:
- duotone
unicode: f336
voted: false
bell:
changes:
- '2'
- 5.0.0
- 5.2.0
- 5.11.0
label: bell
search:
terms:
- alarm
- alert
- chime
- notification
- reminder
styles:
- duotone
unicode: f0f3
voted: false
book-dead:
changes:
- 5.4.0
label: Book of the Dead
search:
terms:
- Dungeons & Dragons
- crossbones
- d&d
- dark arts
- death
- dnd
- documentation
- evil
- fantasy
- halloween
- holiday
- necronomicon
- read
- skull
- spell
styles:
- solid
unicode: f6b7
voted: false
books:
changes:
- 5.2.0
- 5.10.1
label: Books
search:
terms:
- diary
- documentation
- journal
- library
- read
styles:
- duotone
unicode: f5db
voted: false
brackets-curly:
changes:
- 5.7.0
label: Curly Brackets
search:
terms:
- code
- developer
- development
- parentheses
styles:
- duotone
unicode: f7ea
voted: true
cc-amazon-pay:
changes:
- 5.0.2
label: Amazon Pay Credit Card
search:
terms: []
styles:
- brands
unicode: f42d
voted: false
cc-amex:
changes:
- '4.2'
- 5.0.0
- 5.7.0
label: American Express Credit Card
search:
terms:
- amex
styles:
- brands
unicode: f1f3
voted: false
cc-apple-pay:
changes:
- 5.0.0
label: Apple Pay Credit Card
search:
terms: []
styles:
- brands
unicode: f416
voted: false
cc-diners-club:
changes:
- '4.4'
- 5.0.0
label: Diner's Club Credit Card
search:
terms: []
styles:
- brands
unicode: f24c
voted: false
cc-discover:
changes:
- '4.2'
- 5.0.0
label: Discover Credit Card
search:
terms: []
styles:
- brands
unicode: f1f2
voted: false
cc-jcb:
changes:
- '4.4'
- 5.0.0
label: JCB Credit Card
search:
terms: []
styles:
- brands
unicode: f24b
voted: false
cc-mastercard:
changes:
- '4.2'
- 5.0.0
label: MasterCard Credit Card
search:
terms: []
styles:
- brands
unicode: f1f1
voted: false
cc-paypal:
changes:
- '4.2'
- 5.0.0
label: Paypal Credit Card
search:
terms: []
styles:
- brands
unicode: f1f4
voted: false
cc-stripe:
changes:
- '4.2'
- 5.0.0
label: Stripe Credit Card
search:
terms: []
styles:
- brands
unicode: f1f5
voted: false
cc-visa:
changes:
- '4.2'
- 5.0.0
label: Visa Credit Card
search:
terms: []
styles:
- brands
unicode: f1f0
voted: false
chart-network:
changes:
- 5.6.0
label: Network Chart
search:
terms:
- activity
- analytics
- association
- dashboard
- diagram
- distribution
- map
- network
styles:
- duotone
unicode: f78a
voted: true
chart-scatter:
changes:
- 5.7.0
label: Scatter Chart
search:
terms:
- analytics
- chart
- diagram
- graph
- plot
styles:
- duotone
unicode: f7ee
voted: true
check:
changes:
- '1'
- 5.0.0
label: Check
search:
terms:
- accept
- agree
- checkmark
- confirm
- correct
- done
- notice
- notification
- notify
- ok
- select
- success
- tick
- todo
- 'yes'
styles:
- duotone
- solid
unicode: f00c
voted: false
check-circle:
changes:
- '1'
- 5.0.0
label: Check Circle
search:
terms:
- accept
- agree
- confirm
- correct
- done
- ok
- select
- success
- tick
- todo
- 'yes'
styles:
- regular
unicode: f058
voted: false
circle:
changes:
- '3'
- 5.0.0
- 5.10.1
- 5.10.2
label: Circle
search:
terms:
- circle-thin
- diameter
- dot
- ellipse
- notification
- round
styles:
- duotone
- solid
unicode: f111
voted: false
cloud:
changes:
- '2'
- 5.0.0
- 5.0.11
label: Cloud
search:
terms:
- atmosphere
- fog
- overcast
- save
- upload
- weather
styles:
- solid
unicode: f0c2
voted: false
clouds:
changes:
- 5.5.0
label: Clouds
search:
terms:
- cloudy
- fog
- haze
- overcast
- smoke
- storm
- weather
styles:
- duotone
unicode: f744
voted: false
cogs:
changes:
- '1'
- 5.0.0
label: cogs
search:
terms:
- gears
- mechanical
- settings
- sprocket
- wheel
styles:
- duotone
unicode: f085
voted: false
comment-dots:
changes:
- 5.0.9
label: Comment Dots
search:
terms:
- bubble
- chat
- commenting
- conversation
- feedback
- message
- more
- note
- notification
- reply
- sms
- speech
- texting
styles:
- duotone
unicode: f4ad
voted: false
concierge-bell:
changes:
- 5.1.0
label: Concierge Bell
search:
terms:
- attention
- hotel
- receptionist
- service
- support
styles:
- duotone
unicode: f562
voted: false
credit-card:
changes:
- '2'
- 5.0.0
label: Credit Card
search:
terms:
- buy
- checkout
- credit-card-alt
- debit
- money
- payment
- purchase
styles:
- solid
unicode: f09d
voted: false
desktop:
changes:
- '3'
- 5.0.0
label: Desktop
search:
terms:
- computer
- cpu
- demo
- desktop
- device
- imac
- machine
- monitor
- pc
- screen
styles:
- solid
- regular
unicode: f108
voted: false
discourse:
changes:
- 5.0.0
- 5.0.3
label: Discourse
search:
terms: []
styles:
- brands
unicode: f393
voted: false
docker:
changes:
- 5.0.0
label: Docker
search:
terms: []
styles:
- brands
unicode: f395
voted: false
dot-circle:
changes:
- '4'
- 5.0.0
label: Dot Circle
search:
terms:
- bullseye
- notification
- target
styles:
- duotone
unicode: f192
voted: false
envelope:
changes:
- '2'
- 5.0.0
- 5.10.1
- 5.10.2
label: Envelope
search:
terms:
- e-mail
- email
- letter
- mail
- message
- notification
- support
styles:
- solid
- duotone
unicode: f0e0
voted: false
exchange-alt:
changes:
- 5.0.0
label: Alternate Exchange
search:
terms:
- arrow
- arrows
- exchange
- reciprocate
- return
- swap
- transfer
styles:
- duotone
unicode: f362
voted: false
eye:
changes:
- '1'
- 5.0.0
- 5.7.0
label: Eye
search:
terms:
- look
- optic
- see
- seen
- show
- sight
- views
- visible
styles:
- solid
- regular
unicode: f06e
voted: false
file-alt:
changes:
- '3.2'
- 5.0.0
- 5.10.2
label: Alternate File
search:
terms:
- document
- file-text
- invoice
- new
- page
- pdf
styles:
- duotone
unicode: f15c
voted: false
file-code:
changes:
- '4.1'
- 5.0.0
- 5.10.2
label: Code File
search:
terms:
- css
- development
- document
- html
styles:
- duotone
- regular
unicode: f1c9
voted: false
fingerprint:
changes:
- 5.1.0
label: Fingerprint
search:
terms:
- human
- id
- identification
- lock
- smudge
- touch
- unique
- unlock
styles:
- solid
unicode: f577
voted: true
github:
changes:
- '2'
- 5.0.0
label: GitHub
search:
terms:
- octocat
styles:
- brands
unicode: f09b
voted: false
globe:
changes:
- '2'
- 5.0.0
- 5.0.9
- 5.11.0
- 5.11.1
label: Globe
search:
terms:
- all
- coordinates
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f0ac
voted: false
globe-africa:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Africa shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57c
voted: false
globe-americas:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Americas shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57d
voted: false
globe-asia:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Asia shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57e
voted: false
globe-europe:
changes:
- 5.6.0
- 5.11.0
- 5.11.1
label: Globe with Europe shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f7a2
voted: true
graduation-cap:
changes:
- '4.1'
- 5.0.0
- 5.2.0
- 5.10.1
label: Graduation Cap
search:
terms:
- ceremony
- college
- graduate
- learning
- school
- student
styles:
- duotone
unicode: f19d
voted: false
history:
changes:
- '4.1'
- 5.0.0
label: History
search:
terms:
- Rewind
- clock
- reverse
- time
- time machine
styles:
- solid
- duotone
unicode: f1da
voted: false
home:
changes:
- '1'
- 5.0.0
- 5.7.0
label: home
search:
terms:
- abode
- building
- house
- main
styles:
- solid
unicode: f015
voted: false
info:
changes:
- '3.1'
- 5.0.0
- 5.10.1
- 5.10.2
label: Info
search:
terms:
- details
- help
- information
- more
- support
styles:
- regular
unicode: f129
voted: false
info-circle:
changes:
- '1'
- 5.0.0
label: Info Circle
search:
terms:
- details
- help
- information
- more
- support
styles:
- regular
unicode: f05a
voted: false
instagram:
changes:
- '4.6'
- 5.0.0
label: Instagram
search:
terms: []
styles:
- brands
unicode: f16d
voted: false
key:
changes:
- '1'
- 5.0.0
- 5.10.1
label: key
search:
terms:
- lock
- password
- private
- secret
- unlock
styles:
- duotone
unicode: f084
voted: false
key-skeleton:
changes:
- 5.4.0
label: Key Skeleton
search:
terms:
- halloween
- lock
- password
- private
- secret
- unlock
styles:
- duotone
unicode: f6f3
voted: false
laptop:
changes:
- '3'
- 5.0.0
- 5.2.0
label: Laptop
search:
terms:
- computer
- cpu
- dell
- demo
- device
- mac
- macbook
- machine
- pc
styles:
- duotone
unicode: f109
voted: false
laptop-code:
changes:
- 5.2.0
label: Laptop Code
search:
terms:
- computer
- cpu
- dell
- demo
- develop
- device
- mac
- macbook
- machine
- pc
styles:
- duotone
unicode: f5fc
voted: false
laptop-house:
changes:
- 5.13.0
- 5.14.0
label: Laptop House
search:
terms:
- computer
- covid-19
- device
- office
- remote
- work from home
styles:
- duotone
unicode: e066
voted: false
life-ring:
changes:
- '4.1'
- 5.0.0
label: Life Ring
search:
terms:
- coast guard
- help
- overboard
- save
- support
styles:
- duotone
unicode: f1cd
voted: false
lightbulb:
changes:
- '3'
- 5.0.0
- 5.3.0
label: Lightbulb
search:
terms:
- energy
- idea
- inspiration
- light
styles:
- duotone
unicode: f0eb
voted: false
list-alt:
changes:
- '1'
- 5.0.0
label: Alternate List
search:
terms:
- checklist
- completed
- done
- finished
- ol
- todo
- ul
styles:
- duotone
unicode: f022
voted: false
list-ul:
changes:
- '2'
- 5.0.0
- 5.9.0
label: list-ul
search:
terms:
- checklist
- completed
- done
- finished
- ol
- todo
- ul
styles:
- duotone
unicode: f0ca
voted: false
lock-alt:
changes:
- 5.0.0
label: Alternate Lock
search:
terms:
- admin
- lock
- open
- password
- private
- protect
- security
styles:
- duotone
unicode: f30d
voted: false
map-marker-alt:
changes:
- 5.0.0
label: Alternate Map Marker
search:
terms:
- address
- coordinates
- destination
- gps
- localize
- location
- map
- navigation
- paper
- pin
- place
- point of interest
- position
- route
- travel
styles:
- duotone
unicode: f3c5
voted: false
microsoft:
changes:
- 5.0.0
label: Microsoft
search:
terms: []
styles:
- brands
unicode: f3ca
voted: true
moon-stars:
changes:
- 5.5.0
label: Moon with Stars
search:
terms:
- clear
- crescent
- lunar
- space
- star
styles:
- duotone
unicode: f755
voted: false
network-wired:
changes:
- 5.4.0
label: Wired Network
search:
terms:
- computer
- connect
- ethernet
- internet
- intranet
styles:
- duotone
unicode: f6ff
voted: true
planet-ringed:
changes:
- 5.12.0
- 5.14.0
label: Ringed Planet
search:
terms:
- orbit
- saturn
- solar system
- space
- universe
styles:
- duotone
unicode: e020
voted: false
plus:
changes:
- '1'
- 5.0.0
- 5.0.13
label: plus
search:
terms:
- add
- create
- expand
- new
- positive
- shape
styles:
- regular
- solid
unicode: f067
voted: false
question-circle:
changes:
- '1'
- 5.0.0
label: Question Circle
search:
terms:
- help
- information
- support
- unknown
styles:
- duotone
- regular
unicode: f059
voted: false
quote-left:
changes:
- '3'
- 5.0.0
- 5.0.9
label: quote-left
search:
terms:
- mention
- note
- phrase
- text
- type
styles:
- duotone
unicode: f10d
voted: false
random:
changes:
- '1'
- 5.0.0
label: random
search:
terms:
- arrows
- shuffle
- sort
- swap
- switch
- transfer
styles:
- duotone
unicode: f074
voted: false
rev:
changes:
- 5.1.0
- 5.1.1
- 5.8.0
label: Rev.io
search:
terms: []
styles:
- brands
unicode: f5b2
voted: false
robot:
changes:
- 5.0.13
- 5.12.0
label: Robot
search:
terms:
- android
- automate
- computer
- cyborg
styles:
- solid
unicode: f544
voted: true
rocket:
changes:
- '3.1'
- 5.0.0
- 5.7.0
- 5.12.0
label: rocket
search:
terms:
- aircraft
- app
- jet
- launch
- nasa
- space
styles:
- duotone
- solid
- regular
unicode: f135
voted: false
save:
changes:
- '2'
- 5.0.0
- 5.10.2
label: Save
search:
terms:
- disk
- download
- floppy
- floppy-o
styles:
- solid
- regular
unicode: f0c7
voted: false
search:
changes:
- '1'
- 5.0.0
label: Search
search:
terms:
- bigger
- enlarge
- find
- magnify
- preview
- zoom
styles:
- duotone
unicode: f002
voted: false
server:
changes:
- '4.3'
- 5.0.0
label: Server
search:
terms:
- computer
- cpu
- database
- hardware
- network
styles:
- duotone
unicode: f233
voted: false
sign-out:
changes:
- '1'
- 5.0.0
label: Sign Out
search:
terms:
- arrow
- exit
- leave
- log out
- logout
styles:
- duotone
unicode: f08b
voted: false
siren-on:
changes:
- 5.12.0
- 5.14.0
label: Siren On
search:
terms:
- alarm
- alert
- ambulance
- loud
- police
- warning
styles:
- duotone
unicode: e02e
voted: false
slack:
changes:
- '4.1'
- 5.0.0
- 5.7.0
label: Slack Logo
search:
terms:
- anchor
- hash
- hashtag
styles:
- brands
unicode: f198
voted: false
slash:
changes:
- 5.4.0
label: Slash
search:
terms:
- cancel
- close
- mute
- 'off'
- stop
- x
styles:
- solid
- regular
unicode: f715
voted: true
smile:
changes:
- '3.1'
- 5.0.0
- 5.0.9
- 5.1.0
- 5.11.0
- 5.11.1
label: Smiling Face
search:
terms:
- approve
- emoticon
- face
- happy
- rating
- satisfied
styles:
- duotone
unicode: f118
voted: false
snowman:
changes:
- 5.6.0
label: Snowman
search:
terms:
- decoration
- frost
- frosty
- holiday
styles:
- duotone
unicode: f7d0
spinner-third:
changes:
- 5.0.0
- 5.10.2
label: Spinner Third
search:
terms:
- circle
- loading
- progress
styles:
- solid
unicode: f3f4
voted: false
square-full:
changes:
- 5.0.5
- 5.10.2
label: Square Full
search:
terms:
- block
- box
- shape
styles:
- solid
unicode: f45c
voted: false
sun:
changes:
- '3.2'
- 5.0.0
- 5.5.0
label: Sun
search:
terms:
- brighten
- contrast
- day
- lighter
- sol
- solar
- star
- weather
styles:
- duotone
unicode: f185
voted: false
tasks:
changes:
- '2'
- 5.0.0
- 5.9.0
label: Tasks
search:
terms:
- checklist
- downloading
- downloads
- loading
- progress
- project management
- settings
- to do
styles:
- duotone
unicode: f0ae
voted: false
times:
changes:
- '1'
- 5.0.0
- 5.0.13
- 5.11.0
- 5.11.1
label: Times
search:
terms:
- close
- cross
- error
- exit
- incorrect
- notice
- notification
- notify
- problem
- wrong
- x
styles:
- solid
- regular
unicode: f00d
voted: false
times-circle:
changes:
- '1'
- 5.0.0
label: Times Circle
search:
terms:
- close
- cross
- exit
- incorrect
- notice
- notification
- notify
- problem
- wrong
- x
styles:
- solid
unicode: f057
voted: false
twitter:
changes:
- '2'
- 5.0.0
label: Twitter
search:
terms:
- social network
- tweet
styles:
- brands
unicode: f099
voted: false
undo:
changes:
- '2'
- 5.0.0
label: Undo
search:
terms:
- back
- control z
- exchange
- oops
- return
- rotate
- swap
styles:
- solid
- regular
unicode: f0e2
voted: false
undo-alt:
changes:
- 5.0.0
label: Alternate Undo
search:
terms:
- back
- control z
- exchange
- oops
- return
- swap
styles:
- regular
- solid
unicode: f2ea
voted: false
university:
changes:
- '4.1'
- 5.0.0
- 5.0.3
- 5.11.0
- 5.11.1
label: University
search:
terms:
- bank
- building
- college
- higher education - students
- institution
styles:
- duotone
unicode: f19c
voted: false
user:
changes:
- '1'
- 5.0.0
- 5.0.3
- 5.0.11
label: User
search:
terms:
- account
- avatar
- head
- human
- man
- person
- profile
styles:
- solid
- duotone
- regular
unicode: f007
voted: false
user-friends:
changes:
- 5.0.11
label: User Friends
search:
terms:
- group
- people
- person
- team
- users
styles:
- regular
unicode: f500
voted: false
user-hard-hat:
changes:
- 5.7.0
label: Construction Worker
search:
terms:
- construction
- hardhat
- helmet
- safety
styles:
- duotone
unicode: f82c
voted: false
user-shield:
changes:
- 5.0.11
label: User Shield
search:
terms:
- admin
- person
- private
- protect
- safe
styles:
- duotone
unicode: f505
voted: false
users:
changes:
- '2'
- 5.0.0
- 5.0.3
- 5.0.11
label: Users
search:
terms:
- friends
- group
- people
- persons
- profiles
- team
styles:
- duotone
- solid
- regular
unicode: f0c0
voted: false
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/sponsors.yml
================================================
amazon-web-services:
icons:
- aws
label: Amazon Web Services
url: 'https://aws.amazon.com'
discourse:
icons:
- discourse
label: Discourse
url: 'https://discourse.org'
harvard-medical-school:
icons:
- plus
label: Harvard Medical School
url: 'https://hms.harvard.edu'
mylogin-info:
icons:
- user-shield
label: mylogin.info
url: 'https://www.mylogin.info'
rev-io:
icons:
- rev
label: Rev.io
url: 'https://rev.io'
rocket-chat:
icons:
- comment-dots
- quote-left
- smile
label: Rocket.Chat
url: 'https://rocket.chat'
supple:
icons:
- badge-check
label: Supple
url: 'https://supple.com.au'
the-us-sunnah-foundation:
icons:
- globe
label: The us-Sunnah Foundation
url: 'https://www.ussunnah.org'
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {},
"version": "5.15.4",
"name": "@fortawesome/fontawesome-pro",
"main": "js/fontawesome.js",
"style": "css/fontawesome.css",
"license": "UNLICENSED",
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_animated.scss
================================================
// Animated Icons
// --------------------------
.#{$fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_bordered-pulled.scss
================================================
// Bordered & Pulled
// -------------------------
.#{$fa-css-prefix}-border {
border: solid .08em $fa-border-color;
border-radius: .1em;
padding: .2em .25em .15em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fab {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_core.scss
================================================
// Base Class Definition
// -------------------------
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
%fa-icon {
@include fa-icon;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_fixed-width.scss
================================================
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
text-align: center;
width: $fa-fw-width;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_icons.scss
================================================
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.#{$fa-css-prefix}-abacus:before { content: fa-content($fa-var-abacus); }
.#{$fa-css-prefix}-alarm-exclamation:before { content: fa-content($fa-var-alarm-exclamation); }
.#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); }
.#{$fa-css-prefix}-align-slash:before { content: fa-content($fa-var-align-slash); }
.#{$fa-css-prefix}-atom-alt:before { content: fa-content($fa-var-atom-alt); }
.#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); }
.#{$fa-css-prefix}-badge-check:before { content: fa-content($fa-var-badge-check); }
.#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); }
.#{$fa-css-prefix}-book-dead:before { content: fa-content($fa-var-book-dead); }
.#{$fa-css-prefix}-books:before { content: fa-content($fa-var-books); }
.#{$fa-css-prefix}-brackets-curly:before { content: fa-content($fa-var-brackets-curly); }
.#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); }
.#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); }
.#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); }
.#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); }
.#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); }
.#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); }
.#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); }
.#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); }
.#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); }
.#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); }
.#{$fa-css-prefix}-chart-network:before { content: fa-content($fa-var-chart-network); }
.#{$fa-css-prefix}-chart-scatter:before { content: fa-content($fa-var-chart-scatter); }
.#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); }
.#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); }
.#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); }
.#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); }
.#{$fa-css-prefix}-clouds:before { content: fa-content($fa-var-clouds); }
.#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); }
.#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); }
.#{$fa-css-prefix}-concierge-bell:before { content: fa-content($fa-var-concierge-bell); }
.#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); }
.#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); }
.#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); }
.#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); }
.#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); }
.#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); }
.#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); }
.#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); }
.#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); }
.#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); }
.#{$fa-css-prefix}-fingerprint:before { content: fa-content($fa-var-fingerprint); }
.#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); }
.#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); }
.#{$fa-css-prefix}-globe-africa:before { content: fa-content($fa-var-globe-africa); }
.#{$fa-css-prefix}-globe-americas:before { content: fa-content($fa-var-globe-americas); }
.#{$fa-css-prefix}-globe-asia:before { content: fa-content($fa-var-globe-asia); }
.#{$fa-css-prefix}-globe-europe:before { content: fa-content($fa-var-globe-europe); }
.#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); }
.#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); }
.#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); }
.#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); }
.#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); }
.#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); }
.#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); }
.#{$fa-css-prefix}-key-skeleton:before { content: fa-content($fa-var-key-skeleton); }
.#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); }
.#{$fa-css-prefix}-laptop-code:before { content: fa-content($fa-var-laptop-code); }
.#{$fa-css-prefix}-laptop-house:before { content: fa-content($fa-var-laptop-house); }
.#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); }
.#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); }
.#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); }
.#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); }
.#{$fa-css-prefix}-lock-alt:before { content: fa-content($fa-var-lock-alt); }
.#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); }
.#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); }
.#{$fa-css-prefix}-moon-stars:before { content: fa-content($fa-var-moon-stars); }
.#{$fa-css-prefix}-network-wired:before { content: fa-content($fa-var-network-wired); }
.#{$fa-css-prefix}-planet-ringed:before { content: fa-content($fa-var-planet-ringed); }
.#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); }
.#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); }
.#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); }
.#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); }
.#{$fa-css-prefix}-rev:before { content: fa-content($fa-var-rev); }
.#{$fa-css-prefix}-robot:before { content: fa-content($fa-var-robot); }
.#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); }
.#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); }
.#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); }
.#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); }
.#{$fa-css-prefix}-sign-out:before { content: fa-content($fa-var-sign-out); }
.#{$fa-css-prefix}-siren-on:before { content: fa-content($fa-var-siren-on); }
.#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); }
.#{$fa-css-prefix}-slash:before { content: fa-content($fa-var-slash); }
.#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); }
.#{$fa-css-prefix}-snowman:before { content: fa-content($fa-var-snowman); }
.#{$fa-css-prefix}-spinner-third:before { content: fa-content($fa-var-spinner-third); }
.#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); }
.#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); }
.#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); }
.#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); }
.#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); }
.#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); }
.#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); }
.#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); }
.#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); }
.#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); }
.#{$fa-css-prefix}-user-friends:before { content: fa-content($fa-var-user-friends); }
.#{$fa-css-prefix}-user-hard-hat:before { content: fa-content($fa-var-user-hard-hat); }
.#{$fa-css-prefix}-user-shield:before { content: fa-content($fa-var-user-shield); }
.#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_larger.scss
================================================
// Icon Sizes
// -------------------------
// makes the font 33% larger relative to the icon container
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.#{$fa-css-prefix}-xs {
font-size: .75em;
}
.#{$fa-css-prefix}-sm {
font-size: .875em;
}
@for $i from 1 through 10 {
.#{$fa-css-prefix}-#{$i}x {
font-size: $i * 1em;
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_list.scss
================================================
// List Icons
// -------------------------
.#{$fa-css-prefix}-ul {
list-style-type: none;
margin-left: $fa-li-width * 5/4;
padding-left: 0;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
left: -$fa-li-width;
position: absolute;
text-align: center;
width: $fa-li-width;
line-height: inherit;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_mixins.scss
================================================
// Mixins
// --------------------------
@mixin fa-icon {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
@mixin fa-icon-rotate($degrees, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
transform: scale($horiz, $vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
@mixin sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
@mixin sr-only-focusable {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_rotated-flipped.scss
================================================
// Rotated & Flipped Icons
// -------------------------
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
.#{$fa-css-prefix}-flip-both, .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.#{$fa-css-prefix}-rotate-90,
.#{$fa-css-prefix}-rotate-180,
.#{$fa-css-prefix}-rotate-270,
.#{$fa-css-prefix}-flip-horizontal,
.#{$fa-css-prefix}-flip-vertical,
.#{$fa-css-prefix}-flip-both {
filter: none;
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_screen-reader.scss
================================================
// Screen Readers
// -------------------------
.sr-only { @include sr-only; }
.sr-only-focusable { @include sr-only-focusable; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_stacked.scss
================================================
// Stacked Icons
// -------------------------
.#{$fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: ($fa-fw-width*2);
}
.#{$fa-css-prefix}-stack-1x,
.#{$fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.#{$fa-css-prefix}-stack-1x {
line-height: inherit;
}
.#{$fa-css-prefix}-stack-2x {
font-size: 2em;
}
.#{$fa-css-prefix}-inverse {
color: $fa-inverse;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_variables.scss
================================================
// Variables
// --------------------------
$fa-font-path: "../webfonts" !default;
$fa-font-size-base: 16px !default;
$fa-font-display: block !default;
$fa-css-prefix: fa !default;
$fa-version: "5.15.4" !default;
$fa-border-color: #eee !default;
$fa-inverse: #fff !default;
$fa-li-width: 2em !default;
$fa-fw-width: (20em / 16);
$fa-primary-opacity: 1 !default;
$fa-secondary-opacity: .4 !default;
// Convenience function used to set content property
@function fa-content($fa-var) {
@return unquote("\"#{ $fa-var }\"");
}
$fa-var-abacus: \f640;
$fa-var-alarm-exclamation: \f843;
$fa-var-align-left: \f036;
$fa-var-align-slash: \f846;
$fa-var-atom-alt: \f5d3;
$fa-var-aws: \f375;
$fa-var-badge-check: \f336;
$fa-var-bell: \f0f3;
$fa-var-book-dead: \f6b7;
$fa-var-books: \f5db;
$fa-var-brackets-curly: \f7ea;
$fa-var-cc-amazon-pay: \f42d;
$fa-var-cc-amex: \f1f3;
$fa-var-cc-apple-pay: \f416;
$fa-var-cc-diners-club: \f24c;
$fa-var-cc-discover: \f1f2;
$fa-var-cc-jcb: \f24b;
$fa-var-cc-mastercard: \f1f1;
$fa-var-cc-paypal: \f1f4;
$fa-var-cc-stripe: \f1f5;
$fa-var-cc-visa: \f1f0;
$fa-var-chart-network: \f78a;
$fa-var-chart-scatter: \f7ee;
$fa-var-check: \f00c;
$fa-var-check-circle: \f058;
$fa-var-circle: \f111;
$fa-var-cloud: \f0c2;
$fa-var-clouds: \f744;
$fa-var-cogs: \f085;
$fa-var-comment-dots: \f4ad;
$fa-var-concierge-bell: \f562;
$fa-var-credit-card: \f09d;
$fa-var-desktop: \f108;
$fa-var-discourse: \f393;
$fa-var-docker: \f395;
$fa-var-dot-circle: \f192;
$fa-var-envelope: \f0e0;
$fa-var-exchange-alt: \f362;
$fa-var-eye: \f06e;
$fa-var-file-alt: \f15c;
$fa-var-file-code: \f1c9;
$fa-var-fingerprint: \f577;
$fa-var-github: \f09b;
$fa-var-globe: \f0ac;
$fa-var-globe-africa: \f57c;
$fa-var-globe-americas: \f57d;
$fa-var-globe-asia: \f57e;
$fa-var-globe-europe: \f7a2;
$fa-var-graduation-cap: \f19d;
$fa-var-history: \f1da;
$fa-var-home: \f015;
$fa-var-info: \f129;
$fa-var-info-circle: \f05a;
$fa-var-instagram: \f16d;
$fa-var-key: \f084;
$fa-var-key-skeleton: \f6f3;
$fa-var-laptop: \f109;
$fa-var-laptop-code: \f5fc;
$fa-var-laptop-house: \e066;
$fa-var-life-ring: \f1cd;
$fa-var-lightbulb: \f0eb;
$fa-var-list-alt: \f022;
$fa-var-list-ul: \f0ca;
$fa-var-lock-alt: \f30d;
$fa-var-map-marker-alt: \f3c5;
$fa-var-microsoft: \f3ca;
$fa-var-moon-stars: \f755;
$fa-var-network-wired: \f6ff;
$fa-var-planet-ringed: \e020;
$fa-var-plus: \f067;
$fa-var-question-circle: \f059;
$fa-var-quote-left: \f10d;
$fa-var-random: \f074;
$fa-var-rev: \f5b2;
$fa-var-robot: \f544;
$fa-var-rocket: \f135;
$fa-var-save: \f0c7;
$fa-var-search: \f002;
$fa-var-server: \f233;
$fa-var-sign-out: \f08b;
$fa-var-siren-on: \e02e;
$fa-var-slack: \f198;
$fa-var-slash: \f715;
$fa-var-smile: \f118;
$fa-var-snowman: \f7d0;
$fa-var-spinner-third: \f3f4;
$fa-var-square-full: \f45c;
$fa-var-sun: \f185;
$fa-var-tasks: \f0ae;
$fa-var-times: \f00d;
$fa-var-times-circle: \f057;
$fa-var-twitter: \f099;
$fa-var-undo: \f0e2;
$fa-var-undo-alt: \f2ea;
$fa-var-university: \f19c;
$fa-var-user: \f007;
$fa-var-user-friends: \f500;
$fa-var-user-hard-hat: \f82c;
$fa-var-user-shield: \f505;
$fa-var-users: \f0c0;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/brands.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-brands-400.eot');
src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/duotone.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-duotone-900.eot');
src: url('#{$fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-duotone-900.woff2') format('woff2'),
url('#{$fa-font-path}/fa-duotone-900.woff') format('woff'),
url('#{$fa-font-path}/fa-duotone-900.ttf') format('truetype'),
url('#{$fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg');
}
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900;
}
.fad:before {
position: absolute;
color: var(--#{$fa-css-prefix}-primary-color, inherit);
opacity: $fa-primary-opacity;
opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity});
}
.fad:after {
color: var(--#{$fa-css-prefix}-secondary-color, inherit);
opacity: $fa-secondary-opacity;
opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity});
}
.#{$fa-css-prefix}-swap-opacity .fad:before,
.fad.#{$fa-css-prefix}-swap-opacity:before {
opacity: $fa-secondary-opacity;
opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity});
}
.#{$fa-css-prefix}-swap-opacity .fad:after,
.fad.#{$fa-css-prefix}-swap-opacity:after {
opacity: $fa-primary-opacity;
opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity});
}
.fad.#{$fa-css-prefix}-inverse {
color: $fa-inverse;
}
.fad.#{$fa-css-prefix}-stack-1x, .fad.#{$fa-css-prefix}-stack-2x {
position: absolute;
}
.fad.#{$fa-css-prefix}-stack-1x:before,
.fad.#{$fa-css-prefix}-stack-2x:before,
.fad.#{$fa-css-prefix}-fw:before {
left: 50%;
transform: translateX(-50%);
}
.fad.#{$fa-css-prefix}-abacus:after { content: fa-content(\10f640); }
.fad.#{$fa-css-prefix}-align-slash:after { content: fa-content(\10f846); }
.fad.#{$fa-css-prefix}-atom-alt:after { content: fa-content(\10f5d3); }
.fad.#{$fa-css-prefix}-badge-check:after { content: fa-content(\10f336); }
.fad.#{$fa-css-prefix}-bell:after { content: fa-content(\10f0f3); }
.fad.#{$fa-css-prefix}-books:after { content: fa-content(\10f5db); }
.fad.#{$fa-css-prefix}-brackets-curly:after { content: fa-content(\10f7ea); }
.fad.#{$fa-css-prefix}-chart-network:after { content: fa-content(\10f78a); }
.fad.#{$fa-css-prefix}-chart-scatter:after { content: fa-content(\10f7ee); }
.fad.#{$fa-css-prefix}-check:after { content: fa-content(\10f00c); }
.fad.#{$fa-css-prefix}-circle:after { content: fa-content(\10f111); }
.fad.#{$fa-css-prefix}-clouds:after { content: fa-content(\10f744); }
.fad.#{$fa-css-prefix}-cogs:after { content: fa-content(\10f085); }
.fad.#{$fa-css-prefix}-comment-dots:after { content: fa-content(\10f4ad); }
.fad.#{$fa-css-prefix}-concierge-bell:after { content: fa-content(\10f562); }
.fad.#{$fa-css-prefix}-dot-circle:after { content: fa-content(\10f192); }
.fad.#{$fa-css-prefix}-envelope:after { content: fa-content(\10f0e0); }
.fad.#{$fa-css-prefix}-exchange-alt:after { content: fa-content(\10f362); }
.fad.#{$fa-css-prefix}-file-alt:after { content: fa-content(\10f15c); }
.fad.#{$fa-css-prefix}-file-code:after { content: fa-content(\10f1c9); }
.fad.#{$fa-css-prefix}-globe:after { content: fa-content(\10f0ac); }
.fad.#{$fa-css-prefix}-globe-africa:after { content: fa-content(\10f57c); }
.fad.#{$fa-css-prefix}-globe-americas:after { content: fa-content(\10f57d); }
.fad.#{$fa-css-prefix}-globe-asia:after { content: fa-content(\10f57e); }
.fad.#{$fa-css-prefix}-globe-europe:after { content: fa-content(\10f7a2); }
.fad.#{$fa-css-prefix}-graduation-cap:after { content: fa-content(\10f19d); }
.fad.#{$fa-css-prefix}-history:after { content: fa-content(\10f1da); }
.fad.#{$fa-css-prefix}-key:after { content: fa-content(\10f084); }
.fad.#{$fa-css-prefix}-key-skeleton:after { content: fa-content(\10f6f3); }
.fad.#{$fa-css-prefix}-laptop:after { content: fa-content(\10f109); }
.fad.#{$fa-css-prefix}-laptop-code:after { content: fa-content(\10f5fc); }
.fad.#{$fa-css-prefix}-laptop-house:after { content: fa-content(\10e066); }
.fad.#{$fa-css-prefix}-life-ring:after { content: fa-content(\10f1cd); }
.fad.#{$fa-css-prefix}-lightbulb:after { content: fa-content(\10f0eb); }
.fad.#{$fa-css-prefix}-list-alt:after { content: fa-content(\10f022); }
.fad.#{$fa-css-prefix}-list-ul:after { content: fa-content(\10f0ca); }
.fad.#{$fa-css-prefix}-lock-alt:after { content: fa-content(\10f30d); }
.fad.#{$fa-css-prefix}-map-marker-alt:after { content: fa-content(\10f3c5); }
.fad.#{$fa-css-prefix}-moon-stars:after { content: fa-content(\10f755); }
.fad.#{$fa-css-prefix}-network-wired:after { content: fa-content(\10f6ff); }
.fad.#{$fa-css-prefix}-planet-ringed:after { content: fa-content(\10e020); }
.fad.#{$fa-css-prefix}-question-circle:after { content: fa-content(\10f059); }
.fad.#{$fa-css-prefix}-quote-left:after { content: fa-content(\10f10d); }
.fad.#{$fa-css-prefix}-random:after { content: fa-content(\10f074); }
.fad.#{$fa-css-prefix}-rocket:after { content: fa-content(\10f135); }
.fad.#{$fa-css-prefix}-search:after { content: fa-content(\10f002); }
.fad.#{$fa-css-prefix}-server:after { content: fa-content(\10f233); }
.fad.#{$fa-css-prefix}-sign-out:after { content: fa-content(\10f08b); }
.fad.#{$fa-css-prefix}-siren-on:after { content: fa-content(\10e02e); }
.fad.#{$fa-css-prefix}-smile:after { content: fa-content(\10f118); }
.fad.#{$fa-css-prefix}-snowman:after { content: fa-content(\10f7d0); }
.fad.#{$fa-css-prefix}-sun:after { content: fa-content(\10f185); }
.fad.#{$fa-css-prefix}-tasks:after { content: fa-content(\10f0ae); }
.fad.#{$fa-css-prefix}-university:after { content: fa-content(\10f19c); }
.fad.#{$fa-css-prefix}-user:after { content: fa-content(\10f007); }
.fad.#{$fa-css-prefix}-user-hard-hat:after { content: fa-content(\10f82c); }
.fad.#{$fa-css-prefix}-user-shield:after { content: fa-content(\10f505); }
.fad.#{$fa-css-prefix}-users:after { content: fa-content(\10f0c0); }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/fontawesome.scss
================================================
@import 'variables';
@import 'mixins';
@import 'core';
@import 'larger';
@import 'fixed-width';
@import 'list';
@import 'bordered-pulled';
@import 'animated';
@import 'rotated-flipped';
@import 'stacked';
@import 'icons';
@import 'screen-reader';
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/regular.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-regular-400.eot');
src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/solid.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-solid-900.eot');
src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/LICENSE.txt
================================================
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/README.md
================================================
# @fortawesome/fontawesome-svg-core - SVG with JavaScript version
> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
[](https://www.npmjs.com/package/@fortawesome/fontawesome-svg-core)
## Installation
```
$ npm i --save @fortawesome/fontawesome-svg-core
```
Or
```
$ yarn add @fortawesome/fontawesome-svg-core
```
## Documentation
Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
## Issues and support
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/attribution.js
================================================
console.log(`Font Awesome Free 1.2.36 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.d.ts
================================================
import {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types';
export {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types';
export const dom: DOM;
export const library: Library;
export const parse: { transform(transformString: string): Transform };
export const config: Config;
export function noAuto():void;
export function findIconDefinition(iconLookup: IconLookup): IconDefinition;
export function text(content: string, params?: TextParams): Text;
export function counter(content: string | number, params?: CounterParams): Counter;
export function toHtml(content: any): string;
export function toHtml(abstractNodes: AbstractElement): string;
export function layer(
assembler: (
addLayerCallback: (layerToAdd: IconOrText | IconOrText[]) => void
) => void,
params?: LayerParams
): Layer;
export function icon(icon: IconName | IconLookup, params?: IconParams): Icon;
export type IconProp = IconName | [IconPrefix, IconName] | IconLookup;
export type FlipProp = "horizontal" | "vertical" | "both";
export type SizeProp =
| "xs"
| "lg"
| "sm"
| "1x"
| "2x"
| "3x"
| "4x"
| "5x"
| "6x"
| "7x"
| "8x"
| "9x"
| "10x";
export type PullProp = "left" | "right";
export type RotateProp = 90 | 180 | 270;
export type FaSymbol = string | boolean;
export interface Config {
familyPrefix: IconPrefix;
replacementClass: string;
autoReplaceSvg: boolean | 'nest';
autoAddCss: boolean;
autoA11y: boolean;
searchPseudoElements: boolean;
observeMutations: boolean;
keepOriginalSource: boolean;
measurePerformance: boolean;
showMissingIcons: boolean;
}
export interface AbstractElement {
tag: string;
attributes: any;
children?: AbstractElement[];
}
export interface FontawesomeObject {
readonly abstract: AbstractElement[];
readonly html: string[];
readonly node: HTMLCollection;
}
export interface Icon extends FontawesomeObject, IconDefinition {
readonly type: "icon";
}
export interface Text extends FontawesomeObject {
readonly type: "text";
}
export interface Counter extends FontawesomeObject {
readonly type: "counter";
}
export interface Layer extends FontawesomeObject {
readonly type: "layer";
}
type IconOrText = Icon | Text;
export interface Attributes {
[key: string]: number | string;
}
export interface Styles {
[key: string]: string;
}
export interface Transform {
size?: number;
x?: number;
y?: number;
rotate?: number;
flipX?: boolean;
flipY?: boolean;
}
export interface Params {
title?: string;
titleId?: string;
classes?: string | string[];
attributes?: Attributes;
styles?: Styles;
}
export interface CounterParams extends Params {
}
export interface LayerParams {
classes?: string | string[];
}
export interface TextParams extends Params {
transform?: Transform;
}
export interface IconParams extends Params {
transform?: Transform;
symbol?: FaSymbol;
mask?: IconLookup;
maskId?: string;
}
export interface DOM {
i2svg(params?: { node: Node; callback: () => void }): Promise;
css(): string;
insertCss(): string;
watch(): void;
}
type IconDefinitionOrPack = IconDefinition | IconPack;
export interface Library {
add(...definitions: IconDefinitionOrPack[]): void;
reset(): void;
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.es.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return process.env.NODE_ENV === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
export { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['fontawesome-svg-core'] = {})));
}(this, (function (exports) { 'use strict';
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var noop = function noop() {};
var _WINDOW = {};
var _DOCUMENT = {};
var _MUTATION_OBSERVER = null;
var _PERFORMANCE = {
mark: noop,
measure: noop
};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
if (typeof performance !== 'undefined') _PERFORMANCE = performance;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var MUTATION_OBSERVER = _MUTATION_OBSERVER;
var PERFORMANCE = _PERFORMANCE;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
var UNITS_IN_GRID = 16;
var DEFAULT_FAMILY_PREFIX = 'fa';
var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
var DATA_FA_I2SVG = 'data-fa-i2svg';
var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
var DATA_PREFIX = 'data-prefix';
var DATA_ICON = 'data-icon';
var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
var MUTATION_APPROACH_ASYNC = 'async';
var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
var PRODUCTION = function () {
try {
return process.env.NODE_ENV === 'production';
} catch (e) {
return false;
}
}();
var PREFIX_TO_STYLE = {
'fas': 'solid',
'far': 'regular',
'fal': 'light',
'fad': 'duotone',
'fab': 'brands',
'fak': 'kit',
'fa': 'solid'
};
var STYLE_TO_PREFIX = {
'solid': 'fas',
'regular': 'far',
'light': 'fal',
'duotone': 'fad',
'brands': 'fab',
'kit': 'fak'
};
var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
var FONT_WEIGHT_TO_PREFIX = {
'900': 'fas',
'400': 'far',
'normal': 'far',
'300': 'fal'
};
var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
var DUOTONE_CLASSES = {
GROUP: 'group',
SWAP_OPACITY: 'swap-opacity',
PRIMARY: 'primary',
SECONDARY: 'secondary'
};
var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
return "".concat(n, "x");
})).concat(oneToTwenty.map(function (n) {
return "w-".concat(n);
}));
var initial = WINDOW.FontAwesomeConfig || {};
function getAttrConfig(attr) {
var element = DOCUMENT.querySelector('script[' + attr + ']');
if (element) {
return element.getAttribute(attr);
}
}
function coerce(val) {
// Getting an empty string will occur if the attribute is set on the HTML tag but without a value
// We'll assume that this is an indication that it should be toggled to true
// For example
if (val === '') return true;
if (val === 'false') return false;
if (val === 'true') return true;
return val;
}
if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
attrs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
attr = _ref2[0],
key = _ref2[1];
var val = coerce(getAttrConfig(attr));
if (val !== undefined && val !== null) {
initial[key] = val;
}
});
}
var _default = {
familyPrefix: DEFAULT_FAMILY_PREFIX,
replacementClass: DEFAULT_REPLACEMENT_CLASS,
autoReplaceSvg: true,
autoAddCss: true,
autoA11y: true,
searchPseudoElements: false,
observeMutations: true,
mutateApproach: 'async',
keepOriginalSource: true,
measurePerformance: false,
showMissingIcons: true
};
var _config = _objectSpread2(_objectSpread2({}, _default), initial);
if (!_config.autoReplaceSvg) _config.observeMutations = false;
var config = _objectSpread2({}, _config);
WINDOW.FontAwesomeConfig = config;
var w = WINDOW || {};
if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
var namespace = w[NAMESPACE_IDENTIFIER];
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
var PENDING = 'pending';
var SETTLED = 'settled';
var FULFILLED = 'fulfilled';
var REJECTED = 'rejected';
var NOOP = function NOOP() {};
var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
var asyncQueue = [];
var asyncTimer;
function asyncFlush() {
// run promise callbacks
for (var i = 0; i < asyncQueue.length; i++) {
asyncQueue[i][0](asyncQueue[i][1]);
} // reset async asyncQueue
asyncQueue = [];
asyncTimer = false;
}
function asyncCall(callback, arg) {
asyncQueue.push([callback, arg]);
if (!asyncTimer) {
asyncTimer = true;
asyncSetTimer(asyncFlush, 0);
}
}
function invokeResolver(resolver, promise) {
function resolvePromise(value) {
resolve(promise, value);
}
function rejectPromise(reason) {
reject(promise, reason);
}
try {
resolver(resolvePromise, rejectPromise);
} catch (e) {
rejectPromise(e);
}
}
function invokeCallback(subscriber) {
var owner = subscriber.owner;
var settled = owner._state;
var value = owner._data;
var callback = subscriber[settled];
var promise = subscriber.then;
if (typeof callback === 'function') {
settled = FULFILLED;
try {
value = callback(value);
} catch (e) {
reject(promise, e);
}
}
if (!handleThenable(promise, value)) {
if (settled === FULFILLED) {
resolve(promise, value);
}
if (settled === REJECTED) {
reject(promise, value);
}
}
}
function handleThenable(promise, value) {
var resolved;
try {
if (promise === value) {
throw new TypeError('A promises callback cannot return that same promise.');
}
if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
// then should be retrieved only once
var then = value.then;
if (typeof then === 'function') {
then.call(value, function (val) {
if (!resolved) {
resolved = true;
if (value === val) {
fulfill(promise, val);
} else {
resolve(promise, val);
}
}
}, function (reason) {
if (!resolved) {
resolved = true;
reject(promise, reason);
}
});
return true;
}
}
} catch (e) {
if (!resolved) {
reject(promise, e);
}
return true;
}
return false;
}
function resolve(promise, value) {
if (promise === value || !handleThenable(promise, value)) {
fulfill(promise, value);
}
}
function fulfill(promise, value) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = value;
asyncCall(publishFulfillment, promise);
}
}
function reject(promise, reason) {
if (promise._state === PENDING) {
promise._state = SETTLED;
promise._data = reason;
asyncCall(publishRejection, promise);
}
}
function publish(promise) {
promise._then = promise._then.forEach(invokeCallback);
}
function publishFulfillment(promise) {
promise._state = FULFILLED;
publish(promise);
}
function publishRejection(promise) {
promise._state = REJECTED;
publish(promise);
if (!promise._handled && isNode) {
global.process.emit('unhandledRejection', promise._data, promise);
}
}
function notifyRejectionHandled(promise) {
global.process.emit('rejectionHandled', promise);
}
/**
* @class
*/
function P(resolver) {
if (typeof resolver !== 'function') {
throw new TypeError('Promise resolver ' + resolver + ' is not a function');
}
if (this instanceof P === false) {
throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
}
this._then = [];
invokeResolver(resolver, this);
}
P.prototype = {
constructor: P,
_state: PENDING,
_then: null,
_data: undefined,
_handled: false,
then: function then(onFulfillment, onRejection) {
var subscriber = {
owner: this,
then: new this.constructor(NOOP),
fulfilled: onFulfillment,
rejected: onRejection
};
if ((onRejection || onFulfillment) && !this._handled) {
this._handled = true;
if (this._state === REJECTED && isNode) {
asyncCall(notifyRejectionHandled, this);
}
}
if (this._state === FULFILLED || this._state === REJECTED) {
// already resolved, call callback async
asyncCall(invokeCallback, subscriber);
} else {
// subscribe
this._then.push(subscriber);
}
return subscriber.then;
},
catch: function _catch(onRejection) {
return this.then(null, onRejection);
}
};
P.all = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.all().');
}
return new P(function (resolve, reject) {
var results = [];
var remaining = 0;
function resolver(index) {
remaining++;
return function (value) {
results[index] = value;
if (! --remaining) {
resolve(results);
}
};
}
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolver(i), reject);
} else {
results[i] = promise;
}
}
if (!remaining) {
resolve(results);
}
});
};
P.race = function (promises) {
if (!Array.isArray(promises)) {
throw new TypeError('You must pass an array to Promise.race().');
}
return new P(function (resolve, reject) {
for (var i = 0, promise; i < promises.length; i++) {
promise = promises[i];
if (promise && typeof promise.then === 'function') {
promise.then(resolve, reject);
} else {
resolve(promise);
}
}
});
};
P.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === P) {
return value;
}
return new P(function (resolve) {
resolve(value);
});
};
P.reject = function (reason) {
return new P(function (resolve, reject) {
reject(reason);
});
};
var picked = typeof Promise === 'function' ? Promise : P;
var d = UNITS_IN_GRID;
var meaninglessTransform = {
size: 16,
x: 0,
y: 0,
rotate: 0,
flipX: false,
flipY: false
};
function isReserved(name) {
return ~RESERVED_CLASSES.indexOf(name);
}
function insertCss(css) {
if (!css || !IS_DOM) {
return;
}
var style = DOCUMENT.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = css;
var headChildren = DOCUMENT.head.childNodes;
var beforeChild = null;
for (var i = headChildren.length - 1; i > -1; i--) {
var child = headChildren[i];
var tagName = (child.tagName || '').toUpperCase();
if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
beforeChild = child;
}
}
DOCUMENT.head.insertBefore(style, beforeChild);
return css;
}
var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function nextUniqueId() {
var size = 12;
var id = '';
while (size-- > 0) {
id += idPool[Math.random() * 62 | 0];
}
return id;
}
function toArray(obj) {
var array = [];
for (var i = (obj || []).length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
function classArray(node) {
if (node.classList) {
return toArray(node.classList);
} else {
return (node.getAttribute('class') || '').split(' ').filter(function (i) {
return i;
});
}
}
function getIconName(familyPrefix, cls) {
var parts = cls.split('-');
var prefix = parts[0];
var iconName = parts.slice(1).join('-');
if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
return iconName;
} else {
return null;
}
}
function htmlEscape(str) {
return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>');
}
function joinAttributes(attributes) {
return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
}, '').trim();
}
function joinStyles(styles) {
return Object.keys(styles || {}).reduce(function (acc, styleName) {
return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
}, '');
}
function transformIsMeaningful(transform) {
return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
}
function transformForSvg(_ref) {
var transform = _ref.transform,
containerWidth = _ref.containerWidth,
iconWidth = _ref.iconWidth;
var outer = {
transform: "translate(".concat(containerWidth / 2, " 256)")
};
var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
var inner = {
transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
};
var path = {
transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
};
return {
outer: outer,
inner: inner,
path: path
};
}
function transformForCss(_ref2) {
var transform = _ref2.transform,
_ref2$width = _ref2.width,
width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
_ref2$height = _ref2.height,
height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
_ref2$startCentered = _ref2.startCentered,
startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
var val = '';
if (startCentered && IS_IE) {
val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
} else if (startCentered) {
val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
} else {
val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
}
val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
val += "rotate(".concat(transform.rotate, "deg) ");
return val;
}
var ALL_SPACE = {
x: 0,
y: 0,
width: '100%',
height: '100%'
};
function fillBlack(abstract) {
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (abstract.attributes && (abstract.attributes.fill || force)) {
abstract.attributes.fill = 'black';
}
return abstract;
}
function deGroup(abstract) {
if (abstract.tag === 'g') {
return abstract.children;
} else {
return [abstract];
}
}
function makeIconMasking (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
mask = _ref.mask,
explicitMaskId = _ref.maskId,
transform = _ref.transform;
var mainWidth = main.width,
mainPath = main.icon;
var maskWidth = mask.width,
maskPath = mask.icon;
var trans = transformForSvg({
transform: transform,
containerWidth: maskWidth,
iconWidth: mainWidth
});
var maskRect = {
tag: 'rect',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
fill: 'white'
})
};
var maskInnerGroupChildrenMixin = mainPath.children ? {
children: mainPath.children.map(fillBlack)
} : {};
var maskInnerGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [fillBlack(_objectSpread2({
tag: mainPath.tag,
attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)
}, maskInnerGroupChildrenMixin))]
};
var maskOuterGroup = {
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [maskInnerGroup]
};
var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
var maskTag = {
tag: 'mask',
attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {
id: maskId,
maskUnits: 'userSpaceOnUse',
maskContentUnits: 'userSpaceOnUse'
}),
children: [maskRect, maskOuterGroup]
};
var defs = {
tag: 'defs',
children: [{
tag: 'clipPath',
attributes: {
id: clipId
},
children: deGroup(maskPath)
}, maskTag]
};
children.push(defs, {
tag: 'rect',
attributes: _objectSpread2({
fill: 'currentColor',
'clip-path': "url(#".concat(clipId, ")"),
mask: "url(#".concat(maskId, ")")
}, ALL_SPACE)
});
return {
children: children,
attributes: attributes
};
}
function makeIconStandard (_ref) {
var children = _ref.children,
attributes = _ref.attributes,
main = _ref.main,
transform = _ref.transform,
styles = _ref.styles;
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
if (transformIsMeaningful(transform)) {
var trans = transformForSvg({
transform: transform,
containerWidth: main.width,
iconWidth: main.width
});
children.push({
tag: 'g',
attributes: _objectSpread2({}, trans.outer),
children: [{
tag: 'g',
attributes: _objectSpread2({}, trans.inner),
children: [{
tag: main.icon.tag,
children: main.icon.children,
attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path)
}]
}]
});
} else {
children.push(main.icon);
}
return {
children: children,
attributes: attributes
};
}
function asIcon (_ref) {
var children = _ref.children,
main = _ref.main,
mask = _ref.mask,
attributes = _ref.attributes,
styles = _ref.styles,
transform = _ref.transform;
if (transformIsMeaningful(transform) && main.found && !mask.found) {
var width = main.width,
height = main.height;
var offset = {
x: width / height / 2,
y: 0.5
};
attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {
'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
}));
}
return [{
tag: 'svg',
attributes: attributes,
children: children
}];
}
function asSymbol (_ref) {
var prefix = _ref.prefix,
iconName = _ref.iconName,
children = _ref.children,
attributes = _ref.attributes,
symbol = _ref.symbol;
var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
return [{
tag: 'svg',
attributes: {
style: 'display: none;'
},
children: [{
tag: 'symbol',
attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {
id: id
}),
children: children
}]
}];
}
function makeInlineSvgAbstract(params) {
var _params$icons = params.icons,
main = _params$icons.main,
mask = _params$icons.mask,
prefix = params.prefix,
iconName = params.iconName,
transform = params.transform,
symbol = params.symbol,
title = params.title,
maskId = params.maskId,
titleId = params.titleId,
extra = params.extra,
_params$watchable = params.watchable,
watchable = _params$watchable === void 0 ? false : _params$watchable;
var _ref = mask.found ? mask : main,
width = _ref.width,
height = _ref.height;
var isUploadedIcon = prefix === 'fak';
var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
return extra.classes.indexOf(c) === -1;
}).filter(function (c) {
return c !== '' || !!c;
}).concat(extra.classes).join(' ');
var content = {
children: [],
attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {
'data-prefix': prefix,
'data-icon': iconName,
'class': attrClass,
'role': extra.attributes.role || 'img',
'xmlns': 'http://www.w3.org/2000/svg',
'viewBox': "0 0 ".concat(width, " ").concat(height)
})
};
var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
width: "".concat(width / height * 16 * 0.0625, "em")
} : {};
if (watchable) {
content.attributes[DATA_FA_I2SVG] = '';
}
if (title) content.children.push({
tag: 'title',
attributes: {
id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
},
children: [title]
});
var args = _objectSpread2(_objectSpread2({}, content), {}, {
prefix: prefix,
iconName: iconName,
main: main,
mask: mask,
maskId: maskId,
transform: transform,
symbol: symbol,
styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)
});
var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
children = _ref2.children,
attributes = _ref2.attributes;
args.children = children;
args.attributes = attributes;
if (symbol) {
return asSymbol(args);
} else {
return asIcon(args);
}
}
function makeLayersTextAbstract(params) {
var content = params.content,
width = params.width,
height = params.height,
transform = params.transform,
title = params.title,
extra = params.extra,
_params$watchable2 = params.watchable,
watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
if (watchable) {
attributes[DATA_FA_I2SVG] = '';
}
var styles = _objectSpread2({}, extra.styles);
if (transformIsMeaningful(transform)) {
styles['transform'] = transformForCss({
transform: transform,
startCentered: true,
width: width,
height: height
});
styles['-webkit-transform'] = styles['transform'];
}
var styleString = joinStyles(styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
function makeLayersCounterAbstract(params) {
var content = params.content,
title = params.title,
extra = params.extra;
var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {
'title': title
} : {}), {}, {
'class': extra.classes.join(' ')
});
var styleString = joinStyles(extra.styles);
if (styleString.length > 0) {
attributes['style'] = styleString;
}
var val = [];
val.push({
tag: 'span',
attributes: attributes,
children: [content]
});
if (title) {
val.push({
tag: 'span',
attributes: {
class: 'sr-only'
},
children: [title]
});
}
return val;
}
var noop$1 = function noop() {};
var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
mark: noop$1,
measure: noop$1
};
var preamble = "FA \"5.15.4\"";
var begin = function begin(name) {
p.mark("".concat(preamble, " ").concat(name, " begins"));
return function () {
return end(name);
};
};
var end = function end(name) {
p.mark("".concat(preamble, " ").concat(name, " ends"));
p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
};
var perf = {
begin: begin,
end: end
};
/**
* Internal helper to bind a function known to have 4 arguments
* to a given context.
*/
var bindInternal4 = function bindInternal4(func, thisContext) {
return function (a, b, c, d) {
return func.call(thisContext, a, b, c, d);
};
};
/**
* # Reduce
*
* A fast object `.reduce()` implementation.
*
* @param {Object} subject The object to reduce over.
* @param {Function} fn The reducer function.
* @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].
* @param {Object} thisContext The context for the reducer.
* @return {mixed} The final result.
*/
var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
var keys = Object.keys(subject),
length = keys.length,
iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
i,
key,
result;
if (initialValue === undefined) {
i = 1;
result = subject[keys[0]];
} else {
i = 0;
result = initialValue;
}
for (; i < length; i++) {
key = keys[i];
result = iterator(result, subject[key], key, subject);
}
return result;
};
function toHex(unicode) {
var result = '';
for (var i = 0; i < unicode.length; i++) {
var hex = unicode.charCodeAt(i).toString(16);
result += ('000' + hex).slice(-4);
}
return result;
}
function defineIcons(prefix, icons) {
var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _params$skipHooks = params.skipHooks,
skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
var normalized = Object.keys(icons).reduce(function (acc, iconName) {
var icon = icons[iconName];
var expanded = !!icon.icon;
if (expanded) {
acc[icon.iconName] = icon.icon;
} else {
acc[iconName] = icon;
}
return acc;
}, {});
if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
namespace.hooks.addPack(prefix, normalized);
} else {
namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);
}
/**
* Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
* of new styles we needed to differentiate between them. Prefix `fa` is now an alias
* for `fas` so we'll easy the upgrade process for our users by automatically defining
* this as well.
*/
if (prefix === 'fas') {
defineIcons('fa', icons);
}
}
var styles = namespace.styles,
shims = namespace.shims;
var _byUnicode = {};
var _byLigature = {};
var _byOldName = {};
var build = function build() {
var lookup = function lookup(reducer) {
return reduce(styles, function (o, style, prefix) {
o[prefix] = reduce(style, reducer, {});
return o;
}, {});
};
_byUnicode = lookup(function (acc, icon, iconName) {
if (icon[3]) {
acc[icon[3]] = iconName;
}
return acc;
});
_byLigature = lookup(function (acc, icon, iconName) {
var ligatures = icon[2];
acc[iconName] = iconName;
ligatures.forEach(function (ligature) {
acc[ligature] = iconName;
});
return acc;
});
var hasRegular = ('far' in styles);
_byOldName = reduce(shims, function (acc, shim) {
var oldName = shim[0];
var prefix = shim[1];
var iconName = shim[2];
if (prefix === 'far' && !hasRegular) {
prefix = 'fas';
}
acc[oldName] = {
prefix: prefix,
iconName: iconName
};
return acc;
}, {});
};
build();
function byUnicode(prefix, unicode) {
return (_byUnicode[prefix] || {})[unicode];
}
function byLigature(prefix, ligature) {
return (_byLigature[prefix] || {})[ligature];
}
function byOldName(name) {
return _byOldName[name] || {
prefix: null,
iconName: null
};
}
var styles$1 = namespace.styles;
var emptyCanonicalIcon = function emptyCanonicalIcon() {
return {
prefix: null,
iconName: null,
rest: []
};
};
function getCanonicalIcon(values) {
return values.reduce(function (acc, cls) {
var iconName = getIconName(config.familyPrefix, cls);
if (styles$1[cls]) {
acc.prefix = cls;
} else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
acc.prefix = cls;
} else if (iconName) {
var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
acc.iconName = shim.iconName || iconName;
acc.prefix = shim.prefix || acc.prefix;
} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
acc.rest.push(cls);
}
return acc;
}, emptyCanonicalIcon());
}
function iconFromMapping(mapping, prefix, iconName) {
if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
return {
prefix: prefix,
iconName: iconName,
icon: mapping[prefix][iconName]
};
}
}
function toHtml(abstractNodes) {
var tag = abstractNodes.tag,
_abstractNodes$attrib = abstractNodes.attributes,
attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
_abstractNodes$childr = abstractNodes.children,
children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
if (typeof abstractNodes === 'string') {
return htmlEscape(abstractNodes);
} else {
return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "").concat(tag, ">");
}
}
var noop$2 = function noop() {};
function isWatched(node) {
var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
return typeof i2svg === 'string';
}
function getMutator() {
if (config.autoReplaceSvg === true) {
return mutators.replace;
}
var mutator = mutators[config.autoReplaceSvg];
return mutator || mutators.replace;
}
var mutators = {
replace: function replace(mutation) {
var node = mutation[0];
var abstract = mutation[1];
var newOuterHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
if (node.parentNode && node.outerHTML) {
node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : '');
} else if (node.parentNode) {
var newNode = document.createElement('span');
node.parentNode.replaceChild(newNode, node);
newNode.outerHTML = newOuterHTML;
}
},
nest: function nest(mutation) {
var node = mutation[0];
var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
// Short-circuit to the standard replacement
if (~classArray(node).indexOf(config.replacementClass)) {
return mutators.replace(mutation);
}
var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
delete abstract[0].attributes.style;
delete abstract[0].attributes.id;
var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
if (cls === config.replacementClass || cls.match(forSvg)) {
acc.toSvg.push(cls);
} else {
acc.toNode.push(cls);
}
return acc;
}, {
toNode: [],
toSvg: []
});
abstract[0].attributes.class = splitClasses.toSvg.join(' ');
var newInnerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.setAttribute('class', splitClasses.toNode.join(' '));
node.setAttribute(DATA_FA_I2SVG, '');
node.innerHTML = newInnerHTML;
}
};
function performOperationSync(op) {
op();
}
function perform(mutations, callback) {
var callbackFunction = typeof callback === 'function' ? callback : noop$2;
if (mutations.length === 0) {
callbackFunction();
} else {
var frame = performOperationSync;
if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
frame = WINDOW.requestAnimationFrame || performOperationSync;
}
frame(function () {
var mutator = getMutator();
var mark = perf.begin('mutate');
mutations.map(mutator);
mark();
callbackFunction();
});
}
}
var disabled = false;
function disableObservation() {
disabled = true;
}
function enableObservation() {
disabled = false;
}
var mo = null;
function observe(options) {
if (!MUTATION_OBSERVER) {
return;
}
if (!config.observeMutations) {
return;
}
var treeCallback = options.treeCallback,
nodeCallback = options.nodeCallback,
pseudoElementsCallback = options.pseudoElementsCallback,
_options$observeMutat = options.observeMutationsRoot,
observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
mo = new MUTATION_OBSERVER(function (objects) {
if (disabled) return;
toArray(objects).forEach(function (mutationRecord) {
if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
if (config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target);
}
treeCallback(mutationRecord.target);
}
if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
pseudoElementsCallback(mutationRecord.target.parentNode);
}
if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
if (mutationRecord.attributeName === 'class') {
var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
prefix = _getCanonicalIcon.prefix,
iconName = _getCanonicalIcon.iconName;
if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
} else {
nodeCallback(mutationRecord.target);
}
}
});
});
if (!IS_DOM) return;
mo.observe(observeMutationsRoot, {
childList: true,
attributes: true,
characterData: true,
subtree: true
});
}
function disconnect() {
if (!mo) return;
mo.disconnect();
}
function styleParser (node) {
var style = node.getAttribute('style');
var val = [];
if (style) {
val = style.split(';').reduce(function (acc, style) {
var styles = style.split(':');
var prop = styles[0];
var value = styles.slice(1);
if (prop && value.length > 0) {
acc[prop] = value.join(':').trim();
}
return acc;
}, {});
}
return val;
}
function classParser (node) {
var existingPrefix = node.getAttribute('data-prefix');
var existingIconName = node.getAttribute('data-icon');
var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
var val = getCanonicalIcon(classArray(node));
if (existingPrefix && existingIconName) {
val.prefix = existingPrefix;
val.iconName = existingIconName;
}
if (val.prefix && innerText.length > 1) {
val.iconName = byLigature(val.prefix, node.innerText);
} else if (val.prefix && innerText.length === 1) {
val.iconName = byUnicode(val.prefix, toHex(node.innerText));
}
return val;
}
var parseTransformString = function parseTransformString(transformString) {
var transform = {
size: 16,
x: 0,
y: 0,
flipX: false,
flipY: false,
rotate: 0
};
if (!transformString) {
return transform;
} else {
return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
var parts = n.toLowerCase().split('-');
var first = parts[0];
var rest = parts.slice(1).join('-');
if (first && rest === 'h') {
acc.flipX = true;
return acc;
}
if (first && rest === 'v') {
acc.flipY = true;
return acc;
}
rest = parseFloat(rest);
if (isNaN(rest)) {
return acc;
}
switch (first) {
case 'grow':
acc.size = acc.size + rest;
break;
case 'shrink':
acc.size = acc.size - rest;
break;
case 'left':
acc.x = acc.x - rest;
break;
case 'right':
acc.x = acc.x + rest;
break;
case 'up':
acc.y = acc.y - rest;
break;
case 'down':
acc.y = acc.y + rest;
break;
case 'rotate':
acc.rotate = acc.rotate + rest;
break;
}
return acc;
}, transform);
}
};
function transformParser (node) {
return parseTransformString(node.getAttribute('data-fa-transform'));
}
function symbolParser (node) {
var symbol = node.getAttribute('data-fa-symbol');
return symbol === null ? false : symbol === '' ? true : symbol;
}
function attributesParser (node) {
var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
if (acc.name !== 'class' && acc.name !== 'style') {
acc[attr.name] = attr.value;
}
return acc;
}, {});
var title = node.getAttribute('title');
var titleId = node.getAttribute('data-fa-title-id');
if (config.autoA11y) {
if (title) {
extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
extraAttributes['aria-hidden'] = 'true';
extraAttributes['focusable'] = 'false';
}
}
return extraAttributes;
}
function maskParser (node) {
var mask = node.getAttribute('data-fa-mask');
if (!mask) {
return emptyCanonicalIcon();
} else {
return getCanonicalIcon(mask.split(' ').map(function (i) {
return i.trim();
}));
}
}
function blankMeta() {
return {
iconName: null,
title: null,
titleId: null,
prefix: null,
transform: meaninglessTransform,
symbol: false,
mask: null,
maskId: null,
extra: {
classes: [],
styles: {},
attributes: {}
}
};
}
function parseMeta(node) {
var _classParser = classParser(node),
iconName = _classParser.iconName,
prefix = _classParser.prefix,
extraClasses = _classParser.rest;
var extraStyles = styleParser(node);
var transform = transformParser(node);
var symbol = symbolParser(node);
var extraAttributes = attributesParser(node);
var mask = maskParser(node);
return {
iconName: iconName,
title: node.getAttribute('title'),
titleId: node.getAttribute('data-fa-title-id'),
prefix: prefix,
transform: transform,
symbol: symbol,
mask: mask,
maskId: node.getAttribute('data-fa-mask-id'),
extra: {
classes: extraClasses,
styles: extraStyles,
attributes: extraAttributes
}
};
}
function MissingIcon(error) {
this.name = 'MissingIcon';
this.message = error || 'Icon unavailable';
this.stack = new Error().stack;
}
MissingIcon.prototype = Object.create(Error.prototype);
MissingIcon.prototype.constructor = MissingIcon;
var FILL = {
fill: 'currentColor'
};
var ANIMATION_BASE = {
attributeType: 'XML',
repeatCount: 'indefinite',
dur: '2s'
};
var RING = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
})
};
var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'opacity'
});
var DOT = {
tag: 'circle',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
cx: '256',
cy: '364',
r: '28'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {
attributeName: 'r',
values: '28;14;28;28;14;28;'
})
}, {
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;1;1;0;1;'
})
}]
};
var QUESTION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '1',
d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '1;0;0;0;0;1;'
})
}]
};
var EXCLAMATION = {
tag: 'path',
attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {
opacity: '0',
d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
}),
children: [{
tag: 'animate',
attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {
values: '0;0;1;1;0;0;'
})
}]
};
var missing = {
tag: 'g',
children: [RING, DOT, QUESTION, EXCLAMATION]
};
var styles$2 = namespace.styles;
function asFoundIcon(icon) {
var width = icon[0];
var height = icon[1];
var _icon$slice = icon.slice(4),
_icon$slice2 = _slicedToArray(_icon$slice, 1),
vectorData = _icon$slice2[0];
var element = null;
if (Array.isArray(vectorData)) {
element = {
tag: 'g',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
},
children: [{
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
fill: 'currentColor',
d: vectorData[0]
}
}, {
tag: 'path',
attributes: {
class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
fill: 'currentColor',
d: vectorData[1]
}
}]
};
} else {
element = {
tag: 'path',
attributes: {
fill: 'currentColor',
d: vectorData
}
};
}
return {
found: true,
width: width,
height: height,
icon: element
};
}
function findIcon(iconName, prefix) {
return new picked(function (resolve, reject) {
var val = {
found: false,
width: 512,
height: 512,
icon: missing
};
if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
var icon = styles$2[prefix][iconName];
return resolve(asFoundIcon(icon));
}
if (iconName && prefix && !config.showMissingIcons) {
reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
} else {
resolve(val);
}
});
}
var styles$3 = namespace.styles;
function generateSvgReplacementMutation(node, nodeMeta) {
var iconName = nodeMeta.iconName,
title = nodeMeta.title,
titleId = nodeMeta.titleId,
prefix = nodeMeta.prefix,
transform = nodeMeta.transform,
symbol = nodeMeta.symbol,
mask = nodeMeta.mask,
maskId = nodeMeta.maskId,
extra = nodeMeta.extra;
return new picked(function (resolve, reject) {
picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
main = _ref2[0],
mask = _ref2[1];
resolve([node, makeInlineSvgAbstract({
icons: {
main: main,
mask: mask
},
prefix: prefix,
iconName: iconName,
transform: transform,
symbol: symbol,
mask: mask,
maskId: maskId,
title: title,
titleId: titleId,
extra: extra,
watchable: true
})]);
});
});
}
function generateLayersText(node, nodeMeta) {
var title = nodeMeta.title,
transform = nodeMeta.transform,
extra = nodeMeta.extra;
var width = null;
var height = null;
if (IS_IE) {
var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
var boundingClientRect = node.getBoundingClientRect();
width = boundingClientRect.width / computedFontSize;
height = boundingClientRect.height / computedFontSize;
}
if (config.autoA11y && !title) {
extra.attributes['aria-hidden'] = 'true';
}
return picked.resolve([node, makeLayersTextAbstract({
content: node.innerHTML,
width: width,
height: height,
transform: transform,
title: title,
extra: extra,
watchable: true
})]);
}
function generateMutation(node) {
var nodeMeta = parseMeta(node);
if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
return generateLayersText(node, nodeMeta);
} else {
return generateSvgReplacementMutation(node, nodeMeta);
}
}
function onTree(root) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (!IS_DOM) return;
var htmlClassList = DOCUMENT.documentElement.classList;
var hclAdd = function hclAdd(suffix) {
return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var hclRemove = function hclRemove(suffix) {
return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
};
var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
})).join(', ');
if (prefixesDomQuery.length === 0) {
return;
}
var candidates = [];
try {
candidates = toArray(root.querySelectorAll(prefixesDomQuery));
} catch (e) {// noop
}
if (candidates.length > 0) {
hclAdd('pending');
hclRemove('complete');
} else {
return;
}
var mark = perf.begin('onTree');
var mutations = candidates.reduce(function (acc, node) {
try {
var mutation = generateMutation(node);
if (mutation) {
acc.push(mutation);
}
} catch (e) {
if (!PRODUCTION) {
if (e instanceof MissingIcon) {
console.error(e);
}
}
}
return acc;
}, []);
return new picked(function (resolve, reject) {
picked.all(mutations).then(function (resolvedMutations) {
perform(resolvedMutations, function () {
hclAdd('active');
hclAdd('complete');
hclRemove('pending');
if (typeof callback === 'function') callback();
mark();
resolve();
});
}).catch(function () {
mark();
reject();
});
});
}
function onNode(node) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
generateMutation(node).then(function (mutation) {
if (mutation) {
perform([mutation], callback);
}
});
}
function replaceForPosition(node, position) {
var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
return new picked(function (resolve, reject) {
if (node.getAttribute(pendingAttribute) !== null) {
// This node is already being processed
return resolve();
}
var children = toArray(node.children);
var alreadyProcessedPseudoElement = children.filter(function (c) {
return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
})[0];
var styles = WINDOW.getComputedStyle(node, position);
var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
var fontWeight = styles.getPropertyValue('font-weight');
var content = styles.getPropertyValue('content');
if (alreadyProcessedPseudoElement && !fontFamily) {
// If we've already processed it but the current computed style does not result in a font-family,
// that probably means that a class name that was previously present to make the icon has been
// removed. So we now should delete the icon.
node.removeChild(alreadyProcessedPseudoElement);
return resolve();
} else if (fontFamily && content !== 'none' && content !== '') {
var _content = styles.getPropertyValue('content');
var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
var iconName = byUnicode(prefix, hexValue);
var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
// already done so with the same prefix and iconName
if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
node.setAttribute(pendingAttribute, iconIdentifier);
if (alreadyProcessedPseudoElement) {
// Delete the old one, since we're replacing it with a new one
node.removeChild(alreadyProcessedPseudoElement);
}
var meta = blankMeta();
var extra = meta.extra;
extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
findIcon(iconName, prefix).then(function (main) {
var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {
icons: {
main: main,
mask: emptyCanonicalIcon()
},
prefix: prefix,
iconName: iconIdentifier,
extra: extra,
watchable: true
}));
var element = DOCUMENT.createElement('svg');
if (position === ':before') {
node.insertBefore(element, node.firstChild);
} else {
node.appendChild(element);
}
element.outerHTML = abstract.map(function (a) {
return toHtml(a);
}).join('\n');
node.removeAttribute(pendingAttribute);
resolve();
}).catch(reject);
} else {
resolve();
}
} else {
resolve();
}
});
}
function replace(node) {
return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
}
function processable(node) {
return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
}
function searchPseudoElements (root) {
if (!IS_DOM) return;
return new picked(function (resolve, reject) {
var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
var end = perf.begin('searchPseudoElements');
disableObservation();
picked.all(operations).then(function () {
end();
enableObservation();
resolve();
}).catch(function () {
end();
enableObservation();
reject();
});
});
}
var baseStyles = "svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}";
function css () {
var dfp = DEFAULT_FAMILY_PREFIX;
var drc = DEFAULT_REPLACEMENT_CLASS;
var fp = config.familyPrefix;
var rc = config.replacementClass;
var s = baseStyles;
if (fp !== dfp || rc !== drc) {
var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
var rPatt = new RegExp("\\.".concat(drc), 'g');
s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
}
return s;
}
var Library = /*#__PURE__*/function () {
function Library() {
_classCallCheck(this, Library);
this.definitions = {};
}
_createClass(Library, [{
key: "add",
value: function add() {
var _this = this;
for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
definitions[_key] = arguments[_key];
}
var additions = definitions.reduce(this._pullDefinitions, {});
Object.keys(additions).forEach(function (key) {
_this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);
defineIcons(key, additions[key]);
build();
});
}
}, {
key: "reset",
value: function reset() {
this.definitions = {};
}
}, {
key: "_pullDefinitions",
value: function _pullDefinitions(additions, definition) {
var normalized = definition.prefix && definition.iconName && definition.icon ? {
0: definition
} : definition;
Object.keys(normalized).map(function (key) {
var _normalized$key = normalized[key],
prefix = _normalized$key.prefix,
iconName = _normalized$key.iconName,
icon = _normalized$key.icon;
if (!additions[prefix]) additions[prefix] = {};
additions[prefix][iconName] = icon;
});
return additions;
}
}]);
return Library;
}();
function ensureCss() {
if (config.autoAddCss && !_cssInserted) {
insertCss(css());
_cssInserted = true;
}
}
function apiObject(val, abstractCreator) {
Object.defineProperty(val, 'abstract', {
get: abstractCreator
});
Object.defineProperty(val, 'html', {
get: function get() {
return val.abstract.map(function (a) {
return toHtml(a);
});
}
});
Object.defineProperty(val, 'node', {
get: function get() {
if (!IS_DOM) return;
var container = DOCUMENT.createElement('div');
container.innerHTML = val.html;
return container.children;
}
});
return val;
}
function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}
function resolveIcons(next) {
return function (maybeIconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
var mask = params.mask;
if (mask) {
mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
}
return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {
mask: mask
}));
};
}
var library = new Library();
var noAuto = function noAuto() {
config.autoReplaceSvg = false;
config.observeMutations = false;
disconnect();
};
var _cssInserted = false;
var dom = {
i2svg: function i2svg() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (IS_DOM) {
ensureCss();
var _params$node = params.node,
node = _params$node === void 0 ? DOCUMENT : _params$node,
_params$callback = params.callback,
callback = _params$callback === void 0 ? function () {} : _params$callback;
if (config.searchPseudoElements) {
searchPseudoElements(node);
}
return onTree(node, callback);
} else {
return picked.reject('Operation requires a DOM of some kind.');
}
},
css: css,
insertCss: function insertCss$$1() {
if (!_cssInserted) {
insertCss(css());
_cssInserted = true;
}
},
watch: function watch() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
observeMutationsRoot = params.observeMutationsRoot;
if (config.autoReplaceSvg === false) {
config.autoReplaceSvg = true;
}
config.observeMutations = true;
domready(function () {
autoReplace({
autoReplaceSvgRoot: autoReplaceSvgRoot
});
observe({
treeCallback: onTree,
nodeCallback: onNode,
pseudoElementsCallback: searchPseudoElements,
observeMutationsRoot: observeMutationsRoot
});
});
}
};
var parse = {
transform: function transform(transformString) {
return parseTransformString(transformString);
}
};
var icon = resolveIcons(function (iconDefinition) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform = params.transform,
transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
_params$symbol = params.symbol,
symbol = _params$symbol === void 0 ? false : _params$symbol,
_params$mask = params.mask,
mask = _params$mask === void 0 ? null : _params$mask,
_params$maskId = params.maskId,
maskId = _params$maskId === void 0 ? null : _params$maskId,
_params$title = params.title,
title = _params$title === void 0 ? null : _params$title,
_params$titleId = params.titleId,
titleId = _params$titleId === void 0 ? null : _params$titleId,
_params$classes = params.classes,
classes = _params$classes === void 0 ? [] : _params$classes,
_params$attributes = params.attributes,
attributes = _params$attributes === void 0 ? {} : _params$attributes,
_params$styles = params.styles,
styles = _params$styles === void 0 ? {} : _params$styles;
if (!iconDefinition) return;
var prefix = iconDefinition.prefix,
iconName = iconDefinition.iconName,
icon = iconDefinition.icon;
return apiObject(_objectSpread2({
type: 'icon'
}, iconDefinition), function () {
ensureCss();
if (config.autoA11y) {
if (title) {
attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
} else {
attributes['aria-hidden'] = 'true';
attributes['focusable'] = 'false';
}
}
return makeInlineSvgAbstract({
icons: {
main: asFoundIcon(icon),
mask: mask ? asFoundIcon(mask.icon) : {
found: false,
width: null,
height: null,
icon: {}
}
},
prefix: prefix,
iconName: iconName,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
symbol: symbol,
title: title,
maskId: maskId,
titleId: titleId,
extra: {
attributes: attributes,
styles: styles,
classes: classes
}
});
});
});
var text = function text(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$transform2 = params.transform,
transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
_params$title2 = params.title,
title = _params$title2 === void 0 ? null : _params$title2,
_params$classes2 = params.classes,
classes = _params$classes2 === void 0 ? [] : _params$classes2,
_params$attributes2 = params.attributes,
attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
_params$styles2 = params.styles,
styles = _params$styles2 === void 0 ? {} : _params$styles2;
return apiObject({
type: 'text',
content: content
}, function () {
ensureCss();
return makeLayersTextAbstract({
content: content,
transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
}
});
});
};
var counter = function counter(content) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$title3 = params.title,
title = _params$title3 === void 0 ? null : _params$title3,
_params$classes3 = params.classes,
classes = _params$classes3 === void 0 ? [] : _params$classes3,
_params$attributes3 = params.attributes,
attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
_params$styles3 = params.styles,
styles = _params$styles3 === void 0 ? {} : _params$styles3;
return apiObject({
type: 'counter',
content: content
}, function () {
ensureCss();
return makeLayersCounterAbstract({
content: content.toString(),
title: title,
extra: {
attributes: attributes,
styles: styles,
classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
}
});
});
};
var layer = function layer(assembler) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _params$classes4 = params.classes,
classes = _params$classes4 === void 0 ? [] : _params$classes4;
return apiObject({
type: 'layer'
}, function () {
ensureCss();
var children = [];
assembler(function (args) {
Array.isArray(args) ? args.map(function (a) {
children = children.concat(a.abstract);
}) : children = children.concat(args.abstract);
});
return [{
tag: 'span',
attributes: {
class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
},
children: children
}];
});
};
var api = {
noAuto: noAuto,
config: config,
dom: dom,
library: library,
parse: parse,
findIconDefinition: findIconDefinition,
icon: icon,
text: text,
counter: counter,
layer: layer,
toHtml: toHtml
};
var autoReplace = function autoReplace() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _params$autoReplaceSv = params.autoReplaceSvgRoot,
autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
node: autoReplaceSvgRoot
});
};
exports.icon = icon;
exports.noAuto = noAuto;
exports.config = config;
exports.toHtml = toHtml;
exports.layer = layer;
exports.text = text;
exports.counter = counter;
exports.library = library;
exports.dom = dom;
exports.parse = parse;
exports.findIconDefinition = findIconDefinition;
Object.defineProperty(exports, '__esModule', { value: true });
})));
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
"version": "1.2.36",
"name": "@fortawesome/fontawesome-svg-core",
"main": "index.js",
"module": "index.es.js",
"jsnext:main": "index.es.js",
"style": "styles.css",
"license": "MIT",
"types": "./index.d.ts",
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/styles.css
================================================
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.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-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse {
color: #fff; }
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/attribution.js
================================================
console.log(`Font Awesome Pro undefined by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faAws.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAws: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faAws.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'aws';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f375';
var svgPathData = 'M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAws = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmazonPay.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcAmazonPay: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmazonPay.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-amazon-pay';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f42d';
var svgPathData = 'M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcAmazonPay = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmex.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcAmex: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmex.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-amex';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f3';
var svgPathData = 'M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcAmex = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcApplePay.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcApplePay: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcApplePay.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-apple-pay';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f416';
var svgPathData = 'M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcApplePay = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDinersClub.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcDinersClub: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDinersClub.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-diners-club';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f24c';
var svgPathData = 'M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcDinersClub = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDiscover.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcDiscover: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDiscover.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-discover';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f2';
var svgPathData = 'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcDiscover = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcJcb.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcJcb: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcJcb.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-jcb';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f24b';
var svgPathData = 'M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcJcb = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcMastercard.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcMastercard: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcMastercard.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-mastercard';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f1';
var svgPathData = 'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcMastercard = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcPaypal.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcPaypal: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcPaypal.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-paypal';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f4';
var svgPathData = 'M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcPaypal = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcStripe.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcStripe: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcStripe.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-stripe';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f5';
var svgPathData = 'M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcStripe = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcVisa.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCcVisa: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcVisa.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'cc-visa';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f1f0';
var svgPathData = 'M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCcVisa = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDiscourse.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faDiscourse: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDiscourse.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'discourse';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f393';
var svgPathData = 'M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faDiscourse = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDocker.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faDocker: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDocker.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'docker';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f395';
var svgPathData = 'M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faDocker = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faGithub.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGithub: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faGithub.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'github';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f09b';
var svgPathData = 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGithub = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faInstagram.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faInstagram: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faInstagram.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'instagram';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f16d';
var svgPathData = 'M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faInstagram = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faMicrosoft.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faMicrosoft: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faMicrosoft.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'microsoft';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f3ca';
var svgPathData = 'M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faMicrosoft = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faRev.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRev: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faRev.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'rev';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f5b2';
var svgPathData = 'M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRev = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faSlack.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSlack: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faSlack.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'slack';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f198';
var svgPathData = 'M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSlack = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faTwitter.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faTwitter: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faTwitter.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fab';
var iconName = 'twitter';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f099';
var svgPathData = 'M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faTwitter = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.d.ts
================================================
export const faAws: IconDefinition;
export const faCcAmazonPay: IconDefinition;
export const faCcAmex: IconDefinition;
export const faCcApplePay: IconDefinition;
export const faCcDinersClub: IconDefinition;
export const faCcDiscover: IconDefinition;
export const faCcJcb: IconDefinition;
export const faCcMastercard: IconDefinition;
export const faCcPaypal: IconDefinition;
export const faCcStripe: IconDefinition;
export const faCcVisa: IconDefinition;
export const faDiscourse: IconDefinition;
export const faDocker: IconDefinition;
export const faGithub: IconDefinition;
export const faInstagram: IconDefinition;
export const faMicrosoft: IconDefinition;
export const faRev: IconDefinition;
export const faSlack: IconDefinition;
export const faTwitter: IconDefinition;
import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export const prefix: IconPrefix;
export const fab: IconPack;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.es.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
var prefix = "fab";
var faAws = {
prefix: 'fab',
iconName: 'aws',
icon: [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"]
};
var faCcAmazonPay = {
prefix: 'fab',
iconName: 'cc-amazon-pay',
icon: [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"]
};
var faCcAmex = {
prefix: 'fab',
iconName: 'cc-amex',
icon: [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"]
};
var faCcApplePay = {
prefix: 'fab',
iconName: 'cc-apple-pay',
icon: [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"]
};
var faCcDinersClub = {
prefix: 'fab',
iconName: 'cc-diners-club',
icon: [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"]
};
var faCcDiscover = {
prefix: 'fab',
iconName: 'cc-discover',
icon: [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"]
};
var faCcJcb = {
prefix: 'fab',
iconName: 'cc-jcb',
icon: [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"]
};
var faCcMastercard = {
prefix: 'fab',
iconName: 'cc-mastercard',
icon: [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"]
};
var faCcPaypal = {
prefix: 'fab',
iconName: 'cc-paypal',
icon: [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"]
};
var faCcStripe = {
prefix: 'fab',
iconName: 'cc-stripe',
icon: [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"]
};
var faCcVisa = {
prefix: 'fab',
iconName: 'cc-visa',
icon: [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"]
};
var faDiscourse = {
prefix: 'fab',
iconName: 'discourse',
icon: [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"]
};
var faDocker = {
prefix: 'fab',
iconName: 'docker',
icon: [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"]
};
var faGithub = {
prefix: 'fab',
iconName: 'github',
icon: [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]
};
var faInstagram = {
prefix: 'fab',
iconName: 'instagram',
icon: [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]
};
var faMicrosoft = {
prefix: 'fab',
iconName: 'microsoft',
icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]
};
var faRev = {
prefix: 'fab',
iconName: 'rev',
icon: [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"]
};
var faSlack = {
prefix: 'fab',
iconName: 'slack',
icon: [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"]
};
var faTwitter = {
prefix: 'fab',
iconName: 'twitter',
icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
var _iconsCache = {
faAws: faAws,
faCcAmazonPay: faCcAmazonPay,
faCcAmex: faCcAmex,
faCcApplePay: faCcApplePay,
faCcDinersClub: faCcDinersClub,
faCcDiscover: faCcDiscover,
faCcJcb: faCcJcb,
faCcMastercard: faCcMastercard,
faCcPaypal: faCcPaypal,
faCcStripe: faCcStripe,
faCcVisa: faCcVisa,
faDiscourse: faDiscourse,
faDocker: faDocker,
faGithub: faGithub,
faInstagram: faInstagram,
faMicrosoft: faMicrosoft,
faRev: faRev,
faSlack: faSlack,
faTwitter: faTwitter
};
export { _iconsCache as fab, prefix, faAws, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faDiscourse, faDocker, faGithub, faInstagram, faMicrosoft, faRev, faSlack, faTwitter };
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['pro-brands-svg-icons'] = {})));
}(this, (function (exports) { 'use strict';
var prefix = "fab";
var faAws = {
prefix: 'fab',
iconName: 'aws',
icon: [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"]
};
var faCcAmazonPay = {
prefix: 'fab',
iconName: 'cc-amazon-pay',
icon: [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"]
};
var faCcAmex = {
prefix: 'fab',
iconName: 'cc-amex',
icon: [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"]
};
var faCcApplePay = {
prefix: 'fab',
iconName: 'cc-apple-pay',
icon: [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"]
};
var faCcDinersClub = {
prefix: 'fab',
iconName: 'cc-diners-club',
icon: [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"]
};
var faCcDiscover = {
prefix: 'fab',
iconName: 'cc-discover',
icon: [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"]
};
var faCcJcb = {
prefix: 'fab',
iconName: 'cc-jcb',
icon: [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"]
};
var faCcMastercard = {
prefix: 'fab',
iconName: 'cc-mastercard',
icon: [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"]
};
var faCcPaypal = {
prefix: 'fab',
iconName: 'cc-paypal',
icon: [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"]
};
var faCcStripe = {
prefix: 'fab',
iconName: 'cc-stripe',
icon: [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"]
};
var faCcVisa = {
prefix: 'fab',
iconName: 'cc-visa',
icon: [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"]
};
var faDiscourse = {
prefix: 'fab',
iconName: 'discourse',
icon: [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"]
};
var faDocker = {
prefix: 'fab',
iconName: 'docker',
icon: [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"]
};
var faGithub = {
prefix: 'fab',
iconName: 'github',
icon: [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]
};
var faInstagram = {
prefix: 'fab',
iconName: 'instagram',
icon: [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]
};
var faMicrosoft = {
prefix: 'fab',
iconName: 'microsoft',
icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]
};
var faRev = {
prefix: 'fab',
iconName: 'rev',
icon: [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"]
};
var faSlack = {
prefix: 'fab',
iconName: 'slack',
icon: [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"]
};
var faTwitter = {
prefix: 'fab',
iconName: 'twitter',
icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
};
var _iconsCache = {
faAws: faAws,
faCcAmazonPay: faCcAmazonPay,
faCcAmex: faCcAmex,
faCcApplePay: faCcApplePay,
faCcDinersClub: faCcDinersClub,
faCcDiscover: faCcDiscover,
faCcJcb: faCcJcb,
faCcMastercard: faCcMastercard,
faCcPaypal: faCcPaypal,
faCcStripe: faCcStripe,
faCcVisa: faCcVisa,
faDiscourse: faDiscourse,
faDocker: faDocker,
faGithub: faGithub,
faInstagram: faInstagram,
faMicrosoft: faMicrosoft,
faRev: faRev,
faSlack: faSlack,
faTwitter: faTwitter
};
exports.fab = _iconsCache;
exports.prefix = prefix;
exports.faAws = faAws;
exports.faCcAmazonPay = faCcAmazonPay;
exports.faCcAmex = faCcAmex;
exports.faCcApplePay = faCcApplePay;
exports.faCcDinersClub = faCcDinersClub;
exports.faCcDiscover = faCcDiscover;
exports.faCcJcb = faCcJcb;
exports.faCcMastercard = faCcMastercard;
exports.faCcPaypal = faCcPaypal;
exports.faCcStripe = faCcStripe;
exports.faCcVisa = faCcVisa;
exports.faDiscourse = faDiscourse;
exports.faDocker = faDocker;
exports.faGithub = faGithub;
exports.faInstagram = faInstagram;
exports.faMicrosoft = faMicrosoft;
exports.faRev = faRev;
exports.faSlack = faSlack;
exports.faTwitter = faTwitter;
Object.defineProperty(exports, '__esModule', { value: true });
})));
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
"name": "@fortawesome/pro-brands-svg-icons",
"main": "index.js",
"module": "index.es.js",
"jsnext:main": "index.es.js",
"license": "UNLICENSED",
"types": "./index.d.ts",
"sideEffects": false,
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/README.md
================================================
# @fortawesome/free-duotone-svg-icons - SVG with JavaScript version
> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
[](https://www.npmjs.com/package/@fortawesome/free-duotone-svg-icons)
## Installation
```
$ npm i --save @fortawesome/free-duotone-svg-icons
```
Or
```
$ yarn add @fortawesome/free-duotone-svg-icons
```
## Documentation
Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
## Issues and support
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/attribution.js
================================================
console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAbacus.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAbacus: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAbacus.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'abacus';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f640';
var svgPathData = ['M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z', 'M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAbacus = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAlignSlash.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAlignSlash: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAlignSlash.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'align-slash';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f846';
var svgPathData = ['M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAlignSlash = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAtomAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAtomAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAtomAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'atom-alt';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f5d3';
var svgPathData = ['M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z', 'M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAtomAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBadgeCheck.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faBadgeCheck: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBadgeCheck.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'badge-check';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f336';
var svgPathData = ['M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z', 'M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faBadgeCheck = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBell.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faBell: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBell.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'bell';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f0f3';
var svgPathData = ['M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z', 'M160 448h128a64 64 0 0 1-128 0z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faBell = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBooks.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faBooks: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBooks.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'books';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f5db';
var svgPathData = ['M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z', 'M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faBooks = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBracketsCurly.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faBracketsCurly: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBracketsCurly.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'brackets-curly';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f7ea';
var svgPathData = ['M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z', 'M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faBracketsCurly = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartNetwork.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faChartNetwork: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartNetwork.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'chart-network';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f78a';
var svgPathData = ['M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z', 'M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faChartNetwork = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartScatter.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faChartScatter: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartScatter.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'chart-scatter';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f7ee';
var svgPathData = ['M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z', 'M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faChartScatter = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCheck.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCheck: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCheck.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'check';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f00c';
var svgPathData = ['M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z', 'M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCheck = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f111';
var svgPathData = ['M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z', 'M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faClouds.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faClouds: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faClouds.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'clouds';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f744';
var svgPathData = ['M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z', 'M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faClouds = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCogs.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCogs: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCogs.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'cogs';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f085';
var svgPathData = ['M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z', 'M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCogs = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCommentDots.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCommentDots: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCommentDots.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'comment-dots';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f4ad';
var svgPathData = ['M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z', 'M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCommentDots = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faConciergeBell.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faConciergeBell: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faConciergeBell.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'concierge-bell';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f562';
var svgPathData = ['M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z', 'M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faConciergeBell = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faDotCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faDotCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faDotCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'dot-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f192';
var svgPathData = ['M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z', 'M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faDotCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faEnvelope.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faEnvelope: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faEnvelope.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'envelope';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0e0';
var svgPathData = ['M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z', 'M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faEnvelope = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faExchangeAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faExchangeAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faExchangeAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'exchange-alt';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f362';
var svgPathData = ['M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z', 'M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faExchangeAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faFileAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'file-alt';
var width = 384;
var height = 512;
var ligatures = [];
var unicode = 'f15c';
var svgPathData = ['M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z', 'M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faFileAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileCode.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faFileCode: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileCode.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'file-code';
var width = 384;
var height = 512;
var ligatures = [];
var unicode = 'f1c9';
var svgPathData = ['M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z', 'M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faFileCode = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobe.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGlobe: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobe.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'globe';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f0ac';
var svgPathData = ['M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z', 'M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGlobe = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAfrica.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGlobeAfrica: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAfrica.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'globe-africa';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f57c';
var svgPathData = ['M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z', 'M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGlobeAfrica = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAmericas.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGlobeAmericas: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAmericas.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'globe-americas';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f57d';
var svgPathData = ['M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z', 'M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGlobeAmericas = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAsia.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGlobeAsia: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAsia.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'globe-asia';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f57e';
var svgPathData = ['M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z', 'M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGlobeAsia = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeEurope.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGlobeEurope: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeEurope.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'globe-europe';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f7a2';
var svgPathData = ['M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z', 'M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGlobeEurope = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGraduationCap.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faGraduationCap: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGraduationCap.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'graduation-cap';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f19d';
var svgPathData = ['M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z', 'M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faGraduationCap = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faHistory.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faHistory: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faHistory.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'history';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f1da';
var svgPathData = ['M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z', 'M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faHistory = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKey.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faKey: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKey.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'key';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f084';
var svgPathData = ['M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z', 'M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faKey = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKeySkeleton.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faKeySkeleton: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKeySkeleton.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'key-skeleton';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f6f3';
var svgPathData = ['M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z', 'M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faKeySkeleton = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptop.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLaptop: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptop.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'laptop';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f109';
var svgPathData = ['M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z', 'M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLaptop = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopCode.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLaptopCode: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopCode.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'laptop-code';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f5fc';
var svgPathData = ['M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z', 'M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLaptopCode = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopHouse.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLaptopHouse: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopHouse.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'laptop-house';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'e066';
var svgPathData = ['M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z', 'M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLaptopHouse = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLifeRing.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLifeRing: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLifeRing.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'life-ring';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f1cd';
var svgPathData = ['M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z', 'M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLifeRing = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLightbulb.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLightbulb: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLightbulb.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'lightbulb';
var width = 352;
var height = 512;
var ligatures = [];
var unicode = 'f0eb';
var svgPathData = ['M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z', 'M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLightbulb = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faListAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'list-alt';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f022';
var svgPathData = ['M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z', 'M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faListAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListUl.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faListUl: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListUl.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'list-ul';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0ca';
var svgPathData = ['M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faListUl = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLockAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faLockAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLockAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'lock-alt';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f30d';
var svgPathData = ['M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z', 'M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faLockAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMapMarkerAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faMapMarkerAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMapMarkerAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'map-marker-alt';
var width = 384;
var height = 512;
var ligatures = [];
var unicode = 'f3c5';
var svgPathData = ['M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z', 'M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faMapMarkerAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMoonStars.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faMoonStars: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMoonStars.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'moon-stars';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f755';
var svgPathData = ['M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z', 'M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faMoonStars = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faNetworkWired.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faNetworkWired: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faNetworkWired.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'network-wired';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f6ff';
var svgPathData = ['M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z', 'M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faNetworkWired = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faPlanetRinged.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faPlanetRinged: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faPlanetRinged.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'planet-ringed';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'e020';
var svgPathData = ['M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z', 'M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faPlanetRinged = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuestionCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faQuestionCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuestionCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'question-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f059';
var svgPathData = ['M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z', 'M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faQuestionCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuoteLeft.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faQuoteLeft: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuoteLeft.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'quote-left';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f10d';
var svgPathData = ['M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z', 'M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faQuoteLeft = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRandom.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRandom: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRandom.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'random';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f074';
var svgPathData = ['M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z', 'M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRandom = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRocket.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRocket: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRocket.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'rocket';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f135';
var svgPathData = ['M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z', 'M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRocket = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSearch.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSearch: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSearch.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'search';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f002';
var svgPathData = ['M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z', 'M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSearch = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faServer.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faServer: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faServer.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'server';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f233';
var svgPathData = ['M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z', 'M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faServer = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSignOut.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSignOut: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSignOut.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'sign-out';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f08b';
var svgPathData = ['M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z', 'M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSignOut = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSirenOn.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSirenOn: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSirenOn.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'siren-on';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'e02e';
var svgPathData = ['M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z', 'M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSirenOn = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSmile.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSmile: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSmile.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'smile';
var width = 496;
var height = 512;
var ligatures = [];
var unicode = 'f118';
var svgPathData = ['M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z', 'M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSmile = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSnowman.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSnowman: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSnowman.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'snowman';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f7d0';
var svgPathData = ['M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z', 'M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSnowman = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSun.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSun: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSun.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'sun';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f185';
var svgPathData = ['M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z', 'M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSun = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faTasks.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faTasks: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faTasks.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'tasks';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0ae';
var svgPathData = ['M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faTasks = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUniversity.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUniversity: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUniversity.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'university';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f19c';
var svgPathData = ['M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z', 'M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUniversity = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUser.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUser: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUser.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'user';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f007';
var svgPathData = ['M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z', 'M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUser = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserHardHat.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUserHardHat: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserHardHat.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'user-hard-hat';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f82c';
var svgPathData = ['M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z', 'M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUserHardHat = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserShield.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUserShield: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserShield.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'user-shield';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f505';
var svgPathData = ['M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z', 'M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUserShield = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUsers.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUsers: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string[];
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUsers.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fad';
var iconName = 'users';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f0c0';
var svgPathData = ['M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z', 'M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z'];
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUsers = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.d.ts
================================================
export const faAbacus: IconDefinition;
export const faAlignSlash: IconDefinition;
export const faAtomAlt: IconDefinition;
export const faBadgeCheck: IconDefinition;
export const faBell: IconDefinition;
export const faBooks: IconDefinition;
export const faBracketsCurly: IconDefinition;
export const faChartNetwork: IconDefinition;
export const faChartScatter: IconDefinition;
export const faCheck: IconDefinition;
export const faCircle: IconDefinition;
export const faClouds: IconDefinition;
export const faCogs: IconDefinition;
export const faCommentDots: IconDefinition;
export const faConciergeBell: IconDefinition;
export const faDotCircle: IconDefinition;
export const faEnvelope: IconDefinition;
export const faExchangeAlt: IconDefinition;
export const faFileAlt: IconDefinition;
export const faFileCode: IconDefinition;
export const faGlobe: IconDefinition;
export const faGlobeAfrica: IconDefinition;
export const faGlobeAmericas: IconDefinition;
export const faGlobeAsia: IconDefinition;
export const faGlobeEurope: IconDefinition;
export const faGraduationCap: IconDefinition;
export const faHistory: IconDefinition;
export const faKey: IconDefinition;
export const faKeySkeleton: IconDefinition;
export const faLaptop: IconDefinition;
export const faLaptopCode: IconDefinition;
export const faLaptopHouse: IconDefinition;
export const faLifeRing: IconDefinition;
export const faLightbulb: IconDefinition;
export const faListAlt: IconDefinition;
export const faListUl: IconDefinition;
export const faLockAlt: IconDefinition;
export const faMapMarkerAlt: IconDefinition;
export const faMoonStars: IconDefinition;
export const faNetworkWired: IconDefinition;
export const faPlanetRinged: IconDefinition;
export const faQuestionCircle: IconDefinition;
export const faQuoteLeft: IconDefinition;
export const faRandom: IconDefinition;
export const faRocket: IconDefinition;
export const faSearch: IconDefinition;
export const faServer: IconDefinition;
export const faSignOut: IconDefinition;
export const faSirenOn: IconDefinition;
export const faSmile: IconDefinition;
export const faSnowman: IconDefinition;
export const faSun: IconDefinition;
export const faTasks: IconDefinition;
export const faUniversity: IconDefinition;
export const faUser: IconDefinition;
export const faUserHardHat: IconDefinition;
export const faUserShield: IconDefinition;
export const faUsers: IconDefinition;
import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export const prefix: IconPrefix;
export const fad: IconPack;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.es.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
var prefix = "fad";
var faAbacus = {
prefix: 'fad',
iconName: 'abacus',
icon: [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]]
};
var faAlignSlash = {
prefix: 'fad',
iconName: 'align-slash',
icon: [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]]
};
var faAtomAlt = {
prefix: 'fad',
iconName: 'atom-alt',
icon: [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]]
};
var faBadgeCheck = {
prefix: 'fad',
iconName: 'badge-check',
icon: [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]]
};
var faBell = {
prefix: 'fad',
iconName: 'bell',
icon: [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]]
};
var faBooks = {
prefix: 'fad',
iconName: 'books',
icon: [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]]
};
var faBracketsCurly = {
prefix: 'fad',
iconName: 'brackets-curly',
icon: [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]]
};
var faChartNetwork = {
prefix: 'fad',
iconName: 'chart-network',
icon: [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]]
};
var faChartScatter = {
prefix: 'fad',
iconName: 'chart-scatter',
icon: [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]]
};
var faCheck = {
prefix: 'fad',
iconName: 'check',
icon: [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]]
};
var faCircle = {
prefix: 'fad',
iconName: 'circle',
icon: [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]]
};
var faClouds = {
prefix: 'fad',
iconName: 'clouds',
icon: [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]]
};
var faCogs = {
prefix: 'fad',
iconName: 'cogs',
icon: [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]]
};
var faCommentDots = {
prefix: 'fad',
iconName: 'comment-dots',
icon: [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]]
};
var faConciergeBell = {
prefix: 'fad',
iconName: 'concierge-bell',
icon: [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]]
};
var faDotCircle = {
prefix: 'fad',
iconName: 'dot-circle',
icon: [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]]
};
var faEnvelope = {
prefix: 'fad',
iconName: 'envelope',
icon: [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]]
};
var faExchangeAlt = {
prefix: 'fad',
iconName: 'exchange-alt',
icon: [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]]
};
var faFileAlt = {
prefix: 'fad',
iconName: 'file-alt',
icon: [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]]
};
var faFileCode = {
prefix: 'fad',
iconName: 'file-code',
icon: [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]]
};
var faGlobe = {
prefix: 'fad',
iconName: 'globe',
icon: [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]]
};
var faGlobeAfrica = {
prefix: 'fad',
iconName: 'globe-africa',
icon: [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]]
};
var faGlobeAmericas = {
prefix: 'fad',
iconName: 'globe-americas',
icon: [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]]
};
var faGlobeAsia = {
prefix: 'fad',
iconName: 'globe-asia',
icon: [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]]
};
var faGlobeEurope = {
prefix: 'fad',
iconName: 'globe-europe',
icon: [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]]
};
var faGraduationCap = {
prefix: 'fad',
iconName: 'graduation-cap',
icon: [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]]
};
var faHistory = {
prefix: 'fad',
iconName: 'history',
icon: [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]]
};
var faKey = {
prefix: 'fad',
iconName: 'key',
icon: [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]]
};
var faKeySkeleton = {
prefix: 'fad',
iconName: 'key-skeleton',
icon: [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]]
};
var faLaptop = {
prefix: 'fad',
iconName: 'laptop',
icon: [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]]
};
var faLaptopCode = {
prefix: 'fad',
iconName: 'laptop-code',
icon: [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]]
};
var faLaptopHouse = {
prefix: 'fad',
iconName: 'laptop-house',
icon: [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]]
};
var faLifeRing = {
prefix: 'fad',
iconName: 'life-ring',
icon: [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]]
};
var faLightbulb = {
prefix: 'fad',
iconName: 'lightbulb',
icon: [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]]
};
var faListAlt = {
prefix: 'fad',
iconName: 'list-alt',
icon: [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]]
};
var faListUl = {
prefix: 'fad',
iconName: 'list-ul',
icon: [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]]
};
var faLockAlt = {
prefix: 'fad',
iconName: 'lock-alt',
icon: [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]]
};
var faMapMarkerAlt = {
prefix: 'fad',
iconName: 'map-marker-alt',
icon: [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]]
};
var faMoonStars = {
prefix: 'fad',
iconName: 'moon-stars',
icon: [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]]
};
var faNetworkWired = {
prefix: 'fad',
iconName: 'network-wired',
icon: [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]]
};
var faPlanetRinged = {
prefix: 'fad',
iconName: 'planet-ringed',
icon: [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]]
};
var faQuestionCircle = {
prefix: 'fad',
iconName: 'question-circle',
icon: [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]]
};
var faQuoteLeft = {
prefix: 'fad',
iconName: 'quote-left',
icon: [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]]
};
var faRandom = {
prefix: 'fad',
iconName: 'random',
icon: [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]]
};
var faRocket = {
prefix: 'fad',
iconName: 'rocket',
icon: [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]]
};
var faSearch = {
prefix: 'fad',
iconName: 'search',
icon: [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]]
};
var faServer = {
prefix: 'fad',
iconName: 'server',
icon: [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]]
};
var faSignOut = {
prefix: 'fad',
iconName: 'sign-out',
icon: [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]]
};
var faSirenOn = {
prefix: 'fad',
iconName: 'siren-on',
icon: [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]]
};
var faSmile = {
prefix: 'fad',
iconName: 'smile',
icon: [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]]
};
var faSnowman = {
prefix: 'fad',
iconName: 'snowman',
icon: [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]]
};
var faSun = {
prefix: 'fad',
iconName: 'sun',
icon: [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]]
};
var faTasks = {
prefix: 'fad',
iconName: 'tasks',
icon: [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]]
};
var faUniversity = {
prefix: 'fad',
iconName: 'university',
icon: [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]]
};
var faUser = {
prefix: 'fad',
iconName: 'user',
icon: [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]]
};
var faUserHardHat = {
prefix: 'fad',
iconName: 'user-hard-hat',
icon: [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]]
};
var faUserShield = {
prefix: 'fad',
iconName: 'user-shield',
icon: [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]]
};
var faUsers = {
prefix: 'fad',
iconName: 'users',
icon: [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
var _iconsCache = {
faAbacus: faAbacus,
faAlignSlash: faAlignSlash,
faAtomAlt: faAtomAlt,
faBadgeCheck: faBadgeCheck,
faBell: faBell,
faBooks: faBooks,
faBracketsCurly: faBracketsCurly,
faChartNetwork: faChartNetwork,
faChartScatter: faChartScatter,
faCheck: faCheck,
faCircle: faCircle,
faClouds: faClouds,
faCogs: faCogs,
faCommentDots: faCommentDots,
faConciergeBell: faConciergeBell,
faDotCircle: faDotCircle,
faEnvelope: faEnvelope,
faExchangeAlt: faExchangeAlt,
faFileAlt: faFileAlt,
faFileCode: faFileCode,
faGlobe: faGlobe,
faGlobeAfrica: faGlobeAfrica,
faGlobeAmericas: faGlobeAmericas,
faGlobeAsia: faGlobeAsia,
faGlobeEurope: faGlobeEurope,
faGraduationCap: faGraduationCap,
faHistory: faHistory,
faKey: faKey,
faKeySkeleton: faKeySkeleton,
faLaptop: faLaptop,
faLaptopCode: faLaptopCode,
faLaptopHouse: faLaptopHouse,
faLifeRing: faLifeRing,
faLightbulb: faLightbulb,
faListAlt: faListAlt,
faListUl: faListUl,
faLockAlt: faLockAlt,
faMapMarkerAlt: faMapMarkerAlt,
faMoonStars: faMoonStars,
faNetworkWired: faNetworkWired,
faPlanetRinged: faPlanetRinged,
faQuestionCircle: faQuestionCircle,
faQuoteLeft: faQuoteLeft,
faRandom: faRandom,
faRocket: faRocket,
faSearch: faSearch,
faServer: faServer,
faSignOut: faSignOut,
faSirenOn: faSirenOn,
faSmile: faSmile,
faSnowman: faSnowman,
faSun: faSun,
faTasks: faTasks,
faUniversity: faUniversity,
faUser: faUser,
faUserHardHat: faUserHardHat,
faUserShield: faUserShield,
faUsers: faUsers
};
export { _iconsCache as fad, prefix, faAbacus, faAlignSlash, faAtomAlt, faBadgeCheck, faBell, faBooks, faBracketsCurly, faChartNetwork, faChartScatter, faCheck, faCircle, faClouds, faCogs, faCommentDots, faConciergeBell, faDotCircle, faEnvelope, faExchangeAlt, faFileAlt, faFileCode, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGraduationCap, faHistory, faKey, faKeySkeleton, faLaptop, faLaptopCode, faLaptopHouse, faLifeRing, faLightbulb, faListAlt, faListUl, faLockAlt, faMapMarkerAlt, faMoonStars, faNetworkWired, faPlanetRinged, faQuestionCircle, faQuoteLeft, faRandom, faRocket, faSearch, faServer, faSignOut, faSirenOn, faSmile, faSnowman, faSun, faTasks, faUniversity, faUser, faUserHardHat, faUserShield, faUsers };
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['pro-duotone-svg-icons'] = {})));
}(this, (function (exports) { 'use strict';
var prefix = "fad";
var faAbacus = {
prefix: 'fad',
iconName: 'abacus',
icon: [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]]
};
var faAlignSlash = {
prefix: 'fad',
iconName: 'align-slash',
icon: [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]]
};
var faAtomAlt = {
prefix: 'fad',
iconName: 'atom-alt',
icon: [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]]
};
var faBadgeCheck = {
prefix: 'fad',
iconName: 'badge-check',
icon: [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]]
};
var faBell = {
prefix: 'fad',
iconName: 'bell',
icon: [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]]
};
var faBooks = {
prefix: 'fad',
iconName: 'books',
icon: [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]]
};
var faBracketsCurly = {
prefix: 'fad',
iconName: 'brackets-curly',
icon: [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]]
};
var faChartNetwork = {
prefix: 'fad',
iconName: 'chart-network',
icon: [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]]
};
var faChartScatter = {
prefix: 'fad',
iconName: 'chart-scatter',
icon: [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]]
};
var faCheck = {
prefix: 'fad',
iconName: 'check',
icon: [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]]
};
var faCircle = {
prefix: 'fad',
iconName: 'circle',
icon: [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]]
};
var faClouds = {
prefix: 'fad',
iconName: 'clouds',
icon: [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]]
};
var faCogs = {
prefix: 'fad',
iconName: 'cogs',
icon: [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]]
};
var faCommentDots = {
prefix: 'fad',
iconName: 'comment-dots',
icon: [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]]
};
var faConciergeBell = {
prefix: 'fad',
iconName: 'concierge-bell',
icon: [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]]
};
var faDotCircle = {
prefix: 'fad',
iconName: 'dot-circle',
icon: [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]]
};
var faEnvelope = {
prefix: 'fad',
iconName: 'envelope',
icon: [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]]
};
var faExchangeAlt = {
prefix: 'fad',
iconName: 'exchange-alt',
icon: [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]]
};
var faFileAlt = {
prefix: 'fad',
iconName: 'file-alt',
icon: [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]]
};
var faFileCode = {
prefix: 'fad',
iconName: 'file-code',
icon: [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]]
};
var faGlobe = {
prefix: 'fad',
iconName: 'globe',
icon: [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]]
};
var faGlobeAfrica = {
prefix: 'fad',
iconName: 'globe-africa',
icon: [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]]
};
var faGlobeAmericas = {
prefix: 'fad',
iconName: 'globe-americas',
icon: [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]]
};
var faGlobeAsia = {
prefix: 'fad',
iconName: 'globe-asia',
icon: [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]]
};
var faGlobeEurope = {
prefix: 'fad',
iconName: 'globe-europe',
icon: [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]]
};
var faGraduationCap = {
prefix: 'fad',
iconName: 'graduation-cap',
icon: [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]]
};
var faHistory = {
prefix: 'fad',
iconName: 'history',
icon: [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]]
};
var faKey = {
prefix: 'fad',
iconName: 'key',
icon: [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]]
};
var faKeySkeleton = {
prefix: 'fad',
iconName: 'key-skeleton',
icon: [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]]
};
var faLaptop = {
prefix: 'fad',
iconName: 'laptop',
icon: [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]]
};
var faLaptopCode = {
prefix: 'fad',
iconName: 'laptop-code',
icon: [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]]
};
var faLaptopHouse = {
prefix: 'fad',
iconName: 'laptop-house',
icon: [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]]
};
var faLifeRing = {
prefix: 'fad',
iconName: 'life-ring',
icon: [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]]
};
var faLightbulb = {
prefix: 'fad',
iconName: 'lightbulb',
icon: [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]]
};
var faListAlt = {
prefix: 'fad',
iconName: 'list-alt',
icon: [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]]
};
var faListUl = {
prefix: 'fad',
iconName: 'list-ul',
icon: [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]]
};
var faLockAlt = {
prefix: 'fad',
iconName: 'lock-alt',
icon: [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]]
};
var faMapMarkerAlt = {
prefix: 'fad',
iconName: 'map-marker-alt',
icon: [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]]
};
var faMoonStars = {
prefix: 'fad',
iconName: 'moon-stars',
icon: [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]]
};
var faNetworkWired = {
prefix: 'fad',
iconName: 'network-wired',
icon: [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]]
};
var faPlanetRinged = {
prefix: 'fad',
iconName: 'planet-ringed',
icon: [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]]
};
var faQuestionCircle = {
prefix: 'fad',
iconName: 'question-circle',
icon: [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]]
};
var faQuoteLeft = {
prefix: 'fad',
iconName: 'quote-left',
icon: [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]]
};
var faRandom = {
prefix: 'fad',
iconName: 'random',
icon: [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]]
};
var faRocket = {
prefix: 'fad',
iconName: 'rocket',
icon: [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]]
};
var faSearch = {
prefix: 'fad',
iconName: 'search',
icon: [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]]
};
var faServer = {
prefix: 'fad',
iconName: 'server',
icon: [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]]
};
var faSignOut = {
prefix: 'fad',
iconName: 'sign-out',
icon: [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]]
};
var faSirenOn = {
prefix: 'fad',
iconName: 'siren-on',
icon: [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]]
};
var faSmile = {
prefix: 'fad',
iconName: 'smile',
icon: [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]]
};
var faSnowman = {
prefix: 'fad',
iconName: 'snowman',
icon: [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]]
};
var faSun = {
prefix: 'fad',
iconName: 'sun',
icon: [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]]
};
var faTasks = {
prefix: 'fad',
iconName: 'tasks',
icon: [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]]
};
var faUniversity = {
prefix: 'fad',
iconName: 'university',
icon: [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]]
};
var faUser = {
prefix: 'fad',
iconName: 'user',
icon: [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]]
};
var faUserHardHat = {
prefix: 'fad',
iconName: 'user-hard-hat',
icon: [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]]
};
var faUserShield = {
prefix: 'fad',
iconName: 'user-shield',
icon: [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]]
};
var faUsers = {
prefix: 'fad',
iconName: 'users',
icon: [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]]
};
var _iconsCache = {
faAbacus: faAbacus,
faAlignSlash: faAlignSlash,
faAtomAlt: faAtomAlt,
faBadgeCheck: faBadgeCheck,
faBell: faBell,
faBooks: faBooks,
faBracketsCurly: faBracketsCurly,
faChartNetwork: faChartNetwork,
faChartScatter: faChartScatter,
faCheck: faCheck,
faCircle: faCircle,
faClouds: faClouds,
faCogs: faCogs,
faCommentDots: faCommentDots,
faConciergeBell: faConciergeBell,
faDotCircle: faDotCircle,
faEnvelope: faEnvelope,
faExchangeAlt: faExchangeAlt,
faFileAlt: faFileAlt,
faFileCode: faFileCode,
faGlobe: faGlobe,
faGlobeAfrica: faGlobeAfrica,
faGlobeAmericas: faGlobeAmericas,
faGlobeAsia: faGlobeAsia,
faGlobeEurope: faGlobeEurope,
faGraduationCap: faGraduationCap,
faHistory: faHistory,
faKey: faKey,
faKeySkeleton: faKeySkeleton,
faLaptop: faLaptop,
faLaptopCode: faLaptopCode,
faLaptopHouse: faLaptopHouse,
faLifeRing: faLifeRing,
faLightbulb: faLightbulb,
faListAlt: faListAlt,
faListUl: faListUl,
faLockAlt: faLockAlt,
faMapMarkerAlt: faMapMarkerAlt,
faMoonStars: faMoonStars,
faNetworkWired: faNetworkWired,
faPlanetRinged: faPlanetRinged,
faQuestionCircle: faQuestionCircle,
faQuoteLeft: faQuoteLeft,
faRandom: faRandom,
faRocket: faRocket,
faSearch: faSearch,
faServer: faServer,
faSignOut: faSignOut,
faSirenOn: faSirenOn,
faSmile: faSmile,
faSnowman: faSnowman,
faSun: faSun,
faTasks: faTasks,
faUniversity: faUniversity,
faUser: faUser,
faUserHardHat: faUserHardHat,
faUserShield: faUserShield,
faUsers: faUsers
};
exports.fad = _iconsCache;
exports.prefix = prefix;
exports.faAbacus = faAbacus;
exports.faAlignSlash = faAlignSlash;
exports.faAtomAlt = faAtomAlt;
exports.faBadgeCheck = faBadgeCheck;
exports.faBell = faBell;
exports.faBooks = faBooks;
exports.faBracketsCurly = faBracketsCurly;
exports.faChartNetwork = faChartNetwork;
exports.faChartScatter = faChartScatter;
exports.faCheck = faCheck;
exports.faCircle = faCircle;
exports.faClouds = faClouds;
exports.faCogs = faCogs;
exports.faCommentDots = faCommentDots;
exports.faConciergeBell = faConciergeBell;
exports.faDotCircle = faDotCircle;
exports.faEnvelope = faEnvelope;
exports.faExchangeAlt = faExchangeAlt;
exports.faFileAlt = faFileAlt;
exports.faFileCode = faFileCode;
exports.faGlobe = faGlobe;
exports.faGlobeAfrica = faGlobeAfrica;
exports.faGlobeAmericas = faGlobeAmericas;
exports.faGlobeAsia = faGlobeAsia;
exports.faGlobeEurope = faGlobeEurope;
exports.faGraduationCap = faGraduationCap;
exports.faHistory = faHistory;
exports.faKey = faKey;
exports.faKeySkeleton = faKeySkeleton;
exports.faLaptop = faLaptop;
exports.faLaptopCode = faLaptopCode;
exports.faLaptopHouse = faLaptopHouse;
exports.faLifeRing = faLifeRing;
exports.faLightbulb = faLightbulb;
exports.faListAlt = faListAlt;
exports.faListUl = faListUl;
exports.faLockAlt = faLockAlt;
exports.faMapMarkerAlt = faMapMarkerAlt;
exports.faMoonStars = faMoonStars;
exports.faNetworkWired = faNetworkWired;
exports.faPlanetRinged = faPlanetRinged;
exports.faQuestionCircle = faQuestionCircle;
exports.faQuoteLeft = faQuoteLeft;
exports.faRandom = faRandom;
exports.faRocket = faRocket;
exports.faSearch = faSearch;
exports.faServer = faServer;
exports.faSignOut = faSignOut;
exports.faSirenOn = faSirenOn;
exports.faSmile = faSmile;
exports.faSnowman = faSnowman;
exports.faSun = faSun;
exports.faTasks = faTasks;
exports.faUniversity = faUniversity;
exports.faUser = faUser;
exports.faUserHardHat = faUserHardHat;
exports.faUserShield = faUserShield;
exports.faUsers = faUsers;
Object.defineProperty(exports, '__esModule', { value: true });
})));
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
"version": "5.15.4",
"name": "@fortawesome/pro-duotone-svg-icons",
"main": "index.js",
"module": "index.es.js",
"jsnext:main": "index.es.js",
"license": "UNLICENSED",
"types": "./index.d.ts",
"sideEffects": false,
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/README.md
================================================
# @fortawesome/pro-regular-svg-icons - SVG with JavaScript version
> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
[](https://www.npmjs.com/package/@fortawesome/pro-regular-svg-icons)
## Installation
```
$ npm i --save @fortawesome/pro-regular-svg-icons
```
Or
```
$ yarn add @fortawesome/pro-regular-svg-icons
```
## Documentation
Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
## Issues and support
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/attribution.js
================================================
console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faCheckCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCheckCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faCheckCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'check-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f058';
var svgPathData = 'M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCheckCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faDesktop.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faDesktop: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faDesktop.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'desktop';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f108';
var svgPathData = 'M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faDesktop = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faEye.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faEye: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faEye.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'eye';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f06e';
var svgPathData = 'M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faEye = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faFileCode.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faFileCode: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faFileCode.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'file-code';
var width = 384;
var height = 512;
var ligatures = [];
var unicode = 'f1c9';
var svgPathData = 'M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faFileCode = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfo.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faInfo: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfo.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'info';
var width = 256;
var height = 512;
var ligatures = [];
var unicode = 'f129';
var svgPathData = 'M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faInfo = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfoCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faInfoCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfoCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'info-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f05a';
var svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faInfoCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faPlus.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faPlus: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faPlus.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'plus';
var width = 384;
var height = 512;
var ligatures = [];
var unicode = 'f067';
var svgPathData = 'M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faPlus = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faQuestionCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faQuestionCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faQuestionCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'question-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f059';
var svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faQuestionCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faRocket.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRocket: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faRocket.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'rocket';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f135';
var svgPathData = 'M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRocket = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSave.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSave: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSave.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'save';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f0c7';
var svgPathData = 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSave = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSlash.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSlash: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSlash.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'slash';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f715';
var svgPathData = 'M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSlash = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faTimes.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faTimes: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faTimes.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'times';
var width = 320;
var height = 512;
var ligatures = [];
var unicode = 'f00d';
var svgPathData = 'M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faTimes = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndo.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUndo: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndo.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'undo';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0e2';
var svgPathData = 'M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUndo = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndoAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUndoAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndoAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'undo-alt';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f2ea';
var svgPathData = 'M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUndoAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUser.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUser: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUser.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'user';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f007';
var svgPathData = 'M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUser = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUserFriends.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUserFriends: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUserFriends.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'user-friends';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f500';
var svgPathData = 'M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUserFriends = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUsers.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUsers: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUsers.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'far';
var iconName = 'users';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f0c0';
var svgPathData = 'M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUsers = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.d.ts
================================================
export const faCheckCircle: IconDefinition;
export const faDesktop: IconDefinition;
export const faEye: IconDefinition;
export const faFileCode: IconDefinition;
export const faInfo: IconDefinition;
export const faInfoCircle: IconDefinition;
export const faPlus: IconDefinition;
export const faQuestionCircle: IconDefinition;
export const faRocket: IconDefinition;
export const faSave: IconDefinition;
export const faSlash: IconDefinition;
export const faTimes: IconDefinition;
export const faUndo: IconDefinition;
export const faUndoAlt: IconDefinition;
export const faUser: IconDefinition;
export const faUserFriends: IconDefinition;
export const faUsers: IconDefinition;
import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export const prefix: IconPrefix;
export const far: IconPack;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.es.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
var prefix = "far";
var faCheckCircle = {
prefix: 'far',
iconName: 'check-circle',
icon: [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]
};
var faDesktop = {
prefix: 'far',
iconName: 'desktop',
icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"]
};
var faEye = {
prefix: 'far',
iconName: 'eye',
icon: [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"]
};
var faFileCode = {
prefix: 'far',
iconName: 'file-code',
icon: [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"]
};
var faInfo = {
prefix: 'far',
iconName: 'info',
icon: [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"]
};
var faInfoCircle = {
prefix: 'far',
iconName: 'info-circle',
icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]
};
var faPlus = {
prefix: 'far',
iconName: 'plus',
icon: [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
};
var faQuestionCircle = {
prefix: 'far',
iconName: 'question-circle',
icon: [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]
};
var faRocket = {
prefix: 'far',
iconName: 'rocket',
icon: [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"]
};
var faSave = {
prefix: 'far',
iconName: 'save',
icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"]
};
var faSlash = {
prefix: 'far',
iconName: 'slash',
icon: [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"]
};
var faTimes = {
prefix: 'far',
iconName: 'times',
icon: [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"]
};
var faUndo = {
prefix: 'far',
iconName: 'undo',
icon: [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"]
};
var faUndoAlt = {
prefix: 'far',
iconName: 'undo-alt',
icon: [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"]
};
var faUser = {
prefix: 'far',
iconName: 'user',
icon: [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"]
};
var faUserFriends = {
prefix: 'far',
iconName: 'user-friends',
icon: [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"]
};
var faUsers = {
prefix: 'far',
iconName: 'users',
icon: [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
var _iconsCache = {
faCheckCircle: faCheckCircle,
faDesktop: faDesktop,
faEye: faEye,
faFileCode: faFileCode,
faInfo: faInfo,
faInfoCircle: faInfoCircle,
faPlus: faPlus,
faQuestionCircle: faQuestionCircle,
faRocket: faRocket,
faSave: faSave,
faSlash: faSlash,
faTimes: faTimes,
faUndo: faUndo,
faUndoAlt: faUndoAlt,
faUser: faUser,
faUserFriends: faUserFriends,
faUsers: faUsers
};
export { _iconsCache as far, prefix, faCheckCircle, faDesktop, faEye, faFileCode, faInfo, faInfoCircle, faPlus, faQuestionCircle, faRocket, faSave, faSlash, faTimes, faUndo, faUndoAlt, faUser, faUserFriends, faUsers };
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['pro-regular-svg-icons'] = {})));
}(this, (function (exports) { 'use strict';
var prefix = "far";
var faCheckCircle = {
prefix: 'far',
iconName: 'check-circle',
icon: [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]
};
var faDesktop = {
prefix: 'far',
iconName: 'desktop',
icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"]
};
var faEye = {
prefix: 'far',
iconName: 'eye',
icon: [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"]
};
var faFileCode = {
prefix: 'far',
iconName: 'file-code',
icon: [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"]
};
var faInfo = {
prefix: 'far',
iconName: 'info',
icon: [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"]
};
var faInfoCircle = {
prefix: 'far',
iconName: 'info-circle',
icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]
};
var faPlus = {
prefix: 'far',
iconName: 'plus',
icon: [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
};
var faQuestionCircle = {
prefix: 'far',
iconName: 'question-circle',
icon: [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]
};
var faRocket = {
prefix: 'far',
iconName: 'rocket',
icon: [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"]
};
var faSave = {
prefix: 'far',
iconName: 'save',
icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"]
};
var faSlash = {
prefix: 'far',
iconName: 'slash',
icon: [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"]
};
var faTimes = {
prefix: 'far',
iconName: 'times',
icon: [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"]
};
var faUndo = {
prefix: 'far',
iconName: 'undo',
icon: [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"]
};
var faUndoAlt = {
prefix: 'far',
iconName: 'undo-alt',
icon: [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"]
};
var faUser = {
prefix: 'far',
iconName: 'user',
icon: [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"]
};
var faUserFriends = {
prefix: 'far',
iconName: 'user-friends',
icon: [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"]
};
var faUsers = {
prefix: 'far',
iconName: 'users',
icon: [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"]
};
var _iconsCache = {
faCheckCircle: faCheckCircle,
faDesktop: faDesktop,
faEye: faEye,
faFileCode: faFileCode,
faInfo: faInfo,
faInfoCircle: faInfoCircle,
faPlus: faPlus,
faQuestionCircle: faQuestionCircle,
faRocket: faRocket,
faSave: faSave,
faSlash: faSlash,
faTimes: faTimes,
faUndo: faUndo,
faUndoAlt: faUndoAlt,
faUser: faUser,
faUserFriends: faUserFriends,
faUsers: faUsers
};
exports.far = _iconsCache;
exports.prefix = prefix;
exports.faCheckCircle = faCheckCircle;
exports.faDesktop = faDesktop;
exports.faEye = faEye;
exports.faFileCode = faFileCode;
exports.faInfo = faInfo;
exports.faInfoCircle = faInfoCircle;
exports.faPlus = faPlus;
exports.faQuestionCircle = faQuestionCircle;
exports.faRocket = faRocket;
exports.faSave = faSave;
exports.faSlash = faSlash;
exports.faTimes = faTimes;
exports.faUndo = faUndo;
exports.faUndoAlt = faUndoAlt;
exports.faUser = faUser;
exports.faUserFriends = faUserFriends;
exports.faUsers = faUsers;
Object.defineProperty(exports, '__esModule', { value: true });
})));
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
"version": "5.15.4",
"name": "@fortawesome/pro-regular-svg-icons",
"main": "index.js",
"module": "index.es.js",
"jsnext:main": "index.es.js",
"license": "UNLICENSED",
"types": "./index.d.ts",
"sideEffects": false,
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/LICENSE.txt
================================================
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/README.md
================================================
# @fortawesome/pro-solid-svg-icons - SVG with JavaScript version
> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
[](https://www.npmjs.com/package/@fortawesome/pro-solid-svg-icons)
## Installation
```
$ npm i --save @fortawesome/pro-solid-svg-icons
```
Or
```
$ yarn add @fortawesome/pro-solid-svg-icons
```
## Documentation
Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
## Issues and support
Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/attribution.js
================================================
console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlarmExclamation.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAlarmExclamation: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlarmExclamation.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'alarm-exclamation';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f843';
var svgPathData = 'M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAlarmExclamation = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlignLeft.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faAlignLeft: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlignLeft.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'align-left';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f036';
var svgPathData = 'M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faAlignLeft = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faBookDead.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faBookDead: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faBookDead.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'book-dead';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f6b7';
var svgPathData = 'M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faBookDead = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCheck.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCheck: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCheck.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'check';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f00c';
var svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCheck = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f111';
var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCloud.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCloud: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCloud.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'cloud';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f0c2';
var svgPathData = 'M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCloud = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCreditCard.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faCreditCard: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCreditCard.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'credit-card';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f09d';
var svgPathData = 'M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faCreditCard = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faDesktop.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faDesktop: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faDesktop.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'desktop';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f108';
var svgPathData = 'M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faDesktop = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEnvelope.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faEnvelope: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEnvelope.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'envelope';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0e0';
var svgPathData = 'M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faEnvelope = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEye.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faEye: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEye.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'eye';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f06e';
var svgPathData = 'M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faEye = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faFingerprint.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faFingerprint: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faFingerprint.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'fingerprint';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f577';
var svgPathData = 'M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faFingerprint = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHistory.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faHistory: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHistory.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'history';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f1da';
var svgPathData = 'M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faHistory = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHome.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faHome: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHome.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'home';
var width = 576;
var height = 512;
var ligatures = [];
var unicode = 'f015';
var svgPathData = 'M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faHome = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faPlus.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faPlus: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faPlus.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'plus';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f067';
var svgPathData = 'M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faPlus = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRobot.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRobot: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRobot.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'robot';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f544';
var svgPathData = 'M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRobot = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRocket.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faRocket: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRocket.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'rocket';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f135';
var svgPathData = 'M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faRocket = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSave.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSave: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSave.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'save';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f0c7';
var svgPathData = 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSave = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSlash.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSlash: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSlash.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'slash';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f715';
var svgPathData = 'M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSlash = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSpinnerThird.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSpinnerThird: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSpinnerThird.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'spinner-third';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f3f4';
var svgPathData = 'M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSpinnerThird = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSquareFull.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faSquareFull: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSquareFull.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'square-full';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f45c';
var svgPathData = 'M512 512H0V0h512v512z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faSquareFull = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimes.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faTimes: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimes.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'times';
var width = 352;
var height = 512;
var ligatures = [];
var unicode = 'f00d';
var svgPathData = 'M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faTimes = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimesCircle.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faTimesCircle: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimesCircle.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'times-circle';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f057';
var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faTimesCircle = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndo.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUndo: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndo.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'undo';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f0e2';
var svgPathData = 'M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUndo = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndoAlt.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUndoAlt: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndoAlt.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'undo-alt';
var width = 512;
var height = 512;
var ligatures = [];
var unicode = 'f2ea';
var svgPathData = 'M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUndoAlt = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUser.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUser: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUser.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'user';
var width = 448;
var height = 512;
var ligatures = [];
var unicode = 'f007';
var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUser = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUsers.d.ts
================================================
import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
export const definition: IconDefinition;
export const faUsers: IconDefinition;
export const prefix: IconPrefix;
export const iconName: IconName;
export const width: number;
export const height: number;
export const ligatures: string[];
export const unicode: string;
export const svgPathData: string;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUsers.js
================================================
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'fas';
var iconName = 'users';
var width = 640;
var height = 512;
var ligatures = [];
var unicode = 'f0c0';
var svgPathData = 'M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z';
exports.definition = {
prefix: prefix,
iconName: iconName,
icon: [
width,
height,
ligatures,
unicode,
svgPathData
]};
exports.faUsers = exports.definition;
exports.prefix = prefix;
exports.iconName = iconName;
exports.width = width;
exports.height = height;
exports.ligatures = ligatures;
exports.unicode = unicode;
exports.svgPathData = svgPathData;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.d.ts
================================================
export const faAlarmExclamation: IconDefinition;
export const faAlignLeft: IconDefinition;
export const faBookDead: IconDefinition;
export const faCheck: IconDefinition;
export const faCircle: IconDefinition;
export const faCloud: IconDefinition;
export const faCreditCard: IconDefinition;
export const faDesktop: IconDefinition;
export const faEnvelope: IconDefinition;
export const faEye: IconDefinition;
export const faFingerprint: IconDefinition;
export const faHistory: IconDefinition;
export const faHome: IconDefinition;
export const faPlus: IconDefinition;
export const faRobot: IconDefinition;
export const faRocket: IconDefinition;
export const faSave: IconDefinition;
export const faSlash: IconDefinition;
export const faSpinnerThird: IconDefinition;
export const faSquareFull: IconDefinition;
export const faTimes: IconDefinition;
export const faTimesCircle: IconDefinition;
export const faUndo: IconDefinition;
export const faUndoAlt: IconDefinition;
export const faUser: IconDefinition;
export const faUsers: IconDefinition;
import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
export const prefix: IconPrefix;
export const fas: IconPack;
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.es.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
var prefix = "fas";
var faAlarmExclamation = {
prefix: 'fas',
iconName: 'alarm-exclamation',
icon: [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"]
};
var faAlignLeft = {
prefix: 'fas',
iconName: 'align-left',
icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
};
var faBookDead = {
prefix: 'fas',
iconName: 'book-dead',
icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]
};
var faCheck = {
prefix: 'fas',
iconName: 'check',
icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]
};
var faCircle = {
prefix: 'fas',
iconName: 'circle',
icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]
};
var faCloud = {
prefix: 'fas',
iconName: 'cloud',
icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]
};
var faCreditCard = {
prefix: 'fas',
iconName: 'credit-card',
icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]
};
var faDesktop = {
prefix: 'fas',
iconName: 'desktop',
icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]
};
var faEnvelope = {
prefix: 'fas',
iconName: 'envelope',
icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]
};
var faEye = {
prefix: 'fas',
iconName: 'eye',
icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]
};
var faFingerprint = {
prefix: 'fas',
iconName: 'fingerprint',
icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]
};
var faHistory = {
prefix: 'fas',
iconName: 'history',
icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]
};
var faHome = {
prefix: 'fas',
iconName: 'home',
icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]
};
var faPlus = {
prefix: 'fas',
iconName: 'plus',
icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
};
var faRobot = {
prefix: 'fas',
iconName: 'robot',
icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]
};
var faRocket = {
prefix: 'fas',
iconName: 'rocket',
icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]
};
var faSave = {
prefix: 'fas',
iconName: 'save',
icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]
};
var faSlash = {
prefix: 'fas',
iconName: 'slash',
icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]
};
var faSpinnerThird = {
prefix: 'fas',
iconName: 'spinner-third',
icon: [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"]
};
var faSquareFull = {
prefix: 'fas',
iconName: 'square-full',
icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"]
};
var faTimes = {
prefix: 'fas',
iconName: 'times',
icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]
};
var faTimesCircle = {
prefix: 'fas',
iconName: 'times-circle',
icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]
};
var faUndo = {
prefix: 'fas',
iconName: 'undo',
icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]
};
var faUndoAlt = {
prefix: 'fas',
iconName: 'undo-alt',
icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]
};
var faUser = {
prefix: 'fas',
iconName: 'user',
icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
};
var faUsers = {
prefix: 'fas',
iconName: 'users',
icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
var _iconsCache = {
faAlarmExclamation: faAlarmExclamation,
faAlignLeft: faAlignLeft,
faBookDead: faBookDead,
faCheck: faCheck,
faCircle: faCircle,
faCloud: faCloud,
faCreditCard: faCreditCard,
faDesktop: faDesktop,
faEnvelope: faEnvelope,
faEye: faEye,
faFingerprint: faFingerprint,
faHistory: faHistory,
faHome: faHome,
faPlus: faPlus,
faRobot: faRobot,
faRocket: faRocket,
faSave: faSave,
faSlash: faSlash,
faSpinnerThird: faSpinnerThird,
faSquareFull: faSquareFull,
faTimes: faTimes,
faTimesCircle: faTimesCircle,
faUndo: faUndo,
faUndoAlt: faUndoAlt,
faUser: faUser,
faUsers: faUsers
};
export { _iconsCache as fas, prefix, faAlarmExclamation, faAlignLeft, faBookDead, faCheck, faCircle, faCloud, faCreditCard, faDesktop, faEnvelope, faEye, faFingerprint, faHistory, faHome, faPlus, faRobot, faRocket, faSave, faSlash, faSpinnerThird, faSquareFull, faTimes, faTimesCircle, faUndo, faUndoAlt, faUser, faUsers };
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.js
================================================
/*!
* Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['pro-solid-svg-icons'] = {})));
}(this, (function (exports) { 'use strict';
var prefix = "fas";
var faAlarmExclamation = {
prefix: 'fas',
iconName: 'alarm-exclamation',
icon: [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"]
};
var faAlignLeft = {
prefix: 'fas',
iconName: 'align-left',
icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
};
var faBookDead = {
prefix: 'fas',
iconName: 'book-dead',
icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]
};
var faCheck = {
prefix: 'fas',
iconName: 'check',
icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]
};
var faCircle = {
prefix: 'fas',
iconName: 'circle',
icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]
};
var faCloud = {
prefix: 'fas',
iconName: 'cloud',
icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]
};
var faCreditCard = {
prefix: 'fas',
iconName: 'credit-card',
icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]
};
var faDesktop = {
prefix: 'fas',
iconName: 'desktop',
icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]
};
var faEnvelope = {
prefix: 'fas',
iconName: 'envelope',
icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]
};
var faEye = {
prefix: 'fas',
iconName: 'eye',
icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]
};
var faFingerprint = {
prefix: 'fas',
iconName: 'fingerprint',
icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]
};
var faHistory = {
prefix: 'fas',
iconName: 'history',
icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]
};
var faHome = {
prefix: 'fas',
iconName: 'home',
icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]
};
var faPlus = {
prefix: 'fas',
iconName: 'plus',
icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
};
var faRobot = {
prefix: 'fas',
iconName: 'robot',
icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]
};
var faRocket = {
prefix: 'fas',
iconName: 'rocket',
icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]
};
var faSave = {
prefix: 'fas',
iconName: 'save',
icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]
};
var faSlash = {
prefix: 'fas',
iconName: 'slash',
icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]
};
var faSpinnerThird = {
prefix: 'fas',
iconName: 'spinner-third',
icon: [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"]
};
var faSquareFull = {
prefix: 'fas',
iconName: 'square-full',
icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"]
};
var faTimes = {
prefix: 'fas',
iconName: 'times',
icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]
};
var faTimesCircle = {
prefix: 'fas',
iconName: 'times-circle',
icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]
};
var faUndo = {
prefix: 'fas',
iconName: 'undo',
icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]
};
var faUndoAlt = {
prefix: 'fas',
iconName: 'undo-alt',
icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]
};
var faUser = {
prefix: 'fas',
iconName: 'user',
icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
};
var faUsers = {
prefix: 'fas',
iconName: 'users',
icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
};
var _iconsCache = {
faAlarmExclamation: faAlarmExclamation,
faAlignLeft: faAlignLeft,
faBookDead: faBookDead,
faCheck: faCheck,
faCircle: faCircle,
faCloud: faCloud,
faCreditCard: faCreditCard,
faDesktop: faDesktop,
faEnvelope: faEnvelope,
faEye: faEye,
faFingerprint: faFingerprint,
faHistory: faHistory,
faHome: faHome,
faPlus: faPlus,
faRobot: faRobot,
faRocket: faRocket,
faSave: faSave,
faSlash: faSlash,
faSpinnerThird: faSpinnerThird,
faSquareFull: faSquareFull,
faTimes: faTimes,
faTimesCircle: faTimesCircle,
faUndo: faUndo,
faUndoAlt: faUndoAlt,
faUser: faUser,
faUsers: faUsers
};
exports.fas = _iconsCache;
exports.prefix = prefix;
exports.faAlarmExclamation = faAlarmExclamation;
exports.faAlignLeft = faAlignLeft;
exports.faBookDead = faBookDead;
exports.faCheck = faCheck;
exports.faCircle = faCircle;
exports.faCloud = faCloud;
exports.faCreditCard = faCreditCard;
exports.faDesktop = faDesktop;
exports.faEnvelope = faEnvelope;
exports.faEye = faEye;
exports.faFingerprint = faFingerprint;
exports.faHistory = faHistory;
exports.faHome = faHome;
exports.faPlus = faPlus;
exports.faRobot = faRobot;
exports.faRocket = faRocket;
exports.faSave = faSave;
exports.faSlash = faSlash;
exports.faSpinnerThird = faSpinnerThird;
exports.faSquareFull = faSquareFull;
exports.faTimes = faTimes;
exports.faTimesCircle = faTimesCircle;
exports.faUndo = faUndo;
exports.faUndoAlt = faUndoAlt;
exports.faUser = faUser;
exports.faUsers = faUsers;
Object.defineProperty(exports, '__esModule', { value: true });
})));
================================================
FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/package.json
================================================
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
"version": "5.15.4",
"name": "@fortawesome/pro-solid-svg-icons",
"main": "index.js",
"module": "index.es.js",
"jsnext:main": "index.es.js",
"license": "UNLICENSED",
"types": "./index.d.ts",
"sideEffects": false,
"scripts": {
"postinstall": "node attribution.js"
}
}
================================================
FILE: public/fonts/font-awesome/less/_animated.less
================================================
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
================================================
FILE: public/fonts/font-awesome/less/_bordered-pulled.less
================================================
// Bordered & Pulled
// -------------------------
.@{fa-css-prefix}-border {
border-radius: .1em;
border: solid .08em @fa-border-color;
padding: .2em .25em .15em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}
================================================
FILE: public/fonts/font-awesome/less/_core.less
================================================
// Base Class Definition
// -------------------------
.@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
================================================
FILE: public/fonts/font-awesome/less/_fixed-width.less
================================================
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: (20em / 16);
}
================================================
FILE: public/fonts/font-awesome/less/_icons.less
================================================
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.@{fa-css-prefix}-abacus:before { content: @fa-var-abacus; }
.@{fa-css-prefix}-alarm-exclamation:before { content: @fa-var-alarm-exclamation; }
.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
.@{fa-css-prefix}-align-slash:before { content: @fa-var-align-slash; }
.@{fa-css-prefix}-atom-alt:before { content: @fa-var-atom-alt; }
.@{fa-css-prefix}-aws:before { content: @fa-var-aws; }
.@{fa-css-prefix}-badge-check:before { content: @fa-var-badge-check; }
.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
.@{fa-css-prefix}-book-dead:before { content: @fa-var-book-dead; }
.@{fa-css-prefix}-books:before { content: @fa-var-books; }
.@{fa-css-prefix}-brackets-curly:before { content: @fa-var-brackets-curly; }
.@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; }
.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
.@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; }
.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
.@{fa-css-prefix}-chart-network:before { content: @fa-var-chart-network; }
.@{fa-css-prefix}-chart-scatter:before { content: @fa-var-chart-scatter; }
.@{fa-css-prefix}-check:before { content: @fa-var-check; }
.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
.@{fa-css-prefix}-clouds:before { content: @fa-var-clouds; }
.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
.@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; }
.@{fa-css-prefix}-concierge-bell:before { content: @fa-var-concierge-bell; }
.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
.@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; }
.@{fa-css-prefix}-docker:before { content: @fa-var-docker; }
.@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; }
.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
.@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; }
.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
.@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; }
.@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; }
.@{fa-css-prefix}-fingerprint:before { content: @fa-var-fingerprint; }
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
.@{fa-css-prefix}-globe-africa:before { content: @fa-var-globe-africa; }
.@{fa-css-prefix}-globe-americas:before { content: @fa-var-globe-americas; }
.@{fa-css-prefix}-globe-asia:before { content: @fa-var-globe-asia; }
.@{fa-css-prefix}-globe-europe:before { content: @fa-var-globe-europe; }
.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
.@{fa-css-prefix}-history:before { content: @fa-var-history; }
.@{fa-css-prefix}-home:before { content: @fa-var-home; }
.@{fa-css-prefix}-info:before { content: @fa-var-info; }
.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
.@{fa-css-prefix}-key:before { content: @fa-var-key; }
.@{fa-css-prefix}-key-skeleton:before { content: @fa-var-key-skeleton; }
.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
.@{fa-css-prefix}-laptop-code:before { content: @fa-var-laptop-code; }
.@{fa-css-prefix}-laptop-house:before { content: @fa-var-laptop-house; }
.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
.@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; }
.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
.@{fa-css-prefix}-lock-alt:before { content: @fa-var-lock-alt; }
.@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; }
.@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; }
.@{fa-css-prefix}-moon-stars:before { content: @fa-var-moon-stars; }
.@{fa-css-prefix}-network-wired:before { content: @fa-var-network-wired; }
.@{fa-css-prefix}-planet-ringed:before { content: @fa-var-planet-ringed; }
.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
.@{fa-css-prefix}-random:before { content: @fa-var-random; }
.@{fa-css-prefix}-rev:before { content: @fa-var-rev; }
.@{fa-css-prefix}-robot:before { content: @fa-var-robot; }
.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
.@{fa-css-prefix}-save:before { content: @fa-var-save; }
.@{fa-css-prefix}-search:before { content: @fa-var-search; }
.@{fa-css-prefix}-server:before { content: @fa-var-server; }
.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
.@{fa-css-prefix}-siren-on:before { content: @fa-var-siren-on; }
.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
.@{fa-css-prefix}-slash:before { content: @fa-var-slash; }
.@{fa-css-prefix}-smile:before { content: @fa-var-smile; }
.@{fa-css-prefix}-snowman:before { content: @fa-var-snowman; }
.@{fa-css-prefix}-spinner-third:before { content: @fa-var-spinner-third; }
.@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; }
.@{fa-css-prefix}-sun:before { content: @fa-var-sun; }
.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
.@{fa-css-prefix}-times:before { content: @fa-var-times; }
.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
.@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; }
.@{fa-css-prefix}-university:before { content: @fa-var-university; }
.@{fa-css-prefix}-user:before { content: @fa-var-user; }
.@{fa-css-prefix}-user-friends:before { content: @fa-var-user-friends; }
.@{fa-css-prefix}-user-hard-hat:before { content: @fa-var-user-hard-hat; }
.@{fa-css-prefix}-user-shield:before { content: @fa-var-user-shield; }
.@{fa-css-prefix}-users:before { content: @fa-var-users; }
================================================
FILE: public/fonts/font-awesome/less/_larger.less
================================================
// Icon Sizes
// -------------------------
.larger(@factor) when (@factor > 0) {
.larger((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.@{fa-css-prefix}-xs {
font-size: .75em;
}
.@{fa-css-prefix}-sm {
font-size: .875em;
}
.larger(10);
================================================
FILE: public/fonts/font-awesome/less/_list.less
================================================
// List Icons
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: (@fa-li-width * 5/4);
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: -@fa-li-width;
position: absolute;
text-align: center;
width: @fa-li-width;
line-height: inherit;
}
================================================
FILE: public/fonts/font-awesome/less/_mixins.less
================================================
// Mixins
// --------------------------
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
.fa-icon-rotate(@degrees, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
transform: scale(@horiz, @vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
.sr-only() {
border: 0;
clip: rect(0,0,0,0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
.sr-only-focusable() {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}
================================================
FILE: public/fonts/font-awesome/less/_rotated-flipped.less
================================================
// Rotated & Flipped Icons
// -------------------------
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
.@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.@{fa-css-prefix}-rotate-90,
.@{fa-css-prefix}-rotate-180,
.@{fa-css-prefix}-rotate-270,
.@{fa-css-prefix}-flip-horizontal,
.@{fa-css-prefix}-flip-vertical,
.@{fa-css-prefix}-flip-both {
filter: none;
}
}
================================================
FILE: public/fonts/font-awesome/less/_screen-reader.less
================================================
// Screen Readers
// -------------------------
.sr-only { .sr-only(); }
.sr-only-focusable { .sr-only-focusable(); }
================================================
FILE: public/fonts/font-awesome/less/_stacked.less
================================================
// Stacked Icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: 2em;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
================================================
FILE: public/fonts/font-awesome/less/_variables.less
================================================
// Variables
// --------------------------
@fa-font-path: "../webfonts";
@fa-font-size-base: 16px;
@fa-font-display: block;
@fa-line-height-base: 1;
@fa-css-prefix: fa;
@fa-version: "5.15.4";
@fa-border-color: #eee;
@fa-inverse: #fff;
@fa-li-width: 2em;
@fa-primary-opacity: 1;
@fa-secondary-opacity: .4;
@fa-var-abacus: "\f640";
@fa-var-alarm-exclamation: "\f843";
@fa-var-align-left: "\f036";
@fa-var-align-slash: "\f846";
@fa-var-atom-alt: "\f5d3";
@fa-var-aws: "\f375";
@fa-var-badge-check: "\f336";
@fa-var-bell: "\f0f3";
@fa-var-book-dead: "\f6b7";
@fa-var-books: "\f5db";
@fa-var-brackets-curly: "\f7ea";
@fa-var-cc-amazon-pay: "\f42d";
@fa-var-cc-amex: "\f1f3";
@fa-var-cc-apple-pay: "\f416";
@fa-var-cc-diners-club: "\f24c";
@fa-var-cc-discover: "\f1f2";
@fa-var-cc-jcb: "\f24b";
@fa-var-cc-mastercard: "\f1f1";
@fa-var-cc-paypal: "\f1f4";
@fa-var-cc-stripe: "\f1f5";
@fa-var-cc-visa: "\f1f0";
@fa-var-chart-network: "\f78a";
@fa-var-chart-scatter: "\f7ee";
@fa-var-check: "\f00c";
@fa-var-check-circle: "\f058";
@fa-var-circle: "\f111";
@fa-var-cloud: "\f0c2";
@fa-var-clouds: "\f744";
@fa-var-cogs: "\f085";
@fa-var-comment-dots: "\f4ad";
@fa-var-concierge-bell: "\f562";
@fa-var-credit-card: "\f09d";
@fa-var-desktop: "\f108";
@fa-var-discourse: "\f393";
@fa-var-docker: "\f395";
@fa-var-dot-circle: "\f192";
@fa-var-envelope: "\f0e0";
@fa-var-exchange-alt: "\f362";
@fa-var-eye: "\f06e";
@fa-var-file-alt: "\f15c";
@fa-var-file-code: "\f1c9";
@fa-var-fingerprint: "\f577";
@fa-var-github: "\f09b";
@fa-var-globe: "\f0ac";
@fa-var-globe-africa: "\f57c";
@fa-var-globe-americas: "\f57d";
@fa-var-globe-asia: "\f57e";
@fa-var-globe-europe: "\f7a2";
@fa-var-graduation-cap: "\f19d";
@fa-var-history: "\f1da";
@fa-var-home: "\f015";
@fa-var-info: "\f129";
@fa-var-info-circle: "\f05a";
@fa-var-instagram: "\f16d";
@fa-var-key: "\f084";
@fa-var-key-skeleton: "\f6f3";
@fa-var-laptop: "\f109";
@fa-var-laptop-code: "\f5fc";
@fa-var-laptop-house: "\e066";
@fa-var-life-ring: "\f1cd";
@fa-var-lightbulb: "\f0eb";
@fa-var-list-alt: "\f022";
@fa-var-list-ul: "\f0ca";
@fa-var-lock-alt: "\f30d";
@fa-var-map-marker-alt: "\f3c5";
@fa-var-microsoft: "\f3ca";
@fa-var-moon-stars: "\f755";
@fa-var-network-wired: "\f6ff";
@fa-var-planet-ringed: "\e020";
@fa-var-plus: "\f067";
@fa-var-question-circle: "\f059";
@fa-var-quote-left: "\f10d";
@fa-var-random: "\f074";
@fa-var-rev: "\f5b2";
@fa-var-robot: "\f544";
@fa-var-rocket: "\f135";
@fa-var-save: "\f0c7";
@fa-var-search: "\f002";
@fa-var-server: "\f233";
@fa-var-sign-out: "\f08b";
@fa-var-siren-on: "\e02e";
@fa-var-slack: "\f198";
@fa-var-slash: "\f715";
@fa-var-smile: "\f118";
@fa-var-snowman: "\f7d0";
@fa-var-spinner-third: "\f3f4";
@fa-var-square-full: "\f45c";
@fa-var-sun: "\f185";
@fa-var-tasks: "\f0ae";
@fa-var-times: "\f00d";
@fa-var-times-circle: "\f057";
@fa-var-twitter: "\f099";
@fa-var-undo: "\f0e2";
@fa-var-undo-alt: "\f2ea";
@fa-var-university: "\f19c";
@fa-var-user: "\f007";
@fa-var-user-friends: "\f500";
@fa-var-user-hard-hat: "\f82c";
@fa-var-user-shield: "\f505";
@fa-var-users: "\f0c0";
================================================
FILE: public/fonts/font-awesome/less/brands.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.eot');
src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/less/duotone.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-duotone-900.eot');
src: url('@{fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-duotone-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-duotone-900.woff') format('woff'),
url('@{fa-font-path}/fa-duotone-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg');
}
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900;
}
.fad:before {
position: absolute;
color: ~'var(--@{fa-css-prefix}-primary-color, inherit)';
opacity: @fa-primary-opacity;
opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})';
}
.fad:after {
color: ~'var(--@{fa-css-prefix}-secondary-color, inherit)';
opacity: @fa-secondary-opacity;
opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})';
}
.@{fa-css-prefix}-swap-opacity .fad:before,
.fad.@{fa-css-prefix}-swap-opacity:before {
opacity: @fa-secondary-opacity;
opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})';
}
.@{fa-css-prefix}-swap-opacity .fad:after,
.fad.@{fa-css-prefix}-swap-opacity:after {
opacity: @fa-primary-opacity;
opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})';
}
.fad.@{fa-css-prefix}-inverse {
color: @fa-inverse;
}
.fad.@{fa-css-prefix}-stack-1x, .fad.@{fa-css-prefix}-stack-2x {
position: absolute;
}
.fad.@{fa-css-prefix}-stack-1x:before,
.fad.@{fa-css-prefix}-stack-2x:before,
.fad.@{fa-css-prefix}-fw:before {
left: 50%;
transform: translateX(-50%);
}
.fad.@{fa-css-prefix}-abacus:after { content: "\10f640"; }
.fad.@{fa-css-prefix}-align-slash:after { content: "\10f846"; }
.fad.@{fa-css-prefix}-atom-alt:after { content: "\10f5d3"; }
.fad.@{fa-css-prefix}-badge-check:after { content: "\10f336"; }
.fad.@{fa-css-prefix}-bell:after { content: "\10f0f3"; }
.fad.@{fa-css-prefix}-books:after { content: "\10f5db"; }
.fad.@{fa-css-prefix}-brackets-curly:after { content: "\10f7ea"; }
.fad.@{fa-css-prefix}-chart-network:after { content: "\10f78a"; }
.fad.@{fa-css-prefix}-chart-scatter:after { content: "\10f7ee"; }
.fad.@{fa-css-prefix}-check:after { content: "\10f00c"; }
.fad.@{fa-css-prefix}-circle:after { content: "\10f111"; }
.fad.@{fa-css-prefix}-clouds:after { content: "\10f744"; }
.fad.@{fa-css-prefix}-cogs:after { content: "\10f085"; }
.fad.@{fa-css-prefix}-comment-dots:after { content: "\10f4ad"; }
.fad.@{fa-css-prefix}-concierge-bell:after { content: "\10f562"; }
.fad.@{fa-css-prefix}-dot-circle:after { content: "\10f192"; }
.fad.@{fa-css-prefix}-envelope:after { content: "\10f0e0"; }
.fad.@{fa-css-prefix}-exchange-alt:after { content: "\10f362"; }
.fad.@{fa-css-prefix}-file-alt:after { content: "\10f15c"; }
.fad.@{fa-css-prefix}-file-code:after { content: "\10f1c9"; }
.fad.@{fa-css-prefix}-globe:after { content: "\10f0ac"; }
.fad.@{fa-css-prefix}-globe-africa:after { content: "\10f57c"; }
.fad.@{fa-css-prefix}-globe-americas:after { content: "\10f57d"; }
.fad.@{fa-css-prefix}-globe-asia:after { content: "\10f57e"; }
.fad.@{fa-css-prefix}-globe-europe:after { content: "\10f7a2"; }
.fad.@{fa-css-prefix}-graduation-cap:after { content: "\10f19d"; }
.fad.@{fa-css-prefix}-history:after { content: "\10f1da"; }
.fad.@{fa-css-prefix}-key:after { content: "\10f084"; }
.fad.@{fa-css-prefix}-key-skeleton:after { content: "\10f6f3"; }
.fad.@{fa-css-prefix}-laptop:after { content: "\10f109"; }
.fad.@{fa-css-prefix}-laptop-code:after { content: "\10f5fc"; }
.fad.@{fa-css-prefix}-laptop-house:after { content: "\10e066"; }
.fad.@{fa-css-prefix}-life-ring:after { content: "\10f1cd"; }
.fad.@{fa-css-prefix}-lightbulb:after { content: "\10f0eb"; }
.fad.@{fa-css-prefix}-list-alt:after { content: "\10f022"; }
.fad.@{fa-css-prefix}-list-ul:after { content: "\10f0ca"; }
.fad.@{fa-css-prefix}-lock-alt:after { content: "\10f30d"; }
.fad.@{fa-css-prefix}-map-marker-alt:after { content: "\10f3c5"; }
.fad.@{fa-css-prefix}-moon-stars:after { content: "\10f755"; }
.fad.@{fa-css-prefix}-network-wired:after { content: "\10f6ff"; }
.fad.@{fa-css-prefix}-planet-ringed:after { content: "\10e020"; }
.fad.@{fa-css-prefix}-question-circle:after { content: "\10f059"; }
.fad.@{fa-css-prefix}-quote-left:after { content: "\10f10d"; }
.fad.@{fa-css-prefix}-random:after { content: "\10f074"; }
.fad.@{fa-css-prefix}-rocket:after { content: "\10f135"; }
.fad.@{fa-css-prefix}-search:after { content: "\10f002"; }
.fad.@{fa-css-prefix}-server:after { content: "\10f233"; }
.fad.@{fa-css-prefix}-sign-out:after { content: "\10f08b"; }
.fad.@{fa-css-prefix}-siren-on:after { content: "\10e02e"; }
.fad.@{fa-css-prefix}-smile:after { content: "\10f118"; }
.fad.@{fa-css-prefix}-snowman:after { content: "\10f7d0"; }
.fad.@{fa-css-prefix}-sun:after { content: "\10f185"; }
.fad.@{fa-css-prefix}-tasks:after { content: "\10f0ae"; }
.fad.@{fa-css-prefix}-university:after { content: "\10f19c"; }
.fad.@{fa-css-prefix}-user:after { content: "\10f007"; }
.fad.@{fa-css-prefix}-user-hard-hat:after { content: "\10f82c"; }
.fad.@{fa-css-prefix}-user-shield:after { content: "\10f505"; }
.fad.@{fa-css-prefix}-users:after { content: "\10f0c0"; }
================================================
FILE: public/fonts/font-awesome/less/fontawesome.less
================================================
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_larger.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";
================================================
FILE: public/fonts/font-awesome/less/regular.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.eot');
src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/less/solid.less
================================================
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.eot');
src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}
================================================
FILE: public/fonts/font-awesome/metadata/categories.yml
================================================
accessibility:
icons:
- question-circle
label: Accessibility
alert:
icons:
- alarm-exclamation
- bell
label: Alert
animals:
icons: []
label: Animals
arrows:
icons:
- exchange-alt
- history
- random
- sign-out
- undo
- undo-alt
label: Arrows
audio-video:
icons:
- circle
- random
- undo
- undo-alt
label: Audio & Video
automotive:
icons: []
label: Automotive
autumn:
icons: []
label: Autumn
beverage:
icons: []
label: Beverage
buildings:
icons:
- home
- university
label: Buildings
business:
icons:
- badge-check
- chart-network
- chart-scatter
- envelope
- file-alt
- globe
- laptop-house
- save
- tasks
label: Business
camping:
icons: []
label: Camping
charity:
icons:
- globe
label: Charity
chat:
icons:
- comment-dots
- quote-left
- smile
label: Chat
chess:
icons:
- square-full
label: Chess
childhood:
icons:
- robot
- snowman
label: Childhood
clothing:
icons:
- graduation-cap
label: Clothing
code:
icons:
- brackets-curly
- file-alt
- file-code
- laptop-code
label: Code
communication:
icons:
- bell
- envelope
label: Communication
computers:
icons:
- brackets-curly
- desktop
- laptop
- laptop-house
- save
- server
label: Computers
construction:
icons:
- user-hard-hat
label: Construction
currency:
icons: []
label: Currency
date-time:
icons:
- alarm-exclamation
- bell
label: Date & Time
design:
icons:
- eye
- save
label: Design
editors:
icons:
- align-left
- align-slash
- file-alt
- list-alt
- list-ul
- quote-left
- tasks
- undo
- undo-alt
label: Editors
education:
icons:
- atom-alt
- bell
- books
- graduation-cap
- laptop-code
label: Education
emoji:
icons:
- smile
label: Emoji
energy:
icons:
- atom-alt
- lightbulb
- sun
label: Energy
files:
icons:
- file-alt
- file-code
- save
label: Files
finance:
icons:
- credit-card
label: Finance
fitness:
icons: []
label: Fitness
food:
icons: []
label: Food
fruit-vegetable:
icons: []
label: Fruits & Vegetables
games:
icons: []
label: Games
gaming-tabletop:
icons:
- book-dead
label: Tabletop Gaming
gender:
icons: []
label: Genders
halloween:
icons:
- book-dead
- key-skeleton
label: Halloween
hands:
icons: []
label: Hands
health:
icons: []
label: Health
holiday:
icons:
- snowman
label: Holiday
hotel:
icons:
- concierge-bell
- key
label: Hotel
household:
icons:
- bell
- books
- laptop-house
- lightbulb
- siren-on
label: Household
images:
icons:
- eye
label: Images
interfaces:
icons:
- badge-check
- bell
- check
- check-circle
- circle
- cloud
- cogs
- dot-circle
- envelope
- eye
- file-alt
- fingerprint
- history
- home
- info
- info-circle
- plus
- question-circle
- quote-left
- save
- search
- sign-out
- smile
- times
- times-circle
- undo
- undo-alt
- user
label: Interfaces
logistics:
icons:
- user-hard-hat
label: Logistics
maps:
icons:
- bell
- eye
- globe
- graduation-cap
- home
- info
- info-circle
- key
- life-ring
- lightbulb
- map-marker-alt
- plus
- rocket
- search
- university
label: Maps
maritime:
icons: []
label: Maritime
marketing:
icons:
- badge-check
- lightbulb
label: Marketing
mathematics:
icons:
- abacus
- plus
- times
label: Mathematics
medical:
icons:
- plus
label: Medical
moving:
icons: []
label: Moving
music:
icons: []
label: Music
objects:
icons:
- bell
- book-dead
- cloud
- cogs
- envelope
- eye
- file-alt
- globe
- graduation-cap
- home
- key
- laptop
- life-ring
- lightbulb
- lock-alt
- map-marker-alt
- rocket
- save
- search
- sun
- university
label: Objects
payments-shopping:
icons:
- badge-check
- bell
- cc-amazon-pay
- cc-amex
- cc-apple-pay
- cc-diners-club
- cc-discover
- cc-jcb
- cc-mastercard
- cc-paypal
- cc-stripe
- cc-visa
- credit-card
- key
label: Payments & Shopping
pharmacy:
icons:
- history
label: Pharmacy
political:
icons: []
label: Political
religion:
icons: []
label: Religion
science:
icons:
- atom-alt
- chart-network
- chart-scatter
- key-skeleton
label: Science
science-fiction:
icons:
- atom-alt
- globe
- moon-stars
- planet-ringed
- robot
- rocket
label: Science Fiction
security:
icons:
- eye
- fingerprint
- key
- key-skeleton
- lock-alt
- siren-on
- user-shield
label: Security
shapes:
icons:
- circle
- cloud
label: Shapes
shopping:
icons:
- badge-check
label: Shopping
social:
icons:
- bell
- envelope
- map-marker-alt
- user
- user-friends
- users
label: Social
spinners:
icons:
- atom-alt
- life-ring
- slash
- spinner-third
- sun
label: Spinners
sports:
icons: []
label: Sports
spring:
icons: []
label: Spring
status:
icons:
- badge-check
- bell
- eye
- file-alt
- info
- info-circle
- lightbulb
- lock-alt
- map-marker-alt
- plus
- question-circle
- sign-out
- user
label: Status
summer:
icons:
- sun
label: Summer
toggle:
icons:
- check-circle
- circle
- dot-circle
label: Toggle
travel:
icons:
- concierge-bell
- globe-africa
- globe-americas
- globe-asia
- globe-europe
label: Travel
users-people:
icons:
- smile
- user
- user-friends
- user-hard-hat
- user-shield
- users
label: Users & People
vehicles:
icons:
- rocket
label: Vehicles
weather:
icons:
- cloud
- clouds
- moon-stars
- sun
label: Weather
winter:
icons: []
label: Winter
writing:
icons:
- envelope
- file-alt
- quote-left
label: Writing
================================================
FILE: public/fonts/font-awesome/metadata/icons.json
================================================
{
"abacus": {
"changes": [
"5.3.0"
],
"ligatures": [],
"search": {
"terms": [
"addition",
"ancient",
"arithmetic",
"calculator",
"counting",
"hexadecimal",
"math",
"subtraction"
]
},
"styles": [
"duotone"
],
"unicode": "f640",
"label": "Abacus",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": [
"M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z",
"M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"
]
}
},
"free": []
},
"alarm-exclamation": {
"changes": [
"5.9.0"
],
"ligatures": [],
"search": {
"terms": [
"alert",
"date",
"late",
"reminder",
"sleep",
"snooze",
"timer",
"timestamp",
"watch"
]
},
"styles": [
"solid"
],
"unicode": "f843",
"label": "Alarm Exclamation",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"
}
},
"free": []
},
"align-left": {
"changes": [
"1",
"5.0.0",
"5.9.0"
],
"ligatures": [],
"search": {
"terms": [
"format",
"paragraph",
"text"
]
},
"styles": [
"solid"
],
"unicode": "f036",
"label": "align-left",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"
}
},
"free": [
"solid"
]
},
"align-slash": {
"changes": [
"5.9.0"
],
"ligatures": [],
"search": {
"terms": [
"cancel",
"format",
"paragraph",
"remove"
]
},
"styles": [
"duotone"
],
"unicode": "f846",
"label": "Align Slash",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z",
"M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"
]
}
},
"free": []
},
"atom-alt": {
"changes": [
"5.2.0",
"5.12.0"
],
"ligatures": [],
"search": {
"terms": [
"atheism",
"chemistry",
"electron",
"ion",
"isotope",
"neutron",
"nuclear",
"proton",
"science",
"space"
]
},
"styles": [
"duotone"
],
"unicode": "f5d3",
"label": "Atom Alt",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": [
"M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z",
"M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"
]
}
},
"free": []
},
"aws": {
"changes": [
"5.0.0",
"5.1.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f375",
"label": "Amazon Web Services (AWS)",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"
}
},
"free": [
"brands"
]
},
"badge-check": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"accept",
"achievement",
"agree",
"award",
"confirm",
"correct",
"done",
"ok",
"security",
"select",
"success",
"verified",
"verify",
"winner",
"yes"
]
},
"styles": [
"duotone"
],
"unicode": "f336",
"label": "Check Badge",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z",
"M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"
]
}
},
"free": []
},
"bell": {
"changes": [
"2",
"5.0.0",
"5.2.0",
"5.11.0"
],
"ligatures": [],
"search": {
"terms": [
"alarm",
"alert",
"chime",
"notification",
"reminder"
]
},
"styles": [
"duotone"
],
"unicode": "f0f3",
"label": "bell",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": [
"M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z",
"M160 448h128a64 64 0 0 1-128 0z"
]
}
},
"free": [
"solid",
"regular"
]
},
"book-dead": {
"changes": [
"5.4.0"
],
"ligatures": [],
"search": {
"terms": [
"Dungeons & Dragons",
"crossbones",
"d&d",
"dark arts",
"death",
"dnd",
"documentation",
"evil",
"fantasy",
"halloween",
"holiday",
"necronomicon",
"read",
"skull",
"spell"
]
},
"styles": [
"solid"
],
"unicode": "f6b7",
"label": "Book of the Dead",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"
}
},
"free": [
"solid"
]
},
"books": {
"changes": [
"5.2.0",
"5.10.1"
],
"ligatures": [],
"search": {
"terms": [
"diary",
"documentation",
"journal",
"library",
"read"
]
},
"styles": [
"duotone"
],
"unicode": "f5db",
"label": "Books",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": [
"M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z",
"M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"
]
}
},
"free": []
},
"brackets-curly": {
"changes": [
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"code",
"developer",
"development",
"parentheses"
]
},
"styles": [
"duotone"
],
"unicode": "f7ea",
"label": "Curly Brackets",
"voted": true,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": [
"M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z",
"M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"
]
}
},
"free": []
},
"cc-amazon-pay": {
"changes": [
"5.0.2"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f42d",
"label": "Amazon Pay Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"
}
},
"free": [
"brands"
]
},
"cc-amex": {
"changes": [
"4.2",
"5.0.0",
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"amex"
]
},
"styles": [
"brands"
],
"unicode": "f1f3",
"label": "American Express Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1548364699000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"
}
},
"free": [
"brands"
]
},
"cc-apple-pay": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f416",
"label": "Apple Pay Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"
}
},
"free": [
"brands"
]
},
"cc-diners-club": {
"changes": [
"4.4",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f24c",
"label": "Diner's Club Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"
}
},
"free": [
"brands"
]
},
"cc-discover": {
"changes": [
"4.2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f1f2",
"label": "Discover Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1548363722000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"
}
},
"free": [
"brands"
]
},
"cc-jcb": {
"changes": [
"4.4",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f24b",
"label": "JCB Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"
}
},
"free": [
"brands"
]
},
"cc-mastercard": {
"changes": [
"4.2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f1f1",
"label": "MasterCard Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"
}
},
"free": [
"brands"
]
},
"cc-paypal": {
"changes": [
"4.2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f1f4",
"label": "Paypal Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"
}
},
"free": [
"brands"
]
},
"cc-stripe": {
"changes": [
"4.2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f1f5",
"label": "Stripe Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1548363722000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"
}
},
"free": [
"brands"
]
},
"cc-visa": {
"changes": [
"4.2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f1f0",
"label": "Visa Credit Card",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"
}
},
"free": [
"brands"
]
},
"chart-network": {
"changes": [
"5.6.0"
],
"ligatures": [],
"search": {
"terms": [
"activity",
"analytics",
"association",
"dashboard",
"diagram",
"distribution",
"map",
"network"
]
},
"styles": [
"duotone"
],
"unicode": "f78a",
"label": "Network Chart",
"voted": true,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z",
"M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"
]
}
},
"free": []
},
"chart-scatter": {
"changes": [
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"analytics",
"chart",
"diagram",
"graph",
"plot"
]
},
"styles": [
"duotone"
],
"unicode": "f7ee",
"label": "Scatter Chart",
"voted": true,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z",
"M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"
]
}
},
"free": []
},
"check": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"accept",
"agree",
"checkmark",
"confirm",
"correct",
"done",
"notice",
"notification",
"notify",
"ok",
"select",
"success",
"tick",
"todo",
"yes"
]
},
"styles": [
"duotone",
"solid"
],
"unicode": "f00c",
"label": "Check",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z",
"M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"
]
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"
}
},
"free": [
"solid"
]
},
"check-circle": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"accept",
"agree",
"confirm",
"correct",
"done",
"ok",
"select",
"success",
"tick",
"todo",
"yes"
]
},
"styles": [
"regular"
],
"unicode": "f058",
"label": "Check Circle",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"
}
},
"free": [
"solid",
"regular"
]
},
"circle": {
"changes": [
"3",
"5.0.0",
"5.10.1",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"circle-thin",
"diameter",
"dot",
"ellipse",
"notification",
"round"
]
},
"styles": [
"duotone",
"solid"
],
"unicode": "f111",
"label": "Circle",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z",
"M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"
]
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"
}
},
"free": [
"solid",
"regular"
]
},
"cloud": {
"changes": [
"2",
"5.0.0",
"5.0.11"
],
"ligatures": [],
"search": {
"terms": [
"atmosphere",
"fog",
"overcast",
"save",
"upload",
"weather"
]
},
"styles": [
"solid"
],
"unicode": "f0c2",
"label": "Cloud",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"
}
},
"free": [
"solid"
]
},
"clouds": {
"changes": [
"5.5.0"
],
"ligatures": [],
"search": {
"terms": [
"cloudy",
"fog",
"haze",
"overcast",
"smoke",
"storm",
"weather"
]
},
"styles": [
"duotone"
],
"unicode": "f744",
"label": "Clouds",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z",
"M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"
]
}
},
"free": []
},
"cogs": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"gears",
"mechanical",
"settings",
"sprocket",
"wheel"
]
},
"styles": [
"duotone"
],
"unicode": "f085",
"label": "cogs",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z",
"M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"
]
}
},
"free": [
"solid"
]
},
"comment-dots": {
"changes": [
"5.0.9"
],
"ligatures": [],
"search": {
"terms": [
"bubble",
"chat",
"commenting",
"conversation",
"feedback",
"message",
"more",
"note",
"notification",
"reply",
"sms",
"speech",
"texting"
]
},
"styles": [
"duotone"
],
"unicode": "f4ad",
"label": "Comment Dots",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z",
"M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"
]
}
},
"free": [
"solid",
"regular"
]
},
"concierge-bell": {
"changes": [
"5.1.0"
],
"ligatures": [],
"search": {
"terms": [
"attention",
"hotel",
"receptionist",
"service",
"support"
]
},
"styles": [
"duotone"
],
"unicode": "f562",
"label": "Concierge Bell",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z",
"M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"
]
}
},
"free": [
"solid"
]
},
"credit-card": {
"changes": [
"2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"buy",
"checkout",
"credit-card-alt",
"debit",
"money",
"payment",
"purchase"
]
},
"styles": [
"solid"
],
"unicode": "f09d",
"label": "Credit Card",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"
}
},
"free": [
"solid",
"regular"
]
},
"desktop": {
"changes": [
"3",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"cpu",
"demo",
"desktop",
"device",
"imac",
"machine",
"monitor",
"pc",
"screen"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f108",
"label": "Desktop",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"
}
},
"free": [
"solid"
]
},
"discourse": {
"changes": [
"5.0.0",
"5.0.3"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f393",
"label": "Discourse",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"
}
},
"free": [
"brands"
]
},
"docker": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f395",
"label": "Docker",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"
}
},
"free": [
"brands"
]
},
"dot-circle": {
"changes": [
"4",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"bullseye",
"notification",
"target"
]
},
"styles": [
"duotone"
],
"unicode": "f192",
"label": "Dot Circle",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z",
"M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"
]
}
},
"free": [
"solid",
"regular"
]
},
"envelope": {
"changes": [
"2",
"5.0.0",
"5.10.1",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"e-mail",
"email",
"letter",
"mail",
"message",
"notification",
"support"
]
},
"styles": [
"solid",
"duotone"
],
"unicode": "f0e0",
"label": "Envelope",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"
},
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z",
"M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"
]
}
},
"free": [
"solid",
"regular"
]
},
"exchange-alt": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"arrow",
"arrows",
"exchange",
"reciprocate",
"return",
"swap",
"transfer"
]
},
"styles": [
"duotone"
],
"unicode": "f362",
"label": "Alternate Exchange",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z",
"M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"
]
}
},
"free": [
"solid"
]
},
"eye": {
"changes": [
"1",
"5.0.0",
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"look",
"optic",
"see",
"seen",
"show",
"sight",
"views",
"visible"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f06e",
"label": "Eye",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"
}
},
"free": [
"solid",
"regular"
]
},
"file-alt": {
"changes": [
"3.2",
"5.0.0",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"document",
"file-text",
"invoice",
"new",
"page",
"pdf"
]
},
"styles": [
"duotone"
],
"unicode": "f15c",
"label": "Alternate File",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"384",
"512"
],
"width": 384,
"height": 512,
"path": [
"M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z",
"M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"
]
}
},
"free": [
"solid",
"regular"
]
},
"file-code": {
"changes": [
"4.1",
"5.0.0",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"css",
"development",
"document",
"html"
]
},
"styles": [
"duotone",
"regular"
],
"unicode": "f1c9",
"label": "Code File",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"384",
"512"
],
"width": 384,
"height": 512,
"path": [
"M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z",
"M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"
]
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"384",
"512"
],
"width": 384,
"height": 512,
"path": "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"
}
},
"free": [
"solid",
"regular"
]
},
"fingerprint": {
"changes": [
"5.1.0"
],
"ligatures": [],
"search": {
"terms": [
"human",
"id",
"identification",
"lock",
"smudge",
"touch",
"unique",
"unlock"
]
},
"styles": [
"solid"
],
"unicode": "f577",
"label": "Fingerprint",
"voted": true,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"
}
},
"free": [
"solid"
]
},
"github": {
"changes": [
"2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"octocat"
]
},
"styles": [
"brands"
],
"unicode": "f09b",
"label": "GitHub",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"
}
},
"free": [
"brands"
]
},
"globe": {
"changes": [
"2",
"5.0.0",
"5.0.9",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"all",
"coordinates",
"country",
"earth",
"global",
"gps",
"language",
"localize",
"location",
"map",
"online",
"place",
"planet",
"translate",
"travel",
"world"
]
},
"styles": [
"duotone"
],
"unicode": "f0ac",
"label": "Globe",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z",
"M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"
]
}
},
"free": [
"solid"
]
},
"globe-africa": {
"changes": [
"5.1.0",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"all",
"country",
"earth",
"global",
"gps",
"language",
"localize",
"location",
"map",
"online",
"place",
"planet",
"translate",
"travel",
"world"
]
},
"styles": [
"duotone"
],
"unicode": "f57c",
"label": "Globe with Africa shown",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z",
"M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"
]
}
},
"free": [
"solid"
]
},
"globe-americas": {
"changes": [
"5.1.0",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"all",
"country",
"earth",
"global",
"gps",
"language",
"localize",
"location",
"map",
"online",
"place",
"planet",
"translate",
"travel",
"world"
]
},
"styles": [
"duotone"
],
"unicode": "f57d",
"label": "Globe with Americas shown",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z",
"M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"
]
}
},
"free": [
"solid"
]
},
"globe-asia": {
"changes": [
"5.1.0",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"all",
"country",
"earth",
"global",
"gps",
"language",
"localize",
"location",
"map",
"online",
"place",
"planet",
"translate",
"travel",
"world"
]
},
"styles": [
"duotone"
],
"unicode": "f57e",
"label": "Globe with Asia shown",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z",
"M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"
]
}
},
"free": [
"solid"
]
},
"globe-europe": {
"changes": [
"5.6.0",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"all",
"country",
"earth",
"global",
"gps",
"language",
"localize",
"location",
"map",
"online",
"place",
"planet",
"translate",
"travel",
"world"
]
},
"styles": [
"duotone"
],
"unicode": "f7a2",
"label": "Globe with Europe shown",
"voted": true,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z",
"M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"
]
}
},
"free": [
"solid"
]
},
"graduation-cap": {
"changes": [
"4.1",
"5.0.0",
"5.2.0",
"5.10.1"
],
"ligatures": [],
"search": {
"terms": [
"ceremony",
"college",
"graduate",
"learning",
"school",
"student"
]
},
"styles": [
"duotone"
],
"unicode": "f19d",
"label": "Graduation Cap",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z",
"M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"
]
}
},
"free": [
"solid"
]
},
"history": {
"changes": [
"4.1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"Rewind",
"clock",
"reverse",
"time",
"time machine"
]
},
"styles": [
"solid",
"duotone"
],
"unicode": "f1da",
"label": "History",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"
},
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z",
"M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"
]
}
},
"free": [
"solid"
]
},
"home": {
"changes": [
"1",
"5.0.0",
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"abode",
"building",
"house",
"main"
]
},
"styles": [
"solid"
],
"unicode": "f015",
"label": "home",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"576",
"512"
],
"width": 576,
"height": 512,
"path": "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"
}
},
"free": [
"solid"
]
},
"info": {
"changes": [
"3.1",
"5.0.0",
"5.10.1",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"details",
"help",
"information",
"more",
"support"
]
},
"styles": [
"regular"
],
"unicode": "f129",
"label": "Info",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"256",
"512"
],
"width": 256,
"height": 512,
"path": "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"
}
},
"free": [
"solid"
]
},
"info-circle": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"details",
"help",
"information",
"more",
"support"
]
},
"styles": [
"regular"
],
"unicode": "f05a",
"label": "Info Circle",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"
}
},
"free": [
"solid"
]
},
"instagram": {
"changes": [
"4.6",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f16d",
"label": "Instagram",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440860000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"
}
},
"free": [
"brands"
]
},
"key": {
"changes": [
"1",
"5.0.0",
"5.10.1"
],
"ligatures": [],
"search": {
"terms": [
"lock",
"password",
"private",
"secret",
"unlock"
]
},
"styles": [
"duotone"
],
"unicode": "f084",
"label": "key",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z",
"M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"
]
}
},
"free": [
"solid"
]
},
"key-skeleton": {
"changes": [
"5.4.0"
],
"ligatures": [],
"search": {
"terms": [
"halloween",
"lock",
"password",
"private",
"secret",
"unlock"
]
},
"styles": [
"duotone"
],
"unicode": "f6f3",
"label": "Key Skeleton",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z",
"M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"
]
}
},
"free": []
},
"laptop": {
"changes": [
"3",
"5.0.0",
"5.2.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"cpu",
"dell",
"demo",
"device",
"mac",
"macbook",
"machine",
"pc"
]
},
"styles": [
"duotone"
],
"unicode": "f109",
"label": "Laptop",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z",
"M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"
]
}
},
"free": [
"solid"
]
},
"laptop-code": {
"changes": [
"5.2.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"cpu",
"dell",
"demo",
"develop",
"device",
"mac",
"macbook",
"machine",
"pc"
]
},
"styles": [
"duotone"
],
"unicode": "f5fc",
"label": "Laptop Code",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z",
"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"
]
}
},
"free": [
"solid"
]
},
"laptop-house": {
"changes": [
"5.13.0",
"5.14.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"covid-19",
"device",
"office",
"remote",
"work from home"
]
},
"styles": [
"duotone"
],
"unicode": "e066",
"label": "Laptop House",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z",
"M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"
]
}
},
"free": [
"solid"
]
},
"life-ring": {
"changes": [
"4.1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"coast guard",
"help",
"overboard",
"save",
"support"
]
},
"styles": [
"duotone"
],
"unicode": "f1cd",
"label": "Life Ring",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z",
"M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"
]
}
},
"free": [
"solid",
"regular"
]
},
"lightbulb": {
"changes": [
"3",
"5.0.0",
"5.3.0"
],
"ligatures": [],
"search": {
"terms": [
"energy",
"idea",
"inspiration",
"light"
]
},
"styles": [
"duotone"
],
"unicode": "f0eb",
"label": "Lightbulb",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"352",
"512"
],
"width": 352,
"height": 512,
"path": [
"M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z",
"M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"
]
}
},
"free": [
"solid",
"regular"
]
},
"list-alt": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"checklist",
"completed",
"done",
"finished",
"ol",
"todo",
"ul"
]
},
"styles": [
"duotone"
],
"unicode": "f022",
"label": "Alternate List",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z",
"M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"
]
}
},
"free": [
"solid",
"regular"
]
},
"list-ul": {
"changes": [
"2",
"5.0.0",
"5.9.0"
],
"ligatures": [],
"search": {
"terms": [
"checklist",
"completed",
"done",
"finished",
"ol",
"todo",
"ul"
]
},
"styles": [
"duotone"
],
"unicode": "f0ca",
"label": "list-ul",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z",
"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"
]
}
},
"free": [
"solid"
]
},
"lock-alt": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"admin",
"lock",
"open",
"password",
"private",
"protect",
"security"
]
},
"styles": [
"duotone"
],
"unicode": "f30d",
"label": "Alternate Lock",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": [
"M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z",
"M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"
]
}
},
"free": []
},
"map-marker-alt": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"address",
"coordinates",
"destination",
"gps",
"localize",
"location",
"map",
"navigation",
"paper",
"pin",
"place",
"point of interest",
"position",
"route",
"travel"
]
},
"styles": [
"duotone"
],
"unicode": "f3c5",
"label": "Alternate Map Marker",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"384",
"512"
],
"width": 384,
"height": 512,
"path": [
"M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z",
"M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"
]
}
},
"free": [
"solid"
]
},
"microsoft": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f3ca",
"label": "Microsoft",
"voted": true,
"svg": {
"brands": {
"last_modified": 1546440861000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"
}
},
"free": [
"brands"
]
},
"moon-stars": {
"changes": [
"5.5.0"
],
"ligatures": [],
"search": {
"terms": [
"clear",
"crescent",
"lunar",
"space",
"star"
]
},
"styles": [
"duotone"
],
"unicode": "f755",
"label": "Moon with Stars",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z",
"M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"
]
}
},
"free": []
},
"network-wired": {
"changes": [
"5.4.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"connect",
"ethernet",
"internet",
"intranet"
]
},
"styles": [
"duotone"
],
"unicode": "f6ff",
"label": "Wired Network",
"voted": true,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z",
"M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"
]
}
},
"free": [
"solid"
]
},
"planet-ringed": {
"changes": [
"5.12.0",
"5.14.0"
],
"ligatures": [],
"search": {
"terms": [
"orbit",
"saturn",
"solar system",
"space",
"universe"
]
},
"styles": [
"duotone"
],
"unicode": "e020",
"label": "Ringed Planet",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z",
"M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"
]
}
},
"free": []
},
"plus": {
"changes": [
"1",
"5.0.0",
"5.0.13"
],
"ligatures": [],
"search": {
"terms": [
"add",
"create",
"expand",
"new",
"positive",
"shape"
]
},
"styles": [
"regular",
"solid"
],
"unicode": "f067",
"label": "plus",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"384",
"512"
],
"width": 384,
"height": 512,
"path": "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"
}
},
"free": [
"solid"
]
},
"question-circle": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"help",
"information",
"support",
"unknown"
]
},
"styles": [
"duotone",
"regular"
],
"unicode": "f059",
"label": "Question Circle",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z",
"M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"
]
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"
}
},
"free": [
"solid",
"regular"
]
},
"quote-left": {
"changes": [
"3",
"5.0.0",
"5.0.9"
],
"ligatures": [],
"search": {
"terms": [
"mention",
"note",
"phrase",
"text",
"type"
]
},
"styles": [
"duotone"
],
"unicode": "f10d",
"label": "quote-left",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z",
"M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"
]
}
},
"free": [
"solid"
]
},
"random": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"arrows",
"shuffle",
"sort",
"swap",
"switch",
"transfer"
]
},
"styles": [
"duotone"
],
"unicode": "f074",
"label": "random",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z",
"M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"
]
}
},
"free": [
"solid"
]
},
"rev": {
"changes": [
"5.1.0",
"5.1.1",
"5.8.0"
],
"ligatures": [],
"search": {
"terms": []
},
"styles": [
"brands"
],
"unicode": "f5b2",
"label": "Rev.io",
"voted": false,
"svg": {
"brands": {
"last_modified": 1558987775000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"
}
},
"free": [
"brands"
]
},
"robot": {
"changes": [
"5.0.13",
"5.12.0"
],
"ligatures": [],
"search": {
"terms": [
"android",
"automate",
"computer",
"cyborg"
]
},
"styles": [
"solid"
],
"unicode": "f544",
"label": "Robot",
"voted": true,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"
}
},
"free": [
"solid"
]
},
"rocket": {
"changes": [
"3.1",
"5.0.0",
"5.7.0",
"5.12.0"
],
"ligatures": [],
"search": {
"terms": [
"aircraft",
"app",
"jet",
"launch",
"nasa",
"space"
]
},
"styles": [
"duotone",
"solid",
"regular"
],
"unicode": "f135",
"label": "rocket",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z",
"M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"
]
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"
}
},
"free": [
"solid"
]
},
"save": {
"changes": [
"2",
"5.0.0",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"disk",
"download",
"floppy",
"floppy-o"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f0c7",
"label": "Save",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"
}
},
"free": [
"solid",
"regular"
]
},
"search": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"bigger",
"enlarge",
"find",
"magnify",
"preview",
"zoom"
]
},
"styles": [
"duotone"
],
"unicode": "f002",
"label": "Search",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z",
"M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"
]
}
},
"free": [
"solid"
]
},
"server": {
"changes": [
"4.3",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"computer",
"cpu",
"database",
"hardware",
"network"
]
},
"styles": [
"duotone"
],
"unicode": "f233",
"label": "Server",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z",
"M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"
]
}
},
"free": [
"solid"
]
},
"sign-out": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"arrow",
"exit",
"leave",
"log out",
"logout"
]
},
"styles": [
"duotone"
],
"unicode": "f08b",
"label": "Sign Out",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z",
"M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"
]
}
},
"free": []
},
"siren-on": {
"changes": [
"5.12.0",
"5.14.0"
],
"ligatures": [],
"search": {
"terms": [
"alarm",
"alert",
"ambulance",
"loud",
"police",
"warning"
]
},
"styles": [
"duotone"
],
"unicode": "e02e",
"label": "Siren On",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z",
"M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"
]
}
},
"free": []
},
"slack": {
"changes": [
"4.1",
"5.0.0",
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"anchor",
"hash",
"hashtag"
]
},
"styles": [
"brands"
],
"unicode": "f198",
"label": "Slack Logo",
"voted": false,
"svg": {
"brands": {
"last_modified": 1548363722000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"
}
},
"free": [
"brands"
]
},
"slash": {
"changes": [
"5.4.0"
],
"ligatures": [],
"search": {
"terms": [
"cancel",
"close",
"mute",
"off",
"stop",
"x"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f715",
"label": "Slash",
"voted": true,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"
},
"regular": {
"last_modified": 1628277665000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"
}
},
"free": [
"solid"
]
},
"smile": {
"changes": [
"3.1",
"5.0.0",
"5.0.9",
"5.1.0",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"approve",
"emoticon",
"face",
"happy",
"rating",
"satisfied"
]
},
"styles": [
"duotone"
],
"unicode": "f118",
"label": "Smiling Face",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"496",
"512"
],
"width": 496,
"height": 512,
"path": [
"M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z",
"M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"
]
}
},
"free": [
"solid",
"regular"
]
},
"snowman": {
"changes": [
"5.6.0"
],
"ligatures": [],
"search": {
"terms": [
"decoration",
"frost",
"frosty",
"holiday"
]
},
"styles": [
"duotone"
],
"unicode": "f7d0",
"label": "Snowman",
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z",
"M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"
]
}
},
"free": [
"solid"
]
},
"spinner-third": {
"changes": [
"5.0.0",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"circle",
"loading",
"progress"
]
},
"styles": [
"solid"
],
"unicode": "f3f4",
"label": "Spinner Third",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"
}
},
"free": []
},
"square-full": {
"changes": [
"5.0.5",
"5.10.2"
],
"ligatures": [],
"search": {
"terms": [
"block",
"box",
"shape"
]
},
"styles": [
"solid"
],
"unicode": "f45c",
"label": "Square Full",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M512 512H0V0h512v512z"
}
},
"free": [
"solid"
]
},
"sun": {
"changes": [
"3.2",
"5.0.0",
"5.5.0"
],
"ligatures": [],
"search": {
"terms": [
"brighten",
"contrast",
"day",
"lighter",
"sol",
"solar",
"star",
"weather"
]
},
"styles": [
"duotone"
],
"unicode": "f185",
"label": "Sun",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z",
"M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"
]
}
},
"free": [
"solid",
"regular"
]
},
"tasks": {
"changes": [
"2",
"5.0.0",
"5.9.0"
],
"ligatures": [],
"search": {
"terms": [
"checklist",
"downloading",
"downloads",
"loading",
"progress",
"project management",
"settings",
"to do"
]
},
"styles": [
"duotone"
],
"unicode": "f0ae",
"label": "Tasks",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z",
"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"
]
}
},
"free": [
"solid"
]
},
"times": {
"changes": [
"1",
"5.0.0",
"5.0.13",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"close",
"cross",
"error",
"exit",
"incorrect",
"notice",
"notification",
"notify",
"problem",
"wrong",
"x"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f00d",
"label": "Times",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"352",
"512"
],
"width": 352,
"height": 512,
"path": "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
},
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"320",
"512"
],
"width": 320,
"height": 512,
"path": "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"
}
},
"free": [
"solid"
]
},
"times-circle": {
"changes": [
"1",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"close",
"cross",
"exit",
"incorrect",
"notice",
"notification",
"notify",
"problem",
"wrong",
"x"
]
},
"styles": [
"solid"
],
"unicode": "f057",
"label": "Times Circle",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"
}
},
"free": [
"solid",
"regular"
]
},
"twitter": {
"changes": [
"2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"social network",
"tweet"
]
},
"styles": [
"brands"
],
"unicode": "f099",
"label": "Twitter",
"voted": false,
"svg": {
"brands": {
"last_modified": 1546440861000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"
}
},
"free": [
"brands"
]
},
"undo": {
"changes": [
"2",
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"back",
"control z",
"exchange",
"oops",
"return",
"rotate",
"swap"
]
},
"styles": [
"solid",
"regular"
],
"unicode": "f0e2",
"label": "Undo",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"
},
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"
}
},
"free": [
"solid"
]
},
"undo-alt": {
"changes": [
"5.0.0"
],
"ligatures": [],
"search": {
"terms": [
"back",
"control z",
"exchange",
"oops",
"return",
"swap"
]
},
"styles": [
"regular",
"solid"
],
"unicode": "f2ea",
"label": "Alternate Undo",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"
}
},
"free": [
"solid"
]
},
"university": {
"changes": [
"4.1",
"5.0.0",
"5.0.3",
"5.11.0",
"5.11.1"
],
"ligatures": [],
"search": {
"terms": [
"bank",
"building",
"college",
"higher education - students",
"institution"
]
},
"styles": [
"duotone"
],
"unicode": "f19c",
"label": "University",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"512",
"512"
],
"width": 512,
"height": 512,
"path": [
"M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z",
"M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"
]
}
},
"free": [
"solid"
]
},
"user": {
"changes": [
"1",
"5.0.0",
"5.0.3",
"5.0.11"
],
"ligatures": [],
"search": {
"terms": [
"account",
"avatar",
"head",
"human",
"man",
"person",
"profile"
]
},
"styles": [
"solid",
"duotone",
"regular"
],
"unicode": "f007",
"label": "User",
"voted": false,
"svg": {
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"
},
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": [
"M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z",
"M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"
]
},
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"
}
},
"free": [
"solid",
"regular"
]
},
"user-friends": {
"changes": [
"5.0.11"
],
"ligatures": [],
"search": {
"terms": [
"group",
"people",
"person",
"team",
"users"
]
},
"styles": [
"regular"
],
"unicode": "f500",
"label": "User Friends",
"voted": false,
"svg": {
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"
}
},
"free": [
"solid"
]
},
"user-hard-hat": {
"changes": [
"5.7.0"
],
"ligatures": [],
"search": {
"terms": [
"construction",
"hardhat",
"helmet",
"safety"
]
},
"styles": [
"duotone"
],
"unicode": "f82c",
"label": "Construction Worker",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"448",
"512"
],
"width": 448,
"height": 512,
"path": [
"M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z",
"M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"
]
}
},
"free": []
},
"user-shield": {
"changes": [
"5.0.11"
],
"ligatures": [],
"search": {
"terms": [
"admin",
"person",
"private",
"protect",
"safe"
]
},
"styles": [
"duotone"
],
"unicode": "f505",
"label": "User Shield",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z",
"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"
]
}
},
"free": [
"solid"
]
},
"users": {
"changes": [
"2",
"5.0.0",
"5.0.3",
"5.0.11"
],
"ligatures": [],
"search": {
"terms": [
"friends",
"group",
"people",
"persons",
"profiles",
"team"
]
},
"styles": [
"duotone",
"solid",
"regular"
],
"unicode": "f0c0",
"label": "Users",
"voted": false,
"svg": {
"duotone": {
"last_modified": 1628277664000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": [
"M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z",
"M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"
]
},
"solid": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"
},
"regular": {
"last_modified": 1628277666000,
"raw": " ",
"viewBox": [
"0",
"0",
"640",
"512"
],
"width": 640,
"height": 512,
"path": "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"
}
},
"free": [
"solid"
]
}
}
================================================
FILE: public/fonts/font-awesome/metadata/icons.yml
================================================
abacus:
changes:
- 5.3.0
label: Abacus
search:
terms:
- addition
- ancient
- arithmetic
- calculator
- counting
- hexadecimal
- math
- subtraction
styles:
- duotone
unicode: f640
voted: false
alarm-exclamation:
changes:
- 5.9.0
label: Alarm Exclamation
search:
terms:
- alert
- date
- late
- reminder
- sleep
- snooze
- timer
- timestamp
- watch
styles:
- solid
unicode: f843
voted: false
align-left:
changes:
- '1'
- 5.0.0
- 5.9.0
label: align-left
search:
terms:
- format
- paragraph
- text
styles:
- solid
unicode: f036
voted: false
align-slash:
changes:
- 5.9.0
label: Align Slash
search:
terms:
- cancel
- format
- paragraph
- remove
styles:
- duotone
unicode: f846
voted: false
atom-alt:
changes:
- 5.2.0
- 5.12.0
label: Atom Alt
search:
terms:
- atheism
- chemistry
- electron
- ion
- isotope
- neutron
- nuclear
- proton
- science
- space
styles:
- duotone
unicode: f5d3
voted: false
aws:
changes:
- 5.0.0
- 5.1.0
label: Amazon Web Services (AWS)
search:
terms: []
styles:
- brands
unicode: f375
voted: false
badge-check:
changes:
- 5.0.0
label: Check Badge
search:
terms:
- accept
- achievement
- agree
- award
- confirm
- correct
- done
- ok
- security
- select
- success
- verified
- verify
- winner
- 'yes'
styles:
- duotone
unicode: f336
voted: false
bell:
changes:
- '2'
- 5.0.0
- 5.2.0
- 5.11.0
label: bell
search:
terms:
- alarm
- alert
- chime
- notification
- reminder
styles:
- duotone
unicode: f0f3
voted: false
book-dead:
changes:
- 5.4.0
label: Book of the Dead
search:
terms:
- Dungeons & Dragons
- crossbones
- d&d
- dark arts
- death
- dnd
- documentation
- evil
- fantasy
- halloween
- holiday
- necronomicon
- read
- skull
- spell
styles:
- solid
unicode: f6b7
voted: false
books:
changes:
- 5.2.0
- 5.10.1
label: Books
search:
terms:
- diary
- documentation
- journal
- library
- read
styles:
- duotone
unicode: f5db
voted: false
brackets-curly:
changes:
- 5.7.0
label: Curly Brackets
search:
terms:
- code
- developer
- development
- parentheses
styles:
- duotone
unicode: f7ea
voted: true
cc-amazon-pay:
changes:
- 5.0.2
label: Amazon Pay Credit Card
search:
terms: []
styles:
- brands
unicode: f42d
voted: false
cc-amex:
changes:
- '4.2'
- 5.0.0
- 5.7.0
label: American Express Credit Card
search:
terms:
- amex
styles:
- brands
unicode: f1f3
voted: false
cc-apple-pay:
changes:
- 5.0.0
label: Apple Pay Credit Card
search:
terms: []
styles:
- brands
unicode: f416
voted: false
cc-diners-club:
changes:
- '4.4'
- 5.0.0
label: Diner's Club Credit Card
search:
terms: []
styles:
- brands
unicode: f24c
voted: false
cc-discover:
changes:
- '4.2'
- 5.0.0
label: Discover Credit Card
search:
terms: []
styles:
- brands
unicode: f1f2
voted: false
cc-jcb:
changes:
- '4.4'
- 5.0.0
label: JCB Credit Card
search:
terms: []
styles:
- brands
unicode: f24b
voted: false
cc-mastercard:
changes:
- '4.2'
- 5.0.0
label: MasterCard Credit Card
search:
terms: []
styles:
- brands
unicode: f1f1
voted: false
cc-paypal:
changes:
- '4.2'
- 5.0.0
label: Paypal Credit Card
search:
terms: []
styles:
- brands
unicode: f1f4
voted: false
cc-stripe:
changes:
- '4.2'
- 5.0.0
label: Stripe Credit Card
search:
terms: []
styles:
- brands
unicode: f1f5
voted: false
cc-visa:
changes:
- '4.2'
- 5.0.0
label: Visa Credit Card
search:
terms: []
styles:
- brands
unicode: f1f0
voted: false
chart-network:
changes:
- 5.6.0
label: Network Chart
search:
terms:
- activity
- analytics
- association
- dashboard
- diagram
- distribution
- map
- network
styles:
- duotone
unicode: f78a
voted: true
chart-scatter:
changes:
- 5.7.0
label: Scatter Chart
search:
terms:
- analytics
- chart
- diagram
- graph
- plot
styles:
- duotone
unicode: f7ee
voted: true
check:
changes:
- '1'
- 5.0.0
label: Check
search:
terms:
- accept
- agree
- checkmark
- confirm
- correct
- done
- notice
- notification
- notify
- ok
- select
- success
- tick
- todo
- 'yes'
styles:
- duotone
- solid
unicode: f00c
voted: false
check-circle:
changes:
- '1'
- 5.0.0
label: Check Circle
search:
terms:
- accept
- agree
- confirm
- correct
- done
- ok
- select
- success
- tick
- todo
- 'yes'
styles:
- regular
unicode: f058
voted: false
circle:
changes:
- '3'
- 5.0.0
- 5.10.1
- 5.10.2
label: Circle
search:
terms:
- circle-thin
- diameter
- dot
- ellipse
- notification
- round
styles:
- duotone
- solid
unicode: f111
voted: false
cloud:
changes:
- '2'
- 5.0.0
- 5.0.11
label: Cloud
search:
terms:
- atmosphere
- fog
- overcast
- save
- upload
- weather
styles:
- solid
unicode: f0c2
voted: false
clouds:
changes:
- 5.5.0
label: Clouds
search:
terms:
- cloudy
- fog
- haze
- overcast
- smoke
- storm
- weather
styles:
- duotone
unicode: f744
voted: false
cogs:
changes:
- '1'
- 5.0.0
label: cogs
search:
terms:
- gears
- mechanical
- settings
- sprocket
- wheel
styles:
- duotone
unicode: f085
voted: false
comment-dots:
changes:
- 5.0.9
label: Comment Dots
search:
terms:
- bubble
- chat
- commenting
- conversation
- feedback
- message
- more
- note
- notification
- reply
- sms
- speech
- texting
styles:
- duotone
unicode: f4ad
voted: false
concierge-bell:
changes:
- 5.1.0
label: Concierge Bell
search:
terms:
- attention
- hotel
- receptionist
- service
- support
styles:
- duotone
unicode: f562
voted: false
credit-card:
changes:
- '2'
- 5.0.0
label: Credit Card
search:
terms:
- buy
- checkout
- credit-card-alt
- debit
- money
- payment
- purchase
styles:
- solid
unicode: f09d
voted: false
desktop:
changes:
- '3'
- 5.0.0
label: Desktop
search:
terms:
- computer
- cpu
- demo
- desktop
- device
- imac
- machine
- monitor
- pc
- screen
styles:
- solid
- regular
unicode: f108
voted: false
discourse:
changes:
- 5.0.0
- 5.0.3
label: Discourse
search:
terms: []
styles:
- brands
unicode: f393
voted: false
docker:
changes:
- 5.0.0
label: Docker
search:
terms: []
styles:
- brands
unicode: f395
voted: false
dot-circle:
changes:
- '4'
- 5.0.0
label: Dot Circle
search:
terms:
- bullseye
- notification
- target
styles:
- duotone
unicode: f192
voted: false
envelope:
changes:
- '2'
- 5.0.0
- 5.10.1
- 5.10.2
label: Envelope
search:
terms:
- e-mail
- email
- letter
- mail
- message
- notification
- support
styles:
- solid
- duotone
unicode: f0e0
voted: false
exchange-alt:
changes:
- 5.0.0
label: Alternate Exchange
search:
terms:
- arrow
- arrows
- exchange
- reciprocate
- return
- swap
- transfer
styles:
- duotone
unicode: f362
voted: false
eye:
changes:
- '1'
- 5.0.0
- 5.7.0
label: Eye
search:
terms:
- look
- optic
- see
- seen
- show
- sight
- views
- visible
styles:
- solid
- regular
unicode: f06e
voted: false
file-alt:
changes:
- '3.2'
- 5.0.0
- 5.10.2
label: Alternate File
search:
terms:
- document
- file-text
- invoice
- new
- page
- pdf
styles:
- duotone
unicode: f15c
voted: false
file-code:
changes:
- '4.1'
- 5.0.0
- 5.10.2
label: Code File
search:
terms:
- css
- development
- document
- html
styles:
- duotone
- regular
unicode: f1c9
voted: false
fingerprint:
changes:
- 5.1.0
label: Fingerprint
search:
terms:
- human
- id
- identification
- lock
- smudge
- touch
- unique
- unlock
styles:
- solid
unicode: f577
voted: true
github:
changes:
- '2'
- 5.0.0
label: GitHub
search:
terms:
- octocat
styles:
- brands
unicode: f09b
voted: false
globe:
changes:
- '2'
- 5.0.0
- 5.0.9
- 5.11.0
- 5.11.1
label: Globe
search:
terms:
- all
- coordinates
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f0ac
voted: false
globe-africa:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Africa shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57c
voted: false
globe-americas:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Americas shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57d
voted: false
globe-asia:
changes:
- 5.1.0
- 5.11.0
- 5.11.1
label: Globe with Asia shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f57e
voted: false
globe-europe:
changes:
- 5.6.0
- 5.11.0
- 5.11.1
label: Globe with Europe shown
search:
terms:
- all
- country
- earth
- global
- gps
- language
- localize
- location
- map
- online
- place
- planet
- translate
- travel
- world
styles:
- duotone
unicode: f7a2
voted: true
graduation-cap:
changes:
- '4.1'
- 5.0.0
- 5.2.0
- 5.10.1
label: Graduation Cap
search:
terms:
- ceremony
- college
- graduate
- learning
- school
- student
styles:
- duotone
unicode: f19d
voted: false
history:
changes:
- '4.1'
- 5.0.0
label: History
search:
terms:
- Rewind
- clock
- reverse
- time
- time machine
styles:
- solid
- duotone
unicode: f1da
voted: false
home:
changes:
- '1'
- 5.0.0
- 5.7.0
label: home
search:
terms:
- abode
- building
- house
- main
styles:
- solid
unicode: f015
voted: false
info:
changes:
- '3.1'
- 5.0.0
- 5.10.1
- 5.10.2
label: Info
search:
terms:
- details
- help
- information
- more
- support
styles:
- regular
unicode: f129
voted: false
info-circle:
changes:
- '1'
- 5.0.0
label: Info Circle
search:
terms:
- details
- help
- information
- more
- support
styles:
- regular
unicode: f05a
voted: false
instagram:
changes:
- '4.6'
- 5.0.0
label: Instagram
search:
terms: []
styles:
- brands
unicode: f16d
voted: false
key:
changes:
- '1'
- 5.0.0
- 5.10.1
label: key
search:
terms:
- lock
- password
- private
- secret
- unlock
styles:
- duotone
unicode: f084
voted: false
key-skeleton:
changes:
- 5.4.0
label: Key Skeleton
search:
terms:
- halloween
- lock
- password
- private
- secret
- unlock
styles:
- duotone
unicode: f6f3
voted: false
laptop:
changes:
- '3'
- 5.0.0
- 5.2.0
label: Laptop
search:
terms:
- computer
- cpu
- dell
- demo
- device
- mac
- macbook
- machine
- pc
styles:
- duotone
unicode: f109
voted: false
laptop-code:
changes:
- 5.2.0
label: Laptop Code
search:
terms:
- computer
- cpu
- dell
- demo
- develop
- device
- mac
- macbook
- machine
- pc
styles:
- duotone
unicode: f5fc
voted: false
laptop-house:
changes:
- 5.13.0
- 5.14.0
label: Laptop House
search:
terms:
- computer
- covid-19
- device
- office
- remote
- work from home
styles:
- duotone
unicode: e066
voted: false
life-ring:
changes:
- '4.1'
- 5.0.0
label: Life Ring
search:
terms:
- coast guard
- help
- overboard
- save
- support
styles:
- duotone
unicode: f1cd
voted: false
lightbulb:
changes:
- '3'
- 5.0.0
- 5.3.0
label: Lightbulb
search:
terms:
- energy
- idea
- inspiration
- light
styles:
- duotone
unicode: f0eb
voted: false
list-alt:
changes:
- '1'
- 5.0.0
label: Alternate List
search:
terms:
- checklist
- completed
- done
- finished
- ol
- todo
- ul
styles:
- duotone
unicode: f022
voted: false
list-ul:
changes:
- '2'
- 5.0.0
- 5.9.0
label: list-ul
search:
terms:
- checklist
- completed
- done
- finished
- ol
- todo
- ul
styles:
- duotone
unicode: f0ca
voted: false
lock-alt:
changes:
- 5.0.0
label: Alternate Lock
search:
terms:
- admin
- lock
- open
- password
- private
- protect
- security
styles:
- duotone
unicode: f30d
voted: false
map-marker-alt:
changes:
- 5.0.0
label: Alternate Map Marker
search:
terms:
- address
- coordinates
- destination
- gps
- localize
- location
- map
- navigation
- paper
- pin
- place
- point of interest
- position
- route
- travel
styles:
- duotone
unicode: f3c5
voted: false
microsoft:
changes:
- 5.0.0
label: Microsoft
search:
terms: []
styles:
- brands
unicode: f3ca
voted: true
moon-stars:
changes:
- 5.5.0
label: Moon with Stars
search:
terms:
- clear
- crescent
- lunar
- space
- star
styles:
- duotone
unicode: f755
voted: false
network-wired:
changes:
- 5.4.0
label: Wired Network
search:
terms:
- computer
- connect
- ethernet
- internet
- intranet
styles:
- duotone
unicode: f6ff
voted: true
planet-ringed:
changes:
- 5.12.0
- 5.14.0
label: Ringed Planet
search:
terms:
- orbit
- saturn
- solar system
- space
- universe
styles:
- duotone
unicode: e020
voted: false
plus:
changes:
- '1'
- 5.0.0
- 5.0.13
label: plus
search:
terms:
- add
- create
- expand
- new
- positive
- shape
styles:
- regular
- solid
unicode: f067
voted: false
question-circle:
changes:
- '1'
- 5.0.0
label: Question Circle
search:
terms:
- help
- information
- support
- unknown
styles:
- duotone
- regular
unicode: f059
voted: false
quote-left:
changes:
- '3'
- 5.0.0
- 5.0.9
label: quote-left
search:
terms:
- mention
- note
- phrase
- text
- type
styles:
- duotone
unicode: f10d
voted: false
random:
changes:
- '1'
- 5.0.0
label: random
search:
terms:
- arrows
- shuffle
- sort
- swap
- switch
- transfer
styles:
- duotone
unicode: f074
voted: false
rev:
changes:
- 5.1.0
- 5.1.1
- 5.8.0
label: Rev.io
search:
terms: []
styles:
- brands
unicode: f5b2
voted: false
robot:
changes:
- 5.0.13
- 5.12.0
label: Robot
search:
terms:
- android
- automate
- computer
- cyborg
styles:
- solid
unicode: f544
voted: true
rocket:
changes:
- '3.1'
- 5.0.0
- 5.7.0
- 5.12.0
label: rocket
search:
terms:
- aircraft
- app
- jet
- launch
- nasa
- space
styles:
- duotone
- solid
- regular
unicode: f135
voted: false
save:
changes:
- '2'
- 5.0.0
- 5.10.2
label: Save
search:
terms:
- disk
- download
- floppy
- floppy-o
styles:
- solid
- regular
unicode: f0c7
voted: false
search:
changes:
- '1'
- 5.0.0
label: Search
search:
terms:
- bigger
- enlarge
- find
- magnify
- preview
- zoom
styles:
- duotone
unicode: f002
voted: false
server:
changes:
- '4.3'
- 5.0.0
label: Server
search:
terms:
- computer
- cpu
- database
- hardware
- network
styles:
- duotone
unicode: f233
voted: false
sign-out:
changes:
- '1'
- 5.0.0
label: Sign Out
search:
terms:
- arrow
- exit
- leave
- log out
- logout
styles:
- duotone
unicode: f08b
voted: false
siren-on:
changes:
- 5.12.0
- 5.14.0
label: Siren On
search:
terms:
- alarm
- alert
- ambulance
- loud
- police
- warning
styles:
- duotone
unicode: e02e
voted: false
slack:
changes:
- '4.1'
- 5.0.0
- 5.7.0
label: Slack Logo
search:
terms:
- anchor
- hash
- hashtag
styles:
- brands
unicode: f198
voted: false
slash:
changes:
- 5.4.0
label: Slash
search:
terms:
- cancel
- close
- mute
- 'off'
- stop
- x
styles:
- solid
- regular
unicode: f715
voted: true
smile:
changes:
- '3.1'
- 5.0.0
- 5.0.9
- 5.1.0
- 5.11.0
- 5.11.1
label: Smiling Face
search:
terms:
- approve
- emoticon
- face
- happy
- rating
- satisfied
styles:
- duotone
unicode: f118
voted: false
snowman:
changes:
- 5.6.0
label: Snowman
search:
terms:
- decoration
- frost
- frosty
- holiday
styles:
- duotone
unicode: f7d0
spinner-third:
changes:
- 5.0.0
- 5.10.2
label: Spinner Third
search:
terms:
- circle
- loading
- progress
styles:
- solid
unicode: f3f4
voted: false
square-full:
changes:
- 5.0.5
- 5.10.2
label: Square Full
search:
terms:
- block
- box
- shape
styles:
- solid
unicode: f45c
voted: false
sun:
changes:
- '3.2'
- 5.0.0
- 5.5.0
label: Sun
search:
terms:
- brighten
- contrast
- day
- lighter
- sol
- solar
- star
- weather
styles:
- duotone
unicode: f185
voted: false
tasks:
changes:
- '2'
- 5.0.0
- 5.9.0
label: Tasks
search:
terms:
- checklist
- downloading
- downloads
- loading
- progress
- project management
- settings
- to do
styles:
- duotone
unicode: f0ae
voted: false
times:
changes:
- '1'
- 5.0.0
- 5.0.13
- 5.11.0
- 5.11.1
label: Times
search:
terms:
- close
- cross
- error
- exit
- incorrect
- notice
- notification
- notify
- problem
- wrong
- x
styles:
- solid
- regular
unicode: f00d
voted: false
times-circle:
changes:
- '1'
- 5.0.0
label: Times Circle
search:
terms:
- close
- cross
- exit
- incorrect
- notice
- notification
- notify
- problem
- wrong
- x
styles:
- solid
unicode: f057
voted: false
twitter:
changes:
- '2'
- 5.0.0
label: Twitter
search:
terms:
- social network
- tweet
styles:
- brands
unicode: f099
voted: false
undo:
changes:
- '2'
- 5.0.0
label: Undo
search:
terms:
- back
- control z
- exchange
- oops
- return
- rotate
- swap
styles:
- solid
- regular
unicode: f0e2
voted: false
undo-alt:
changes:
- 5.0.0
label: Alternate Undo
search:
terms:
- back
- control z
- exchange
- oops
- return
- swap
styles:
- regular
- solid
unicode: f2ea
voted: false
university:
changes:
- '4.1'
- 5.0.0
- 5.0.3
- 5.11.0
- 5.11.1
label: University
search:
terms:
- bank
- building
- college
- higher education - students
- institution
styles:
- duotone
unicode: f19c
voted: false
user:
changes:
- '1'
- 5.0.0
- 5.0.3
- 5.0.11
label: User
search:
terms:
- account
- avatar
- head
- human
- man
- person
- profile
styles:
- solid
- duotone
- regular
unicode: f007
voted: false
user-friends:
changes:
- 5.0.11
label: User Friends
search:
terms:
- group
- people
- person
- team
- users
styles:
- regular
unicode: f500
voted: false
user-hard-hat:
changes:
- 5.7.0
label: Construction Worker
search:
terms:
- construction
- hardhat
- helmet
- safety
styles:
- duotone
unicode: f82c
voted: false
user-shield:
changes:
- 5.0.11
label: User Shield
search:
terms:
- admin
- person
- private
- protect
- safe
styles:
- duotone
unicode: f505
voted: false
users:
changes:
- '2'
- 5.0.0
- 5.0.3
- 5.0.11
label: Users
search:
terms:
- friends
- group
- people
- persons
- profiles
- team
styles:
- duotone
- solid
- regular
unicode: f0c0
voted: false
================================================
FILE: public/fonts/font-awesome/metadata/sponsors.yml
================================================
amazon-web-services:
icons:
- aws
label: Amazon Web Services
url: 'https://aws.amazon.com'
discourse:
icons:
- discourse
label: Discourse
url: 'https://discourse.org'
harvard-medical-school:
icons:
- plus
label: Harvard Medical School
url: 'https://hms.harvard.edu'
mylogin-info:
icons:
- user-shield
label: mylogin.info
url: 'https://www.mylogin.info'
rev-io:
icons:
- rev
label: Rev.io
url: 'https://rev.io'
rocket-chat:
icons:
- comment-dots
- quote-left
- smile
label: Rocket.Chat
url: 'https://rocket.chat'
supple:
icons:
- badge-check
label: Supple
url: 'https://supple.com.au'
the-us-sunnah-foundation:
icons:
- globe
label: The us-Sunnah Foundation
url: 'https://www.ussunnah.org'
================================================
FILE: public/fonts/font-awesome/otfs/README.md
================================================
A HEADS UP ABOUT DUOTONE ICONS ON THE DESKTOP
---------------------------------------------
Duotone icons are a bit different to use than other Font Awesome icons at the moment.
* We currently recommend using the Duotone-specific optimized .svg vector
files. These can be found in the /svgs/duotone folder of this download.
* Using Ligatures with Duotone Icons is NOT currently recommended - while we've
included a Duotone ligature-based font file in our Pro desktop download, we
can't recommend it as a way to use our icons on the desktop. Read the special
instructions for using duotones with ligatures here -
https://fontawesome.com/how-to-use/on-the-desktop/referencing-icons/duotone-icons#using-ligatures.
You can read the nitty gritty on the current limitations desktop apps have that
made our Duotone ligature implementation diferent there as well. And our full
Duotone Desktop docs are available at:
https://fontawesome.com/how-to-use/on-the-desktop/referencing-icons/duotone-icons.
================================================
FILE: public/fonts/font-awesome/scss/_animated.scss
================================================
// Animated Icons
// --------------------------
.#{$fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
================================================
FILE: public/fonts/font-awesome/scss/_bordered-pulled.scss
================================================
// Bordered & Pulled
// -------------------------
.#{$fa-css-prefix}-border {
border: solid .08em $fa-border-color;
border-radius: .1em;
padding: .2em .25em .15em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fab {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}
================================================
FILE: public/fonts/font-awesome/scss/_core.scss
================================================
// Base Class Definition
// -------------------------
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
%fa-icon {
@include fa-icon;
}
================================================
FILE: public/fonts/font-awesome/scss/_fixed-width.scss
================================================
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
text-align: center;
width: $fa-fw-width;
}
================================================
FILE: public/fonts/font-awesome/scss/_icons.scss
================================================
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.#{$fa-css-prefix}-abacus:before { content: fa-content($fa-var-abacus); }
.#{$fa-css-prefix}-alarm-exclamation:before { content: fa-content($fa-var-alarm-exclamation); }
.#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); }
.#{$fa-css-prefix}-align-slash:before { content: fa-content($fa-var-align-slash); }
.#{$fa-css-prefix}-atom-alt:before { content: fa-content($fa-var-atom-alt); }
.#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); }
.#{$fa-css-prefix}-badge-check:before { content: fa-content($fa-var-badge-check); }
.#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); }
.#{$fa-css-prefix}-book-dead:before { content: fa-content($fa-var-book-dead); }
.#{$fa-css-prefix}-books:before { content: fa-content($fa-var-books); }
.#{$fa-css-prefix}-brackets-curly:before { content: fa-content($fa-var-brackets-curly); }
.#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); }
.#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); }
.#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); }
.#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); }
.#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); }
.#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); }
.#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); }
.#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); }
.#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); }
.#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); }
.#{$fa-css-prefix}-chart-network:before { content: fa-content($fa-var-chart-network); }
.#{$fa-css-prefix}-chart-scatter:before { content: fa-content($fa-var-chart-scatter); }
.#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); }
.#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); }
.#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); }
.#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); }
.#{$fa-css-prefix}-clouds:before { content: fa-content($fa-var-clouds); }
.#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); }
.#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); }
.#{$fa-css-prefix}-concierge-bell:before { content: fa-content($fa-var-concierge-bell); }
.#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); }
.#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); }
.#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); }
.#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); }
.#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); }
.#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); }
.#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); }
.#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); }
.#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); }
.#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); }
.#{$fa-css-prefix}-fingerprint:before { content: fa-content($fa-var-fingerprint); }
.#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); }
.#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); }
.#{$fa-css-prefix}-globe-africa:before { content: fa-content($fa-var-globe-africa); }
.#{$fa-css-prefix}-globe-americas:before { content: fa-content($fa-var-globe-americas); }
.#{$fa-css-prefix}-globe-asia:before { content: fa-content($fa-var-globe-asia); }
.#{$fa-css-prefix}-globe-europe:before { content: fa-content($fa-var-globe-europe); }
.#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); }
.#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); }
.#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); }
.#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); }
.#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); }
.#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); }
.#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); }
.#{$fa-css-prefix}-key-skeleton:before { content: fa-content($fa-var-key-skeleton); }
.#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); }
.#{$fa-css-prefix}-laptop-code:before { content: fa-content($fa-var-laptop-code); }
.#{$fa-css-prefix}-laptop-house:before { content: fa-content($fa-var-laptop-house); }
.#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); }
.#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); }
.#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); }
.#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); }
.#{$fa-css-prefix}-lock-alt:before { content: fa-content($fa-var-lock-alt); }
.#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); }
.#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); }
.#{$fa-css-prefix}-moon-stars:before { content: fa-content($fa-var-moon-stars); }
.#{$fa-css-prefix}-network-wired:before { content: fa-content($fa-var-network-wired); }
.#{$fa-css-prefix}-planet-ringed:before { content: fa-content($fa-var-planet-ringed); }
.#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); }
.#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); }
.#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); }
.#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); }
.#{$fa-css-prefix}-rev:before { content: fa-content($fa-var-rev); }
.#{$fa-css-prefix}-robot:before { content: fa-content($fa-var-robot); }
.#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); }
.#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); }
.#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); }
.#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); }
.#{$fa-css-prefix}-sign-out:before { content: fa-content($fa-var-sign-out); }
.#{$fa-css-prefix}-siren-on:before { content: fa-content($fa-var-siren-on); }
.#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); }
.#{$fa-css-prefix}-slash:before { content: fa-content($fa-var-slash); }
.#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); }
.#{$fa-css-prefix}-snowman:before { content: fa-content($fa-var-snowman); }
.#{$fa-css-prefix}-spinner-third:before { content: fa-content($fa-var-spinner-third); }
.#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); }
.#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); }
.#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); }
.#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); }
.#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); }
.#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); }
.#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); }
.#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); }
.#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); }
.#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); }
.#{$fa-css-prefix}-user-friends:before { content: fa-content($fa-var-user-friends); }
.#{$fa-css-prefix}-user-hard-hat:before { content: fa-content($fa-var-user-hard-hat); }
.#{$fa-css-prefix}-user-shield:before { content: fa-content($fa-var-user-shield); }
.#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); }
================================================
FILE: public/fonts/font-awesome/scss/_larger.scss
================================================
// Icon Sizes
// -------------------------
// makes the font 33% larger relative to the icon container
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.#{$fa-css-prefix}-xs {
font-size: .75em;
}
.#{$fa-css-prefix}-sm {
font-size: .875em;
}
@for $i from 1 through 10 {
.#{$fa-css-prefix}-#{$i}x {
font-size: $i * 1em;
}
}
================================================
FILE: public/fonts/font-awesome/scss/_list.scss
================================================
// List Icons
// -------------------------
.#{$fa-css-prefix}-ul {
list-style-type: none;
margin-left: $fa-li-width * 5/4;
padding-left: 0;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
left: -$fa-li-width;
position: absolute;
text-align: center;
width: $fa-li-width;
line-height: inherit;
}
================================================
FILE: public/fonts/font-awesome/scss/_mixins.scss
================================================
// Mixins
// --------------------------
@mixin fa-icon {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
@mixin fa-icon-rotate($degrees, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
transform: scale($horiz, $vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
@mixin sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
@mixin sr-only-focusable {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}
================================================
FILE: public/fonts/font-awesome/scss/_rotated-flipped.scss
================================================
// Rotated & Flipped Icons
// -------------------------
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
.#{$fa-css-prefix}-flip-both, .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.#{$fa-css-prefix}-rotate-90,
.#{$fa-css-prefix}-rotate-180,
.#{$fa-css-prefix}-rotate-270,
.#{$fa-css-prefix}-flip-horizontal,
.#{$fa-css-prefix}-flip-vertical,
.#{$fa-css-prefix}-flip-both {
filter: none;
}
}
================================================
FILE: public/fonts/font-awesome/scss/_screen-reader.scss
================================================
// Screen Readers
// -------------------------
.sr-only { @include sr-only; }
.sr-only-focusable { @include sr-only-focusable; }
================================================
FILE: public/fonts/font-awesome/scss/_stacked.scss
================================================
// Stacked Icons
// -------------------------
.#{$fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: ($fa-fw-width*2);
}
.#{$fa-css-prefix}-stack-1x,
.#{$fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.#{$fa-css-prefix}-stack-1x {
line-height: inherit;
}
.#{$fa-css-prefix}-stack-2x {
font-size: 2em;
}
.#{$fa-css-prefix}-inverse {
color: $fa-inverse;
}
================================================
FILE: public/fonts/font-awesome/scss/_variables.scss
================================================
// Variables
// --------------------------
$fa-font-path: "../webfonts" !default;
$fa-font-size-base: 16px !default;
$fa-font-display: block !default;
$fa-css-prefix: fa !default;
$fa-version: "5.15.4" !default;
$fa-border-color: #eee !default;
$fa-inverse: #fff !default;
$fa-li-width: 2em !default;
$fa-fw-width: (20em / 16);
$fa-primary-opacity: 1 !default;
$fa-secondary-opacity: .4 !default;
// Convenience function used to set content property
@function fa-content($fa-var) {
@return unquote("\"#{ $fa-var }\"");
}
$fa-var-abacus: \f640;
$fa-var-alarm-exclamation: \f843;
$fa-var-align-left: \f036;
$fa-var-align-slash: \f846;
$fa-var-atom-alt: \f5d3;
$fa-var-aws: \f375;
$fa-var-badge-check: \f336;
$fa-var-bell: \f0f3;
$fa-var-book-dead: \f6b7;
$fa-var-books: \f5db;
$fa-var-brackets-curly: \f7ea;
$fa-var-cc-amazon-pay: \f42d;
$fa-var-cc-amex: \f1f3;
$fa-var-cc-apple-pay: \f416;
$fa-var-cc-diners-club: \f24c;
$fa-var-cc-discover: \f1f2;
$fa-var-cc-jcb: \f24b;
$fa-var-cc-mastercard: \f1f1;
$fa-var-cc-paypal: \f1f4;
$fa-var-cc-stripe: \f1f5;
$fa-var-cc-visa: \f1f0;
$fa-var-chart-network: \f78a;
$fa-var-chart-scatter: \f7ee;
$fa-var-check: \f00c;
$fa-var-check-circle: \f058;
$fa-var-circle: \f111;
$fa-var-cloud: \f0c2;
$fa-var-clouds: \f744;
$fa-var-cogs: \f085;
$fa-var-comment-dots: \f4ad;
$fa-var-concierge-bell: \f562;
$fa-var-credit-card: \f09d;
$fa-var-desktop: \f108;
$fa-var-discourse: \f393;
$fa-var-docker: \f395;
$fa-var-dot-circle: \f192;
$fa-var-envelope: \f0e0;
$fa-var-exchange-alt: \f362;
$fa-var-eye: \f06e;
$fa-var-file-alt: \f15c;
$fa-var-file-code: \f1c9;
$fa-var-fingerprint: \f577;
$fa-var-github: \f09b;
$fa-var-globe: \f0ac;
$fa-var-globe-africa: \f57c;
$fa-var-globe-americas: \f57d;
$fa-var-globe-asia: \f57e;
$fa-var-globe-europe: \f7a2;
$fa-var-graduation-cap: \f19d;
$fa-var-history: \f1da;
$fa-var-home: \f015;
$fa-var-info: \f129;
$fa-var-info-circle: \f05a;
$fa-var-instagram: \f16d;
$fa-var-key: \f084;
$fa-var-key-skeleton: \f6f3;
$fa-var-laptop: \f109;
$fa-var-laptop-code: \f5fc;
$fa-var-laptop-house: \e066;
$fa-var-life-ring: \f1cd;
$fa-var-lightbulb: \f0eb;
$fa-var-list-alt: \f022;
$fa-var-list-ul: \f0ca;
$fa-var-lock-alt: \f30d;
$fa-var-map-marker-alt: \f3c5;
$fa-var-microsoft: \f3ca;
$fa-var-moon-stars: \f755;
$fa-var-network-wired: \f6ff;
$fa-var-planet-ringed: \e020;
$fa-var-plus: \f067;
$fa-var-question-circle: \f059;
$fa-var-quote-left: \f10d;
$fa-var-random: \f074;
$fa-var-rev: \f5b2;
$fa-var-robot: \f544;
$fa-var-rocket: \f135;
$fa-var-save: \f0c7;
$fa-var-search: \f002;
$fa-var-server: \f233;
$fa-var-sign-out: \f08b;
$fa-var-siren-on: \e02e;
$fa-var-slack: \f198;
$fa-var-slash: \f715;
$fa-var-smile: \f118;
$fa-var-snowman: \f7d0;
$fa-var-spinner-third: \f3f4;
$fa-var-square-full: \f45c;
$fa-var-sun: \f185;
$fa-var-tasks: \f0ae;
$fa-var-times: \f00d;
$fa-var-times-circle: \f057;
$fa-var-twitter: \f099;
$fa-var-undo: \f0e2;
$fa-var-undo-alt: \f2ea;
$fa-var-university: \f19c;
$fa-var-user: \f007;
$fa-var-user-friends: \f500;
$fa-var-user-hard-hat: \f82c;
$fa-var-user-shield: \f505;
$fa-var-users: \f0c0;
================================================
FILE: public/fonts/font-awesome/scss/brands.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-brands-400.eot');
src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/scss/duotone.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Duotone';
font-style: normal;
font-weight: 900;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-duotone-900.eot');
src: url('#{$fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-duotone-900.woff2') format('woff2'),
url('#{$fa-font-path}/fa-duotone-900.woff') format('woff'),
url('#{$fa-font-path}/fa-duotone-900.ttf') format('truetype'),
url('#{$fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg');
}
.fad {
position: relative;
font-family: 'Font Awesome 5 Duotone';
font-weight: 900;
}
.fad:before {
position: absolute;
color: var(--#{$fa-css-prefix}-primary-color, inherit);
opacity: $fa-primary-opacity;
opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity});
}
.fad:after {
color: var(--#{$fa-css-prefix}-secondary-color, inherit);
opacity: $fa-secondary-opacity;
opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity});
}
.#{$fa-css-prefix}-swap-opacity .fad:before,
.fad.#{$fa-css-prefix}-swap-opacity:before {
opacity: $fa-secondary-opacity;
opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity});
}
.#{$fa-css-prefix}-swap-opacity .fad:after,
.fad.#{$fa-css-prefix}-swap-opacity:after {
opacity: $fa-primary-opacity;
opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity});
}
.fad.#{$fa-css-prefix}-inverse {
color: $fa-inverse;
}
.fad.#{$fa-css-prefix}-stack-1x, .fad.#{$fa-css-prefix}-stack-2x {
position: absolute;
}
.fad.#{$fa-css-prefix}-stack-1x:before,
.fad.#{$fa-css-prefix}-stack-2x:before,
.fad.#{$fa-css-prefix}-fw:before {
left: 50%;
transform: translateX(-50%);
}
.fad.#{$fa-css-prefix}-abacus:after { content: fa-content(\10f640); }
.fad.#{$fa-css-prefix}-align-slash:after { content: fa-content(\10f846); }
.fad.#{$fa-css-prefix}-atom-alt:after { content: fa-content(\10f5d3); }
.fad.#{$fa-css-prefix}-badge-check:after { content: fa-content(\10f336); }
.fad.#{$fa-css-prefix}-bell:after { content: fa-content(\10f0f3); }
.fad.#{$fa-css-prefix}-books:after { content: fa-content(\10f5db); }
.fad.#{$fa-css-prefix}-brackets-curly:after { content: fa-content(\10f7ea); }
.fad.#{$fa-css-prefix}-chart-network:after { content: fa-content(\10f78a); }
.fad.#{$fa-css-prefix}-chart-scatter:after { content: fa-content(\10f7ee); }
.fad.#{$fa-css-prefix}-check:after { content: fa-content(\10f00c); }
.fad.#{$fa-css-prefix}-circle:after { content: fa-content(\10f111); }
.fad.#{$fa-css-prefix}-clouds:after { content: fa-content(\10f744); }
.fad.#{$fa-css-prefix}-cogs:after { content: fa-content(\10f085); }
.fad.#{$fa-css-prefix}-comment-dots:after { content: fa-content(\10f4ad); }
.fad.#{$fa-css-prefix}-concierge-bell:after { content: fa-content(\10f562); }
.fad.#{$fa-css-prefix}-dot-circle:after { content: fa-content(\10f192); }
.fad.#{$fa-css-prefix}-envelope:after { content: fa-content(\10f0e0); }
.fad.#{$fa-css-prefix}-exchange-alt:after { content: fa-content(\10f362); }
.fad.#{$fa-css-prefix}-file-alt:after { content: fa-content(\10f15c); }
.fad.#{$fa-css-prefix}-file-code:after { content: fa-content(\10f1c9); }
.fad.#{$fa-css-prefix}-globe:after { content: fa-content(\10f0ac); }
.fad.#{$fa-css-prefix}-globe-africa:after { content: fa-content(\10f57c); }
.fad.#{$fa-css-prefix}-globe-americas:after { content: fa-content(\10f57d); }
.fad.#{$fa-css-prefix}-globe-asia:after { content: fa-content(\10f57e); }
.fad.#{$fa-css-prefix}-globe-europe:after { content: fa-content(\10f7a2); }
.fad.#{$fa-css-prefix}-graduation-cap:after { content: fa-content(\10f19d); }
.fad.#{$fa-css-prefix}-history:after { content: fa-content(\10f1da); }
.fad.#{$fa-css-prefix}-key:after { content: fa-content(\10f084); }
.fad.#{$fa-css-prefix}-key-skeleton:after { content: fa-content(\10f6f3); }
.fad.#{$fa-css-prefix}-laptop:after { content: fa-content(\10f109); }
.fad.#{$fa-css-prefix}-laptop-code:after { content: fa-content(\10f5fc); }
.fad.#{$fa-css-prefix}-laptop-house:after { content: fa-content(\10e066); }
.fad.#{$fa-css-prefix}-life-ring:after { content: fa-content(\10f1cd); }
.fad.#{$fa-css-prefix}-lightbulb:after { content: fa-content(\10f0eb); }
.fad.#{$fa-css-prefix}-list-alt:after { content: fa-content(\10f022); }
.fad.#{$fa-css-prefix}-list-ul:after { content: fa-content(\10f0ca); }
.fad.#{$fa-css-prefix}-lock-alt:after { content: fa-content(\10f30d); }
.fad.#{$fa-css-prefix}-map-marker-alt:after { content: fa-content(\10f3c5); }
.fad.#{$fa-css-prefix}-moon-stars:after { content: fa-content(\10f755); }
.fad.#{$fa-css-prefix}-network-wired:after { content: fa-content(\10f6ff); }
.fad.#{$fa-css-prefix}-planet-ringed:after { content: fa-content(\10e020); }
.fad.#{$fa-css-prefix}-question-circle:after { content: fa-content(\10f059); }
.fad.#{$fa-css-prefix}-quote-left:after { content: fa-content(\10f10d); }
.fad.#{$fa-css-prefix}-random:after { content: fa-content(\10f074); }
.fad.#{$fa-css-prefix}-rocket:after { content: fa-content(\10f135); }
.fad.#{$fa-css-prefix}-search:after { content: fa-content(\10f002); }
.fad.#{$fa-css-prefix}-server:after { content: fa-content(\10f233); }
.fad.#{$fa-css-prefix}-sign-out:after { content: fa-content(\10f08b); }
.fad.#{$fa-css-prefix}-siren-on:after { content: fa-content(\10e02e); }
.fad.#{$fa-css-prefix}-smile:after { content: fa-content(\10f118); }
.fad.#{$fa-css-prefix}-snowman:after { content: fa-content(\10f7d0); }
.fad.#{$fa-css-prefix}-sun:after { content: fa-content(\10f185); }
.fad.#{$fa-css-prefix}-tasks:after { content: fa-content(\10f0ae); }
.fad.#{$fa-css-prefix}-university:after { content: fa-content(\10f19c); }
.fad.#{$fa-css-prefix}-user:after { content: fa-content(\10f007); }
.fad.#{$fa-css-prefix}-user-hard-hat:after { content: fa-content(\10f82c); }
.fad.#{$fa-css-prefix}-user-shield:after { content: fa-content(\10f505); }
.fad.#{$fa-css-prefix}-users:after { content: fa-content(\10f0c0); }
================================================
FILE: public/fonts/font-awesome/scss/fontawesome.scss
================================================
@import 'variables';
@import 'mixins';
@import 'core';
@import 'larger';
@import 'fixed-width';
@import 'list';
@import 'bordered-pulled';
@import 'animated';
@import 'rotated-flipped';
@import 'stacked';
@import 'icons';
@import 'screen-reader';
================================================
FILE: public/fonts/font-awesome/scss/regular.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-regular-400.eot');
src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}
================================================
FILE: public/fonts/font-awesome/scss/solid.scss
================================================
@import 'variables';
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: $fa-font-display;
src: url('#{$fa-font-path}/fa-solid-900.eot');
src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}
================================================
FILE: public/fonts/fonts.css
================================================
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url('./material-icons.ttf') format('truetype');
}
@font-face {
font-family: 'Material Icons Outlined';
font-style: normal;
font-weight: 400;
src: url('./material-icons-outlined.otf') format('opentype');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 100;
src: url('./roboto-100.ttf') format('truetype');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url('./roboto-300.ttf') format('truetype');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url('./roboto-400.ttf') format('truetype');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url('./roboto-500.ttf') format('truetype');
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url('./roboto-700.ttf') format('truetype');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
}
.material-icons-outlined {
font-family: 'Material Icons Outlined';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
}
================================================
FILE: public/index.html
================================================
Prefect
We're sorry but the Prefect UI doesn't work properly without JavaScript
enabled. Please enable it to continue.
================================================
FILE: public/settings.json
================================================
{
"server_url": "PREFECT_SERVER__APOLLO_URL",
"base_url": "PREFECT_SERVER__BASE_URL"
}
================================================
FILE: public/site.webmanifest
================================================
{
"name": "Prefect",
"short_name": "Prefect",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
================================================
FILE: requirements.txt
================================================
prefect == 0.12.4
================================================
FILE: runtime.txt
================================================
3.8
================================================
FILE: src/App.vue
================================================
{{ error }}
================================================
FILE: src/__mocks__/apollo.js
================================================
/* global jest */
export const query = jest.fn()
export const mutate = jest.fn()
export const Client = jest.fn(() => {
return {
query: query,
mutate: mutate
}
})
export default Client
================================================
FILE: src/apollo.js
================================================
import { ApolloClient } from '@apollo/client/core'
import { HttpLink, from } from '@apollo/client'
import { onError } from 'apollo-link-error'
import { InMemoryCache } from 'apollo-cache-inmemory'
const cache = new InMemoryCache()
const errorAfterware = onError(
({ response, operation, graphQLErrors, networkError, forward }) => {
if (process.env.NODE_ENV !== 'production') {
/* eslint-disable no-console */
console.groupCollapsed(
`%c${operation.operationName || 'Unnamed Query'} error`,
'color: #D64292; font-weight:bold;'
)
console.log('Operation: ', operation)
if (graphQLErrors?.length > 0) {
console.group('%cGraphQL Errors', 'color: #CA9800; font-weight:bold;')
graphQLErrors?.forEach(error => {
console.group(
`%c${error.extensions?.code || 'ERROR'}`,
'color: #B11A04; font-weight:bold;'
)
console.log(`Message: ${error.message}`)
console.log('Full log: ', error)
console.groupEnd()
})
console.groupEnd()
}
if (networkError) {
console.group('%cNetwork Error', 'color: #CA9800; font-weight:bold;')
console.log(networkError)
console.log(response)
console.log(graphQLErrors)
console.groupEnd()
}
console.groupEnd()
/* eslint-enable no-console */
}
if (response) {
response.errors = null
}
// Can return Observable.of returned from error link to supress errors
// otherwise return forward(operation)
// for a single retry of the failure
// if (process.env.NODE_ENV !== 'production') return Observable.of()
return forward(operation)
}
)
const link = from([
errorAfterware,
new HttpLink({ uri: process.env.VUE_APP_CLOUD_URL })
])
const options = {
cache: cache,
link: link,
queryDeduplication: false,
defaultOptions: {
mutate: {
errorPolicy: 'all'
}
}
}
// // Create apollo client
export const Client = name =>
new ApolloClient({
name: name,
version: '1.3',
...options
})
================================================
FILE: src/app.js
================================================
// Base imports
import Vue from 'vue'
import vuetify from '@/plugins/vuetify'
import Router from 'vue-router'
import App from '@/App.vue'
// Plugins
import store from '@/store'
import { defaultApolloProvider } from '@/vue-apollo'
// eslint-disable-next-line
// import okta from '@/plugins/okta'
import { createRouter } from '@/router'
import VueMeta from 'vue-meta'
import LogRocket from 'logrocket'
// Filters
import duration from '@/filters/duration'
import {
roundWhole,
roundTenths,
roundHundredths,
roundThousandths,
roundTens,
roundHundreds,
roundThousands
} from '@/filters/round'
import shorten from '@/filters/shorten'
import filterOnePercent from '@/filters/filterOnePercent'
import { insertedActions, updatedActions } from '@/directives/disable-read-only'
// Functional Components
import TransitionHeight from '@/components/Functional/Transition-Height'
import TruncatedSpan from '@/components/Functional/TruncatedSpan'
import GetCloud from '@/components/GetCloud'
import '@/styles/atelier-sulphurpool-light.scss'
// Prefect icon font
import '@/assets/fonts/prefect-icons/style.scss'
// Global and functional styles
import '@/styles/global.scss'
Vue.config.productionTip = false
Vue.config.devtools = true
Vue.config.performance = true
if (
process.env.VUE_APP_ENVIRONMENT == 'staging' ||
process.env.VUE_APP_ENVIRONMENT == 'dev'
) {
Vue.config.devtools = true
Vue.config.performance = true
}
Vue.directive('disable-read-only-user', {
inserted: (el, binding) => insertedActions(el, binding),
update: (el, binding) => updatedActions(el, binding)
})
// Router
Vue.use(Router)
// Meta data plugin
Vue.use(VueMeta, {
refreshOnceOnNavigation: true,
debounceWait: 500
})
Vue.prototype.$globalApolloQueries = {}
// Vue Global Error Handler
Vue.config.errorHandler = function(error, vm, trace) {
if (error?.message?.includes("'_observe'")) return
if (process.env.NODE_ENV === 'development')
// eslint-disable-next-line no-console
console.log('Vue Global Error Handler', { error, vm, trace })
LogRocket.captureException(error)
LogRocket.log('Related to error', vm, error)
}
Vue.config.warnHandler = function(error, vm, trace) {
if (error?.message?.includes("'_observe'")) return
if (process.env.NODE_ENV === 'development')
// eslint-disable-next-line no-console
console.log('Vue Global Warn Handler', { error, vm, trace })
}
// Catch the rest
window.onerror = function(error) {
if (process.env.NODE_ENV === 'development')
// eslint-disable-next-line no-console
console.log('Window Error Handler', error)
LogRocket.captureException(error)
}
// Add Filters
Vue.filter('duration', duration)
Vue.filter('shorten', shorten)
Vue.filter('filterOnePercent', filterOnePercent)
Vue.filter('roundWhole', roundWhole)
Vue.filter('roundTenths', roundTenths)
Vue.filter('roundHundredths', roundHundredths)
Vue.filter('roundThousandths', roundThousandths)
Vue.filter('roundTens', roundTens)
Vue.filter('roundHundreds', roundHundreds)
Vue.filter('roundThousands', roundThousands)
Vue.component('HeightTransition', TransitionHeight)
Vue.component('Truncate', TruncatedSpan)
Vue.component('GetCloud', GetCloud)
// This is a global mixin used to clean up any
// references a component may have after it's destroyed.
// It's a pretty heavy-handed approach to what we're trying
// to accomplish but Vue doesn't seem to be removing all references
// itself, which is leading to large memory leaks on data-heavy pages
// as Apollo polls and when navigating between pages.
// This could be more elegant and may be fixed by upgrading to Vue 3.
const blockedProps = [
'$data',
'$listeners',
'theme',
'$attrs',
'$props',
'timeline',
'windowGroup',
'expansionPanel',
'expansionPanels',
'tabsBar',
'listItemGroup',
'btnToggle'
]
Vue.mixin({
destroyed() {
const prepForGC = () => {
try {
this.$el?.remove()
this.elm = null
this.$el = null
this.parent = null
this.$parent = null
this.data = null
// this.$data = null // Unsetting this throws internal Vue errors
// this.options = null // Unsetting this throws internal Vue errors
this.$options = null
this.$vnode = null
this.listeners = null
// this.$listeners = null // Unsetting this throws internal Vue errors
this._vnode = null
this._watcher = null
this._watchers = null
this._computedWatchers = null
this.$slots = null
this.slots = null
this.$scopedSlots = null
this.scopedSlots = null
this.$children = null
this.children = null
this.store = null
this.$store = null
// $apollo has no setter so we clear props instead
if (this.$apollo) {
this.$apollo.vm = null
}
Object.keys(this).forEach(key => {
try {
!blockedProps.includes(key) &&
!(key in this[key]?.$props) &&
(this[key] = null)
} catch {
/* */
}
})
} catch (e) {
if (
process.env.VUE_APP_ENVIRONMENT == 'staging' ||
process.env.VUE_APP_ENVIRONMENT == 'dev'
) {
// eslint-disable-next-line no-console
console.error('Error in destroyed garbage collector mixin', e)
}
}
}
// If the element has already been removed from the DOM
// we run the GC prep method immediately
if (!document.body.contains(this.$el)) {
prepForGC()
return
}
// Otherwise we can assume there's some sort of transition
// on the component and we wait for it to complete
// Note: this is obviously rough but Observer methods
// were performing poorly.
setTimeout(prepForGC, 1500)
}
})
try {
if (navigator?.platform !== 'MacIntel') {
document.body.classList.add('not-mac')
}
} catch {
// eslint-disable-next-line no-console
console.info('Unable to apply platform-specific scrollbar styles.')
}
// eslint-disable-next-line no-unused-vars
let PrefectUI
export const CreatePrefectUI = () => {
try {
if (
process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID &&
process.env.VUE_APP_BACKEND === 'CLOUD' &&
store.getters['auth/user']
) {
LogRocket.identify(store.getters['auth/user'].sub, {
name: store.getters['auth/user'].user.fullName,
email: store.getters['auth/user'].email
})
}
} catch (e) {
// eslint-disable-next-line no-console
console.log(e)
}
const loader = document.querySelector('div.loading')
loader.style.display = 'none'
// eslint-disable-next-line no-unused-vars
PrefectUI = new Vue({
vuetify,
router: createRouter(),
store,
publicPath: './',
apolloProvider: defaultApolloProvider,
render: h => h(App)
}).$mount('#app')
}
================================================
FILE: src/assets/demo-flow/demo-flow.json
================================================
{
"name": "Welcome Flow",
"type": "prefect.core.flow.Flow",
"schedule": null,
"parameters": [],
"tasks": [
{
"name": "Welcome",
"retry_delay": null,
"type": "prefect.tasks.core.function.FunctionTask",
"inputs": {},
"max_retries": 0,
"skip_on_upstream_skip": true,
"outputs": "typing.Any",
"trigger": {
"fn": "prefect.triggers.all_successful",
"kwargs": {}
},
"cache_key": null,
"slug": "welcome-task",
"tags": [],
"auto_generated": false,
"cache_for": null,
"cache_validator": {
"fn": "prefect.engine.cache_validators.never_use",
"kwargs": {}
},
"timeout": null,
"__version__": "0.6.1+310.gc1dc5c0a"
}
],
"edges": [],
"reference_tasks": [],
"environment": {
"executor": "prefect.engine.executors.LocalExecutor",
"executor_kwargs": {},
"__version__": "0.6.1+310.gc1dc5c0a",
"type": "RemoteEnvironment"
},
"__version__": "0.6.1+310.gc1dc5c0a",
"storage": {
"prefect_version": "master",
"image_name": "flows",
"registry_url": "prefecthq",
"image_tag": "welcome-flow",
"flows": {
"Welcome Flow": "/root/.prefect/welcome-flow.prefect"
},
"__version__": "0.6.1+310.gc1dc5c0a",
"type": "Docker"
}
}
================================================
FILE: src/assets/fonts/prefect-icons/style.scss
================================================
@import 'variables';
@font-face {
font-display: block;
font-family: '#{$prefect-font-family}';
font-style: normal;
font-weight: normal;
// stylelint-disable
src: url('#{$prefect-font-path}/#{$prefect-font-family}.eot?higzvn');
src: url('#{$prefect-font-path}/#{$prefect-font-family}.eot?higzvn#iefix')
format('embedded-opentype'),
url('#{$prefect-font-path}/#{$prefect-font-family}.ttf?higzvn')
format('truetype'),
url('#{$prefect-font-path}/#{$prefect-font-family}.woff?higzvn')
format('woff'),
url('#{$prefect-font-path}/#{$prefect-font-family}.svg?higzvn##{$prefect-font-family}')
format('svg');
// stylelint-enable
}
[class^='pi-'],
[class*=' pi-'] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: '#{$prefect-font-family}' !important;
font-size: 24px;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1rem;
text-transform: none;
}
// stylelint-disable a11y/content-property-no-static-value
.pi-agent {
&::before {
content: $pi-agent;
}
}
.pi-flow-run {
&::before {
content: $pi-flow-run;
}
}
.pi-flow {
&::before {
content: $pi-flow;
}
}
.pi-gantt {
&::before {
content: $pi-gantt;
}
}
.pi-project {
&::before {
content: $pi-project;
}
}
.pi-kubernetes {
&::before {
content: $pi-kubernetes;
}
}
.pi-schematic {
&::before {
content: $pi-schematic;
}
}
.pi-task-run {
&::before {
content: $pi-task-run;
}
}
.pi-task {
&::before {
content: $pi-task;
}
}
.pi-lg {
font-size: 1.33333em !important;
line-height: 0.75em;
vertical-align: -0.0667em;
}
.pi-xs {
font-size: 0.75em !important;
}
.pi-sm {
font-size: 0.875em !important;
}
.pi-1x {
font-size: 1em !important;
}
.pi-2x {
font-size: 2em !important;
}
.pi-3x {
font-size: 3em !important;
}
.pi-4x {
font-size: 4em !important;
}
.pi-5x {
font-size: 5em !important;
}
.pi-6x {
font-size: 6em !important;
}
.pi-7x {
font-size: 7em !important;
}
.pi-8x {
font-size: 8em !important;
}
.pi-9x {
font-size: 9em;
}
.pi-10x {
font-size: 10em !important;
}
.pi-fw {
display: inline-block;
height: 1em;
text-align: center;
vertical-align: -0.25em;
width: 1.25em;
}
================================================
FILE: src/assets/fonts/prefect-icons/variables.scss
================================================
$prefect-font-family: 'prefect-icons' !default;
$prefect-font-path: 'fonts' !default;
$pi-agent: '\e900';
$pi-flow-run: '\e901';
$pi-flow: '\e902';
$pi-gantt: '\e903';
$pi-kubernetes: '\e908';
$pi-project: '\e904';
$pi-schematic: '\e905';
$pi-task-run: '\e906';
$pi-task: '\e907';
================================================
FILE: src/auth/authentication.js
================================================
import { OktaAuth } from '@okta/okta-auth-js'
const {
VUE_APP_PUBLIC_CLIENT_ID,
VUE_APP_PUBLIC_ISSUER,
VUE_APP_ENVIRONMENT
} = process.env
const storageTypes = ['memory', 'sessionStorage', 'cookie', 'localStorage']
export const authClient = new OktaAuth({
clientId: VUE_APP_PUBLIC_CLIENT_ID,
issuer: VUE_APP_PUBLIC_ISSUER,
redirectUri: window.location.origin,
postLogoutRedirectUri: window.location.origin + '/logout',
scopes: ['openid', 'profile', 'email'],
testing: {
disableHttpsCheck: VUE_APP_ENVIRONMENT !== 'production'
},
tokenManager: {
autoRenew: true
},
pkce: OktaAuth.features.isPKCESupported(),
storageManager: {
token: {
storageType: 'memory',
storageTypes: storageTypes,
useMultipleCookies: true
},
cache: {
storageType: 'memory',
storageTypes: storageTypes
},
transaction: {
storageType: 'sessionStorage',
storageTypes: storageTypes
}
}
})
authClient.start()
export const authenticate = async () => {
const isLoginRedirect = await authClient.isLoginRedirect()
const redirectRoute = sessionStorage.getItem('redirectRoute')
if (isLoginRedirect) {
const { tokens } = await authClient.token.parseFromUrl()
authClient.tokenManager.setTokens(tokens)
if (redirectRoute) {
history.replaceState(null, null, redirectRoute)
sessionStorage.removeItem('redirectRoute')
}
return tokens
} else {
if (window.location?.pathname && !redirectRoute) {
sessionStorage.setItem(
'redirectRoute',
window.location.pathname + window.location.search
)
}
}
const tokens = await authClient.tokenManager.getTokens()
if (tokens?.idToken) {
if (authClient.tokenManager.hasExpired(tokens.idToken)) {
try {
const idToken = await authClient.tokenManager.renew('idToken')
tokens.idToken = idToken
} catch {
return await authClient.token.getWithRedirect({
responseType: ['token', 'id_token']
})
}
}
return tokens
}
await authClient.token.getWithRedirect({
responseType: ['token', 'id_token']
})
}
================================================
FILE: src/auth/authorization.js
================================================
import { Client } from '@/apollo.js'
const client = Client('authorization')
const headers = {
'X-PREFECT-UI': true,
'X-Backend': 'cloud'
}
export const authorize = async idToken => {
if (!idToken) {
throw new Error('No ID token passed to authorize')
}
const res = await client.mutate({
mutation: require('@/graphql/log-in.gql'),
variables: {
input: { id_token: idToken }
},
context: {
headers: headers
},
errorPolicy: 'all',
fetchPolicy: 'no-cache'
})
return res?.data?.log_in
}
export const refreshTokens = async (accessToken, refreshToken) => {
if (!accessToken || !refreshToken) {
throw new Error('No access or refresh token passed to refreshTokens')
}
const res = await client.mutate({
mutation: require('@/graphql/refresh-token.gql'),
variables: {
input: { access_token: accessToken }
},
context: {
headers: {
...headers,
authorization: `Bearer ${refreshToken}`
}
},
fetchPolicy: 'no-cache'
})
return res?.data?.refresh_token
}
export const authorizeTenant = async (accessToken, tenantId) => {
if (!accessToken || !tenantId) {
throw new Error('No access token or no tenant id passed to authorizeTenant')
}
const res = await client.mutate({
mutation: require('@/graphql/Tenant/tenant-token.gql'),
variables: {
tenantId: tenantId
},
context: {
headers: {
...headers,
authorization: `Bearer ${accessToken}`
}
},
fetchPolicy: 'no-cache'
})
return res?.data?.switch_tenant
}
export const revokeTokens = async (accessToken, refreshToken) => {
if (!accessToken) {
throw new Error('No access token passed to revokeToken')
}
const res = await client.mutate({
mutation: require('@/graphql/log-out.gql'),
variables: {
input: { access_token: accessToken }
},
context: {
headers: {
...headers,
authorization: `Bearer ${refreshToken}`
}
},
errorPolicy: 'all',
fetchPolicy: 'no-cache'
})
return res?.data?.success
}
================================================
FILE: src/auth/index.js
================================================
import { promiseChannel } from '@/workers/util/worker-interface.js'
import { authenticate, authClient } from '@/auth/authentication.js'
import {
authorize,
authorizeTenant,
refreshTokens,
revokeTokens
} from '@/auth/authorization.js'
import store from '@/store'
import LogRocket from 'logrocket'
import jwt_decode from 'jwt-decode'
let TokenWorker
if (typeof window.SharedWorker !== 'undefined') {
// // Initializes the shared service worker that handles token refresh
TokenWorker = new SharedWorker('@/workers/auth.worker.js', {
type: 'module'
})
} else {
// eslint-disable-next-line no-console
console.log(
"Shared service worker couldn't be registered, falling back to legacy auth pattern."
)
// workers aren't supported; we'll fall back to the legacy auth pattern
}
if (TokenWorker?.port) {
TokenWorker.port.onmessage = async e => {
const type = e.data?.type
const payload = e.data?.payload
// console.log(type, payload)
switch (type) {
case 'idToken':
commitTokens({ idToken: payload })
break
case 'authorizationToken':
commitTokens({ authorizationTokens: payload })
break
case 'clear':
authClient.tokenManager.clear()
unsetTokens()
authClient.signOut()
break
case 'logout':
authClient.signOut()
unsetTokens()
break
case 'switch-tenant':
if (
store.getters['tenant/tenant']?.id !== payload.tenantId &&
!store.getters['tenant/isLoadingTenant'] &&
!window.location.pathname?.includes('team-switched')
) {
window.location.href = '/team-switched'
} else {
if (process.env.VUE_APP_BACKEND === 'CLOUD') {
store.dispatch('license/getLicense')
}
}
break
case 'accessDenied':
await authClient.signOut({
clientId: process.env.VUE_APP_PUBLIC_CLIENT_ID,
idToken: payload,
postLogoutRedirectUri:
window.location.origin + '/access-denied?reason=invalid_sso'
})
break
case 'console':
// This should only be used for debugging
// eslint-disable-next-line no-console
// console.log('TokenWorker console', payload)
LogRocket.track('TokenWorker console', payload)
break
case 'error':
// eslint-disable-next-line no-console
console.log('TokenWorker error', payload)
LogRocket.captureException(payload)
break
default:
// This should only be used for debugging
// eslint-disable-next-line no-console
// console.log('default', payload)
LogRocket.track('TokenWorker Message', payload)
break
}
}
TokenWorker.onerror = e => {
// eslint-disable-next-line no-console
console.log('Error message received from Token Worker', e)
LogRocket.captureException(e)
}
TokenWorker.port.start()
}
export { TokenWorker }
export const commitTokens = tokens => {
if (!tokens) return
if (tokens.idToken) {
const idToken = tokens.idToken
store.commit('auth/idToken', idToken.idToken)
store.commit('auth/idTokenExpiry', idToken.expiresAt * 1000)
store.commit('auth/user', idToken.claims)
store.commit('user/setOktaUser', idToken.claims)
}
if (tokens.authorizationTokens) {
const authToken = tokens.authorizationTokens.access_token
const expiry = new Date(tokens.authorizationTokens.expires_at).getTime()
const refreshToken = tokens.authorizationTokens.refresh_token
store.commit('auth/authorizationToken', authToken)
store.commit('auth/refreshToken', refreshToken)
store.commit('auth/authorizationTokenExpiry', expiry)
store.commit('auth/refreshTokenExpiry', jwt_decode(refreshToken).exp * 1000)
}
}
export const unsetTokens = () => {
store.commit('auth/unsetIdToken')
store.commit('auth/unsetIdTokenExpiry')
store.commit('auth/unsetUser')
store.commit('auth/unsetAuthorizationToken')
store.commit('auth/unsetAuthorizationTokenExpiry')
store.commit('auth/unsetRefreshToken')
store.commit('auth/unsetRefreshTokenExpiry')
}
let refreshTimeout
const refresh = tokens => {
clearTimeout(refreshTimeout)
const expiration = new Date(tokens.expires_at)
const timeout = ((expiration - Date.now()) * 3) / 4
refreshTimeout = setTimeout(async () => {
const refreshedTokens = await refreshTokens(
tokens.access_token,
tokens.refresh_token
)
commitTokens({ authorizationTokens: refreshedTokens })
refresh(refreshedTokens)
}, timeout || 15000)
}
authClient.tokenManager.on('renewed', (key, idToken) => {
if (key === 'idToken' && idToken) {
commitTokens({ idToken: idToken })
if (TokenWorker) {
TokenWorker.port.postMessage({
type: 'idToken',
payload: idToken
})
}
}
})
export const login = async (fallback = false) => {
// try getting a token from the service worker
// if we have a service worker, ping that for a token
// otherwise we go through the okta login process directly
let idToken, authorizationTokens, source
try {
if (TokenWorker && !fallback) {
idToken = await promiseChannel(TokenWorker, 'login')
source = 'TokenWorker'
if (!idToken || idToken.expiresAt * 1000 < Date.now()) {
const loginResponse = await authenticate()
idToken = loginResponse?.idToken
source = 'AuthClient <> TokenWorker'
TokenWorker.port.postMessage({
type: 'idToken',
payload: idToken
})
}
if (idToken && (idToken.idToken || idToken.value)) {
authorizationTokens = await promiseChannel(
TokenWorker,
'authorize',
idToken.idToken || idToken.value
)
}
} else {
const loginResponse = await authenticate()
source = 'AuthClient <> InMemory'
idToken = loginResponse?.idToken
if (idToken && (idToken.idToken || idToken.value)) {
authorizationTokens = await authorize(idToken.idToken || idToken.value)
refresh(authorizationTokens)
}
}
} catch (e) {
// eslint-disable-next-line no-console
console.error('Login error', e)
LogRocket.captureException(e)
}
if (idToken && authorizationTokens) {
return {
idToken: idToken,
authorizationTokens: authorizationTokens,
source: source
}
} else {
// If this session fails to get idTokens, we call the clear method
// to post messages to all other sessions that they need to sign out
// This also clears all stored tokens for these sessions
if (TokenWorker) {
TokenWorker.port.postMessage({
type: 'clear'
})
}
}
}
export const switchTenant = async tenantId => {
let authorizationTokens
if (TokenWorker) {
authorizationTokens = await promiseChannel(
TokenWorker,
'switch-tenant',
tenantId
)
} else {
authorizationTokens = await authorizeTenant(
store.getters['auth/authorizationToken'],
tenantId
)
}
return {
authorizationTokens: authorizationTokens
}
}
export const logout = async () => {
await revokeTokens(
store.getters['auth/authorizationToken'],
store.getters['auth/refreshToken']
)
if (TokenWorker) {
TokenWorker.port.postMessage({
type: 'logout'
})
} else {
try {
await authClient.signOut()
unsetTokens()
} catch (e) {
// eslint-disable-next-line no-console
console.log(e)
LogRocket.captureException(e)
}
}
}
================================================
FILE: src/components/AcceptConfirmInputRow.vue
================================================
check
Accept team invite
close
Decline team invite
Accept
Decline
close
================================================
FILE: src/components/Alert.vue
================================================
warning
{{ linkText }}
Copy
Dismiss
================================================
FILE: src/components/Artifacts/Artifact-NodeTree.vue
================================================
================================================
FILE: src/components/Artifacts/Artifact.vue
================================================
{{ artifact.data.link }}
{{ artifact.data.link }}
{{ artifact }}
================================================
FILE: src/components/Artifacts/Artifacts.vue
================================================
arrow_left
fiber_manual_record
fingerprint
{{ a.task_run.task.name }}
{{ a.task_run.name }}
arrow_right
This run has no
fas fa-fingerprint
Artifacts ! You can learn how to generate artifacts from your flow/task in the
Artifacts API Docs .
fiber_manual_record
fas fa-fingerprint
Artifact
{{ a.task_run.name ? a.task_run.name : a.task_run.task.name }}
================================================
FILE: src/components/BreadCrumbs.vue
================================================
{{ crumb.text }}
chevron_right
================================================
FILE: src/components/CancelButton.vue
================================================
not_interested
Cancel
You don't have permission to modify runs.
Your Flow was registered with version {{ flowRun.flow.core_version }} of
Prefect Core; please upgrade to version 0.13.0 or higher and re-register
your Flow to enable cancellation.
This flow run has concluded so it can't be cancelled.
Cancel this flow run.
================================================
FILE: src/components/Card-Title.vue
================================================
================================================
FILE: src/components/ChartCard/ChartCard.vue
================================================
{{ subtitle }}
{{ title }}
{{ body }}
Invited users and actual members count towards your users total. You
can add and remove members and invitations in the
team-members
page.
Different versions all count as one flow. You can view and manage
the flows that count towards your total on the
flow version groups
page.
================================================
FILE: src/components/ChartCard/ChartCardHeader-Ring.vue
================================================
{{ chartOverlayOverline }}
{{ chartOverlayMain
}}{{ chartOverlayUnits }}
{{ chartOverlaySub }}
{{
chartOverlayCenter
}}
{{ chartOverlayCenter }}
{{ chartOverlayCenterTwo }}
{{ chartOverlayOverline }}
{{ chartOverlayMain
}}{{ chartOverlayUnits }}
{{ chartOverlaySub }}
================================================
FILE: src/components/ChartCard/ChartCardHeader-Simple.vue
================================================
{{ chartOverlayOverline }}
{{ chartOverlayMain }}
{{ chartOverlaySub }}
{{ chartOverlayCenter }}
================================================
FILE: src/components/CloudHookForm.vue
================================================
{{ item.name }}
({{ item.project.name }})
This is a non-unique shorthand identifier for your Cloud Hook.
bug_report
Test
Read-only users cannot modify Cloud Hooks
Test this Cloud Hook (will send a test call to your
endpoint)
edit
Read-only users cannot modify Cloud Hooks
Modify this Cloud Hook
delete
Read-only users cannot delete Cloud Hooks
Delete this Cloud Hook
Type
{{ type.icon }}
{{ type.title }}
{{ type.icon }}
{{ type.title }}
Configuration
Input emails separated by commas; Prefect Cloud will send an
email to these addresses when your flow's State changes.
Prefect Cloud will send a notification via Slack Webhook to
this endpoint when your flow's State changes. To read more
about Slack Webhooks, you can visit the
Slack API Docs .
Prefect Cloud will send a message via the
Twilio SMS API
on your behalf when your flow's State changes. You can
retrieve the ACCOUNT SID and
AUTH TOKEN from the dashboard
of your Twilio account. You'll need to configure a
Messaging Service
to recieve messages.
Prefect Cloud will send a JSON payload to this endpoint when
your flow's State changes.
Prefect Cloud will send a PagerDuty notification when your
flow's State changes. Create your
Pager Duty API token
in the Pager Duty app by visiting Configuration > API
Access. You'll also need an Integration Key, which can be
created by visiting the Integrations tab of the Service
Details page and setting up an
Events API v2
integration.
To add a new number, type the number and press enter.
{{ error }}
{{ cloudHookKeyLabel(key) }}
{{ hook.config[key] || 'None' | obfuscate }}
{{ item }}
{{ hook.config.severity | capitalize }}
{{ hook.config[key] || 'None' }}
States
Prefect Cloud will send information to your Cloud Hook when
your flow transitions to any of these states.
You can use state group presets or set custom notifiers.
All
Finished
Success
Failed
Custom
{{ state.toLowerCase() }}
{{ state.toLowerCase() }}
This Cloud Hook doesn't have any states configured.
Configure
{{ error }}
{{ flowError }}
Save
Cancel
================================================
FILE: src/components/ConcurrencyInfo.vue
================================================
{{ concurrentRuns.length
}}{{ flowConcurrency ? `/${flowConcurrency}` : '' }} slot{{
concurrentRuns.length === 1 || flowConcurrency === 1 ? '' : 's'
}}
used
info
{{ concurrentRuns.length }}
concurrency slots used
Your team has
unlimited flow concurrency, so
you can run as many concurrent flows as you'd like!
Your team has
{{ flowConcurrency }}
flow concurrency slot{{ flowConcurrency === 1 ? '' : 's' }}. Flow
runs in
Running ,
Cancelling
or
Submitted
states take up concurrency slots; flow runs will remain in
Scheduled
until a concurrency slot becomes available.
Contact us
to add concurrency slots and to get access to lots of other cool
features!
Close
================================================
FILE: src/components/ConfirmDialog.vue
================================================
{{ title }}
{{ error }}
{{ cancelText }}
{{ confirmText }}
================================================
FILE: src/components/CustomInputs/BaseCodeTextarea.vue
================================================
{{ language }}
{{ message }}
================================================
FILE: src/components/CustomInputs/BaseDictInput.vue
================================================
================================================
FILE: src/components/CustomInputs/CheckboxDictInput.vue
================================================
================================================
FILE: src/components/CustomInputs/CodeInput.vue
================================================
{{ editor }}
================================================
FILE: src/components/CustomInputs/DictInput.vue
================================================
Reset
refresh
remove_circle
{{ addLabel }}
add
================================================
FILE: src/components/CustomInputs/DictInput2.vue
================================================
================================================
FILE: src/components/CustomInputs/Highlight.vue
================================================
================================================
FILE: src/components/CustomInputs/JsonInput.vue
================================================
{{ prependIcon }}
{{ prependIconLabel }}
Format
{{ jsonError }}
================================================
FILE: src/components/CustomInputs/JsonInput2.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/ArrayInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/BooleanInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/DateInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/JsonParsingInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/NullInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/NumberInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/ObjectInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/StringInput.vue
================================================
================================================
FILE: src/components/CustomInputs/KeyValueTypeInputs/index.js
================================================
import NullInput from '@/components/CustomInputs/KeyValueTypeInputs/NullInput'
import JsonParsingInput from '@/components/CustomInputs/KeyValueTypeInputs/JsonParsingInput'
import BooleanInput from '@/components/CustomInputs/KeyValueTypeInputs/BooleanInput'
import NumberInput from '@/components/CustomInputs/KeyValueTypeInputs/NumberInput'
import StringInput from '@/components/CustomInputs/KeyValueTypeInputs/StringInput'
import ObjectInput from '@/components/CustomInputs/KeyValueTypeInputs/ObjectInput'
import ArrayInput from '@/components/CustomInputs/KeyValueTypeInputs/ArrayInput'
import DateInput from '@/components/CustomInputs/KeyValueTypeInputs/DateInput'
export default {
NullInput,
JsonParsingInput,
BooleanInput,
NumberInput,
StringInput,
ObjectInput,
ArrayInput,
DateInput
}
================================================
FILE: src/components/CustomInputs/ListInput.vue
================================================
================================================
FILE: src/components/CustomInputs/MultiLineInput.vue
================================================
================================================
FILE: src/components/CustomInputs/ResettableWrapper.vue
================================================
================================================
FILE: src/components/CustomInputs/YamlInput.vue
================================================
{{ prependIcon }}
{{ prependIconLabel }}
{{ error }}
================================================
FILE: src/components/CustomInputs/YamlInput2.vue
================================================
================================================
FILE: src/components/CustomInputs/readonlyProps.js
================================================
const readonlyProps = {
readonlyKey: {
type: Boolean,
required: false,
default: false
},
readonlyType: {
type: Boolean,
required: false,
default: false
},
readonlyValue: {
type: Boolean,
required: false,
default: false
},
disableAdd: {
type: Boolean,
required: false,
default: false
},
disableRemove: {
type: Boolean,
required: false,
default: false
}
}
export default readonlyProps
================================================
FILE: src/components/DateTime.vue
================================================
Date
Time
Timezone: {{ timezone || 'Local' }}
You can change your system's timezone from your user
profile.
Update timezone
.
{{ warning }}
Confirm
================================================
FILE: src/components/DeleteFlowButton.vue
================================================
Delete this flow
Delete this flow group
Delete flow "{{ flow.name }}" version {{ flow.version }}?
Delete all versions of this flow?
This is an active version of your flow. Only archived versions will
remain.
This will delete all versions
of your flow and cannot be undone.
{{ errorMessage }}
Delete
Cancel
You don't have permission to delete flows.
================================================
FILE: src/components/DurationSpan.vue
================================================
{{
durationDifferenceString
}}
================================================
FILE: src/components/EditableTextField.vue
================================================
edit
{{ label }} can't be empty
================================================
FILE: src/components/EmphasizedIcon.vue
================================================
================================================
FILE: src/components/EndOfLifeBanner.vue
================================================
warning
This legacy Prefect Cloud account has been frozen.
Click here
for more information.
This legacy Prefect Cloud account will be frozen on October 25th, 2023.
Click here
to learn more or to start your migration to
Prefect Cloud 2 .
================================================
FILE: src/components/ExternalLink.vue
================================================
open_in_new
================================================
FILE: src/components/Feedback.vue
================================================
We would love your feedback!
Let us know how we can make Prefect Cloud a better experience for you.
check
Your feedback has been submitted. Thank you!
error
Something went wrong while submitting your feedback. Please try
again.
Cancel
Submit
================================================
FILE: src/components/Footer.vue
================================================
Made with ♡ in DC
================================================
FILE: src/components/FullPagination.vue
================================================
Items per page:
{{ startingNumber }}-{{ endingNumber }} of {{ totalItems }}
chevron_left
chevron_right
================================================
FILE: src/components/Functional/CronClock.vue
================================================
================================================
FILE: src/components/Functional/IntervalClock.vue
================================================
================================================
FILE: src/components/Functional/Transition-Height.js
================================================
import Velocity from 'velocity-animate'
export default {
functional: true,
render: function(createElement, context) {
const data = {
props: {
name: 'HeightTransition',
mode: 'out-in'
},
on: {
beforeEnter: function(el) {
el.style['max-height'] = 0
el.style.opacity = 0
},
enter: function(el, done) {
// This will try to find a parent component
// whose height isn't set to auto, up to 2 levels
// above the transitioning components
let parent =
getComputedStyle(el.parentElement)?.height == 'auto'
? el.parentElement.parentElement
: el.parentElement
let elHeight = getComputedStyle(el).height
let height =
parseFloat(getComputedStyle(parent).height) +
parseFloat(elHeight) +
'px'
Velocity(parent, { 'max-height': height }, { complete: done })
Velocity(
el,
{ opacity: 1, 'max-height': elHeight },
{ complete: done }
)
},
leave: function(el, done) {
let delay = el.dataset.index * 150
let parent =
getComputedStyle(el.parentElement)?.height == 'auto'
? el.parentElement.parentElement
: el.parentElement
let height =
parseFloat(getComputedStyle(parent).height) -
parseFloat(getComputedStyle(el).height) +
'px'
Velocity(el, { opacity: 0, 'max-height': 0 }, { complete: done })
setTimeout(function() {
Velocity(parent, { 'max-height': height }, { complete: done })
}, delay)
}
}
}
return createElement('transition-group', data, context.children)
}
}
================================================
FILE: src/components/Functional/TruncatedSpan.vue
================================================
{{ props.content }}
{{ props.content }}
================================================
FILE: src/components/GetCloud.vue
================================================
cloud
Get Cloud
================================================
FILE: src/components/GlobalSearchBar/GlobalSearch.vue
================================================
You aren't connected, so you won't be able to search for
anything...
Type to search for a Project ,
Flow , Task , or
Run
Searching...
No results matched your search.
================================================
FILE: src/components/GlobalSearchBar/GlobalSearchIcon.vue
================================================
{{ resultIcon }}
================================================
FILE: src/components/GlobalSearchBar/GlobalSearchResult.vue
================================================
{{ typeName }}
{{ searchResult.name !== searchResult.id ? searchResult.id : '' }}
================================================
FILE: src/components/GlobalSearchBar/MResult.vue
================================================
{{ '$mr' }}
Marvin says.....
{{ quote }}
================================================
FILE: src/components/HavingTrouble.vue
================================================
Having trouble?
Don't panic!
The
fab fa-slack
Prefect Slack community
is a great place to ask questions, provide feedback, or just to chat!
Check out the
Prefect documentation
for tips on setting up Prefect Server, idioms for writing flows, and so
much more. Looking for more in-depth discussion? Our
GitHub Discussion board
is a great place to present long-form ideas, technical challenges, or to
show off your Prefect tasks and flows!
Did you know that
Prefect Cloud
offers a feature-rich and fully-managed orchestration layer for your
flows? Oh and it's also free .
================================================
FILE: src/components/HeartbeatTimeline.vue
================================================
No activity
{{ icon(item) }}
{{ item.state }}
{{
item.state == 'Scheduled'
? `for ${formatDateTime(item.scheduled_start_time)}`
: ''
}}
{{ timelineItemTitle(item) }}
dynamic_feed
{{ item.map_index }}
{{ item.state_message }}
{{ item.name }}
{{ timelineItemTitle(item) }}
(Mapped Child {{ item.map_index }})
{{ item.name }}
Task Run
{{ formatTime(item.state_timestamp || item.timestamp) }}
Message:
{{ item.message }}
State Message:
{{ item.state_message }}
Result:
{{ item.result }}
{{ shortTime(item.state_timestamp || item.timestamp) }}
{{ formatTime(item.state_timestamp || item.timestamp) }}
================================================
FILE: src/components/Icons/Hashicorp.vue
================================================
iAsset 1
================================================
FILE: src/components/Icons/Nomad.vue
================================================
================================================
FILE: src/components/Icons/PagerDuty.vue
================================================
================================================
FILE: src/components/Icons/Prefect.vue
================================================
logomark/primary-dark
Created with Sketch.
================================================
FILE: src/components/Icons/mr.vue
================================================
================================================
FILE: src/components/Icons/newPagerDuty.vue
================================================
================================================
FILE: src/components/Icons/twilio.vue
================================================
================================================
FILE: src/components/KeyValueTable.vue
================================================
{{ key }}
{{ checkValue(value) }}
================================================
FILE: src/components/Label.vue
================================================
Remove this label
================================================
FILE: src/components/LabelEdit.vue
================================================
Labels
info
{{ flowOrFlowRun }} Labels
Flows, flow runs and agents have optional labels which allow you
to determine where your flow runs are executed. For more
information see
the docs on labels .
You don't have permission to edit labels
Add a label
{{ flowOrFlowRun }} labels
Flows, flow runs and agents have optional labels which allow
you to determine where your flow runs are executed. For more
information see
the docs on labels .
{{ label }}
Reset to labels from flow registration
{{ label }}
None
Reset to labels from flow registration
You don't have permission to edit labels
Add a label
{{ flowOrFlowRun }} labels
Flows, flow runs and agents have optional labels which allow you
to determine where your flow runs are executed. For more
information see
the docs on labels .
{{ label }}
================================================
FILE: src/components/LabelWarning.vue
================================================
label
not_interested
{{ agentOrLabel }}
{{ infoMessage }}
You can see your agent labels in the
agents tab .
You can see and edit your
{{ flowOrFlowRun }} labels in the
flow run details tile {{ flowOrFlowRun }} details tile .
If you need to edit labels on many scheduled flow runs, you can
pause the schedule and update the flow labels on the
flow details tile
and then turn your schedule back on.
================================================
FILE: src/components/LastTenRuns.vue
================================================
================================================
FILE: src/components/License/ChangePlanDialog.vue
================================================
Change Plan
Change to the
Prefect {{ planName }} Plan
Only your team's administrators can modify these settings.
To change your license terms, please
contact our sales team
Your card ending in
{{ existingCard.last4 }}
will be charged
${{ planCost }} on a monthly
basis.
This plan is free. If you want to run more than {{ limit }} task
runs/month you will need to add a credit card in the Team Account
page.
Cancel
Confirm
================================================
FILE: src/components/License/UpgradeAlert.vue
================================================
Pssst! We noticed you have a legacy license type. Prefect now has new
licenses that include
more users and
fewer limits.
Contact us to find out more!
If you'd like to change your plan or get access to cool new features
please
contact us!
Upgrade your license to get access to cool new features!
Find Out More
================================================
FILE: src/components/LogsCard/DownloadMenu.vue
================================================
cloud_download
================================================
FILE: src/components/LogsCard/FilterMenu.vue
================================================
filter_list
================================================
FILE: src/components/LogsCard/LogRow.vue
================================================
check
link
{{ linkCopied ? 'Copied!' : 'Copy log URL to clipboard' }}
{{ logTime(log.timestamp) }}
{{ logDate(log.timestamp) }}
lens
{{ log.level }}
{{ source }}
{{ log.message }}
chevron_right
To Task Run
Navigate to the task run associated with this log
================================================
FILE: src/components/LogsCard/LogsCard.vue
================================================
Clear log query
Clear filters
brightness_1
{{ entity.toUpperCase() }} RUN STATE:
{{ entityState.toUpperCase(0) }}
{{
retrievingArchivedLogs
? 'Retrieving archived logs from glacial storage...'
: entityState
}}...
{{
failedToRetrieveArchivedLogs
? "Sorry, we couldn't get the logs from glacial storage..."
: entityIsRunning
? `${entityState}...`
: 'No logs found.'
}}
Try
expanding
or
resetting your search.
Retry?
Click here to retrieve
archived logs - please allow up to 30 seconds for the retrieval to
take effect.
offline_bolt
Live
Show the most recent logs while the {{ entity }} is running.
================================================
FILE: src/components/MenuTooltip.vue
================================================
{{ icon }}
{{ content }}
Close
================================================
FILE: src/components/Nav/ApplicationNav.vue
================================================
================================================
FILE: src/components/Nav/ChatLauncher.vue
================================================
================================================
FILE: src/components/Nav/ConnectionMenu.vue
================================================
Cloud
Server
Connected
Connecting
Couldn't connect
to
Prefect Cloud
Prefect Server
at
{{ url }}
Prefect Cloud is undergoing routine maintenance; during this time no
new runs will be released to your Agents and state updates may be
delayed.
Having trouble? Check out the
Prefect Cloud status page
for information about upcoming maintenance windows and the current
uptime of Prefect Cloud services.
================================================
FILE: src/components/Nav/CurrentTime.vue
================================================
{{ time.hour }}
:
{{ time.minute }}
{{ time.meridian }}
info
System time according to your set Timezone; you can change this from your
Account Settings.
================================================
FILE: src/components/Nav/HelpMenu.vue
================================================
Stuck? We can help!
Getting started
Installing Prefect, starting your first agent and more
Docs
open_in_new
Explore Prefect through our docs
Have a question?
open_in_new
Start a discussion on our Discourse!
Tutorials
Learn more about Prefect, right from the UI
Found a bug?
open_in_new
Open a ticket for us on GitHub!
Join our Slack!
open_in_new
Chat with us, ask questions, and share tips
Feedback & Support
Having trouble or have a question for us?
================================================
FILE: src/components/Nav/Links.vue
================================================
Dashboard
Agents
Interactive API
Account
================================================
FILE: src/components/Nav/MenuLink.vue
================================================
{{ props.primary }}
{{ props.secondary }}
================================================
FILE: src/components/Nav/NotificationMenu.vue
================================================
================================================
FILE: src/components/Nav/TeamMenu.vue
================================================
Team
API Tokens
Manage your team's API tokens
Automation Actions
View and manage automation actions
Cloud Hooks
Create and modify team-wide Cloud Hooks
pi-flow-run
Flow Concurrency
Manage flow concurrency
pi-flow
Flow Groups
View all your team's flows
KV Store
Manage your team's key/value store
Members
Invite people to your team and manage permissions
pi-project
Projects
Create and modify your team's projects
face
Roles
Custom Roles are only
available on Enterprise plans.
Manage Team Roles
Secrets
Create and manage team-wide Secrets used by your flows
Service Accounts
Manage Service Accounts and API Keys
pi-task-run
Task Concurrency
Manage task run concurrency
================================================
FILE: src/components/Nav/TeamSideNav.vue
================================================
You have no projects
folder
New project
UI Release
{{ lastDeployment_UI }}
Core Version
{{ coreVersion }}
API Release
{{ lastDeployment_Cloud }}
================================================
FILE: src/components/Nav/TeamSideNavButton.vue
================================================
{{ isOpen ? 'chevron_left' : 'chevron_right' }}
================================================
FILE: src/components/Nav/TeamSwitcher.vue
================================================
{{
tenant && tenant.name
? tenant.name
: loading
? '...'
: 'No team selected'
}}
{{ role }}
sync_alt
Switch team
arrow_right
fas fa-users
Teams
{{ team.name }}
Current
fas fa-envelope
Invitations
================================================
FILE: src/components/Nav/UserMenu.vue
================================================
face
{{ user.first_name }} {{ user.last_name }}
{{ user.email }}
fad fa-cogs
Account Settings
Manage profile, API keys, and teams
Theme (experimental)
fad fa-sun
fad fa-moon-stars
Sign out
================================================
FILE: src/components/NavTabBar.vue
================================================
{{ tb.icon }}
{{ tb.name }}
{{ tb.icon }}
{{ tb.name }}
{{ tb.cardText }}
{{
tb.cardLinkText
}} !
{{ tb.icon }}
{{ tb.name }}
{{ tb.icon }}
{{ tb.name }}
================================================
FILE: src/components/Parameters.vue
================================================
{{ param.name }}
error
Required
Default:
{{
paramIsArray(param.default) || paramIsObject(param.default)
? ''
: JSON.stringify(param.default)
}}
{{ formatDefaultParamValue(param.default) }}
================================================
FILE: src/components/ParametersForm.vue
================================================
Select the type that this parameter should be set to. (Defaults to
current parameter type).
Cancel
Update
================================================
FILE: src/components/PaymentCard.vue
================================================
{{ cardError }}
Cancel
{{ upgradeOrDowngrade }}
Update
================================================
FILE: src/components/PlanCard.vue
================================================
{{ activePlan.name }}
================================================
FILE: src/components/Plans/CardDetails.vue
================================================
================================================
FILE: src/components/Plans/Enterprise.vue
================================================
Enterprise
Built for your business
Get in touch to build your Prefect Cloud
100+ users
Audit trail
Custom RBAC / SSO
6+ months history
Contact Us
arrow_right
================================================
FILE: src/components/Plans/PlanSelectionForm.vue
================================================
{{ title }}
chevron_left
Choose an existing method instead
{{ payment.owner.name }}
{{ payment.brand || payment.card.brand }}
•••• •••• •••• {{ payment.last4 || payment.card.last4 }}
{{ payment.exp_month || payment.card.exp_month }}/{{
payment.exp_year || payment.card.exp_year
}}
{{ payment.owner.name }}
{{ payment.ach_credit_transfer.bank_name }}
••••••••••••
{{
payment.ach_credit_transfer.account_number &&
payment.ach_credit_transfer.account_number.substring(
payment.ach_credit_transfer.account_number
.length - 4
)
}}
••••••••••••
{{
payment.ach_credit_transfer.routing_number &&
payment.ach_credit_transfer.routing_number.substring(
payment.ach_credit_transfer.routing_number
.length - 4
)
}}
{{ payment.owner.name }}
{{ payment.ach_debit.bank_name }}
••••••••••••
{{
payment.ach_debit.account_number.substring(
payment.ach_debit.account_number.length - 4
)
}}
••••••••••••
{{
payment.ach_debit.routing_number.substring(
payment.ach_debit.routing_number.length - 4
)
}}
fab fa-cc-{{ payment.card.brand.toLowerCase() }}
fad fa-university
Next
chevron_left
Change payment method
Plan
{{ plan.name }}
Users
{{ plan.users }}
fad fa-users fa-fw
Run history
1 {{ plan.history }}
fad fa-history fa-fw
Free runs
{{ plan.taskRuns.toLocaleString() }}
/ month
fad fa-lightbulb fa-fw
Price per additional run
${{ plan.price }}
/ successful task run
fad fa-tasks fa-fw
Volume discounts
Automatic
applied monthly
fad fa-check fa-fw
Due today:
${{ plan.additionalCost ? plan.additionalCost : '0.00' }}
Finish
By clicking finish, you assert that you have read & agree to the
Terms & Conditions
You're all set - happy engineering!
Go to the dashboard
Something went wrong...
================================================
FILE: src/components/Plans/Standard.vue
================================================
Only pay for successful runs.
There's no charge for retries, failures, or any task that runs in
less than one second.
As usage increases each month, the price per run automatically
drops:
Monthly run tier
Price per run
0 to
then to
{{ item.runs }}
{{
item.price
}}
fad fa-tasks
20,000 free runs every month
fad fa-users
Up to 3 users
fad fa-history
2 weeks of run history
fad fa-siren-on
Workflow and infrastructure SLAs
fad fa-random
Automation suite
{{
planType('STANDARD')
? 'Current'
: disabled
? 'Contact your team admin to upgrade'
: 'Start free'
}}
{{
planType('STANDARD')
? 'Current'
: disabled
? 'Contact your team admin to upgrade'
: 'Start free'
}}
================================================
FILE: src/components/Plans/Starter.vue
================================================
Starter
Only pay for successful runs.
There's no charge for retries, failures, or any task that runs in
less than one second.
As usage increases each month, the price per run automatically
drops:
Monthly run tier
Price per run
0 to
then to
{{ item.runs }}
{{
item.price
}}
fad fa-tasks
20,000 free runs every month
fad fa-users
Up to 1 user
fad fa-history
1 week of run history
{{
planType('STARTER')
? 'Current'
: disabled
? 'Contact your team admin to upgrade'
: 'Start for free'
}}
{{
planType('STARTER')
? 'Current'
: disabled
? 'Contact your team admin to upgrade'
: 'Start for free'
}}
================================================
FILE: src/components/PrefectSchedule.vue
================================================
{{ displaySchedule }}
{{
schedule.type === 'UnionSchedule' ? 'union schedule' : 'custom schedule'
}}
================================================
FILE: src/components/ResumeButton.vue
================================================
far fa-check-circle
Approve
Approve task run (allows the task run to resume)
================================================
FILE: src/components/RunConfig/ArgumentHeading.vue
================================================
{{ title }}
{{ argument }}
================================================
FILE: src/components/RunConfig/ArgumentInput.vue
================================================
{{ description }}
================================================
FILE: src/components/RunConfig/ArgumentReference.vue
================================================
{{ title }}
open_in_new
================================================
FILE: src/components/RunConfig/DateTimeSelector.vue
================================================
{{ displayMonth }}
{{ displayDay }} ,
{{ displayYear }}
{{ hour }} :{{ minute }} {{ meridian }}
({{ displayTimezone }})
:
{{ timezoneIcon }}
================================================
FILE: src/components/RunConfig/DockerRunForm.vue
================================================
================================================
FILE: src/components/RunConfig/EcsRunForm.vue
================================================
================================================
FILE: src/components/RunConfig/KubernetesRunForm.vue
================================================
================================================
FILE: src/components/RunConfig/LocalRunForm.vue
================================================
================================================
FILE: src/components/RunConfig/RunConfig.vue
================================================
================================================
FILE: src/components/RunConfig/RunConfigTypeButton.vue
================================================
{{ label }}
{{ description }}
================================================
FILE: src/components/RunConfig/RunConfigTypeSelect.vue
================================================
================================================
FILE: src/components/RunConfig/UniversalRunForm.vue
================================================
================================================
FILE: src/components/RunConfig/adjectives.js
================================================
// Adapted from the coolname Python project: https://github.com/alexanderlukanin13/coolname
export const adjectives = [
'acrid',
'ambrosial',
'amorphous',
'armored',
'aromatic',
'bald',
'blazing',
'boisterous',
'bouncy',
'brawny',
'bulky',
'camouflaged',
'caped',
'elastic',
'ethereal',
'feathered',
'fiery',
'fluffy',
'foamy',
'fragrant',
'furry',
'fuzzy',
'glaring',
'hairy',
'heavy',
'hissing',
'horned',
'icy',
'imaginary',
'invisible',
'lean',
'loud',
'loutish',
'lumpy',
'lush',
'masked',
'meaty',
'messy',
'misty',
'nebulous',
'noisy',
'nondescript',
'organic',
'purring',
'quiet',
'quirky',
'radiant',
'roaring',
'ruddy',
'rustling',
'screeching',
'shaggy',
'shapeless',
'shiny',
'silent',
'silky',
'singing',
'skinny',
'smooth',
'soft',
'spicy',
'spiked',
'statuesque',
'sticky',
'tacky',
'tall',
'tangible',
'tentacled',
'thundering',
'venomous',
'warm',
'weightless',
'whispering',
'winged',
'wooden',
'adorable',
'affable',
'amazing',
'amiable',
'attractive',
'beautiful',
'calm',
'charming',
'cherubic',
'classic',
'classy',
'convivial',
'cordial',
'cuddly',
'curly',
'cute',
'debonair',
'elegant',
'famous',
'fresh',
'friendly',
'funny',
'gorgeous',
'graceful',
'gregarious',
'grinning',
'handsome',
'hilarious',
'hot',
'interesting',
'kind',
'laughing',
'lovely',
'meek',
'mellow',
'merciful',
'neat',
'nifty',
'notorious',
'poetic',
'pretty',
'refined',
'refreshing',
'smiling',
'sociable',
'spiffy',
'stylish',
'sweet',
'tactful',
'whimsical',
'abiding',
'accurate',
'adamant',
'adaptable',
'adventurous',
'alluring',
'aloof',
'ambitious',
'amusing',
'annoying',
'arrogant',
'aspiring',
'belligerent',
'benign',
'berserk',
'benevolent',
'bold',
'brave',
'cheerful',
'chirpy',
'cocky',
'congenial',
'courageous',
'cryptic',
'curious',
'daft',
'dainty',
'daring',
'defiant',
'delicate',
'delightful',
'determined',
'devout',
'didactic',
'diligent',
'discreet',
'dramatic',
'dynamic',
'eager',
'eccentric',
'elated',
'encouraging',
'enigmatic',
'enthusiastic',
'evasive',
'faithful',
'fair',
'fanatic',
'fearless',
'fervent',
'festive',
'fierce',
'fine',
'free',
'gabby',
'garrulous',
'gentle',
'glistening',
'greedy',
'grumpy',
'happy',
'honest',
'hopeful',
'hospitable',
'impetuous',
'independent',
'industrious',
'innocent',
'intrepid',
'jolly',
'jovial',
'just',
'lively',
'loose',
'loyal',
'merry',
'modest',
'mysterious',
'nice',
'obedient',
'optimistic',
'orthodox',
'outgoing',
'outrageous',
'overjoyed',
'passionate',
'perky',
'placid',
'polite',
'positive',
'proud',
'prudent',
'puzzling',
'quixotic',
'quizzical',
'rebel',
'resolute',
'rampant',
'righteous',
'romantic',
'rough',
'rousing',
'sassy',
'satisfied',
'sly',
'sincere',
'snobbish',
'spirited',
'spry',
'stalwart',
'stirring',
'swinging',
'tasteful',
'thankful',
'tidy',
'tremendous',
'truthful',
'unselfish',
'upbeat',
'uppish',
'valiant',
'vehement',
'vengeful',
'vigorous',
'vivacious',
'zealous',
'zippy',
'able',
'adept',
'analytic',
'astute',
'attentive',
'brainy',
'busy',
'calculating',
'capable',
'careful',
'cautious',
'certain',
'clever',
'competent',
'conscious',
'cooperative',
'crafty',
'crazy',
'cunning',
'daffy',
'devious',
'discerning',
'efficient',
'expert',
'functional',
'gifted',
'helpful',
'enlightened',
'idealistic',
'impartial',
'industrious',
'ingenious',
'inquisitive',
'intelligent',
'inventive',
'judicious',
'keen',
'knowing',
'literate',
'logical',
'masterful',
'mindful',
'nonchalant',
'observant',
'omniscient',
'poised',
'practical',
'pragmatic',
'proficient',
'provocative',
'qualified',
'radical',
'rational',
'realistic',
'resourceful',
'savvy',
'skeptical',
'sensible',
'serious',
'shrewd',
'skilled',
'slick',
'slim',
'smart',
'sophisticated',
'stoic',
'succinct',
'talented',
'thoughtful',
'tricky',
'unbiased',
'uptight',
'versatile',
'versed',
'visionary',
'wise',
'witty',
'accelerated',
'active',
'agile',
'athletic',
'dashing',
'deft',
'dexterous',
'energetic',
'fast',
'frisky',
'hasty',
'hypersonic',
'meteoric',
'mighty',
'muscular',
'nimble',
'powerful',
'prompt',
'quick',
'rapid',
'resilient',
'robust',
'rugged',
'solid',
'speedy',
'steadfast',
'steady',
'strong',
'sturdy',
'tireless',
'tough',
'unyielding',
'rich',
'wealthy',
'meticulous',
'precise',
'rigorous',
'scrupulous',
'strict',
'airborne',
'burrowing',
'crouching',
'flying',
'hidden',
'hopping',
'jumping',
'lurking',
'tunneling',
'warping',
'aboriginal',
'amphibian',
'aquatic',
'arboreal',
'polar',
'terrestrial',
'urban',
'accomplished',
'astonishing',
'authentic',
'awesome',
'delectable',
'excellent',
'exotic',
'exuberant',
'fabulous',
'fantastic',
'fascinating',
'flawless',
'fortunate',
'glorious',
'groovy',
'honored',
'illustrious',
'imposing',
'important',
'impressive',
'incredible',
'invaluable',
'majestic',
'magnificent',
'marvellous',
'monumental',
'perfect',
'phenomenal',
'pompous',
'precious',
'premium',
'private',
'remarkable',
'spectacular',
'splendid',
'successful',
'wonderful',
'wondrous',
'offbeat',
'original',
'outstanding',
'quaint',
'unique',
'ancient',
'antique',
'prehistoric',
'primitive',
'abstract',
'acoustic',
'angelic',
'arcane',
'archetypal',
'augmented',
'auspicious',
'axiomatic',
'beneficial',
'bipedal',
'bizarre',
'complex',
'dancing',
'dangerous',
'divergent',
'economic',
'electric',
'elite',
'eminent',
'enchanted',
'esoteric',
'finicky',
'fractal',
'futuristic',
'gainful',
'hallowed',
'heavenly',
'holistic',
'hungry',
'hypnotic',
'hysterical',
'illegal',
'imperial',
'imported',
'impossible',
'inescapable',
'liberal',
'ludicrous',
'lyrical',
'magnetic',
'manipulative',
'mature',
'military',
'macho',
'married',
'melodic',
'natural',
'naughty',
'nocturnal',
'nostalgic',
'optimal',
'pastoral',
'peculiar',
'piquant',
'pristine',
'prophetic',
'psychedelic',
'quantum',
'rare',
'real',
'secret',
'simple',
'spectral',
'spiritual',
'stereotyped',
'stimulating',
'straight',
'strange',
'tested',
'therapeutic',
'true',
'ubiquitous',
'uncovered',
'unnatural',
'utopian',
'vagabond',
'vague',
'vegan',
'victorious',
'vigilant',
'voracious',
'wakeful',
'wandering',
'watchful',
'wild',
'bright',
'brilliant',
'colorful',
'crystal',
'dark',
'dazzling',
'fluorescent',
'glittering',
'glossy',
'gleaming',
'light',
'mottled',
'neon',
'opalescent',
'pastel',
'smoky',
'sparkling',
'spotted',
'striped',
'translucent',
'transparent',
'vivid'
]
================================================
FILE: src/components/RunConfig/animals.js
================================================
// Adapted from the coolname Python project: https://github.com/alexanderlukanin13/coolname
export const animals = [
'earthworm',
'leech',
'worm',
'scorpion',
'spider',
'tarantula',
'barnacle',
'crab',
'crayfish',
'lobster',
'pillbug',
'prawn',
'shrimp',
'ant',
'bee',
'beetle',
'bug',
'bumblebee',
'butterfly',
'caterpillar',
'cicada',
'cricket',
'dragonfly',
'earwig',
'firefly',
'grasshopper',
'honeybee',
'hornet',
'inchworm',
'ladybug',
'locust',
'mantis',
'mayfly',
'mosquito',
'moth',
'sawfly',
'silkworm',
'termite',
'wasp',
'woodlouse',
'centipede',
'millipede',
'pronghorn',
'antelope',
'bison',
'buffalo',
'bull',
'chamois',
'cow',
'gazelle',
'gaur',
'goat',
'ibex',
'impala',
'kudu',
'markhor',
'mouflon',
'muskox',
'nyala',
'sheep',
'wildebeest',
'yak',
'zebu',
'alpaca',
'camel',
'llama',
'vicugna',
'caribou',
'chital',
'deer',
'elk',
'moose',
'pudu',
'reindeer',
'sambar',
'wapiti',
'beluga',
'dolphin',
'narwhal',
'orca',
'porpoise',
'whale',
'donkey',
'horse',
'stallion',
'zebra',
'giraffe',
'okapi',
'hippo',
'rhino',
'boar',
'hog',
'pig',
'swine',
'warthog',
'peccary',
'buzzard',
'eagle',
'goshawk',
'harrier',
'hawk',
'vulture',
'duck',
'goose',
'swan',
'teal',
'bird',
'hummingbird',
'swift',
'kiwi',
'potoo',
'seriema',
'cassowary',
'emu',
'condor',
'auk',
'avocet',
'guillemot',
'kittiwake',
'puffin',
'seagull',
'skua',
'stork',
'dodo',
'dove',
'pigeon',
'kingfisher',
'tody',
'bustard',
'coua',
'coucal',
'cuckoo',
'koel',
'malkoha',
'roadrunner',
'kagu',
'caracara',
'falcon',
'kestrel',
'chachalaca',
'chicken',
'curassow',
'grouse',
'guan',
'junglefowl',
'partridge',
'peacock',
'pheasant',
'quail',
'rooster',
'turkey',
'loon',
'coot',
'crane',
'turaco',
'hoatzin',
'bullfinch',
'crow',
'jackdaw',
'jaybird',
'finch',
'lyrebird',
'magpie',
'myna',
'nightingale',
'nuthatch',
'oriole',
'oxpecker',
'raven',
'robin',
'rook',
'skylark',
'sparrow',
'starling',
'swallow',
'waxbill',
'wren',
'heron',
'ibis',
'jacamar',
'piculet',
'toucan',
'toucanet',
'woodpecker',
'flamingo',
'grebe',
'albatross',
'fulmar',
'petrel',
'spoonbill',
'ara',
'cockatoo',
'kakapo',
'lorikeet',
'macaw',
'parakeet',
'parrot',
'penguin',
'ostrich',
'boobook',
'owl',
'cormorant',
'frigatebird',
'pelican',
'quetzal',
'trogon',
'axolotl',
'bullfrog',
'frog',
'newt',
'salamander',
'toad',
'angelfish',
'barracuda',
'carp',
'catfish',
'dogfish',
'goldfish',
'guppy',
'eel',
'flounder',
'herring',
'lionfish',
'mackerel',
'oarfish',
'perch',
'salmon',
'seahorse',
'sturgeon',
'sunfish',
'tench',
'trout',
'tuna',
'wrasse',
'sawfish',
'shark',
'stingray',
'jellyfish',
'alligator',
'caiman',
'crocodile',
'gharial',
'starfish',
'urchin',
'hedgehog',
'coyote',
'dingo',
'dog',
'fennec',
'fox',
'hound',
'jackal',
'tanuki',
'wolf',
'bobcat',
'caracal',
'cat',
'cougar',
'jaguar',
'jaguarundi',
'leopard',
'lion',
'lynx',
'manul',
'ocelot',
'panther',
'puma',
'serval',
'smilodon',
'tiger',
'wildcat',
'aardwolf',
'binturong',
'cheetah',
'civet',
'fossa',
'hyena',
'meerkat',
'mongoose',
'badger',
'coati',
'ermine',
'ferret',
'marten',
'mink',
'otter',
'polecat',
'skunk',
'stoat',
'weasel',
'wolverine',
'seal',
'walrus',
'raccoon',
'ringtail',
'bear',
'panda',
'bat',
'armadillo',
'elephant',
'mammoth',
'mastodon',
'mole',
'hyrax',
'bandicoot',
'bettong',
'cuscus',
'kangaroo',
'koala',
'numbat',
'quokka',
'quoll',
'wallaby',
'wombat',
'echidna',
'platypus',
'tapir',
'anteater',
'sloth',
'agouti',
'capybara',
'chinchilla',
'chipmunk',
'degu',
'dormouse',
'gerbil',
'gopher',
'groundhog',
'jackrabbit',
'jerboa',
'hamster',
'hare',
'lemming',
'marmot',
'mouse',
'muskrat',
'porcupine',
'rabbit',
'rat',
'squirrel',
'vole',
'ape',
'baboon',
'bonobo',
'capuchin',
'chimpanzee',
'galago',
'gibbon',
'gorilla',
'lemur',
'lori',
'macaque',
'mandrill',
'marmoset',
'monkey',
'orangutan',
'tamarin',
'tarsier',
'uakari',
'dugong',
'manatee',
'shrew',
'aardwark',
'clam',
'cockle',
'mussel',
'oyster',
'scallop',
'shellfish',
'ammonite',
'cuttlefish',
'nautilus',
'octopus',
'squid',
'limpet',
'slug',
'snail',
'sponge',
'tuatara',
'agama',
'chameleon',
'dragon',
'gecko',
'iguana',
'lizard',
'pogona',
'skink',
'adder',
'anaconda',
'asp',
'boa',
'cobra',
'copperhead',
'mamba',
'python',
'rattlesnake',
'sidewinder',
'snake',
'taipan',
'viper',
'tortoise',
'turtle',
'dinosaur',
'raptor',
'mushroom'
]
================================================
FILE: src/components/RunStateTooltip.vue
================================================
{{ state.label }}
at
{{ state.formattedTime }}
================================================
FILE: src/components/ScheduleToggle.vue
================================================
You don't have permission to schedule flows.
This flow is trying to schedule runs but has no schedules! Visit this
flow's
Settings > Schedules to set a new
schedule.
Archived flows cannot be scheduled.
Turn {{ isScheduled ? 'off' : 'on' }} this flow's schedule
================================================
FILE: src/components/Schematics/Legend.vue
================================================
fas fa-square-full
{{ state }}
================================================
FILE: src/components/Schematics/Preview-Dynamic.vue
================================================
Task Run
{{ task.flow_run_name }} -
{{ task.name ? task.name : task.task.name }}
{{ task.state }}
- {{ formDate(task.state_timestamp) }}
{{ formatTime(task.state_timestamp) }}
arrow_right
Task
{{ task.task.name }}
arrow_right
Task Run State Message:
{{ task.state_message }}
Max retries:
{{ task.task.max_retries }}
Retry delay:
{{ task.task.retry_delay }}
Expected Runs:
{{ expectedRuns }}
This data is only available on Flows registered with Prefect Core
0.13.5+
The number of mapped children expected to run. Note that the
number of active mapped runs may be less than this if some have
not yet entered a Pending state.
Result Type:
{{ task.serialized_state._result.type | typeClass }}
Result Location:
{{
task.serialized_state._result.location ||
'None' | shortenString
}}
{{ task.serialized_state._result.location || 'None' }}
Mapped Runs
{{ state }}
({{ mappedChildren.state_counts[state].toLocaleString() }})
trending_up
{{ runs.length }}
Mapped Run{{ runs.length > 1 ? 's' : '' }}
arrow_drop_down
{{ run.state }}
{{ run.state_message }}
{{ run.state_message }}
{{ formatTime(run.state_timestamp) }}
================================================
FILE: src/components/Schematics/Preview-SearchResult.vue
================================================
{{ searchResult.id }}
================================================
FILE: src/components/Schematics/Preview-Static.vue
================================================
Task
{{ task.name }}
arrow_right
Max retries:
{{ task.max_retries }}
Retry delay:
{{ task.retry_delay }}
Class:
{{ task.type | typeClass }}
Trigger:
{{ task.trigger | typeClass }}
================================================
FILE: src/components/Schematics/Preview-Tile.vue
================================================
Type to search for a Task by
name or id
No results matched your search.
================================================
FILE: src/components/Schematics/Schematic-Flow.vue
================================================
center_focus_strong
Reset Viewport
zoom_in
Zoom In
zoom_out
Zoom Out
Sorry, we're unable to load this schematic.
Help us improve by submitting a report.
Submitting report...
Thanks! We'll get our team on it immediately.
By the way, you can
join our Slack
to ask questions, provide feedback, or just to chat! You can also
check out our
docs , which
are filled with lots of helpful tutorials, explanations, and useful
information.
Submit Report
check
Report submitted
================================================
FILE: src/components/Schematics/Schematic-Node.vue
================================================
{{ nodeData.data.task.name }}
P
R
{{ nodeData.data.name }}
{{ finishedStates }}/{{
nodeData.data.serialized_state.n_map_states
}}
{{
nodeData.data.serialized_state.n_map_states > 1 ? 'runs' : 'run'
}}
complete
{{ finishedStates }}/{{
nodeData.data.serialized_state.n_map_states
}}
================================================
FILE: src/components/Schematics/Tooltip.vue
================================================
{{ isParameter ? '[Parameter]' : '' }}
{{ data.name }}
Duration:
================================================
FILE: src/components/SetStateDialog.vue
================================================
label_important
Set State
Change the state of this {{ dialogType }}
Change the state of
{{ taskRun.name }}
Change the state of this run of
{{ taskRun.task.name }}
Change the state of
{{ flowRun.name }}
Confirm
If you have a lot of child mapped tasks, the state change may
continue in the background.
This may have an effect on downstream tasks.
Confirm
Cancel
label_important
Set State
You don't have permission to change flow run states
label_important
Set State
You don't have permission to change states
You can only change the marked state of a finished task-run
================================================
FILE: src/components/Snackbars/Snackbars.vue
================================================
{{ item.supertext }}
{{ item.subtext }}
{{ item.linkText || 'Details' }}
close
================================================
FILE: src/components/SupportBanner.vue
================================================
Prefect now offers Standard support for self-serve users on Prefect
Cloud 2. To purchase, reach out to help@prefect.io or
set up time
with our team.
close
================================================
FILE: src/components/SystemActions/CancelAll.vue
================================================
Complete!
Stopping...
Stop all runs
{{ loaded }} / {{ loadingKey }}
{{ flowRuns.length }} run{{ flowRuns.length == 1 ? '' : 's' }} can be
stopped
No runs to stop
================================================
FILE: src/components/SystemActions/ClearLate.vue
================================================
Complete!
Clearing...
Clear late runs
{{ loaded }} / {{ loadingKey }}
{{ flowRuns.length.toLocaleString() }} late run{{
flowRuns.length == 1 ? '' : 's'
}}
No late runs
================================================
FILE: src/components/SystemActions/WorkQueue.vue
================================================
Work queue
================================================
FILE: src/components/TaskRunMenu.vue
================================================
{{ taskRun.name ? taskRun.name : taskRun.task_name }}
{{ taskRun.map_index > -1 ? `(${taskRun.map_index})` : '' }}
State:
{{ taskRun.state }}
Duration:
Start:
{{ formatTime(taskRun.start_time) }}
End:
{{ formatTime(taskRun.end_time) }}
Updated:
{{ formatTime(taskRun.state_timestamp) }}
Max Retries:
{{ taskRun.max_retries || 0 }}
Retry delay:
{{ taskRun.retry_delay || 0 }}
Message:
{{ taskRun.state_message || 'No message' }}
Result:
{{ taskRun.state_result || 'No result' }}
================================================
FILE: src/components/TaskRunTooltip.vue
================================================
{{ taskRun.data.task_name }}
Scheduled for:
{{ logTimeExtended(taskRun.data.scheduled_start_time) }}
Started:
{{ logTimeExtended(taskRun.start_time) }}
Ended:
{{ logTimeExtended(taskRun.end_time) }}
Duration:
Expected Runs:
{{ expectedRuns(taskRun) }}
Mapped Runs
{{ state }}
({{
taskRun.data.mappedChildren.state_counts[
state
].toLocaleString()
}})
+{{ hiddenTaskRuns.length }} more
================================================
FILE: src/components/TeamListItem.vue
================================================
{{
u.first_name && u.last_name
? u.first_name[0] + u.last_name[1]
: u.username[0] + u.username[1]
}}
+{{ users.length - 3 }}
sync_alt
delete
================================================
FILE: src/components/TimelineTooltip.vue
================================================
{{ props.tooltip.data.flow.name }}
...
{{ props.tooltip.data.name }}
{{ props.tooltip.data.state }}
Project:
{{ props.tooltip.data.flow.project.name }}
Scheduled for:
{{ props.tooltip.data.display_scheduled_start_time }}
Started:
{{ props.tooltip.data.display_start_time }}
Ended:
{{ props.tooltip.data.display_end_time }}
Duration:
================================================
FILE: src/components/Tree/Tree.vue
================================================
keyboard_arrow_right
{{ open && iconActive_ ? iconActive_ : icon_ }}
{{ name_ }}
View
arrow_right
Current
({{ options.noData[depth] }})
================================================
FILE: src/components/TutorialBanner.vue
================================================
school
Pst! It looks like you don't have any flows yet;
check out the
tutorials
for walkthroughs on writing and registering flows with Prefect and
the for more in-depth looks at the Prefect APIs
check out our
documentation
for help on getting started.
close
================================================
FILE: src/components/UpgradeBadge.vue
================================================
Upgrade
fa-fw fa-sm fa-cloud
Upgrade now to get access!
================================================
FILE: src/components/Visualizations/BarChart.vue
================================================
================================================
FILE: src/components/Visualizations/RingChart.vue
================================================
================================================
FILE: src/components/Visualizations/StackedLineChart.vue
================================================
{{ segment.label }}: {{ segment.value.toLocaleString() }}
No data.
================================================
FILE: src/components/Visualizations/Timeline/Bar.js
================================================
================================================
FILE: src/components/Visualizations/Timeline.vue
================================================
add
arrow_left
arrow_right
remove
+
-
←
→
Scale:
{{ Math.round(transform.k * 100) / 100 }}
Transform
{{ Math.round(transform.x * 100) / 100 }},
{{ Math.round(transform.y * 100) / 100 }}
Translate Extent
{{ translateExtent }},
{{ pauseUpdates ? 'Play' : 'Pause' }}
{{ condensed_ ? 'Expand' : 'Collapse' }}
Redraw
================================================
FILE: src/components/WorkQueueBanner.vue
================================================
Work is paused - no runs will be released to your agents.
Resume work
================================================
FILE: src/directives/disable-read-only.js
================================================
import store from '@/store'
export const insertedActions = (el, binding) => {
//checks again after all data loads (for component level disabling)
const readOnly = store.getters['tenant/role'] === 'READ_ONLY_USER'
if (readOnly || binding.value) {
if (el.classList.contains('blue')) {
el.classList.remove('blue')
el.classList.remove('white--text')
el.classList.add('needBlue')
}
if (el.classList.contains('primary')) {
el.classList.remove('primary')
el.classList.add('needPrimary')
}
if (el.style.color === 'primary') {
el.classList.add('needPrimary')
}
el.disabled = true
el.style.color = 'grey'
el.style.backgroundColor = 'lightgrey'
el.style.boxShadow = 'none'
}
}
export const updatedActions = (el, binding) => {
//checks again after all data loads (for component level disabling)
const readOnly = store.getters['tenant/role'] === 'READ_ONLY_USER'
if (readOnly || binding.value) {
if (el.classList.contains('blue')) {
el.classList.remove('blue')
el.classList.remove('white--text')
el.classList.add('needBlue')
}
if (el.classList.contains('primary')) {
el.classList.remove('primary')
el.classList.add('needPrimary')
}
if (el.style.color === 'primary') {
el.classList.add('needPrimary')
}
el.disabled = true
el.style.color = 'grey'
} else {
//set back if new data (in component) means button should not be disabled
el.disabled = false
if (el.classList.contains('needBlue')) {
el.classList.remove('needBlue')
el.classList.add('blue')
el.classList.add('white--text')
} else if (el.classList.contains('needPrimary' || 'primary')) {
el.classList.remove('needPrimary')
el.classList.add('primary')
el.classList.add('white--text')
} else {
el.style.color = 'black'
}
}
}
================================================
FILE: src/filters/duration.js
================================================
import { durationToEnglish } from '@/utils/dateTime'
export default function(duration) {
return durationToEnglish(duration)
}
================================================
FILE: src/filters/filterOnePercent.js
================================================
export default function(x) {
return x < 1 ? '< 1' : x
}
================================================
FILE: src/filters/round.js
================================================
import round from 'lodash/round'
export function roundWhole(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundWhole filter requires a number instead.`
)
return x
}
return round(x)
}
export function roundTenths(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundTenths filter requires a number instead.`
)
return x
}
return round(x, 1)
}
export function roundHundredths(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundHundredths filter requires a number instead.`
)
return x
}
return round(x, 2)
}
export function roundThousandths(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundThousandths filter requires a number instead.`
)
return x
}
return round(x, 3)
}
export function roundTens(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundTens filter requires a number instead.`
)
return x
}
return round(x, -1)
}
export function roundHundreds(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundHundreds filter requires a number instead.`
)
return x
}
return round(x, -2)
}
export function roundThousands(x) {
if (!x || typeof x !== 'number') {
// eslint-disable-next-line no-console
console.warn(
`Value ${x} is a ${typeof x}, roundThousands filter requires a number instead.`
)
return x
}
return round(x, 3)
}
================================================
FILE: src/filters/shorten.js
================================================
export default function(string, numberOfCharacters = 8, startingIndex = 0) {
if (!(typeof string === 'string') || !string) {
return ''
}
return string.substring(startingIndex, startingIndex + numberOfCharacters)
}
================================================
FILE: src/graphql/Account/invitations.gql
================================================
query AccountMembershipInvitations {
membership_invitation {
id
created
email
role
}
}
================================================
FILE: src/graphql/Account/license-users.gql
================================================
query LicenseUsers {
license_users {
id
first_name
last_name
username
email
memberships {
tenant_id
membership_id
role_id
}
}
}
================================================
FILE: src/graphql/Agent/FlowRuns.gql
================================================
query AgentSubmittableRuns {
flow_run (where: {state: {_eq: "Scheduled"}}) {
id
name
state
labels
scheduled_start_time
version
flow_id
flow {
id
name
}
}
}
================================================
FILE: src/graphql/Agent/agent-hooks.gql
================================================
query AgentHooks{
hook (where: {event_type: {_eq: "AgentSLAFailedEvent"}}){
event_tags
action {
id
name
action_type
}
event_type
}
}
================================================
FILE: src/graphql/Agent/agents.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Agents {
agent {
id
agent_config_id
core_version
created
name
labels
last_queried
type
${
isCloud
? `
token_name
token_id`
: ''
}
}
}`
}
================================================
FILE: src/graphql/Agent/delete-agent.gql
================================================
mutation DeleteAgent($agentId: UUID!) {
delete_agent(input: { agent_id: $agentId }) {
success
}
}
================================================
FILE: src/graphql/Agent/in-progress-flow-runs.gql
================================================
query InProgressFlowRuns($agentId: uuid) {
flow_run(
where: {
agent_id: { _eq: $agentId },
state: { _in: ["Running", "Submitted", "Cancelling"] }
}
order_by: { start_time: desc }
) {
id
name
start_time
state
state_timestamp
flow {
id
name
flow_group_id
}
updated
}
}
================================================
FILE: src/graphql/Agent/recent-runs.gql
================================================
query RecentRuns($agentId: uuid, $day: timestamptz) {
flow_run(
where: {
_and: [
{state: { _neq: "Scheduled" }},
{agent_id: { _eq: $agentId}},
],
_or:[
{scheduled_start_time:{ _gt: $day}},
{start_time: { _gt: $day}}
]
}
order_by: { start_time: desc_nulls_last }
limit: 10
) {
id
name
end_time
flow_id
start_time
state
agent_id
}
}
================================================
FILE: src/graphql/Agent/table-flow-runs-count.gql
================================================
query TableFlowRunsCount(
$agent_id: uuid
$name: String
$state: [String!]
) {
flow_run_aggregate(
where: {
agent_id: {_eq: $agent_id}
name: { _ilike: $name }
state: { _in: $state, _neq: "Scheduled" }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Agent/table-flow-runs.gql
================================================
query TableFlowRuns(
$name: String
$limit: Int
$offset: Int
$orderBy: [flow_run_order_by!]
$agent_id: uuid
$state: [String!]
) {
flow_run(
where: {
agent_id: {_eq: $agent_id}
name: { _ilike: $name }
state: { _in: $state, _neq: "Scheduled" }
}
order_by: $orderBy
limit: $limit
offset: $offset
) {
id
name
end_time
scheduled_start_time
start_time
state
flow {
name
id
}
}
}
================================================
FILE: src/graphql/Agent/timeline-flow-runs.gql
================================================
query AgentTimelineFlowRuns($agent_id: uuid) {
flow_run(
where: {
agent_id: { _eq: $agent_id }
}
limit: 100
order_by: { scheduled_start_time: desc }
) {
id
name
flow_id
end_time
start_time
scheduled_start_time
state
}
}
================================================
FILE: src/graphql/Artifacts/task-run-artifacts-aggregate.gql
================================================
query TaskRunArtifacts($taskRunIds: [uuid!]) {
task_run_artifact_aggregate(where: { task_run_id: { _in: $taskRunIds } }) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Artifacts/task-run-artifacts.gql
================================================
query TaskRunArtifacts($taskRunIds: [uuid!]) {
task_run_artifact(where: { task_run_id: { _in: $taskRunIds } }) {
id
created
data
kind
task_run {
id
name
state
task {
id
name
}
}
}
}
================================================
FILE: src/graphql/Artifacts/task-run-ids.gql
================================================
query TaskRunIds($where: task_run_bool_exp!, $limit: Int, $offset: Int) {
task_run(where: $where, limit: $limit, offset: $offset) {
id
}
}
================================================
FILE: src/graphql/Automations/actions.gql
================================================
query Actions
{action {
id
name
action_type
action_config
}}
================================================
FILE: src/graphql/Automations/agent-config-by-pk.gql
================================================
query AgentConfig($agentConfigId: uuid!) {
agent_config_by_pk(id: $agentConfigId) {
id
name
agents {
id
type
name
}
}
}
================================================
FILE: src/graphql/Automations/agent-config.gql
================================================
query AgentConfig {
agent_config {
id
name
}
}
================================================
FILE: src/graphql/Automations/delete-agent-config.gql
================================================
mutation deleteAgentConfig($agentConfigInput: delete_agent_config_input!){
delete_agent_config(
input: $agentConfigInput
) {
error
success
}
}
================================================
FILE: src/graphql/Automations/flow-config-by-pk.gql
================================================
query FlowSLAConfig($flowSLAConfigId: uuid!) {
flow_sla_config_by_pk(id: $flowSLAConfigId) {
flow_groups {
id
flow_group_id
}
kind
duration_seconds
}
}
================================================
FILE: src/graphql/Automations/flow-only-hooks.gql
================================================
query Actions {
hook(where: { event_type: { _neq: "AgentSLAFailedEvent" } }) {
id
event_tags
created
event_type
__typename
action {
name
id
action_config
action_type
}
}
}
================================================
FILE: src/graphql/Automations/flows.gql
================================================
query ActionFlows ($project: uuid, $flowGroupIds: [uuid!]) {
flow(distinct_on: flow_group_id, where: {_and: [{project_id: {_eq: $project}, archived: {_eq: false}, flow_group_id: {_in: $flowGroupIds}}]}) {
id
archived
name
flow_group_id
version_group_id
project {
name
id
}
}
}
================================================
FILE: src/graphql/Automations/hooks.gql
================================================
query Actions {
hook{
id
event_tags
created
event_type
__typename
action {
name
id
action_config
action_type
}
}
}
================================================
FILE: src/graphql/Calendar/calendar-day-flow-runs.gql
================================================
query CalendarDayFlowRuns($startTime: timestamptz, $endTime: timestamptz, $flowId: uuid!) {
flow_run (
where: {
_and: [
{flow_id: { _eq: $flowId}},
{start_time: { _gt: $startTime}},
{start_time: { _lt: $endTime}}
]
}
)
{
id
flow_id
name
end_time
start_time
scheduled_start_time
state
state_message
}
}
================================================
FILE: src/graphql/Calendar/calendar-day-ongoing-flow-runs.gql
================================================
query CalendarDayOngoingFlowRuns($flowId: uuid!, $startTime:timestamptz, $endTime: timestamptz) {
flow_run (
where: {
_and: [
{flow_id: { _eq: $flowId}},
{start_time: {_lt: $startTime}}
{end_time: {_gt: $endTime}}
]
}
)
{
id
flow_id
name
end_time
start_time
scheduled_start_time
state
state_message
}
}
================================================
FILE: src/graphql/Calendar/calendar-day-running-flow-runs.gql
================================================
query CalendarDayRunningFlowRuns($flowId: uuid!, $startTime:timestamptz) {
flow_run (
where: {
_and: [
{flow_id: { _eq: $flowId}},
{state: { _eq: "Running"}},
{start_time: {_lt: $startTime}}
]
}
)
{
id
flow_id
name
end_time
start_time
scheduled_start_time
state
state_message
}
}
================================================
FILE: src/graphql/Calendar/calendar-day-scheduled-flow-runs.gql
================================================
query CalendarDayScheduledFlowRuns($startTime: timestamptz, $endTime: timestamptz, $flowId: uuid!) {
flow_run (
where: {
_and: [
{scheduled_start_time: { _gt: $startTime}},
{scheduled_start_time: { _lt: $endTime}},
{start_time: {_is_null: true}},
{flow_id: { _eq: $flowId}}
]
}
)
{
id
flow_id
name
end_time
start_time
scheduled_start_time
state
state_message
}
}
================================================
FILE: src/graphql/Calendar/calendar-flow-groups.gql
================================================
query flowGroups {
flow_group {
id
name
flows (where: {archived: {_eq: false}}) {
name
id
version
}
}
}
================================================
FILE: src/graphql/Calendar/calendar-flow-runs.gql
================================================
query CalendarFlowRuns($startTime: timestamptz, $endTime: timestamptz) {
flow_run (
where: {
_and: [
{start_time: { _gt: $startTime}},
{start_time: { _lt: $endTime}}
]
}
)
{
id
flow_id
}
}
================================================
FILE: src/graphql/Calendar/calendar-flows.gql
================================================
query CalendarFlow( $id: uuid!) {
flow_by_pk(id: $id)
{
id
name
is_schedule_active
}
}
================================================
FILE: src/graphql/Calendar/calendar-ongoing-flow-runs.gql
================================================
query CalendarOngoingFlowRuns($startTime:timestamptz, $endTime: timestamptz) {
flow_run (
where: {
_and: [
{start_time: {_lt: $startTime}}
{end_time: {_gte: $endTime}}
]
}
distinct_on: flow_id
limit: 1
)
{
id
flow_id
}
}
================================================
FILE: src/graphql/Calendar/calendar-running-flow-runs.gql
================================================
query CalendarRunningFlowRuns($startTime:timestamptz) {
flow_run (
where: {
_and: [
{state: { _eq: "Running"}},
{start_time: {_lt: $startTime}}
]
}
limit: 1
distinct_on: flow_id
)
{
id
flow_id
}
}
================================================
FILE: src/graphql/Calendar/calendar-scheduled-flow-runs.gql
================================================
query CalendarScheduledFlowRuns($startTime: timestamptz, $endTime: timestamptz) {
flow_run (
where: {
_and: [
{scheduled_start_time: { _gt: $startTime}},
{scheduled_start_time: { _lt: $endTime}},
{start_time: {_is_null: true}},
]
}
)
{
id
flow_id
}
}
================================================
FILE: src/graphql/Dashboard/committed-usage.gql
================================================
query Usage($license_id: uuid) {
usage: billing_usage(where: { license_id: { _eq: $license_id } }) {
id
kind
runs
tenant_id
timestamp
usage_last_updated
}
}
================================================
FILE: src/graphql/Dashboard/failures-count.gql
================================================
query FailureCount($heartbeat: timestamptz, $projectId: uuid) {
flow_aggregate(
where: {
flow_runs: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } }
project_id: { _eq: $projectId }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Dashboard/failures-drawer.gql
================================================
query FailDetails($heartbeat: timestamptz, $projectIds: [uuid!]) {
flow_run(
where: {
state: { _eq: "Failed" }
updated: { _gte: $heartbeat }
flow: { project_id: { _in: $projectIds } }
}
distinct_on: flow_id
order_by: [{ flow_id: asc }, { updated: desc }]
) {
id
name
scheduled_start_time
start_time
end_time
flow {
id
name
failed_runs_count: flow_runs_aggregate(
where: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } }
) {
aggregate {
count
}
}
runs_count: flow_runs_aggregate(
where: { updated: { _gte: $heartbeat } }
) {
aggregate {
count
}
}
}
}
}
================================================
FILE: src/graphql/Dashboard/flow-count.gql
================================================
query FlowCount($searchParams: flow_bool_exp) {
flowCount: flow_aggregate(where: $searchParams) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Dashboard/flow-failures.gql
================================================
query FlowFailures($projectId: uuid, $heartbeat: timestamptz, $tenantId: uuid) {
flow_run(
where: {
tenant_id: { _eq: $tenantId }
flow: { project_id: { _eq: $projectId } }
state: { _eq: "Failed" }
scheduled_start_time: { _gte: $heartbeat }
}
distinct_on: flow_id
order_by: { flow_id: asc, scheduled_start_time: desc }
) {
flow_id
state_timestamp
flow {
id
name
flow_group_id
}
scheduled_start_time
}
}
================================================
FILE: src/graphql/Dashboard/flow-run-drawer.gql
================================================
query FlowRun($id: uuid!) {
flow_run_by_pk(id: $id) {
id
name
state
context
auto_scheduled
state_message
created_by {
username
}
start_time
end_time
flow {
id
name
version
}
parameters
scheduled_start_time
}
}
================================================
FILE: src/graphql/Dashboard/flow-runs-count.gql
================================================
query FlowRunsCount($projectIds: [uuid!], $heartbeat: timestamptz) {
flow_run_aggregate(
where: {
flow: { project_id: { _in: $projectIds } }
updated: { _gte: $heartbeat }
state: { _neq: "Scheduled" }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Dashboard/flow-runs.gql
================================================
query FlowRuns($projectId: uuid, $heartbeat: timestamptz) {
Success: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Success" }
}
) {
aggregate {
count
}
}
Running: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Running" }
}
) {
aggregate {
count
}
}
Pending: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Pending" }
}
) {
aggregate {
count
}
}
Failed: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Failed" }
}
) {
aggregate {
count
}
}
ClientFailed: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "ClientFailed" }
}
) {
aggregate {
count
}
}
Submitted: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Submitted" }
}
) {
aggregate {
count
}
}
Queued: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Queued" }
}
) {
aggregate {
count
}
}
Resume: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Resume" }
}
) {
aggregate {
count
}
}
Retrying: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Retrying" }
}
) {
aggregate {
count
}
}
Looped: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Looped" }
}
) {
aggregate {
count
}
}
Cached: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Cached" }
}
) {
aggregate {
count
}
}
Mapped: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Mapped" }
}
) {
aggregate {
count
}
}
TimedOut: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "TimedOut" }
}
) {
aggregate {
count
}
}
TriggerFailed: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "TriggerFailed" }
}
) {
aggregate {
count
}
}
Skipped: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Skipped" }
}
) {
aggregate {
count
}
}
Finished: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Finished" }
}
) {
aggregate {
count
}
}
Cancelled: flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
scheduled_start_time: { _gte: $heartbeat }
state: { _eq: "Cancelled" }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Dashboard/flows.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Flows(
$limit: Int
$offset: Int
$orderBy: [flow_order_by!]
$searchParams: flow_bool_exp
) {
flow(
where: $searchParams
limit: $limit
offset: $offset
order_by: $orderBy
) {
id
flow_group_id
archived
core_version
created
${
isCloud
? `
created_by {
id
username
}`
: ''
}
description
environment
flow_group {
id
created
name
schedule
}
is_schedule_active
name
parameters
project {
id
name
}
schedule
storage
updated
version
version_group_id
}
}
`
}
================================================
FILE: src/graphql/Dashboard/heartbeat.gql
================================================
query Heartbeat($projectId: uuid, $timestamp: timestamptz, $state: String, $filterOutStates: [String!]) {
flow_run(
limit: 10
where: {
flow: { project_id: { _eq: $projectId } }
state_timestamp: { _gte: $timestamp }
state: { _eq: $state, _nin: $filterOutStates }
}
order_by: { updated: desc_nulls_last }
) {
id
name
scheduled_start_time
state
state_timestamp
flow {
id
name
}
__typename
}
}
================================================
FILE: src/graphql/Dashboard/in-progress-flow-runs.gql
================================================
query InProgressFlowRuns($projectId: uuid) {
flow_run(
where: {
flow: { project_id: { _eq: $projectId } }
state: { _in: ["Running", "Submitted", "Cancelling"] }
}
order_by: { start_time: desc }
) {
id
name
start_time
state
state_timestamp
flow {
id
name
flow_group_id
}
updated
}
}
================================================
FILE: src/graphql/Dashboard/invoice.gql
================================================
query Invoice($licenseId: UUID!) {
preview_invoice(license_id: $licenseId)
}
================================================
FILE: src/graphql/Dashboard/last-flow-runs.gql
================================================
query LastFlowRuns($flowId: uuid) {
flow_run(
where: { flow_id: { _eq: $flowId }, state: { _neq: "Scheduled" } }
order_by: { start_time: desc_nulls_last }
limit: 10
) {
id
end_time
flow_id
start_time
state
}
}
================================================
FILE: src/graphql/Dashboard/project-name.gql
================================================
query Project($id: uuid!) {
project: project_by_pk(id: $id) {
id
name
}
}
================================================
FILE: src/graphql/Dashboard/project.gql
================================================
query Project($id: uuid!) {
project: project_by_pk(id: $id) {
id
name
description
created
}
}
================================================
FILE: src/graphql/Dashboard/projects.gql
================================================
query Projects {
project {
id
name
}
}
================================================
FILE: src/graphql/Dashboard/task-failures.gql
================================================
query FailedTasks($heartbeat: timestamptz) {
task_run(
where: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } }
distinct_on: task_id
) {
id
updated
task {
id
name
flow {
name
}
}
}
}
================================================
FILE: src/graphql/Dashboard/timeline-flow-runs.gql
================================================
query TimelineFlowRuns($limit: Int, $project_id: uuid, $date: timestamptz) {
flow_run(
where: {
flow: { project_id: { _eq: $project_id } }
state: { _neq: "Scheduled" }
scheduled_start_time: { _gte: $date }
}
limit: $limit
order_by: { scheduled_start_time: desc }
) {
id
flow_id
name
end_time
start_time
scheduled_start_time
state
}
}
================================================
FILE: src/graphql/Dashboard/timeline-flow.gql
================================================
query TimelineFlow($flowId: uuid!) {
flow_by_pk(id: $flowId) {
id
name
project {
name
}
}
}
================================================
FILE: src/graphql/Dashboard/timeline-scheduled-flow-runs.gql
================================================
query TimelineFlowRuns($project_id: uuid) {
flow_run(
where: {
flow: { project_id: { _eq: $project_id } }
state: { _eq: "Scheduled" }
}
limit: 10
order_by: { scheduled_start_time: asc_nulls_last }
) {
id
flow_id
name
end_time
start_time
scheduled_start_time
state
}
}
================================================
FILE: src/graphql/Dashboard/upcoming-flow-runs-count.gql
================================================
query UpcomingFlowRunsCount($projectId: uuid) {
flow_run_aggregate(
where: {
flow: { project_id: { _eq: $projectId } }
state: { _eq: "Scheduled" }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Dashboard/upcoming-flow-runs.gql
================================================
query UpcomingFlowRuns($projectId: uuid) {
flow_run(
where: {
flow: { project_id: { _eq: $projectId } }
state: { _eq: "Scheduled" }
}
order_by: [{ scheduled_start_time: asc }, { flow: { name: asc } }]
) {
id
name
state
labels
scheduled_start_time
version
flow {
id
name
schedule
environment
is_schedule_active
}
}
}
================================================
FILE: src/graphql/Dashboard/usage.gql
================================================
query Usage($from: timestamptz, $to: timestamptz, $license_id: uuid) {
usage: billing_usage(
where: {
timestamp: { _gte: $from, _lte: $to }
license_id: { _eq: $license_id }
}
) {
id
kind
runs
license_id
timestamp
usage_last_updated
}
}
================================================
FILE: src/graphql/FirstRunWorkflow/flow-run.gql
================================================
query FlowRun(
$id: uuid!
$logId: uuid
$levels: [String!]
$limit: Int = 100
$offset: Int = 0
$searchText: String
$timestampFrom: timestamptz
$timestampTo: timestamptz
) {
flow_run_by_pk(id: $id) {
id
end_time
name
scheduled_start_time
state
start_time
logs(
limit: $limit
offset: $offset
order_by: { timestamp: desc }
where: {
id: { _eq: $logId }
level: { _in: $levels }
message: { _ilike: $searchText }
timestamp: { _gte: $timestampFrom, _lte: $timestampTo }
}
) {
id
level
message
name
timestamp
}
}
}
================================================
FILE: src/graphql/FirstRunWorkflow/project-names.gql
================================================
query {
project {
id
name
}
}
================================================
FILE: src/graphql/Flow/cloud-hooks.gql
================================================
query CloudHooks($id: String) {
cloud_hook(where: { version_group_id: { _eq: $id } }) {
id
active
config
created
name
states
type
}
}
================================================
FILE: src/graphql/Flow/errors.gql
================================================
query Errors(
$updated: timestamptz_comparison_exp
$flow_group_id: uuid
$flow_id: uuid
) {
flow_run(
where: {
updated: $updated
flow: { id: { _eq: $flow_id }, flow_group_id: { _eq: $flow_group_id } }
}
limit: 50
order_by: [{ updated: desc }]
) {
id
name
task_runs(where: { state: { _eq: "Failed" } }){
task{
id
name
}
id
state_message
state_timestamp
}
}
}
================================================
FILE: src/graphql/Flow/flow-by-pk.gql
================================================
query FlowByPk($flowId: uuid!) {
flow_by_pk(id: $flowId) {
id
name
version
schedule
flow_group_id
}
}
================================================
FILE: src/graphql/Flow/flow-drawer.gql
================================================
query Flow($id: uuid!) {
flow_by_pk(id: $id) {
id
name
description
created
created_by {
username
}
archived
storage
environment
parameters
version
schedules {
id
active
schedule
schedule_start
schedule_end
}
project {
id
name
}
}
}
================================================
FILE: src/graphql/Flow/flow-run-by-pk.gql
================================================
query FlowRunByPK($id: uuid!) {
flow_run_by_pk(id: $id) {
id
name
}
}
================================================
FILE: src/graphql/Flow/flow-runs.gql
================================================
query FlowRuns($flow_group_id: uuid, $flow_id: uuid, $heartbeat: timestamptz) {
Success: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Success" }
}
) {
aggregate {
count
}
}
Failed: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Failed" }
}
) {
aggregate {
count
}
}
Submitted: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Submitted" }
}
) {
aggregate {
count
}
}
Paused: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Paused" }
}
) {
aggregate {
count
}
}
Resume: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Resume" }
}
) {
aggregate {
count
}
}
Running: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Running" }
}
) {
aggregate {
count
}
}
Cancelled: flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
updated: { _gte: $heartbeat }
state: { _eq: "Cancelled" }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Flow/flow-versions-count.gql
================================================
query VersionsCount($flow_group_id: uuid!, $search: Int) {
flow_group_by_pk(id: $flow_group_id) {
id
flows_aggregate(where: { version: { _eq: $search } }) {
aggregate {
count
}
}
}
}
================================================
FILE: src/graphql/Flow/flow-versions-runs.gql
================================================
query VersionsRuns($flow_ids: [uuid!]) {
flow(where: { id: { _in: $flow_ids } }) {
id
name
version
flow_runs(
where: {
_and: [{ state: { _neq: "Scheduled" } }, { state: { _neq: "Running" } }]
}
order_by: { updated: desc }
limit: 10
) {
id
name
start_time
end_time
state
}
}
}
================================================
FILE: src/graphql/Flow/flow-versions.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Versions(
$limit: Int
$offset: Int
$order_by: [flow_order_by!]
$flow_group_id: uuid!
$search: Int
) {
flow_group_by_pk(id: $flow_group_id) {
id
flows(
order_by: $order_by
where: { version: { _eq: $search } }
limit: $limit
offset: $offset
) {
id
archived
created
${
isCloud
? `
created_by {
id
username
}
`
: ''
}
name
version
}
}
}
`
}
================================================
FILE: src/graphql/Flow/flow.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Flow($id: uuid!) {
flow_group_by_pk(id: $id) {
id
labels
created
description
name
default_parameters
schedule
flows {
id
archived
core_version
created
${
isCloud
? `
created_by {
id
username
}`
: ''
}
description
run_config
environment
flow_group_id
is_schedule_active
name
parameters
project {
id
name
}
schedule
storage
updated
version
version_group_id
}
settings
updated
}
}
`
}
================================================
FILE: src/graphql/Flow/heartbeat.gql
================================================
query Heartbeat($flow_group_id: uuid, $flow_id: uuid, $state: String, $filterOutStates: [String!]) {
flow_run(
limit: 10
where: {
flow: { id: { _eq: $flow_id }, flow_group_id: { _eq: $flow_group_id } }
state: { _eq: $state, _nin: $filterOutStates }
}
order_by: { updated: desc_nulls_last }
) {
id
name
scheduled_start_time
state
state_message
state_timestamp
__typename
}
}
================================================
FILE: src/graphql/Flow/last-flow-run.gql
================================================
query LastFlowRun($id: uuid!) {
flow_run(
where: { flow_id: { _eq: $id }, state: { _neq: "Scheduled" } }
order_by: { scheduled_start_time: desc }
limit: 1
) {
id
name
state
}
}
================================================
FILE: src/graphql/Flow/past-flow-runs.gql
================================================
query PastFlowRuns($id: uuid!, $heartbeat: timestamptz) {
flow_run(
where: {
flow_id: { _eq: $id }
updated: { _gte: $heartbeat }
state: { _neq: "Scheduled" }
}
order_by: { scheduled_start_time: desc }
) {
id
state
}
}
================================================
FILE: src/graphql/Flow/project-names.gql
================================================
query {
project {
id
name
}
}
================================================
FILE: src/graphql/Flow/table-flow-runs-count.gql
================================================
query TableFlowRunsCount(
$flow_group_id: uuid
$flow_id: uuid
$name: String
$state: [String!]
) {
flow_run_aggregate(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
name: { _ilike: $name }
state: { _in: $state }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Flow/table-flow-runs.gql
================================================
query TableFlowRuns(
$name: String
$limit: Int
$offset: Int
$orderBy: [flow_run_order_by!]
$flow_group_id: uuid
$flow_id: uuid
$state: [String!]
) {
flow_run(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
name: { _ilike: $name }
state: { _in: $state }
}
order_by: $orderBy
limit: $limit
offset: $offset
) {
id
name
end_time
scheduled_start_time
start_time
state
}
}
================================================
FILE: src/graphql/Flow/table-tasks-count.gql
================================================
query TableTasks(
$flowId: uuid
$name: String
$limit: Int
$offset: Int
$orderBy: [task_order_by!]
) {
task_aggregate(
where: { flow_id: { _eq: $flowId }, name: { _ilike: $name } }
order_by: $orderBy
limit: $limit
offset: $offset
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Flow/table-tasks.gql
================================================
query TableTasks(
$flowId: uuid
$name: String
$limit: Int
$offset: Int
$orderBy: [task_order_by!]
) {
task(
where: { flow_id: { _eq: $flowId }, name: { _ilike: $name } }
order_by: $orderBy
limit: $limit
offset: $offset
) {
id
name
max_retries
retry_delay
type
trigger
}
}
================================================
FILE: src/graphql/Flow/timeline-flow-runs.gql
================================================
query TimelineFlowRuns($flow_group_id: uuid, $flow_id: uuid) {
flow_run(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
}
limit: 100
order_by: { scheduled_start_time: desc }
) {
id
name
end_time
start_time
scheduled_start_time
state
}
}
================================================
FILE: src/graphql/Flow/upcoming-flow-runs.gql
================================================
query UpcomingFlowRuns($flow_group_id: uuid, $flow_id: uuid) {
flow_run(
where: {
flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } }
state: { _eq: "Scheduled" }
}
order_by: { scheduled_start_time: asc }
) {
id
labels
name
version
scheduled_start_time
}
}
================================================
FILE: src/graphql/Flow/version-group.gql
================================================
query FlowsByVersionGroup($versionGroupId: String) {
flow(where: { version_group_id: { _eq: $versionGroupId } }) {
id
name
}
}
================================================
FILE: src/graphql/FlowLabelLimit/delete-flow-concurrency-limit.gql
================================================
mutation DeleteFlowConcurrencyLimit($limitId: UUID!) {
delete_flow_concurrency_limit(input: { limit_id: $limitId }) {
success
}
}
================================================
FILE: src/graphql/FlowLabelLimit/flow-label-limit.gql
================================================
query FlowLabelLimit {
flow_concurrency_limit {
id
limit
name
}
}
================================================
FILE: src/graphql/FlowLabelLimit/update-flow-concurrency-limit.gql
================================================
mutation UpdateFlowConcurrencyLimit($label: String!, $limit: Int!) {
update_flow_concurrency_limit(input: { label: $label, limit: $limit }) {
id
}
}
================================================
FILE: src/graphql/FlowLabelUsage/flow-label-usage.gql
================================================
query FlowLabelUsage($labels: [String!]) {
flow_concurrency(labels: $labels) {
label
usage
}
}
================================================
FILE: src/graphql/FlowRun/cancel-flow-run.gql
================================================
mutation CancelFlowRun($flowRunId: UUID!) {
cancel_flow_run(input: { flow_run_id: $flowRunId }) {
state
}
}
================================================
FILE: src/graphql/FlowRun/failed-task-runs.gql
================================================
query FailedTaskRuns($flowRunId: uuid, $failedStates: [String!]) {
task_run(
where: {
flow_run_id: { _eq: $flowRunId }
state: { _in: $failedStates }
}
) {
id
task_id
version
}
}
================================================
FILE: src/graphql/FlowRun/flow-run.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query FlowRun(
$id: uuid!
) {
flow_run_by_pk(id: $id) {
id
name
version
labels
auto_scheduled
${
isCloud
? `
created_by {
id
username
}
`
: ''
}
auto_scheduled
context
end_time
flow_id
name
parameters
scheduled_start_time
start_time
state
state_message
state_timestamp
parameters
context
run_config
agent_id
states {
id
state
timestamp
start_time
}
flow {
id
name
version
version_group_id
core_version
parameters
archived
flow_group_id
project {
id
name
}
}
}
}
`
}
================================================
FILE: src/graphql/FlowRun/gantt-task-runs.gql
================================================
query GanttChart(
$id: uuid!
$taskRunStates: [String!]
$taskName: String
$sort: order_by
$limit: Int
$offset: Int
) {
flow_run_by_pk(id: $id) {
id
name
version
labels
auto_scheduled
scheduled_start_time
start_time
end_time
state
state_message
state_timestamp
parameters
context
agent_id
task_run_states: task_runs(distinct_on: state) {
state
}
task_runs_aggregate(
where: {
state: { _in: $taskRunStates }
task: { name: { _ilike: $taskName }, auto_generated: { _eq: false } }
}
) {
aggregate {
count
}
}
task_runs(
order_by: { start_time: $sort }
where: {
state: { _in: $taskRunStates }
task: { name: { _ilike: $taskName }, auto_generated: { _eq: false } }
}
limit: $limit
offset: $offset
) {
id
state
state_message
state_result
state_timestamp
start_time
end_time
map_index
version
task {
id
name
auto_generated
max_retries
retry_delay
}
name
}
flow {
id
name
version
version_group_id
core_version
project {
id
name
}
}
}
}
================================================
FILE: src/graphql/FlowRun/heartbeat.gql
================================================
query Heartbeat($flowRunId: uuid!, $timestamp: timestamptz, $state: String) {
task_run(
limit: 10
where: {
flow_run_id: { _eq: $flowRunId }
state_timestamp: { _gte: $timestamp }
state: { _eq: $state }
}
order_by: { state_timestamp: desc_nulls_last }
) {
id
map_index
state
state_message
state_timestamp
task {
id
name
max_retries
}
__typename
name
}
}
================================================
FILE: src/graphql/FlowRun/states-aggregate.gql
================================================
query FlowRunStatesAggregate($where: flow_run_state_bool_exp) {
flow_run_state_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/FlowRun/states.gql
================================================
query FlowRunStates(
$where: flow_run_state_bool_exp
$limit: Int!
$offset: Int!
$orderBy: [flow_run_state_order_by!]
) {
flow_run_state(
where: $where
limit: $limit
order_by: $orderBy
offset: $offset
) {
id
state
start_time
timestamp
result
message
}
}
================================================
FILE: src/graphql/FlowRun/table-task-runs-count.gql
================================================
query TableTaskRunsCount(
$flowRunId: uuid
$name: String
$state: [String!]
$heartbeat: timestamptz
) {
task_run_aggregate(
where: {
flow_run_id: { _eq: $flowRunId }
_or: [{ task: { name: { _ilike: $name } }, state: { _in: $state } }]
updated: { _gte: $heartbeat }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/FlowRun/table-task-runs.gql
================================================
query TableTaskRuns(
$flowRunId: uuid
$name: String
$state: [String!]
$limit: Int
$offset: Int
$orderBy: [task_run_order_by!]
) {
flow_run(where: { id: { _eq: $flowRunId } }) {
id
name
task_runs(
where: { task: { name: { _ilike: $name } }, state: { _in: $state } }
order_by: $orderBy
limit: $limit
offset: $offset
) {
map_index
state
id
version
start_time
end_time
task {
id
name
}
name
}
}
}
================================================
FILE: src/graphql/FlowRun/task-run-drawer.gql
================================================
query TaskRun($id: uuid!) {
task_run_by_pk(id: $id) {
id
created
end_time
flow_run {
id
name
}
updated
map_index
start_time
state
state_message
state_result
task {
id
name
description
max_retries
retry_delay
}
version
name
}
}
================================================
FILE: src/graphql/FlowRun/task-run-ids.gql
================================================
query taskRunIds($flowRunId: uuid!, $parentMapIndex: Int, $childMapIndex: Int) {
task_run(
where: {
_and: [
{ flow_run_id: { _eq: $flowRunId } }
{ map_index: { _eq: $parentMapIndex } }
{ map_index: { _gte: $childMapIndex } }
]
}
) {
version
id
map_index
}
}
================================================
FILE: src/graphql/FlowRun/task-runs-aggregate.gql
================================================
query TaskRunsCount($where: task_run_bool_exp) {
task_run_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/FlowRun/task-runs.gql
================================================
query TaskRuns(
$limit: Int!
$offset: Int!
$orderBy: [task_run_order_by!]
$where: task_run_bool_exp
) {
task_run(where: $where, order_by: $orderBy, limit: $limit, offset: $offset) {
id
map_index
state
start_time
end_time
task {
id
name
}
name
}
}
================================================
FILE: src/graphql/FlowRun/timeline-chart-task-runs.gql
================================================
query TaskRuns($flowRunId: uuid!) {
task_run(
where: { flow_run_id: { _eq: $flowRunId }, map_index: { _eq: -1 } }
) {
id
start_time
end_time
name
serialized_state
state
state_timestamp
states {
id
message
state
timestamp
start_time
}
task_id
version
}
}
================================================
FILE: src/graphql/FlowRun/timeline-chart-tasks.gql
================================================
query Tasks($flowId: uuid!) {
task(where: { flow_id: { _eq: $flowId } }) {
id
name
}
}
================================================
FILE: src/graphql/FlowRunLogs/flow-run-metadata.gql
================================================
query FlowRunMetadata($id: uuid!) {
flow_run_by_pk(id: $id) {
id
name
flow {
id
name
project {
id
name
}
}
}
}
================================================
FILE: src/graphql/GlobalSearch/search-by-id.gql
================================================
query GlobalSearchByID($id: uuid!) {
flow(where:{ _or: [{ id: { _eq: $id } }, {flow_group_id: {_eq: $id}}]}) {
id: flow_group_id
flow_id: id
name
project {
id
name
}
}
flow_run(where: { id: { _eq: $id } }) {
id
name
flow {
id
name
project {
id
name
}
}
}
project(where: { id: { _eq: $id } }) {
id
name
}
task(where: { id: { _eq: $id } }) {
id
name
flow {
id
name
project {
id
name
}
}
}
task_run(where: { id: { _eq: $id } }) {
id
name
task {
id
name
flow {
id
name
project {
id
name
}
}
}
}
}
================================================
FILE: src/graphql/GlobalSearch/search-by-name.gql
================================================
query GlobalSearchByName($name: String) {
flow(where: { name: { _ilike: $name }, archived: { _eq: false } }, limit: 5) {
id: flow_group_id
name
project {
id
name
}
__typename
}
flow_run(
where: { name: { _ilike: $name }, flow: { archived: { _eq: false } } }
limit: 5
) {
id
name
flow {
id
name
project {
id
name
}
}
__typename
}
project(where: { name: { _ilike: $name } }, limit: 5) {
id
name
}
task(
where: { name: { _ilike: $name }, flow: { archived: { _eq: false } } }
limit: 5
) {
id
name
flow {
id
name
project {
id
name
}
}
__typename
}
task_run(
where: { name: { _ilike: $name } }
limit: 5
) {
id
name
__typename
}
}
================================================
FILE: src/graphql/Integrations/PagerDutyActions.gql
================================================
query pagerdutyactions ($includeIds: [uuid!]) {
actions: action (where: {id: {_in: $includeIds}}) {
action_type
action_config
id
name
}
}
================================================
FILE: src/graphql/KV/delete-key-value.gql
================================================
mutation DeleteKV($id: UUID!) {
delete_key_value(input: { key_value_id: $id }) {
success
error
}
}
================================================
FILE: src/graphql/KV/get-key-value.gql
================================================
query {
key_value {
key
value
updated
created
id
}
}
================================================
FILE: src/graphql/KV/set-key-value.gql
================================================
mutation SetKV($key: String!, $value: JSON!) {
set_key_value(input: { key: $key, value: $value }) {
id
}
}
================================================
FILE: src/graphql/License/create-self-serve-license.gql
================================================
mutation CreateSelfServeLicense(
$input: create_self_serve_cloud_license_input!
) {
create_self_serve_cloud_license(input: $input) {
id
}
}
================================================
FILE: src/graphql/License/create-usage-based-license.gql
================================================
mutation CreateUsageBasedLicense(
$input: create_self_serve_usage_license_input!
) {
create_self_serve_usage_license(input: $input) {
id
}
}
================================================
FILE: src/graphql/License/license.gql
================================================
query License {
auth_info {
license
permissions
role_id
}
}
================================================
FILE: src/graphql/License/update-customer.gql
================================================
mutation updateCustomer($email: String!, $source: String, $name: String) {
update_stripe_customer(input: { email: $email, source: $source, name: $name}) {
id
}
}
================================================
FILE: src/graphql/License/update-self-serve-cloud-license.gql
================================================
mutation updateLicense ($license_id: String!, $confirm: Boolean!, $users: Int ) {
update_self_serve_cloud_license(input: {license_id: $license_id, confirm: $confirm, users: $users}){
success
error
}
}
================================================
FILE: src/graphql/License/update-stripe-customer.gql
================================================
mutation UpdateStripeCustomer($input: update_stripe_customer_input!) {
update_stripe_customer(input: $input) {
id
}
}
================================================
FILE: src/graphql/Logs/flow-run-logs-scoping.gql
================================================
query FlowRunLogsScoping(
$id: uuid!
$limit: Int = 50
$timestamp: timestamptz
) {
flow_run_by_pk(id: $id) {
id
logs_after: logs(
where: { timestamp: { _gte: $timestamp } }
order_by: { timestamp: asc }
limit: $limit
) {
timestamp
}
logs_before: logs(
where: { timestamp: { _lte: $timestamp } }
order_by: { timestamp: desc }
limit: $limit
) {
timestamp
}
}
}
================================================
FILE: src/graphql/Logs/flow-run-logs.gql
================================================
query FlowRunLogs(
$id: uuid!
$logId: uuid
$levels: [String!]
$limit: Int = 100
$offset: Int = 0
$searchText: String
$timestampFrom: timestamptz
$timestampTo: timestamptz
) {
flow_run_by_pk(id: $id) {
id
state
start_time
logs(
limit: $limit
offset: $offset
order_by: { timestamp: desc }
where: {
id: { _eq: $logId }
level: { _in: $levels }
message: { _ilike: $searchText }
timestamp: { _gte: $timestampFrom, _lte: $timestampTo }
}
) {
id
flow_run_id
level
message
name
task_run_id
timestamp
}
}
}
================================================
FILE: src/graphql/Logs/retrieve-archived-logs.gql
================================================
mutation ArchivedFlowRunLogs($flowRunId: UUID!, $timestamp: DateTime!) {
retrieve_archived_flow_run_logs(
input: { flow_run_id: $flowRunId, timestamp: $timestamp }
) {
success
}
}
================================================
FILE: src/graphql/Logs/task-run-logs-scoping.gql
================================================
query TaskRunLogsScoping(
$id: uuid!
$limit: Int = 50
$timestamp: timestamptz
) {
task_run_by_pk(id: $id) {
id
logs_after: logs(
where: { timestamp: { _gte: $timestamp } }
order_by: { timestamp: asc }
limit: $limit
) {
timestamp
}
logs_before: logs(
where: { timestamp: { _lte: $timestamp } }
order_by: { timestamp: desc }
limit: $limit
) {
timestamp
}
}
}
================================================
FILE: src/graphql/Logs/task-run-logs.gql
================================================
query TaskRunLogs(
$id: uuid!
$logId: uuid
$levels: [String!]
$limit: Int = 100
$offset: Int = 0
$searchText: String
$timestampFrom: timestamptz
$timestampTo: timestamptz
) {
task_run_by_pk(id: $id) {
id
flow_run_id
start_time
state
logs(
limit: $limit
offset: $offset
order_by: { timestamp: desc }
where: {
id: { _eq: $logId }
level: { _in: $levels }
message: { _ilike: $searchText }
timestamp: { _gte: $timestampFrom, _lte: $timestampTo }
}
) {
id
level
message
name
timestamp
}
}
}
================================================
FILE: src/graphql/MappedTasks/mapped-children.gql
================================================
query MappedChildren($taskRunId: UUID!) {
mapped_children(task_run_id: $taskRunId) {
max_end_time
min_start_time
state_counts
}
}
================================================
FILE: src/graphql/Middleware/flow-group.gql
================================================
query Flow($id: uuid!) {
flow_group_by_pk(id: $id) {
id
}
}
================================================
FILE: src/graphql/Middleware/flow.gql
================================================
query Flow($id: uuid!) {
flow_by_pk(id: $id) {
id
version
flow_group_id
}
}
================================================
FILE: src/graphql/Mutations/add-config-to-flow.gql
================================================
mutation CreateFlowGroupSLA($input: create_flow_group_sla_input!) {
create_flow_group_sla(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/cancel-flow-run.gql
================================================
mutation CancelFlowRun($flowRunId: UUID!) {
cancel_flow_run(input: { flow_run_id: $flowRunId }) {
state
}
}
================================================
FILE: src/graphql/Mutations/create-action.gql
================================================
mutation CreateAction($input: create_action_input!) {
create_action(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-agent-config.gql
================================================
mutation CreateAgentConfig($input: create_agent_config_input!) {
create_agent_config(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-agent-sla-failed-hook.gql
================================================
mutation CreateAgentSLAFailedHook($input: create_agent_sla_failed_hook_input!) {
create_agent_sla_failed_hook(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-cloud-hook.gql
================================================
mutation CreateCloudHook($input: create_cloud_hook_input!) {
create_cloud_hook(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-custom-role.gql
================================================
mutation CreateCustomRole ($input: create_custom_role_input!){
create_custom_role (input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-flow-run-state-changed-hook.gql
================================================
mutation CreateFlowRunStateChangedHook(
$input: create_flow_run_state_changed_hook_input!
) {
create_flow_run_state_changed_hook(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-flow-run.gql
================================================
mutation CreateFlowRun(
$context: JSON
$id: UUID!
$flowRunName: String
$parameters: JSON
$scheduledStartTime: DateTime
$runConfig: JSON
$labels: [String!]
) {
create_flow_run(
input: {
context: $context
flow_id: $id
flow_run_name: $flowRunName
parameters: $parameters
scheduled_start_time: $scheduledStartTime
run_config: $runConfig
labels: $labels
}
) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-flow-sla-failed-hook.gql
================================================
mutation CreateFlowSLAFailedHook($input: create_flow_sla_failed_hook_input!) {
create_flow_sla_failed_hook(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-flow-sla.gql
================================================
mutation CreateFlowSLAConfig($input: create_flow_sla_config_input!) {
create_flow_sla_config(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-project.gql
================================================
mutation CreateProject($name: String!, $description: String, $tenantId: UUID!) {
create_project(
input: { name: $name, description: $description, tenant_id: $tenantId }
) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-runner-token.gql
================================================
mutation CreateRunnerToken($name: String!) {
create_api_token(input: { name: $name, scope: RUNNER }) {
id
token
}
}
================================================
FILE: src/graphql/Mutations/create-tenant.gql
================================================
mutation CreateTenant($input: create_tenant_input!) {
create_tenant(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/create-tutorial-flow-run.gql
================================================
mutation CreateFlowRun($flowId: UUID) {
create_flow_run(input: { flow_id: $flowId }) {
id
}
}
================================================
FILE: src/graphql/Mutations/delete-cloud-hook.gql
================================================
mutation DeleteCloudHook($input: delete_cloud_hook_input!) {
delete_cloud_hook(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/delete-flow-group-schedule.gql
================================================
mutation DeleteFlowGroupSchedule($input: delete_flow_group_schedule_input!) {
delete_flow_group_schedule(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/delete-flow-run.gql
================================================
mutation DeleteFlowRun($id: UUID!) {
delete_flow_run(input: { flow_run_id: $id }) {
success
}
}
================================================
FILE: src/graphql/Mutations/delete-hook.gql
================================================
mutation deleteHook ($hookId: UUID!) {
delete_hook (input: {hook_id: $hookId}) {
success
}
}
================================================
FILE: src/graphql/Mutations/delete_action.gql
================================================
mutation deleteAction ($id: UUID!) {
delete_action (input: {action_id: $id}) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/delete_custom-role.gql
================================================
mutation DeleteCustomRole ($input: delete_custom_role_input!){
delete_custom_role (input: $input) {
success
}
}
================================================
FILE: src/graphql/Mutations/deploy-flow.gql
================================================
mutation CreateFlow($projectId: UUID!, $serializedFlow: JSON!) {
create_flow(
input: { project_id: $projectId, serialized_flow: $serializedFlow }
) {
id
}
}
================================================
FILE: src/graphql/Mutations/disable-flow-heartbeat.gql
================================================
mutation DisableFlowHeartbeat($input: disable_flow_heartbeat_input!) {
disable_flow_heartbeat(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/disable-flow-lazarus-process.gql
================================================
mutation DisableFlowLazarusProcess(
$input: disable_flow_lazarus_process_input!
) {
disable_flow_lazarus_process(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/disable-flow-version-lock.gql
================================================
mutation DisableFlowVersionLock($input: disable_flow_version_lock_input!) {
disable_flow_version_lock(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/enable-flow-heartbeat.gql
================================================
mutation EnableFlowHeartbeat($input: enable_flow_heartbeat_input!) {
enable_flow_heartbeat(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/enable-flow-lazarus-process.gql
================================================
mutation EnableFlowLazarusProcess($input: enable_flow_lazarus_process_input!) {
enable_flow_lazarus_process(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/enable-flow-version-lock.gql
================================================
mutation EnableFlowVersionLock($input: enable_flow_version_lock_input!) {
enable_flow_version_lock(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/mark-as-read.gql
================================================
mutation MarkMessageAsRead($input: mark_message_as_read_input!) {
mark_message_as_read(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/pause-tenant-work-queue.gql
================================================
mutation PauseTenantWorkQueue($tenantId: UUID!) {
tenant_work_queue_result: pause_tenant_work_queue(
input: { tenant_id: $tenantId }
) {
success
}
}
================================================
FILE: src/graphql/Mutations/resume-tenant-work-queue.gql
================================================
mutation ResumeTenantWorkQueue($tenantId: UUID!) {
tenant_work_queue_result: resume_tenant_work_queue(
input: { tenant_id: $tenantId }
) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-cloud-hook-active.gql
================================================
mutation SetCloudHookActive($input: set_cloud_hook_active_input!) {
set_cloud_hook_active(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/set-cloud-hook-inactive.gql
================================================
mutation SetCloudHookInactive($input: set_cloud_hook_inactive_input!) {
set_cloud_hook_inactive(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/set-default-params.gql
================================================
mutation SetDefaultParams($input: set_flow_group_default_parameters_input!){
set_flow_group_default_parameters(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/set-flow-description.gql
================================================
mutation setFlowGroupDescription ($description: String!, $flowGroupId: UUID!) {
set_flow_group_description (input: {description: $description, flow_group_id: $flowGroupId}) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-flow-group-schedule.gql
================================================
mutation SetFlowGroupSchedule($input: set_flow_group_schedule_input!) {
set_flow_group_schedule(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/set-flow-run-labels.gql
================================================
mutation SetFlowRunLabel ($flowRunId: UUID!, $labelArray: [String!]!) {
set_flow_run_labels(input: {flow_run_id: $flowRunId, labels: $labelArray}) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-flow-run-name.gql
================================================
mutation SetFlowRunName($input: set_flow_run_name_input!) {
set_flow_run_name(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/set-labels.gql
================================================
mutation SetFlowGroupLabel ($flowGroupId: UUID!, $labelArray: [String!]) {
set_flow_group_labels(input: {flow_group_id: $flowGroupId, labels: $labelArray}) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-schedule-active.gql
================================================
mutation SetScheduleActive($id: UUID!) {
set_schedule_active(input: { flow_id: $id }) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-schedule-inactive.gql
================================================
mutation SetScheduleInactive($id: UUID!) {
set_schedule_inactive(input: { flow_id: $id }) {
success
}
}
================================================
FILE: src/graphql/Mutations/set-task-run-name.gql
================================================
mutation SetTaskRunName($input: set_task_run_name_input!) {
set_task_run_name(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/test-cloud-hook.gql
================================================
mutation TestCloudHook($input: test_cloud_hook_input!) {
test_cloud_hook(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Mutations/update-custom-role.gql
================================================
mutation UpdateCustomRole ($input: update_custom_role_permissions_input!){
update_custom_role_permissions (input: $input) {
success
}
}
================================================
FILE: src/graphql/Mutations/update-flow-project.gql
================================================
mutation UpdateFlowProject($input: update_flow_project_input!) {
update_flow_project(input: $input) {
id
}
}
================================================
FILE: src/graphql/Mutations/update-tenant-settings.gql
================================================
mutation UpdateTenantSettings($settings: JSON!) {
update_tenant_settings(input: { settings: $settings }) {
id
}
}
================================================
FILE: src/graphql/Nav/flow-runs.gql
================================================
query FlowRuns($tenantId: uuid!, $states: [String!]) {
flow_run(where: { state: { _in: $states }, tenant_id: { _eq: $tenantId } }) {
id
scheduled_start_time
}
}
================================================
FILE: src/graphql/Nav/flow.gql
================================================
query Flow($id: uuid) {
flow(
where: { _or: [{ id: { _eq: $id } }, { flow_group_id: { _eq: $id } }] }
) {
id
flow_group_id
name
project_id
is_schedule_active
}
}
================================================
FILE: src/graphql/Nav/flows.gql
================================================
query Flows {
flow(where: { archived: { _eq: false } }) {
id
flow_group_id
name
project_id
is_schedule_active
}
}
================================================
FILE: src/graphql/Nav/projects.gql
================================================
query Projects {
project {
id
name
tenant_id
}
}
================================================
FILE: src/graphql/Nav/task.gql
================================================
query Task($taskId: uuid!) {
task(where: { id: { _eq: $taskId } }) {
id
flow_id
name
}
}
================================================
FILE: src/graphql/Nav/tasks.gql
================================================
query Tasks($flowId: uuid!) {
task(where: { flow_id: { _eq: $flowId } }) {
id
flow_id
name
}
}
================================================
FILE: src/graphql/Notifications/all-notifications.gql
================================================
query Notifications($where: message_bool_exp) {
notifications: message(where: $where) {
id
}
}
================================================
FILE: src/graphql/Notifications/membership-invitation.gql
================================================
query MembershipInvitation($id: uuid!) {
membership_invitation_by_pk(id: $id) {
id
role_detail {
id
name
}
email
created
tenant {
id
name
}
}
}
================================================
FILE: src/graphql/Notifications/notifications-count-unread.gql
================================================
query NotificationsCountUnread {
message_aggregate(where: { read: { _eq: false } }) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Notifications/notifications-count.gql
================================================
query NotificationsCount($where: message_bool_exp) {
message_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Notifications/notifications.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Notifications(
$limit: Int
$offset: Int
$orderBy: [message_order_by!]
$where: message_bool_exp
) {
notifications: message(
where: $where
limit: $limit
offset: $offset
order_by: $orderBy
) {
id
content
created
read
content
tenant_id
text
type
updated
${
isCloud
? `
user {
id
username
}
user_id
`
: ''
}
}
}
`
}
================================================
FILE: src/graphql/Notifications/teams.gql
================================================
query Teams {
teams: tenant(order_by: { name: asc }) {
id
name
slug
}
}
================================================
FILE: src/graphql/Playground/schema.gql
================================================
query IntrospectionQuery {
__schema {
queryType {
name
}
mutationType {
name
}
subscriptionType {
name
}
types {
...FullType
}
directives {
name
description
locations
args {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
description
fields {
name
description
args {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields {
...InputValue
}
interfaces {
...TypeRef
}
enumValues {
name
description
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
description
type {
...TypeRef
}
defaultValue
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}
================================================
FILE: src/graphql/Project/flow-ids.gql
================================================
query ProjectFlowIds($projectId: uuid!) {
project_by_pk(id: $projectId) {
flows {
id
}
}
}
================================================
FILE: src/graphql/Project/flows-aggregate.gql
================================================
query FlowAggregate($where: flow_bool_exp) {
flow_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Project/flows.gql
================================================
query ProjectFlows(
$limit: Int!
$offset: Int!
$orderBy: [flow_order_by!]
$where: flow_bool_exp
) {
flow(where: $where, limit: $limit, offset: $offset, order_by: $orderBy) {
id
name
version
flow_runs(
where: { start_time: { _is_null: false } }
order_by: { start_time: desc }
limit: 1
) {
id
state
start_time
}
}
}
================================================
FILE: src/graphql/Project/project.gql
================================================
query Project($id: uuid!) {
project_by_pk(id: $id) {
id
name
created
}
}
================================================
FILE: src/graphql/Projects/projects-aggregate.gql
================================================
query ProjectsAggregate {
project_aggregate {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Projects/projects.gql
================================================
query Projects(
$limit: Int!
$offset: Int!
$orderBy: [project_order_by!]
) {
project(limit: $limit, offset: $offset, order_by: $orderBy) {
id
name
flows_aggregate(where: { archived: { _eq: false } }) {
aggregate {
count
}
}
}
}
================================================
FILE: src/graphql/Schematics/flow-list.gql
================================================
query Flows {
flow(
order_by: { created: desc }
where: { archived: { _eq: false }, name: { _neq: "Welcome Flow" } }
) {
id
name
}
}
================================================
FILE: src/graphql/Schematics/flow-run.gql
================================================
query FlowRun($id: uuid!) {
flow_run_by_pk(id: $id) {
id
name
state
start_time
end_time
task_runs(where: { map_index: { _eq: -1 } }) {
id
serialized_state
state
state_message
state_timestamp
start_time
end_time
map_index
name
task {
id
name
max_retries
retry_delay
trigger
type
upstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
downstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
__typename
}
__typename
}
__typename
}
}
================================================
FILE: src/graphql/Schematics/flow.gql
================================================
query Flow($id: uuid!) {
flow_by_pk(id: $id) {
id
name
tasks_aggregate {
aggregate {
count
}
}
tasks {
id
name
max_retries
retry_delay
trigger
type
upstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
downstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
__typename
}
__typename
}
}
================================================
FILE: src/graphql/Schematics/task-run.gql
================================================
query TaskRun($id: uuid!) {
task_run_by_pk(id: $id) {
}
flow_run_by_pk(id: $id) {
id
name
state
start_time
end_time
task_runs(where: { map_index: { _eq: -1 } }) {
id
serialized_state
state
state_message
state_timestamp
start_time
end_time
map_index
task {
id
name
max_retries
retry_delay
trigger
type
upstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
downstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
__typename
}
__typename
}
__typename
}
}
================================================
FILE: src/graphql/Schematics/task.gql
================================================
query Task($id: uuid!) {
task(where: { id: { _eq: $id } }) {
id
name
downstream_edges {
id
downstream_task_id
}
upstream_edges {
id
upstream_task_id
}
slug
tags
type
trigger
description
auto_generated
__typename
}
}
================================================
FILE: src/graphql/Secrets/delete-secret.gql
================================================
mutation DeleteSecret($name: String!) {
delete_secret(input: { name: $name }) {
success
}
}
================================================
FILE: src/graphql/Secrets/set-secret.gql
================================================
mutation SetSecret($name: String!, $value: JSON!) {
set_secret(input: { name: $name, value: $value }) {
success
}
}
================================================
FILE: src/graphql/Task/activity.gql
================================================
query Activity(
$limit: Int
$taskId: uuid!
$states: [String!]
$timestamp: timestamptz
) {
task_run_state(
where: {
task_run: { task: { id: { _eq: $taskId } } }
timestamp: { _gte: $timestamp }
state: { _in: $states }
}
limit: $limit
order_by: { timestamp: desc }
) {
id
state
message
result
timestamp
task_run {
id
state
start_time
end_time
task {
id
name
max_retries
}
flow_run {
id
}
name
}
}
}
================================================
FILE: src/graphql/Task/heartbeat.gql
================================================
query Heartbeat($taskId: uuid!, $timestamp: timestamptz, $state: String) {
task_run(
limit: 10
where: {
task_id: { _eq: $taskId }
updated: { _gte: $timestamp }
state: { _eq: $state }
}
order_by: { updated: desc_nulls_last }
) {
id
state
state_message
state_timestamp
start_time
end_time
task {
id
name
max_retries
}
__typename
}
}
================================================
FILE: src/graphql/Task/last-task-run.gql
================================================
query LastTaskRun($id: uuid!) {
task_run(
where: {
task_id: { _eq: $id }
state: { _neq: "Scheduled" }
start_time: { _is_null: false }
}
order_by: { updated: desc }
limit: 1
) {
id
state
}
}
================================================
FILE: src/graphql/Task/table-task-runs-count.gql
================================================
query TableTaskRuns($taskId: uuid, $heartbeat: timestamptz) {
task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Task/table-task-runs.gql
================================================
query Task(
$taskId: uuid!
$limit: Int
$offset: Int
$orderBy: [task_run_order_by!]
$heartbeat: timestamptz
) {
task_by_pk(id: $taskId) {
id
name
task_runs(
where: {
flow_run: { state: { _neq: "Scheduled" } }
updated: { _gte: $heartbeat }
}
order_by: $orderBy
limit: $limit
offset: $offset
) {
id
map_index
end_time
start_time
state
flow_run {
name
id
}
}
}
}
================================================
FILE: src/graphql/Task/task-drawer.gql
================================================
query Task($id: uuid!) {
task_by_pk(id: $id) {
id
name
created
description
slug
max_retries
retry_delay
trigger
type
flow {
id
name
project {
id
name
}
}
task_runs(
where: { flow_run: { state: { _neq: "Scheduled" } } }
order_by: { flow_run: { scheduled_start_time: desc } }
limit: 1
) {
id
state
}
}
}
================================================
FILE: src/graphql/Task/task-runs-count.gql
================================================
query TaskRunsCount($where: task_run_bool_exp) {
task_run_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Task/task-runs-drawer-count.gql
================================================
query FlowRunsCount($taskId: uuid, $heartbeat: timestamptz, $state: String) {
task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: $state }
}
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Task/task-runs-drawer.gql
================================================
query FlowRuns(
$taskId: uuid
$heartbeat: timestamptz
$state: String
$limit: Int
$offset: Int
) {
task_run(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: $state }
}
limit: $limit
offset: $offset
) {
id
end_time
start_time
state
task {
id
name
}
flow_run {
id
name
}
}
}
================================================
FILE: src/graphql/Task/task-runs.gql
================================================
query TaskRuns($taskId: uuid!, $heartbeat: timestamptz) {
Success: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Success" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Running: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Running" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Pending: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Pending" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Paused: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Paused" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
ClientFailed: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "ClientFailed" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Submitted: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Submitted" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Queued: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Queued" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Resume: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Resume" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Retrying: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Retrying" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Looped: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Looped" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Cached: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Cached" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Mapped: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Mapped" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Failed: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Failed" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
TimedOut: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "TimedOut" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
TriggerFailed: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "TriggerFailed" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Skipped: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Skipped" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
Finished: task_run_aggregate(
where: {
task_id: { _eq: $taskId }
updated: { _gte: $heartbeat }
flow_run: { state: { _neq: "Scheduled" } }
state: { _eq: "Finished" }
}
order_by: { id: desc }
) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/Task/task.gql
================================================
query Task($id: uuid!) {
task_by_pk(id: $id) {
id
name
description
created
retry_delay
max_retries
trigger
type
upstream_edges {
id
upstream_task {
id
name
retry_delay
max_retries
trigger
type
}
}
downstream_edges {
id
downstream_task {
id
name
retry_delay
max_retries
trigger
type
}
}
flow {
id
flow_group_id
name
version
project {
id
name
}
parameters
}
}
}
================================================
FILE: src/graphql/TaskRun/activity.gql
================================================
query Activity(
$limit: Int
$taskRunId: uuid!
$states: [String!]
$timestamp: timestamptz
) {
task_run_state(
where: {
task_run: { id: { _eq: $taskRunId } }
timestamp: { _gte: $timestamp }
state: { _in: $states }
}
limit: $limit
order_by: { timestamp: desc }
) {
id
state
message
result
timestamp
}
}
================================================
FILE: src/graphql/TaskRun/dependencies.gql
================================================
query Dependencies($taskRunId: uuid!, $flowRunId: uuid!) {
task_run_by_pk(id: $taskRunId) {
id
state
task {
id
name
upstream_edges {
id
upstream_task {
id
name
task_runs(where: { flow_run_id: { _eq: $flowRunId } }) {
id
state
}
}
}
downstream_edges {
id
downstream_task {
id
name
task_runs(where: { flow_run_id: { _eq: $flowRunId } }) {
id
state
}
}
}
}
}
}
================================================
FILE: src/graphql/TaskRun/heartbeat.gql
================================================
query Heartbeat(
$taskRunId: uuid!
$timestamp: timestamptz
$state: String
$limit: Int
) {
task_run(where: { id: { _eq: $taskRunId } }) {
id
states_aggregate {
aggregate {
count
}
}
states(
limit: $limit
where: { timestamp: { _gte: $timestamp }, state: { _eq: $state } }
order_by: { timestamp: desc_nulls_last }
) {
id: timestamp
state
message
timestamp
result
}
}
}
================================================
FILE: src/graphql/TaskRun/set-flow-run-states.gql
================================================
mutation SetFlowRunStates($flowRunId: UUID!, $version: Int!, $state: JSON!) {
set_flow_run_states(
input: {
states: [{ flow_run_id: $flowRunId, state: $state, version: $version }]
}
) {
states {
id
status
message
}
}
}
================================================
FILE: src/graphql/TaskRun/set-task-run-states.gql
================================================
mutation setTaskRunStates($input: [set_task_run_state_input!]!) {
set_task_run_states(input: { states: $input }) {
states {
id
}
}
}
================================================
FILE: src/graphql/TaskRun/table-mapped-task-runs-count.gql
================================================
query TableMappedTaskRunsCount($where: task_run_bool_exp!) {
task_run_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/TaskRun/table-mapped-task-runs.gql
================================================
query TableMappedTaskRuns(
$where: task_run_bool_exp!
$limit: Int
$offset: Int
$orderBy: [task_run_order_by!]
) {
task_run(where: $where, order_by: $orderBy, limit: $limit, offset: $offset) {
id
name
map_index
end_time
start_time
state
}
}
================================================
FILE: src/graphql/TaskRun/task-run-states-count.gql
================================================
query TaskRunStatesCount($where: task_run_state_bool_exp) {
task_run_state_aggregate(where: $where) {
aggregate {
count
}
}
}
================================================
FILE: src/graphql/TaskRun/task-run-states.gql
================================================
query TaskRunStates(
$where: task_run_state_bool_exp
$limit: Int!
$offset: Int!
$orderBy: [task_run_state_order_by!]
) {
task_run_state(
where: $where
limit: $limit
order_by: $orderBy
offset: $offset
) {
id
state
start_time
timestamp
result
message
}
}
================================================
FILE: src/graphql/TaskRun/task-run.gql
================================================
query TaskRun($id: uuid!) {
task_run_by_pk(id: $id) {
id
version
state
state_message
state_timestamp
updated
start_time
end_time
map_index
serialized_state
name
task {
id
name
retry_delay
max_retries
trigger
type
upstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
downstream_edges {
upstream_task {
id
name
}
downstream_task {
id
name
}
}
}
flow_run {
id
name
state
flow {
id
flow_group_id
name
project {
id
name
}
}
parameters
version
}
}
}
================================================
FILE: src/graphql/TaskRun/utility_downstream_tasks.gql
================================================
query taskRunUtilityDownstreamTasks($flowRunId: uuid, $taskIds: _uuid) {
utility_downstream_tasks(args: { start_task_ids: $taskIds }) {
depth
task {
task_runs(where: { flow_run_id: { _eq: $flowRunId } }) {
id
map_index
version
}
}
task_id
}
}
================================================
FILE: src/graphql/TaskTagLimit/delete-task-concurrency-limit.gql
================================================
mutation DeleteTaskConcurrencyLimit($limitId: UUID!) {
delete_task_concurrency_limit(input: { limit_id: $limitId }) {
success
}
}
================================================
FILE: src/graphql/TaskTagLimit/task-tag-limit.gql
================================================
query TaskTagLimit {
task_concurrency_limit {
id
limit
name
}
}
================================================
FILE: src/graphql/TaskTagLimit/update-task-concurrency-limit.gql
================================================
mutation UpdateTaskConcurrencyLimit($name: String!, $limit: Int!) {
update_task_concurrency_limit(input: { name: $name, limit: $limit }) {
id
}
}
================================================
FILE: src/graphql/TaskTagUsage/task-tag-usage.gql
================================================
query TaskTagUsage($tags: [String!]) {
task_concurrency(names: $tags) {
name
usage
}
}
================================================
FILE: src/graphql/TeamSettings/actions.gql
================================================
query actions {
actions: action {
action_type
action_config
id
name
}
}
================================================
FILE: src/graphql/TeamSettings/cloud-hooks.gql
================================================
query CloudHooks($searchParams: [cloud_hook_bool_exp!]) {
cloud_hook(where: { _or: $searchParams }) {
id
active
config
created
name
states
tenant_id
type
updated
version_group_id
}
}
================================================
FILE: src/graphql/TeamSettings/data-to-clear.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query DataToClear {
project {
id
}
flow(distinct_on: version_group_id, where: { archived: { _eq: false } }) {
id
}
${
isCloud
? `
secret_names
memberships: user_view_same_tenant {
id
account_type
memberships {
id
}
}
membershipInvitations: membership_invitation {
id
}
api_token {
id
}
`
: ''
}
}
`
}
================================================
FILE: src/graphql/TeamSettings/delete-action.gql
================================================
mutation DeleteAction ($actionId: UUID!) {
delete_action (input: {action_id: $actionId}) {
success
}
}
================================================
FILE: src/graphql/TeamSettings/delete-project.gql
================================================
mutation DeleteProject($projectId: UUID!) {
delete_project(input: { project_id: $projectId }) {
success
}
}
================================================
FILE: src/graphql/TeamSettings/flow-version-groups.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query FlowVersionGroups {
versionGroup: flow(distinct_on: [version_group_id]) {
version_group_id
id
name
project {
id
name
}
${
isCloud
? `
created_by {
id
username
}`
: ''
}
}
}
`
}
================================================
FILE: src/graphql/TeamSettings/flows.gql
================================================
query Flows ($project: uuid) {
flow(distinct_on: version_group_id, where: {_and: [{project_id: {_eq: $project}, archived: {_eq: false}}]}) {
id
archived
name
flow_group_id
version_group_id
project {
id
name
}
}
}
================================================
FILE: src/graphql/TeamSettings/membership-invitation-roles.gql
================================================
query MembershipInvitationRoles {
membership_invitation {
role_id
}
}
================================================
FILE: src/graphql/TeamSettings/membership-roles.gql
================================================
query RolesInUse {
membership {
id
role_id
}
}
================================================
FILE: src/graphql/TeamSettings/memberships.gql
================================================
query Memberships {
memberships: user_view_same_tenant {
id
account_type
memberships {
id
}
}
membershipInvitations: membership_invitation {
id
}
}
================================================
FILE: src/graphql/TeamSettings/modify-project.gql
================================================
mutation ModifyProject(
$projectId: UUID!
$projectName: String!
$projectDescription: String
) {
set_project_name(input: { project_id: $projectId, name: $projectName }) {
id
}
set_project_description(
input: { project_id: $projectId, description: $projectDescription }
) {
id
}
}
================================================
FILE: src/graphql/TeamSettings/permissions.gql
================================================
query Permissions {
permissions_info {
user_permissions_filtered_by_license_features
all_permissions_filtered_by_license_features
}
}
================================================
FILE: src/graphql/TeamSettings/project.gql
================================================
query Project($projectName: String!) {
project(where: { name: { _eq: $projectName } }) {
id
name
}
}
================================================
FILE: src/graphql/TeamSettings/projects.gql
================================================
query Projects {
projects: project {
id
name
description
created
active_flow_count: flows_aggregate(where: { archived: { _eq: false } }) {
aggregate {
count
}
}
archived_flow_count: flows_aggregate(where: { archived: { _eq: true } }) {
aggregate {
count
}
}
}
}
================================================
FILE: src/graphql/TeamSettings/roles.gql
================================================
query AuthRoles {
auth_role {
name
permissions
created
updated
tenant_id
id
}
}
================================================
FILE: src/graphql/TeamSettings/test-action.gql
================================================
mutation TestAction ($actionId: UUID!) {
test_action (input: {action_id: $actionId}) {
success
}
}
================================================
FILE: src/graphql/TeamSettings/usage.gql
================================================
query Usage($from: timestamptz, $to: timestamptz, $tenant_id: uuid) {
usage: billing_usage(
where: {
timestamp: { _gte: $from, _lte: $to }
tenant_id: { _eq: $tenant_id }
}
) {
id
kind
runs
tenant_id
timestamp
usage_last_updated
}
}
================================================
FILE: src/graphql/Tenant/accept-membership-invitation.gql
================================================
mutation AcceptMembershipInvitation($membershipInvitationId: UUID!) {
accept_membership_invitation(
input: { invitation_id: $membershipInvitationId }
) {
id
}
}
================================================
FILE: src/graphql/Tenant/create-enterprise-tenant.gql
================================================
mutation CreateEnterpriseTenant($input: create_enterprise_tenant_input!) {
create_enterprise_tenant(input: $input) {
id
}
}
================================================
FILE: src/graphql/Tenant/create-membership-invitation.gql
================================================
mutation CreateMembershipInvitation(
$input: create_membership_invitation_input!
) {
create_membership_invitation(input: $input) {
id
}
}
================================================
FILE: src/graphql/Tenant/delete-enterprise-tenant.gql
================================================
mutation DeleteEnterpriseTenant($input: delete_enterprise_tenant_input!) {
delete_enterprise_tenant(input: $input) {
success
error
}
}
================================================
FILE: src/graphql/Tenant/delete-membership-invitation.gql
================================================
mutation DeleteMembershipInvitation($membershipInvitationId: UUID!) {
delete_membership_invitation(
input: { invitation_id: $membershipInvitationId }
) {
success
}
}
================================================
FILE: src/graphql/Tenant/delete-membership.gql
================================================
mutation DeleteMembership($membershipId: UUID!) {
delete_membership(input: { membership_id: $membershipId }) {
success
}
}
================================================
FILE: src/graphql/Tenant/delete-tenant.gql
================================================
mutation DeleteTenant($input: delete_tenant_input!) {
delete_tenant(input: $input) {
success
}
}
================================================
FILE: src/graphql/Tenant/membership-invitation.gql
================================================
query Memberships($id: uuid!) {
membership_invitation_by_pk(id: $id ) {
id
created
email
role_detail {
id
name
}
tenant {
id
name
slug
}
user {
id
username
email
}
tenant_id
}
}
================================================
FILE: src/graphql/Tenant/membership.gql
================================================
query Membership($membershipId: uuid!) {
membership(where: { id: { _eq: $membershipId } }) {
id
role_detail {
id
name
}
tenant {
id
name
slug
settings
stripe_customer
prefectAdminSettings: prefect_admin_settings
}
}
}
================================================
FILE: src/graphql/Tenant/pending-invitations-by-email.gql
================================================
query PendingInvitations($email: String!) {
pendingInvitations: membership_invitation(
where: { email: { _eq: $email } }
) {
id
role_detail {
id
name
}
email
created
tenant {
id
name
slug
}
}
}
================================================
FILE: src/graphql/Tenant/pending-invitations.gql
================================================
query PendingInvitations {
pendingInvitations: membership_invitation {
id
created
email
role_detail {
id
name
}
tenant {
id
}
}
}
================================================
FILE: src/graphql/Tenant/set-membership-role.gql
================================================
mutation SetMembershipRole($input: set_membership_role_input!) {
set_membership_role(input: $input) {
id
}
}
================================================
FILE: src/graphql/Tenant/tenant-by-pk.gql
================================================
query Tenant($id: uuid!) {
tenant_by_pk(id: $id) {
id
name
info
settings
slug
created
}
}
================================================
FILE: src/graphql/Tenant/tenant-by-slug.gql
================================================
query CheckTenantSlug($slug: String!) {
tenant(where: { slug: { _eq: $slug } }) {
id
}
}
================================================
FILE: src/graphql/Tenant/tenant-id-by-membership-id.gql
================================================
query Membership($membershipId: uuid!) {
membership(where: { id: { _eq: $membershipId } }) {
id
tenant {
id
}
}
}
================================================
FILE: src/graphql/Tenant/tenant-secret-names.gql
================================================
query TenantSecretNames {
secret_names
}
================================================
FILE: src/graphql/Tenant/tenant-token.gql
================================================
mutation SwitchTenant($tenantId: UUID!) {
switch_tenant(input: { tenant_id: $tenantId }) {
access_token
expires_at
refresh_token
}
}
================================================
FILE: src/graphql/Tenant/tenant-users.gql
================================================
query TenantUsers {
tenantUsers: user_view_same_tenant {
id
username
email
first_name
last_name
account_type
memberships {
id
tenant_id
role_detail {
id
name
}
}
}
}
================================================
FILE: src/graphql/Tenant/tenants.js
================================================
import gql from 'graphql-tag'
export default function(isCloud) {
return gql`
query Tenants {
tenant {
id
created
name
info
settings
${
isCloud
? `
prefectAdminSettings: prefect_admin_settings
stripe_customer
license_id
`
: ''
}
slug
}
}
`
}
================================================
FILE: src/graphql/Tenant/update-tenant.gql
================================================
mutation UpdateTenant($name: String!, $slug: String!) {
update_tenant_name(input: { name: $name }) {
id
}
update_tenant_slug(input: { slug: $slug }) {
id
}
}
================================================
FILE: src/graphql/Tokens/api-keys.gql
================================================
query APIKeys {
auth_api_key(order_by: { created: desc }) {
id
name
created
expires_at
default_tenant_id
user_id
updated
created_by {
id
username
}
}
}
================================================
FILE: src/graphql/Tokens/api-tokens.gql
================================================
query APITokens {
api_token(
order_by: { created: desc }
where: { scope: { _in: ["TENANT", "RUNNER"] } }
) {
id
name
created_by {
id
username
}
created
expires_at
last_used
tenant_id
user_id
scope
}
}
================================================
FILE: src/graphql/Tokens/create-api-key.gql
================================================
mutation CreateAPIKey(
$user_id: UUID!
$name: String!
$expires_at: DateTime
$tenant_id: UUID
) {
create_api_key(
input: {
user_id: $user_id
name: $name
expires_at: $expires_at
default_tenant_id: $tenant_id
}
) {
id
key
}
}
================================================
FILE: src/graphql/Tokens/create-api-token.gql
================================================
mutation CreateAPIToken(
$name: String!
$scope: api_token_scope
$expires_at: DateTime
) {
create_api_token(
input: { name: $name, scope: $scope, expires_at: $expires_at }
) {
id
token
}
}
================================================
FILE: src/graphql/Tokens/delete-api-key.gql
================================================
mutation DeleteAPIKey($id: UUID!) {
delete_api_key(input: { key_id: $id }) {
success
}
}
================================================
FILE: src/graphql/Tokens/delete-token.gql
================================================
mutation DeleteAPIToken($id: UUID!) {
delete_api_token(input: { token_id: $id }) {
success
}
}
================================================
FILE: src/graphql/Tokens/user-tokens.gql
================================================
query APITokens {
api_token(order_by: { created: desc }, where: { scope: { _eq: "USER" } }) {
id
name
created
expires_at
last_used
}
}
================================================
FILE: src/graphql/Update/write-run-logs.gql
================================================
mutation WriteRunLogs(
$flowRunId: UUID!
$taskRunId: UUID
$message: String
$name: String
) {
write_run_logs(
input: {
logs: [
{
flow_run_id: $flowRunId
task_run_id: $taskRunId
name: $name
message: $message
}
]
}
) {
success
}
}
================================================
FILE: src/graphql/User/create-service-account.gql
================================================
mutation CreateServiceAccount($input: create_service_account_input!) {
create_service_account(input: $input) {
id
}
}
================================================
FILE: src/graphql/User/delete-service-account.gql
================================================
mutation DeleteServiceAccount($id: UUID!) {
delete_service_account(input: { user_id: $id }) {
success
}
}
================================================
FILE: src/graphql/User/update-user-details.gql
================================================
mutation UpdateUserDetails($firstName: String, $lastName: String) {
update_user_details(input: { first_name: $firstName, last_name: $lastName }) {
id
}
}
================================================
FILE: src/graphql/User/update-user-settings.gql
================================================
mutation UpdateUserSettings($input: JSON) {
update_user_settings(input: { settings: $input }) {
id
}
}
================================================
FILE: src/graphql/User/user.gql
================================================
query User {
user {
id
username
email
settings
default_membership_id
first_name
last_name
memberships {
id
tenant {
id
name
slug
}
role_detail {
id
name
}
}
}
}
================================================
FILE: src/graphql/api.gql
================================================
query Api {
api {
backend
mode
version
core_version
release_timestamp
}
}
================================================
FILE: src/graphql/concurrent-runs.gql
================================================
query ConcurrentRuns {
flow_run(where: { state: { _in: ["Running", "Submitted", "Cancelling"] } }) {
id
}
}
================================================
FILE: src/graphql/hello.gql
================================================
query Hello {
hello
}
================================================
FILE: src/graphql/log-in.gql
================================================
mutation LogIn($input: log_in_input!) {
log_in(input: $input) {
access_token
expires_at
refresh_token
}
}
================================================
FILE: src/graphql/log-out.gql
================================================
mutation LogOut($input: log_out_input!) {
log_out(input: $input) {
success
}
}
================================================
FILE: src/graphql/refresh-token.gql
================================================
mutation RefreshToken($input: refresh_token_input!) {
refresh_token(input: $input) {
access_token
expires_at
refresh_token
}
}
================================================
FILE: src/graphql/support/send-feedback.gql
================================================
mutation($type: String!, $message: String!) {
send_feedback(input: { type: $type, message: $message }) {
success
}
}
================================================
FILE: src/layouts/AgentLayout.vue
================================================
================================================
FILE: src/layouts/DashboardLargeActivityLayout.vue
================================================
================================================
FILE: src/layouts/DashboardLargeChartLayout.vue
================================================
================================================
FILE: src/layouts/DashboardLayout.vue
================================================
================================================
FILE: src/layouts/FullPageLayout.vue
================================================
================================================
FILE: src/layouts/ManagementLayout.vue
================================================
================================================
FILE: src/layouts/NotificationsLayout.vue
================================================
================================================
FILE: src/layouts/SubPageNav.vue
================================================
================================================
FILE: src/layouts/TileLayout-Alternate.vue
================================================
================================================
FILE: src/layouts/TileLayout-Full.vue
================================================
================================================
FILE: src/layouts/TileLayout.vue
================================================
================================================
FILE: src/layouts/TutorialLayout.vue
================================================
================================================
FILE: src/main.js
================================================
import '@/plugins/logrocket.js'
import { login, switchTenant, commitTokens, logout } from '@/auth/index.js'
import { CreatePrefectUI } from '@/app.js'
import store from '@/store'
import jwt_decode from 'jwt-decode'
import LogRocket from 'logrocket'
export const setStartupTenant = async () => {
const path = window.location.pathname
const split = path.split('/')
const slug = split?.[1]
const tenants = store.getters['tenant/tenants']
const slugTenant = tenants.find(t => t.slug == slug)
let tenant
if (process.env.VUE_APP_BACKEND === 'SERVER') {
if (slugTenant) tenant = slugTenant
else tenant = tenants[0]
} else {
const tokenTenantId = jwt_decode(store.getters['auth/authorizationToken'])
.tenant_id
const tokenTenant = tenants.find(t => t.id == tokenTenantId)
let needNewTokens = false
// If there's no slug in the URL or the token
// tenant matches the intended tenant, we can set the current tenant
// to the token tenant; if the token tenant is undefined,
// we fallback to the user's first tenant. If all of these fail,
// we redirect to a help screen cause the user can't create a tenant
// with this token atm
if (slugTenant) {
if (tokenTenant?.slug !== slug) needNewTokens = true
tenant = slugTenant
} else if (tokenTenant) {
tenant = tokenTenant
} else if (tenants?.[0]) {
tenant = tenants?.[0]
needNewTokens = true
} else {
// redirect to help screen
window.location.href = '/access-denied'
}
// We want to make sure the URL slug matches
// the tenant slug
if (slug && slug !== tenant.slug && slugTenant) {
window.history.pushState('', '', tenant.slug)
}
if (needNewTokens) {
const tokens = await switchTenant(tenant.id)
commitTokens(tokens)
}
}
tenant.role =
process.env.VUE_APP_BACKEND === 'CLOUD'
? store.getters['user/memberships'].find(
membership => membership.tenant.id == tenant.id
)?.role_detail?.name
: 'TENANT_ADMIN'
store.commit('tenant/setTenant', tenant)
if (process.env.VUE_APP_BACKEND === 'CLOUD') {
await store.dispatch('license/getLicense')
}
}
const timeout = async (main, fallback, fallbackargs, time) =>
Promise.race([main, new Promise((_r, rej) => setTimeout(rej, time))]).catch(
() => {
localStorage.setItem('prefect_fallback_auth', Date.now())
return fallback(...fallbackargs)
}
)
let loading = false
export const start = async () => {
if (
window.location.pathname?.includes('logout') ||
window.location.pathname?.includes('access-denied')
) {
CreatePrefectUI()
return
}
const start0 = performance.now()
if (process.env.VUE_APP_BACKEND === 'CLOUD') {
// we run this when the application starts or a user returns to the page after some time away
// this logs into the default tenant so that we can fetch information we need
// if the user is requesting a different tenant (indicated by the URL),
// we swap out these tokens later
loading = true
let tokens
// We check local storage for a fallback token and compare it against
// the curent timestamp - 1 minute. If it falls outside that window
// we attempt the normal flow
const fallbackTimestamp = localStorage.getItem('prefect_fallback_auth')
// We coerce the timestamp because localstorage stores it as a string
if (fallbackTimestamp && +fallbackTimestamp > Date.now() - 60000) {
tokens = await login(true)
} else {
tokens = await timeout(login(), login, [true], 10000)
}
if (tokens) {
try {
LogRocket.track('Tokens', {
source: tokens.source || 'No source',
idTokenExpiration:
new Date(tokens.idToken?.expiresAt)?.toString() || 'No id token',
authorizationTokenExpiration:
tokens.authorizationTokens?.expires_at || 'No authorization token'
})
} catch (e) {
LogRocket.captureException(e)
}
} else return
commitTokens(tokens)
loading = false
} else {
// If we're on Server we fetch settings
window.prefect_ui_settings = await fetch('/settings.json')
.then(response => response.json())
.then(data => data)
.catch(e => e)
}
try {
// This is a good place to implement browser-side InnoDB or other caching
await Promise.all([
store.dispatch('user/getUser'),
store.dispatch('tenant/getTenants')
])
await setStartupTenant()
} catch (e) {
// eslint-disable-next-line no-console
console.log(e)
}
const start1 = performance.now()
// eslint-disable-next-line no-console
console.log('Start total: ', start1 - start0)
LogRocket.track('Start', { timeToStart: start1 - start0 })
CreatePrefectUI()
}
start()
// ******************************************************************************************
// Browser visibility API handler for auth
// ******************************************************************************************
// Visibility change properties vary between browsers
let hidden, visibilityChange
const handleVisibilityChange = async () => {
if (store.getters['api/isServer'] || loading) return
loading = true
if (!document[hidden]) {
if (
(!store.getters['auth/isAuthenticated'] ||
!store.getters['auth/isAuthorized']) &&
!window.location.pathname?.includes('logout') &&
!window.location.pathname?.includes('access-denied')
) {
let tokens
// We check local storage for a fallback token and compare it against
// the curent timestamp - 1 minute. If it falls outside that window
// we attempt the normal flow
const fallbackTimestamp = localStorage.getItem('prefect_fallback_auth')
// We coerce the timestamp because localstorage stores it as a string
if (fallbackTimestamp && +fallbackTimestamp > Date.now() - 60000) {
tokens = await login(true)
} else {
tokens = await timeout(login(), login, [true], 10000)
}
if (tokens) commitTokens(tokens)
else logout()
}
}
loading = false
}
if (window) {
if (typeof document.hidden !== 'undefined') {
// Opera 12.10 and Firefox 18 and later
hidden = 'hidden'
visibilityChange = 'visibilitychange'
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden'
visibilityChange = 'msvisibilitychange'
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden'
visibilityChange = 'webkitvisibilitychange'
}
window.addEventListener(visibilityChange, handleVisibilityChange, false)
}
================================================
FILE: src/middleware/flowNavGuard.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
import store from '@/store/index'
const flowNavGuard = async (to, from, next) => {
const id = to.params?.id
const flows = store.getters['data/flows']
const group = flows?.find(flow => flow.flow_group_id == id)
if (group) return next()
let version
try {
version = await fallbackApolloClient.query({
query: require('@/graphql/Middleware/flow.gql'),
variables: {
id: id
}
})
} catch {
return next({
name: 'not-found'
})
}
if (version?.data?.flow_by_pk?.flow_group_id) {
return next({
name: to.name,
params: { id: version.data.flow_by_pk.flow_group_id },
query: {
version: version.data.flow_by_pk.version,
...to.query
}
})
}
try {
await store.dispatch('data/activateFlow', id)
const renewedFlows = store.getters['data/flows']
const renewedGroup = renewedFlows?.find(flow => flow.flow_group_id == id)
if (renewedGroup) return next()
} catch {
return next({
name: 'not-found'
})
}
return next({
name: 'not-found'
})
}
export default flowNavGuard
================================================
FILE: src/middleware/prefectAuth.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
const prefectAuth = async idToken => {
try {
const result = await fallbackApolloClient.mutate({
mutation: require('@/graphql/log-in.gql'),
variables: {
input: { id_token: idToken }
},
errorPolicy: 'all'
})
if (result?.data?.log_in) {
return result.data.log_in
} else if (result?.errors) {
if (
result.errors[0].message ===
"We get it, you're reeaally interested. Unfortunately, the timing isn't quite Prefect yet."
) {
return null
} else {
throw new Error(result.errors[0].message)
}
}
} catch (error) {
throw new Error('Error authorizing prefectAuth', error)
}
}
const prefectRefresh = async accessToken => {
try {
const result = await fallbackApolloClient.mutate({
mutation: require('@/graphql/refresh-token.gql'),
variables: {
input: { access_token: accessToken }
}
})
if (result?.data?.refresh_token) {
return result.data.refresh_token
} else if (result.error) {
throw new Error(result.error)
} else {
throw new Error('No token returned')
}
} catch (error) {
throw new Error('Error refreshing token in prefectRefresh', error)
}
}
const prefectUser = async () => {
try {
const user = await fallbackApolloClient.query({
query: require('@/graphql/User/user.gql'),
fetchPolicy: 'no-cache'
})
return user.data.user[0]
} catch (error) {
throw new Error('Error retrieving user in prefectUser', error)
}
}
const prefectTenants = async isCloud => {
const result = await fallbackApolloClient.query({
query: require('@/graphql/Tenant/tenants.js').default(isCloud),
fetchPolicy: 'no-cache'
})
return result.data.tenant
}
export { prefectAuth, prefectRefresh, prefectUser, prefectTenants }
================================================
FILE: src/mixins/authMixin.js
================================================
import { OktaAuth } from '@okta/okta-auth-js'
import { mapActions } from 'vuex'
const { VUE_APP_PUBLIC_CLIENT_ID, VUE_APP_PUBLIC_ISSUER } = process.env
const authClient = new OktaAuth({
clientId: VUE_APP_PUBLIC_CLIENT_ID,
issuer: VUE_APP_PUBLIC_ISSUER,
redirectUri: window.location.origin,
scopes: ['openid', 'profile', 'email'],
responseType: 'token',
testing: {
disableHttpsCheck: true
}
})
export const authMixin = {
data() {
return {
email: null,
error: null,
password: null
}
},
methods: {
...mapActions('auth', ['authenticate']),
async checkSession() {
// const session = await authClient.session.exists()
},
async getSession() {
const sessionExists = await authClient.session.exists()
if (sessionExists) {
await this.getTokens()
}
},
async getTokens(sessionToken) {
const { tokens } = await authClient.token.getWithoutPrompt({
responseType: 'id_token',
sessionToken: sessionToken // this is optional depending on session cookies
})
this.authenticate(tokens)
},
async login() {
const { sessionToken } = await authClient.signInWithCredentials({
username: this.email,
password: this.password
})
await this.getTokens(sessionToken)
this.$router.push({ name: 'dashboard' })
},
loginWithGitHub() {},
loginWithGoogle() {}
}
}
================================================
FILE: src/mixins/cancelLateRunsMixin.js
================================================
import gql from 'graphql-tag'
import { mapActions } from 'vuex'
export const cancelLateRunsMixin = {
data() {
return {
// Clearing late runs
clearLateRunsError: false,
isClearingLateRuns: false,
showClearLateRunsDialog: false,
individualRuns: [],
scheduledRunIds: []
}
},
watch: {
lateRuns() {
if (this.lateRuns?.length === 0 && this.isClearingLateRuns) {
this.isClearingLateRuns = false
}
}
},
methods: {
...mapActions('alert', ['setAlert']),
handleOpenDialog() {
this.IdCheck()
this.showClearLateRunsDialog = true
},
IdCheck() {
return this.lateRuns?.map(run => {
if (run.flow?.is_schedule_active) {
this.scheduledRunIds.push(run.flow?.id)
} else {
this.individualRuns.push(run)
}
})
},
async runMutation(mutationType) {
const mutation = gql`
mutation CancelLateRuns {
${mutationType}
}`
await this.$apollo.mutate({ mutation })
},
async clearLateRuns() {
try {
this.showClearLateRunsDialog = false
this.isClearingLateRuns = true
if (this.scheduledRunIds.length > 1) {
const uniqueIds = [...new Set(this.scheduledRunIds)]
const clearMutation = uniqueIds.map(
(id, ind) => `
set_schedule_inactive${ind}: set_schedule_inactive(input: { flow_id: "${id}" }) {
success,
error
}`
)
await this.runMutation(clearMutation)
const resetMutation = uniqueIds.map(
(id, ind) => `
set_schedule_active${ind}: set_schedule_active(input: { flow_id: "${id}" }) {
success,
error
}`
)
await this.runMutation(resetMutation)
// Cancel flow runs & task runs
}
// There's probably a better way to handle the JSON stringy conversion here.
if (this.individualRuns?.length > 0) {
const statesMutation = `
set_flow_run_states(
input: {
states: [${this.individualRuns.map(r => {
return `{
flow_run_id: "${r.id}",
state: ${JSON.stringify(
'{"type": "Cancelled","message": "This run was late and so was cancelled from the UI."}'
)},
version: ${r.version}
}`
})}]
}
) {
states {
status
}
}
`
// Build mutation to delete late flow runs.
await this.runMutation(statesMutation)
}
// Refetch upcoming flows
await this.$apollo.queries.upcoming.refetch()
} catch (error) {
this.clearLateRunsError = true
this.setAlert({
alertShow: true,
alertMessage:
'Something went wrong while trying to clear your late flow runs. Please try again later.',
alertType: 'error'
})
throw error
}
}
}
}
================================================
FILE: src/mixins/changeStateMixin.js
================================================
import { mapActions, mapGetters } from 'vuex'
import { FINISHED_STATES } from '@/utils/states'
export const changeStateMixin = {
props: {
taskRun: {
default: null,
type: Object
},
flowRun: {
default: null,
type: Object
},
dialogType: {
required: true,
type: String
}
},
data() {
return {
setStateDialog: false,
markAsLoading: false,
resumeLoad: '',
reason: '',
e1: 1,
formError: false,
name: 'PrefectUIRunMarkAsButton',
setStateError: false,
selectedState: '',
allTasks: false,
cancelLoad: false,
setStateSuccessA: false,
setStateSuccessB: false,
taskRunApproved: false,
alertMessage: 'We hit a problem. Please try marking the state again.',
taskStates: [
{ header: 'Finished States' },
{ divider: '...' },
'Failed',
'Success',
'Cancelled',
'Finished',
'TimedOut',
{ header: 'Scheduled States - To Re-run Task Run' },
{ divider: '...' },
'Scheduled',
'Resume',
{ header: 'Pending - to clear the state' },
{ divider: '...' },
'Pending'
],
flowStates: [
{ header: 'Finished States' },
{ divider: '...' },
'Failed',
'Success',
'Cancelled',
'Finished',
{ header: 'Scheduled - To Re-run Flow Run' },
{ divider: '...' },
'Scheduled'
]
}
},
computed: {
...mapGetters('user', ['user']),
...mapGetters('license', ['hasPermission']),
activeButton() {
return this.hasPermission('update', 'run')
},
isFinished() {
return FINISHED_STATES.includes(this.flowRun.state)
},
isFinishing() {
return (
this.flowRun.state == 'Cancelling' ||
FINISHED_STATES.includes(this.flowRun.state)
)
},
filteredStates() {
if (this.dialogType === 'task run') {
return this.taskStates.filter(state => state !== this.taskRun.state)
} else {
return this.flowStates.filter(state => state !== this.flowRun.state)
}
},
checkVersion() {
let split = this.flowRun?.flow?.core_version.split('.')
let major = parseInt(split[0]),
minor = parseInt(split[1]),
patch = parseInt(split[2])
return major >= 1 || (minor >= 13 && patch >= 0)
}
},
methods: {
...mapActions('alert', ['setAlert']),
runLogMessage() {
if (this.dialogType == 'resume') {
return `Task ${this.taskRun.task.name} approved by ${this.user.username}`
} else if (this.reason) {
return `${this.user.username || 'User'} marked ${this.dialogType} as ${
this.selectedState
} because "${this.reason}"`
} else {
return `${this.user.username || 'User'} marked ${this.dialogType}
as ${this.selectedState}`
}
},
async writeLogs() {
const { data } = await this.$apollo.mutate({
mutation: require('@/graphql/Update/write-run-logs.gql'),
variables: {
flowRunId: this.taskRun ? this.taskRun.flow_run?.id : this.flowRun.id,
taskRunId: this.taskRun ? this.taskRun.id : null,
name: this.name,
message: this.runLogMessage()
}
})
return data?.write_run_logs?.success
},
resumeRun() {
this.resumeLoad = this.taskRun.id
this.selectedState = 'Resume'
this.alertMessage =
'An error occurred when approving this task run. Please try again.'
this.changeState()
},
async cancelFlowRun() {
this.cancelLoad = true
this.selectedState = 'Cancelled'
this.allTasks = true
try {
await this.$apollo.mutate({
mutation: require('@/graphql/FlowRun/cancel-flow-run.gql'),
variables: {
flowRunId: this.flowRun.id
}
})
this.setAlert({
alertShow: true,
alertMessage:
'Your flow run will be cancelled; please allow some time for this to take effect.',
alertType: 'success'
})
} catch (e) {
this.setAlert({
alertShow: true,
alertMessage:
'Something went wrong when trying to cancel this flow run, please try again.',
alertType: 'error'
})
}
this.$emit('update')
this.cancelLoad = false
},
async changeState() {
try {
//make sure we get the lastest version of each task run
this.markAsLoading = true
if (this.allTasks) await this.$apollo.queries.taskRunIds.refetch()
const logSuccess = this.writeLogs()
if (logSuccess) {
if (
this.dialogType === 'task run' ||
this.dialogType == 'resume' ||
(this.allTasks && this.taskRunIds?.length)
) {
let taskState
if (this.dialogType === 'task run' || this.dialogType == 'resume') {
taskState = {
task_run_id: this.taskRun.id,
version: this.taskRun.version,
state: {
type: this.selectedState,
message: this.runLogMessage()
}
}
} else {
taskState = this.taskRunIds.map(taskRun => {
return {
version: taskRun.version,
task_run_id: taskRun.id,
state: {
type: this.selectedState,
message: this.runLogMessage()
}
}
})
}
const result = await this.$apollo.mutate({
mutation: require('@/graphql/TaskRun/set-task-run-states.gql'),
variables: {
input: taskState
}
})
this.setStateSuccessA =
result?.data?.set_task_run_states?.states?.length
if (!this.setStateSuccessA) {
this.setStateError = true
}
if (this.setStateSuccessA && this.dialogType == 'resume') {
this.taskRunApproved = true
}
}
if (this.dialogType === 'flow run') {
const result = await this.$apollo.mutate({
mutation: require('@/graphql/TaskRun/set-flow-run-states.gql'),
variables: {
flowRunId: this.flowRun.id,
version: this.flowRun.version,
state: {
type: this.selectedState,
message: this.runLogMessage()
}
}
})
this.setStateSuccessB =
result?.data?.set_flow_run_states?.states?.length
if (!this.setStateSuccessB) {
this.setStateError = true
}
}
} else {
this.setStateError = true
}
} catch (error) {
this.setStateError = true
}
if (this.setStateError) {
this.setAlert({
alertShow: true,
alertMessage: this.alertMessage,
alertType: 'error'
})
}
if (
this.setStateSuccessA &&
this.setStateSuccessB &&
this.cancelLoad &&
!this.setStateError
) {
this.setAlert({
alertShow: true,
alertMessage:
'Your flow run will be cancelled; please allow some time for this to take effect.',
alertType: 'success'
})
}
if (this.setStateSuccessA && this.childTasks) {
this.setAllTaskRuns(this.selectedState)
}
setTimeout(() => this.reset(), 500)
this.$emit('update')
},
async setAllTaskRuns(type) {
try {
const { data } = await this.$apollo.query({
query: require('@/graphql/FlowRun/task-run-ids.gql'),
variables: {
flowRunId: this.flowRun.id,
parentMapIndex: null,
childMapIndex: -1
}
})
const taskState = data.task_run.map(taskRun => {
return {
version: taskRun.version,
task_run_id: taskRun.id,
state: {
type: type,
message: this.runLogMessage()
}
}
})
await this.$apollo.mutate({
mutation: require('@/graphql/TaskRun/set-task-run-states.gql'),
variables: {
input: taskState
}
})
this.childTasks = false
} catch (e) {
this.setAlert({
alertShow: true,
alertMessage:
'An error occured setting the state of mapped task runs',
alertType: 'error'
})
}
this.$emit('update')
},
checkContinue() {
if (this.selectedState) {
this.e1 = 2
}
},
reset() {
this.setStateDialog = false
this.markAsLoading = false
this.reason = ''
this.form = false
this.setStateError = false
this.e1 = 1
this.selectedState = ''
this.allTasks = false
this.cancelLoad = false
this.alertMessage =
'We hit a problem. Please try marking the state again.'
this.setStateSuccessA = false
this.setStateSuccessB = false
this.cancelLoad = false
this.resumeLoad = ''
}
}
}
================================================
FILE: src/mixins/cloudHookMixin.js
================================================
import {
openCloudHookTypes,
featureFlaggedCloudHookTypes,
GROUP_COLORS,
STATES
} from '@/utils/cloudHooks'
import LogRocket from 'logrocket'
import { mapGetters } from 'vuex'
export const cloudHookMixin = {
data() {
return {
createNewCloudHook: false,
error: {
createCloudHook: null
},
loading: {
createCloudHook: false
}
}
},
computed: {
...mapGetters('tenant', ['tenant']),
cloudHookTypes() {
if (this.tenant.prefectAdminSettings?.notifications)
return featureFlaggedCloudHookTypes
return openCloudHookTypes
}
},
methods: {
async _handleSetCloudHookStatusChange(val, item) {
item.loading = true
try {
const updateCloudHookStatus = !val
? await this.$apollo.mutate({
mutation: require('@/graphql/Mutations/set-cloud-hook-inactive.gql'),
variables: {
input: {
cloud_hook_id: item.id
}
},
errorPolicy: 'all'
})
: await this.$apollo.mutate({
mutation: require('@/graphql/Mutations/set-cloud-hook-active.gql'),
variables: {
input: {
cloud_hook_id: item.id
}
},
errorPolicy: 'all'
})
setTimeout(() => {
let status = updateCloudHookStatus.data
? updateCloudHookStatus.data.setCloudHookActive ||
updateCloudHookStatus.data.setCloudHookInactive ||
updateCloudHookStatus.data.set_cloud_hook_active ||
updateCloudHookStatus.data.set_cloud_hook_inactive
: false
if (!status || !status.success) {
item.loading = false
} else {
this.$apollo.queries.cloudHooks.refetch()
item.loading = false
}
}, 500)
} catch (e) {
LogRocket.captureException(e, {
extra: {
pageName: 'Flow Settings',
stage: 'Cloud Hook Status Update'
}
})
item.loading = false
}
},
stateGroup(states) {
if (this.stateGroupAll(states)) return 'All'
if (this.stateGroupFailed(states)) return 'Failed'
if (this.stateGroupFinished(states)) return 'Finished'
if (this.stateGroupSuccess(states)) return 'Success'
return 'Custom'
},
stateGroupAll(states) {
return this.cloudHookStateGroup('All', states)
},
stateGroupFailed(states) {
return this.cloudHookStateGroup('Failed', states)
},
stateGroupFinished(states) {
return this.cloudHookStateGroup('Finished', states)
},
stateGroupSuccess(states) {
return this.cloudHookStateGroup('Success', states)
},
stateGroupColor(group) {
return GROUP_COLORS[group]
},
typeIcon(type) {
const hook = this.cloudHookTypes.find(t => t.type == type)
if (hook) return hook.icon
return ''
},
typeTitle(type) {
const hook = this.cloudHookTypes.find(t => t.type == type)
if (hook) return hook.title
return type.toLowerCase()
},
cloudHookStateGroup(group, states) {
return (
STATES[group] &&
STATES[group].every(state => states?.includes(state)) &&
STATES[group].length == states.length
)
}
}
}
================================================
FILE: src/mixins/eventsMixin.js
================================================
const expectedEvent = [
'ArrowUp',
'ArrowUp',
'ArrowDown',
'ArrowDown',
'ArrowLeft',
'ArrowRight',
'ArrowLeft',
'ArrowRight',
'b',
'a'
]
export const eventsMixin = {
data() {
return {
sequence: []
}
},
created() {
document.addEventListener('keydown', this.handleEvent)
},
beforeDestroy() {
document.removeEventListener('keydown', this.handleEvent)
},
methods: {
checkSequence() {
for (let i = 0; i < this.sequence.length; ++i) {
let key = this.sequence[i]
if (key !== expectedEvent[i]) {
this.sequence = []
break
}
if (i == expectedEvent.length - 1) {
this.sequence = []
this.handleSequenceSuccess()
}
}
},
handleEvent(e) {
this.sequence.push(e?.key)
this.checkSequence()
},
handleSequenceSuccess() {
const app = document.getElementById('app')
app.classList.add('roll')
setTimeout(() => {
app.classList.remove('roll')
}, 5000)
}
}
}
================================================
FILE: src/mixins/flowRunHistoryMixin.js
================================================
import { mapGetters } from 'vuex'
import moment from 'moment'
export const flowRunHistoryMixin = {
data() {
return {
flowRuns: [],
scheduledFlowRuns: [],
tooltip: null,
tooltipLoading: false,
unwatchFlowRuns: null
}
},
computed: {
...mapGetters('user', ['timezone']),
...mapGetters('tenant', ['tenant']),
breaklines() {
if (this.reversedRuns.length <= 0) return []
let breaklines = []
let cutoff = null,
index = 0
this.reversedRuns.forEach((d, i) => {
let future =
d.state == 'Scheduled'
? this.getTimeDiff(d.scheduled_start_time)._milliseconds <= 0
: null
if (future && !cutoff) {
cutoff = d.id
index = i
}
})
let anchor =
index > 4 && index < 98 ? 'middle' : index < 98 ? 'start' : 'end'
if (cutoff)
breaklines.push({
label: '(now)',
value: cutoff,
anchor: anchor
})
if (!cutoff) {
let lastIndex = this.reversedRuns.length - 1
breaklines.push({
label: this.getTimeFrom(
this.reversedRuns[lastIndex].start_time ||
this.reversedRuns[lastIndex].scheduled_start_time
),
value: this.reversedRuns[lastIndex].id,
after: true,
anchor: lastIndex > 98 ? 'end' : 'middle'
})
if (this.reversedRuns.length > 4) {
breaklines.push({
label: this.getTimeFrom(
this.reversedRuns[0].start_time ||
this.reversedRuns[0].scheduled_start_time
),
value: this.reversedRuns[0].id,
anchor: 'start'
})
}
} else if (this.reversedRuns.length > 4) {
breaklines.push({
label: this.getTimeFrom(
this.reversedRuns[0].start_time ||
this.reversedRuns[0].scheduled_start_time
),
value: this.reversedRuns[0].id,
anchor: 'start'
})
}
return breaklines
},
canShowTooltip() {
return (
this.tooltip &&
this.reversedRuns.find(f => f.id == this.tooltip.data.id)
)
},
reversedRuns() {
let runs = [...this.scheduledFlowRuns, ...this.flowRuns]
const computedStyle = getComputedStyle(document.documentElement)
const notPastRunStates = [
'Running',
'Scheduled',
'Queued',
'Paused',
'Submitted'
]
runs.forEach(d => {
let future = this.getTimeDiff(d.scheduled_start_time)._milliseconds
if (d.start_time && d.end_time) {
let end = new Date(d.end_time),
start = new Date(d.start_time)
d.duration = end - start
} else if (d.start_time && notPastRunStates.includes(d.state)) {
let now = new Date(),
start = new Date(d.start_time)
d.duration = now - start
}
// We add a filler end_time for instances where a finished
// state has been set but the PG trigger to populate end_time
// hasn't run yet
if (
!d.end_time &&
d.start_time &&
!notPastRunStates.includes(d.state) &&
d.state !== 'Skipped'
) {
d.end_time = new Date()
}
d.finished = !notPastRunStates.includes(d.state)
// We do the same for running flows without start_time
if (!d.start_time && d.state == 'Running') {
d.start_time = new Date()
}
d.ignore = d.state == 'Scheduled'
d.color = computedStyle?.getPropertyValue(`--v-${d.state}-base`)
d.usePattern = d.state == 'Scheduled' && future <= 0
d.warningOpacity =
d.state !== 'Scheduled' || d.start_time || future <= 10000 ? 0 : 1
})
const pastRuns = runs
.filter(r => !notPastRunStates.includes(r.state))
.sort(this.sortTime('end_time', 'scheduled_start_time'))
const currentRuns = runs
.filter(r => r.state == 'Running' || r.state == 'Paused')
.sort(this.sortTime('start_time'))
const futureRuns = runs
.filter(r => r.state == 'Scheduled')
.sort(this.sortTime('scheduled_start_time'))
const queuedRuns = runs
.filter(r => r.state == 'Queued' || r.state == 'Submitted')
.sort(this.sortTime('scheduled_start_time'))
// We have to sort again because the server-side sorting
// is unstable
const toReturn = [
...pastRuns,
...currentRuns,
...queuedRuns,
...futureRuns
]
return toReturn
}
},
methods: {
_barMouseout() {
this.setTooltip(null)
this.tooltipLoading = false
},
async _barMouseover(tooltipData) {
this.setTooltip(tooltipData)
this.checkFormatTime(tooltipData, 'end_time')
this.checkFormatTime(tooltipData, 'start_time')
this.checkFormatTime(tooltipData, 'scheduled_start_time')
tooltipData.status_style = this.statusStyle(tooltipData.data.state)
const flowId = tooltipData.data.flow_id
if (!flowId) {
this.setTooltip(tooltipData)
return
}
try {
this.tooltipLoading = true
const { data } = await this.$apollo.query({
query: require('@/graphql/Dashboard/timeline-flow.gql'),
variables: { flowId }
})
tooltipData.data.flow = data.flow_by_pk
} finally {
this.tooltipLoading = false
// We check this to make sure we're not showing the tooltip
// when _barMouseout has already run or a different
// bar has been hovered
if (this.tooltip && this.tooltip.data.flow_id == flowId)
this.setTooltip(tooltipData)
}
},
_barClick(d) {
this.$router.push({
name: 'flow-run',
params: {
id: d.id,
tenant: this.tenant?.slug
}
})
},
formatTime(timestamp) {
if (!timestamp) throw new Error('Did not receive a timestamp')
let t = moment(timestamp).tz(this.timezone),
shortenedTz = moment()
.tz(this.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone)
.zoneAbbr()
let timeObj = t ? t : moment(timestamp)
let formatted = timeObj.calendar(null, {
sameDay: 'h:mma',
sameElse: 'MMMM D, YYYY [at] h:mma'
})
return `${formatted} ${shortenedTz}`
},
getTimeDiff(time) {
let now, start
if (this.timezone) {
now = new moment().tz(this.timezone)
start = moment(time).tz(this.timezone)
} else {
now = new moment()
start = moment(time)
}
let diff = moment.duration(now.diff(start))
return diff
},
getTimeFrom(time) {
let now, _time
if (this.timezone) {
now = new moment().tz(this.timezone)
_time = moment(time).tz(this.timezone)
} else {
now = new moment()
_time = moment(time)
}
return _time.from(now)
},
sortTime(ref, secondaryRef) {
return function(a, b) {
return (
new Date(a[ref] || a[secondaryRef]) -
new Date(b[ref] || b[secondaryRef])
)
}
},
statusStyle(state) {
return {
'border-radius': '50%',
display: 'inline-block',
'background-color': `var(--v-${state}-base)`,
height: '1rem',
width: '1rem'
}
},
setTooltip(tooltip) {
if (this.unwatchFlowRuns) {
this.unwatchFlowRuns()
}
if (tooltip) {
this.unwatchFlowRuns = this.$watch(
'flowRuns',
this.validateTooltipIdStillPresent
)
}
this.tooltip = tooltip
},
validateTooltipIdStillPresent() {
const exists = this.flowRuns.some(f => f.id == this.tooltip.data.id)
if (!exists) {
this.setTooltip(null)
}
},
checkFormatTime(tooltipData, property) {
if (tooltipData.data[property]) {
const formatted = this.formatTime(tooltipData.data[property])
tooltipData.data[`display_${property}`] = formatted
}
}
}
}
================================================
FILE: src/mixins/formatTimeMixin.js
================================================
import moment from '@/utils/moment'
import { mapGetters } from 'vuex'
export const formatTime = {
data() {
return {
dateFilters: [
{ name: '1 Hour', value: 'hour' },
{ name: '24 Hours', value: 'day' },
{ name: '7 Days', value: 'week' },
{ name: '30 Days', value: 'month' }
],
// querying failures for over 24 hours either goes into endless loading or returns a 504 so shortening for now
shortDateFilters: [
{ name: '1 Hour', value: 'hour' },
{ name: '24 Hours', value: 'day' },
{ name: '7 Days', value: 'week' }
],
selectedDateFilter: 'day'
}
},
computed: {
...mapGetters('user', ['user', 'timezone'])
},
methods: {
dateDiff(date1, date2) {
const a = moment(date1)
const b = moment(date2)
return b.diff(a, 'days')
},
datePartHour(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${timeObj ? timeObj.format('h') : moment(timestamp).format('h')}`
},
datePartMinute(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj ? timeObj.format('mm') : moment(timestamp).format('mm')
}`
},
datePartMeridian(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${timeObj ? timeObj.format('a') : moment(timestamp).format('a')}`
},
dateParts(timestamp) {
if (!timestamp) {
return
}
const timeObj = moment(timestamp).tz(this.timezone) ?? moment(timestamp)
return {
hour: timeObj.format('h'),
minute: timeObj.format('mm'),
meridian: timeObj.format('a')
}
},
formatTimeRelative(timestamp) {
let timeObj = moment(timestamp).tz(this.timezone)
return timeObj ? timeObj.fromNow() : moment(timestamp).fromNow()
},
formatDate(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('DD/MM/YY')
: moment(timestamp).format('DD/MM/YY')
}`
},
formatCalendarDate(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
const date = `${
timeObj
? timeObj.format('YYYY-MM-DD')
: moment(timestamp).format('YYYY-MM-DD')
}`
return date
},
getHour(timestamp) {
let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp)
return timeObj.format('HH')
},
formatCalendarTime(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp)
//Bit of a hack here to make sure that we have timezone but also get the time in milliseconds
const updated = timeObj.format('YYYY-MM-DD HH:mm:ss')
return moment(updated).valueOf()
},
convertCalendarStartTime(timestamp) {
const startTime = moment(timestamp).tz(this.timezone) || moment(timestamp)
const start = startTime.startOf('day').toISOString()
return start
},
addTime(timestamp, amount, unit) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp)
return timeObj.add(amount, unit).format('YYYY-MM-DD HH:mm:ss')
},
addTimeNoTz(timestamp, amount, unit) {
if (!timestamp) return
let timeObj = moment(timestamp)
return timeObj.add(amount, unit).format('YYYY-MM-DD HH:mm:ss')
},
getMonth(timestamp) {
return moment(timestamp).format('MMMM YYYY')
},
addDay(timestamp, amount) {
if (!timestamp) return
const timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp)
return timeObj
.add(amount, 'days')
.startOf('day')
.toISOString()
},
subtractDay(timestamp, amount) {
if (!timestamp) return
const timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp)
const day = timeObj
.subtract(amount, 'days')
.startOf('day')
.toISOString()
return day
},
shortTime(timestamp) {
if (!timestamp) return
let t = moment(timestamp).tz(this.timezone)
let timeObj = t ? t : moment(timestamp)
let formatted = timeObj.calendar(null, {
sameDay: 'h:mma',
nextDay: 'D MMM ',
nextWeek: 'D MMM ',
lastDay: 'D MMM ',
lastWeek: 'D MMM ',
sameElse: 'D MMM '
})
return `${formatted}`
},
formDate(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('D MMM YYYY h:mma')
: moment(timestamp).format('D MMM YYYY h:mma')
}`
},
formTimeNoTimeZone(timestamp) {
if (!timestamp) return
return moment(timestamp).format('hh:mma')
},
formTime(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj ? timeObj.format('hh:mma') : moment(timestamp).format('hh:mma')
}`
},
tzOffset(date) {
const zone = moment.tz.zone(this.timezone)
const offset =
zone?.parse(Date.UTC(date)) || new Date().getTimezoneOffset()
return offset
},
calEventTime(timestamp, date) {
if (!timestamp) return
let t = moment(timestamp).tz(this.timezone)
let timeObj = t ? t : moment(timestamp)
let formatted = timeObj.calendar(date, {
sameDay: 'h:mma',
nextDay: 'D MMM h:mma',
nextWeek: 'D MMM',
lastDay: 'D MMM h: mma',
lastWeek: 'D MMM ',
sameElse: 'D MMM '
})
return `${formatted}`
},
logTime(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('HH:mm:ss')
: moment(timestamp).format('HH:mm:ss')
}`
},
logTimeExtended(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('HH:mm:ss:SS')
: moment(timestamp).format('HH:mm:ss:SS')
}`
},
logDate(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('D MMMM YYYY h:mma')
: moment(timestamp).format('D MMMM YYYY h:mma')
}`
},
formatTime(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('D MMMM YYYY h:mma')
: moment(timestamp).format('D MMMM YYYY h:mma')
}`
},
formatTimeGranular(timestamp) {
if (!timestamp) return
let timeObj = moment(timestamp).tz(this.timezone)
return `${
timeObj
? timeObj.format('h:mm:ss A')
: moment(timestamp).format('h:mm:ss A')
}`
},
formatDateTime(timestamp) {
if (!timestamp) return
let t = moment(timestamp).tz(this.timezone),
shortenedTz = moment()
.tz(this.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone)
.zoneAbbr()
let timeObj = t ? t : moment(timestamp)
let formatted = timeObj.calendar(null, {
sameDay: 'h:mma',
sameElse: 'MMMM D, YYYY [at] h:mma'
})
return `${formatted} ${shortenedTz}`
},
formatLongDate(timestamp) {
if (!timestamp) return
let t = moment(timestamp).tz(this.timezone)
let timeObj = t ? t : moment(timestamp)
let formatted = timeObj.calendar(null, {
sameDay: '[today]',
sameElse: 'MMMM D, YYYY'
})
return formatted
},
formatDateTimeFromUTC(timestamp, timezone) {
if (!timestamp) return
let timeObj = moment.tz(timestamp, timezone)
let formatted = timeObj.calendar(null, {
sameDay: 'h:mma z',
sameElse: 'MMMM D, YYYY [at] h:mma z'
})
return formatted
}
}
}
================================================
FILE: src/mixins/heartbeatMixin.js
================================================
import { STATE_NAMES } from '@/utils/states.js'
export const heartbeatMixin = {
data() {
return { state: 'All', stateNames: STATE_NAMES, stateList: [] }
},
computed: {
checkedState() {
if (this.state === 'All') return null
if (!this.state) return null
return this.state
},
states() {
return this.stateNames.filter(name => name !== 'Scheduled').sort()
}
},
methods: {}
}
================================================
FILE: src/mixins/membershipInvitationMixin.js
================================================
export const handleMembershipInvitations = {
methods: {
async acceptMembershipInvitation(id) {
const { data } = await this.$apollo.mutate({
mutation: require('@/graphql/Tenant/accept-membership-invitation.gql'),
variables: {
membershipInvitationId: id
}
})
return data
},
async declineMembershipInvitation(id) {
const { data } = await this.$apollo.mutate({
mutation: require('@/graphql/Tenant/delete-membership-invitation.gql'),
variables: {
membershipInvitationId: id
}
})
return data
}
}
}
================================================
FILE: src/mixins/parametersMixin.js
================================================
import { mapGetters, mapActions } from 'vuex'
import { formatJson } from '@/utils/json'
import difference from 'lodash/difference'
export const parametersMixin = {
props: {
flowGroup: {
required: true,
type: Object
}
},
data() {
return {
loading: false,
flowParameters: [],
newParameterInput: null,
extraParameters: [],
missingRequiredParameters: []
}
},
computed: {
...mapGetters('tenant', ['tenant']),
...mapGetters('license', ['hasPermission']),
parameterInput: {
get() {
return this.newParameterInput
},
set(val) {
this.newParameterInput = val
}
},
requiredParameters() {
return this.selectedFlow.parameters.reduce((accum, currentParam) => {
if (currentParam.required) accum.push(currentParam.name)
return accum
}, [])
},
permissionsCheck() {
return !this.hasPermission('update', 'run')
},
selectedFlow() {
return this.flow || this.flowGroup.flows.find(flow => !flow.archived)
},
flowGroupParameters() {
const fgParamObjArray = []
for (const [key, value] of Object.entries(
this.flowGroup?.default_parameters
)) {
fgParamObjArray.push({ name: key, default: value })
}
return fgParamObjArray
},
selectedFlowParameters() {
return this.selectedFlow.parameters.reduce((accum, currentParam) => {
accum[currentParam.name] = currentParam.default
return accum
}, {})
},
diffBetweenFlowGroupAndFlow() {
const fgParams = this.flowGroup?.default_parameters
const selectedFlowParams = this.selectedFlowParameters
const diff = difference(
Object.keys(selectedFlowParams),
Object.keys(fgParams)
)
return diff
},
defaultParameters() {
const fgParams = this.flowGroup?.default_parameters
const selectedFlowParams = this.selectedFlowParameters
this.diffBetweenFlowGroupAndFlow.forEach(
differentKey =>
(fgParams[differentKey] = selectedFlowParams[differentKey])
)
const paramifiedArray = []
for (const [key, value] of Object.entries(fgParams)) {
const required =
this.selectedFlow?.parameters.filter(
paramObj => paramObj.name == key && paramObj.required
).length > 0
paramifiedArray.push({
name: key,
default: value,
required: required
})
}
const sorted = paramifiedArray.sort((a, b) => {
return a.name > b.name ? 1 : -1
})
return sorted
}
},
methods: {
...mapActions('alert', ['setAlert']),
setParameterInput() {
this.parameterInput = formatJson(this.flowGroup.default_parameters)
},
validateParameters() {
this.extraParameters = []
this.missingRequiredParameters = []
if (!this.$refs.parameterRef) {
return true
}
// Check JSON using the JsonInput component's validation
const jsonValidationResult = Array.isArray(this.$refs.parameterRef)
? this.$refs.parameterRef[0].validateJson()
: this.$refs.parameterRef.validateJson()
if (jsonValidationResult === 'SyntaxError') {
this.errorInParameterInput = true
this.setAlert({
alertShow: true,
alertMessage: `There is a syntax error in your flow parameters JSON.
Please correct the error and try again.`,
alertType: 'error'
})
return false
}
if (jsonValidationResult === 'MissingError') {
this.errorInParameterInput = true
this.setAlert({
alertShow: true,
alertMessage: 'Please enter your flow parameters as a JSON object.',
alertType: 'error'
})
return false
}
const parameters = JSON.parse(
this.newParameterInput || this.parameterInput
)
// Collect any missing required parameters
this.missingRequiredParameters = difference(
this.requiredParameters,
Object.keys(parameters)
)
// Collect any extra parameters.
this.extraParameters = difference(
Object.keys(parameters),
this.selectedFlow.parameters.map(param => param.name)
)
if (
this.missingRequiredParameters.length === 0 &&
this.extraParameters.length === 0
) {
return true
}
this.errorInParameterInput = true
if (this.missingRequiredParameters.length > 0) {
this.setAlert({
alertShow: true,
alertMessage: `There are required flow parameters missing in the JSON payload.
Please specify values for the missing parameters.`,
alertType: 'error'
})
} else {
this.setAlert({
alertShow: true,
alertMessage: `You have parameters which were not part of your original flow: ${this.extraParameters}. Please remove them to continue.`,
alertType: 'error'
})
}
return false
},
async saveDefaultParams() {
try {
const { data, errors } = await this.$apollo.mutate({
mutation: require('@/graphql/Mutations/set-default-params.gql'),
variables: {
input: {
flow_group_id: this.flowGroup.id,
parameters:
this.parameterInput && this.parameterInput.trim() !== ''
? JSON.parse(this.parameterInput)
: null
}
},
errorPolicy: 'all'
})
if (data) {
await this.showAlert(
'Your flow group parameters have been updated.',
'success'
)
this.$emit('updated', this.parameterInput)
}
if (errors) {
await this.showAlert(errors[0].message, 'error')
}
} catch (err) {
await this.showAlert(
'There was a problem setting your parameters. Please check the input.',
'error'
)
}
},
async setDefaultParams() {
this.loading = true
if (!this.validateParameters()) {
this.loading = false
return
}
await this.saveDefaultParams()
this.loading = false
},
async showAlert(alertMessage, alertType) {
await this.setAlert({
alertShow: true,
alertMessage,
alertType
})
}
}
}
================================================
FILE: src/mixins/paymentMixin.js
================================================
import { mapGetters } from 'vuex'
export const paymentMixin = {
props: {},
data() {
return {
cardError: '',
updatedEmail: null,
updatedAddress: null,
updatedName: null,
loading: false
}
},
computed: {
...mapGetters('tenant', ['tenant']),
...mapGetters('license', ['license']),
...mapGetters('user', ['user']),
email: {
get() {
return this.tenant.stripe_customer?.email
},
set(x) {
this.updatedEmail = x
}
},
address: {
get() {
return this.tenant?.stripe_customer?.sources?.data[0]?.owner?.address
?.line1
},
set(x) {
this.updatedAddress = x
}
},
username: {
get() {
//stripe_customer returns empty customer name as string 'nullnull' so need to explicitly check for that
if (this.tenant?.stripe_customer?.name == 'nullnull') return ''
return this.tenant?.stripe_customer?.name
? this.tenant?.stripe_customer?.name
: ''
},
set(x) {
this.updatedName = x
}
}
},
methods: {}
}
================================================
FILE: src/mixins/polling/pollsAgentsMixin.js
================================================
export const pollsAgentsMixin = {
data() {
return {
unsubscribe: null
}
},
async created() {
this.unsubscribe = await this.$store.dispatch('polling/subscribe', 'agents')
},
beforeDestroy() {
this.unsubscribe()
}
}
================================================
FILE: src/mixins/polling/pollsFlowsMixin.js
================================================
export const pollsFlowsMixin = {
data() {
return {
unsubscribe: null
}
},
async created() {
this.unsubscribe = await this.$store.dispatch('polling/subscribe', 'flows')
},
beforeDestroy() {
this.unsubscribe()
}
}
================================================
FILE: src/mixins/polling/pollsProjectsMixin.js
================================================
export const pollsProjectsMixin = {
data() {
return {
unsubscribe: null
}
},
async created() {
this.unsubscribe = await this.$store.dispatch(
'polling/subscribe',
'projects'
)
},
beforeDestroy() {
this.unsubscribe()
}
}
================================================
FILE: src/mixins/polling/pollsTenantsMixin.js
================================================
export const pollsTenantsMixin = {
data() {
return {
unsubscribe: null
}
},
async created() {
this.unsubscribe = await this.$store.dispatch(
'polling/subscribe',
'tenants'
)
},
beforeDestroy() {
this.unsubscribe()
}
}
================================================
FILE: src/mixins/runFlowNow.js
================================================
export const runFlowNowMixin = {
data() {
return {
// Alert
showAlert: false,
alertMessage: '',
alertLink: {},
alertType: 'info',
setToRun: []
}
},
methods: {
async runFlowNow(flowRunId, version, name) {
this.setToRun.push(flowRunId)
try {
// Set the flow in a Scheduled state (even if it's already Scheduled).
// This causes the flow run to execute immediately.
await this.$apollo.mutate({
mutation: require('@/graphql/TaskRun/set-flow-run-states.gql'),
variables: {
flowRunId: flowRunId,
version: version,
state: {
type: 'Scheduled'
}
}
})
this.alertMessage = `Your flow run ${name} has been scheduled to start immediately.`
this.alertLink = { name: 'flow-run', params: { id: flowRunId } }
this.alertType = 'success'
this.showAlert = true
} catch (error) {
this.alertMessage =
'Something went wrong while trying to run this flow. Please try again later.'
this.alertType = 'error'
this.showAlert = true
this.isRunningNow = false
this.setToRun.pop(flowRunId)
throw error
}
}
}
}
================================================
FILE: src/mixins/teamProfileMixin.js
================================================
import { mapGetters, mapActions } from 'vuex'
export const teamProfileMixin = {
data() {
return {
// User inputs
tenantChanges: {
name: '',
slug: ''
},
// Regexes to check if a slug is invalid
slugCharRegex: /^[a-z0-9|-]*$/,
dashPositionRegex: /^(-)|-{2,}|(-)$/,
// Flags that are set to true during async vaidation checks
isCheckingName: false,
isCheckingSlug: false,
// Flag input icons so that they are only revealed during submission & validation
showNameIcon: false,
showSlugIcon: false,
// Input errors
nameErrors: [],
slugErrors: [],
// Form is submitted & tenant is updating
isUpdatingTenant: false,
// Tenant update returns a server error
updateServerError: false
}
},
computed: {
...mapGetters('tenant', ['tenant']),
...mapGetters('license', ['hasPermission']),
permissionsCheck() {
return this.hasPermission('update', 'tenant')
},
isUpdatable() {
// Tenant cannot be updated during any kind of load state
if (this.isUpdatingTenant) return false
if (this.isCheckingSlug) return false
// Tenant cannot be updated if any errors exist
if (
this.updateServerError ||
this.nameErrors.length > 0 ||
this.slugErrors.length > 0
) {
return false
}
return (
this.tenantChanges.name !== this.tenant.name ||
this.tenantChanges.slug !== this.tenant.slug
)
},
slug: {
get() {
return this.tenantChanges.slug
},
set(val) {
this.tenantChanges.slug = val.replace(' ', '-')
}
},
name: {
get() {
return this.tenantChanges.name
},
set(val) {
this.tenantChanges.name = val
}
},
showNameCheck() {
return (
this.showNameIcon &&
this.nameErrors.length === 0 &&
!this.updateServerError
)
},
showNameClear() {
return (
this.showNameIcon &&
(this.nameErrors.length > 0 || this.updateServerError)
)
},
showSlugCheck() {
return (
this.showSlugIcon &&
this.slugErrors.length === 0 &&
!this.updateServerError
)
},
showSlugClear() {
return (
this.showSlugIcon &&
(this.slugErrors.length > 0 || this.updateServerError)
)
}
},
watch: {
tenant(val) {
this.tenantChanges.name = val.name || ''
this.tenantChanges.slug = val.slug || ''
}
},
created() {
this.tenantChanges.name = this.tenant.name || ''
this.tenantChanges.slug = this.tenant.slug || ''
},
methods: {
...mapActions('tenant', [
'setCurrentTenant',
'updateTenantSettings',
'getTenants'
]),
...mapActions('alert', ['setAlert']),
// Synchronous name check that occur on input blur
checkName(name) {
this.nameErrors = []
// If name is not provided, reset to original value
//
// Make this field required if there is no original value
if (name === '') {
if (!this.tenant.name) {
this.nameErrors = ['A team name is required.']
} else {
this.tenantChanges.name = this.tenant.name
}
return
}
if (name.length < 3) {
this.nameErrors = ['Team names must contain a minimum of 3 characters.']
return
}
},
// Synchronous slug input check that occurs on input blur
checkSlug(slug) {
this.slugErrors = []
// If slug is not provided, reset to original value
//
// Make this field required if there is no original value
if (slug === '') {
if (!this.tenant.slug) {
this.slugErrors = ['A URL slug for your team is required.']
} else {
this.tenantChanges.slug = this.tenant.slug
}
return
}
if (slug.length < 3) {
this.slugErrors = ['URL slug must contain a minimum of 3 characters.']
return
}
if (!this.slugCharRegex.test(slug)) {
this.slugErrors = [
'URL slugs can only contain lowercase letters, numbers, and dashes.'
]
return
}
if (this.dashPositionRegex.test(slug)) {
this.slugErrors = [
'URL slugs cannot begin, end, or contain more than 1 dash in a row.'
]
}
},
// Asynchronous name input "check" that occurs when user attempts to submit the form
//
// Quotes around "check" because a check doesn't actually occur
//
// Instead, a timeout is returned purely to surface a loader on the UI to keep it
// inline with the slug async check
checkNameAsync() {
// Stop immediately if the input never changed
if (this.showNameIcon) return
this.isCheckingName = true
return new Promise(resolve => {
setTimeout(() => {
this.showNameIcon = true
this.isCheckingName = false
resolve()
}, 750)
})
},
// Asynchronous slug input check that occurs when user attempts to submit the form
//
// Currently checks only for slug uniqueness
checkSlugAsync() {
// Stop immediately if the input never changed
if (this.showSlugIcon) return
this.isCheckingSlug = true
return new Promise(resolve => [
setTimeout(async () => {
// Check slug uniqueness
try {
const checkSlug = await this.$apollo.query({
query: require('@/graphql/Tenant/tenant-by-slug.gql'),
variables: {
slug: this.slug
}
})
if (
checkSlug?.data?.tenant?.length !== 0 &&
this.slug != this.tenant.slug
) {
this.slugErrors = ['Sorry, that URL slug is already in use.']
}
} catch {
this.updateServerError = true
}
this.showSlugIcon = true
this.isCheckingSlug = false
resolve()
}, 750)
])
},
resetNameMetadata() {
this.showNameIcon = false
this.nameErrors = []
this.updateServerError = false
},
resetSlugMetadata() {
this.showSlugIcon = false
this.slugErrors = []
this.updateServerError = false
},
handleError(alert) {
this.setAlert({
alertMessage:
alert ||
'Something went wrong while trying to update your team profile settings. Please try again later.',
alertType: 'error',
alertShow: true
})
},
handleSuccess() {
this.setAlert({
alertMessage:
"Your team's profile settings have been successfully updated.",
alertType: 'success',
alertShow: true
})
setTimeout(() => {
this.resetNameMetadata()
this.resetSlugMetadata()
}, 3000)
},
async updateTenant() {
if (this.nameErrors.length > 0 || this.slugErrors.length > 0) {
return
}
this.updateServerError = false
this.isUpdatingTenant = true
// Async tenant checks
await this.checkNameAsync()
await this.checkSlugAsync()
if (
this.tenantChanges.slug == this.tenant.slug &&
this.tenantChanges.name == this.tenant.name
) {
await this.updateTenantSettings({
teamNamed: true
})
this.handleSuccess()
this.isUpdatingTenant = false
return
}
let newTenant
try {
newTenant = await this.$apollo.mutate({
mutation: require('@/graphql/Tenant/update-tenant.gql'),
variables: {
name: this.tenantChanges.name || this.tenant.name,
slug: this.tenantChanges.slug || this.tenant.slug
}
})
} catch (error) {
// Otherwise, surface the global error alert.
const e = error.toString()
const alert = e.includes('Uniqueness violation')
? 'Sorry, that URL slug is already in use. Please try another URL Slug.'
: null
this.handleError(alert)
this.updateServerError = true
this.isUpdatingTenant = false
return
}
if (
!newTenant?.data?.update_tenant_name ||
!newTenant?.data?.update_tenant_slug
) {
this.handleError()
this.updateServerError = true
return
}
await this.getTenants()
await this.setCurrentTenant(this.tenantChanges.slug)
this.$router.replace({
name: 'account',
params: { tenant: this.tenantChanges.slug }
})
this.handleSuccess()
this.isUpdatingTenant = false
}
}
}
================================================
FILE: src/pages/AccessDenied.vue
================================================
Oops!
It looks like you're attempting to sign in with a method unsupported
by your organization.
arrow_back_ios
Back to sign in
It looks like you don't have access to this application. If you
believe this is an error, contact us at help@prefect.io
cloud
Take me to Prefect Cloud
arrow_back_ios
Sign out
================================================
FILE: src/pages/Admin/Account/Account.vue
================================================
================================================
FILE: src/pages/Admin/Account/Billing.vue
================================================
Payment
{{ updateOrAdd }} payment
To update your payment details, please
contact our sales team
You haven't added a payment method
{{ payment.owner.name }}
{{ payment.brand || payment.card.brand }}
•••• •••• •••• {{ payment.last4 || payment.card.last4 }}
{{ payment.exp_month || payment.card.exp_month }}/{{
payment.exp_year || payment.card.exp_year
}}
fab fa-cc-{{ payment.card.brand.toLowerCase() }}
{{ payment.owner.name }}
{{ payment.ach_credit_transfer.bank_name }}
••••••••••••
{{
payment.ach_credit_transfer.account_number &&
payment.ach_credit_transfer.account_number.substring(
payment.ach_credit_transfer.account_number.length - 4
)
}}
••••••••••••
{{
payment.ach_credit_transfer.routing_number &&
payment.ach_credit_transfer.routing_number.substring(
payment.ach_credit_transfer.routing_number.length - 4
)
}}
{{ payment.ach_debit.bank_name }}
••••••••••••
{{
payment.ach_debit.account_number.substring(
payment.ach_debit.account_number.length - 4
)
}}
••••••••••••
{{
payment.ach_debit.routing_number.substring(
payment.ach_debit.routing_number.length - 4
)
}}
fad fa-university
Sorry, we're having trouble displaying your payment method. For
questions, please contact us via email at
support@prefect.io or on our
support page
================================================
FILE: src/pages/Admin/Account/ClearDataDialog.vue
================================================
Your data
See and clear the data in your account such as projects, flows, members
and secrets
Only your team's administrators can modify these settings.
{{ data.icon }}
{{ data.count.toLocaleString() }}
{{
data.label +
((data.count && data.count > 1) || data.count == 0
? 's'
: '')
}}
Analyzing...
WARNING: This can't be
undone.
This will remove all of your team's projects, members, flows,
tasks, schematics, secrets, API tokens, runs, and logs.
You have no data to remove!
To confirm, type
your tenant URL slug
below:
Close
Clear all data?
Error: We're sorry, something
went wrong.
If the issue persists, please contact us via email at
support@prefect.io or on our
Support page
Close
{{
loading ? loadingMessage + '...' : 'All data has been removed.'
}}
Close
Clear Data
================================================
FILE: src/pages/Admin/Account/License.vue
================================================
Your plan
Cancel plan
Upgrade
You're on
{{ !isLegacy ? 'the' : 'a' }}
cloud
{{ planName
}} (legacy)
plan. Upgrade now to get access
to usage-based pricing and new features!
{{ planName
}}
{{ isLegacy ? '(legacy)' : '' }} plan
Visit the
pricing page
for more details
20,000 free runs / month
Your first 20,000 successful runs per month are on us!
20,000 successful runs each month!
{{ userNum ? userNum : 'Unlimited' }} {{ userOrUsers }}
You can invite up to {{ userNum }} {{ userOrUsers }}
You have unlimited users!
{{ `${flowConcurrency} concurrent ${flowOrFlows}` }}
You can have {{ flowConcurrency }} {{ flowOrFlows }} running at
a time
{{
historyRetention
? historyRetention + ' days of '
: 'Unlimited'
}}
history
Flow and task run history is retained for
{{ historyRetention }} days
You can view run history forever!
{{ cancelPlanError ? 'Oops' : 'Are you sure?' }}
Something went wrong trying to cancel your plan. If this error
persists, please contact help@prefect.io.
This will cancel your current plan and put you on the Free plan. Any
outstanding balance will be billed immediately.
You have more users than the Free plan allows (1). You'll need to
remove users and pending invitations
from your team before proceeding.
================================================
FILE: src/pages/Admin/Account/Profile.vue
================================================
Profile
See and edit your team profile.
Only your team's administrators can modify these profile settings.
check
clear
check
clear
Update Profile
================================================
FILE: src/pages/Admin/Account/Usage/CurrentUsers.vue
================================================
fad fa-users
================================================
FILE: src/pages/Admin/Account/Usage/Usage.vue
================================================
Usage
Check your task run usage.
You are on the Prefect {{ plan.name }} Plan. You have used {{ usedTaskRuns | numFormat }} task runs
You have {{ taskRunsLeft | numFormat }} task runs left until
{{ subscriptionPeriodEnd }}.
You will then be charged ${{ plan.additionalCost }}/task
run.
You are on the Prefect {{ plan.name }} Plan. Your billing period started on {{ subscriptionPeriodBegun }} and
will end on {{ subscriptionPeriodEnd }}.
You have {{ planTaskRuns | numFormat }} task runs in your plan and
have used {{ chargeableRuns | numFormat }} extra runs at ${{
plan.additionalCost
}}/run.
You have used {{ chargeableRuns | numFormat }} task runs at ${{
plan.additionalCost
}}/run.
Your total so far is {{ costSoFar }}.
================================================
FILE: src/pages/Admin/Account/Usage/UsageCycle.vue
================================================
Current balance
$
{{ projectedCostDollars
}}.{{ projectedCostCents }}
due
on {{ nextPaymentDate }}
================================================
FILE: src/pages/Admin/Account/Usage/UsageTimeline.vue
================================================
Usage
{{ item.name }}
{{ item.name }}
chevron_left
{{ fromDisplay }} - {{ toDisplay }}
chevron_right
last_page
fiber_manual_record
Week
fiber_manual_record
Month
fiber_manual_record
Year
{{ hovered.runs }} runs
================================================
FILE: src/pages/Admin/Account/Usage/UsageToday.vue
================================================
fad fa-tasks
Task runs today
{{ usage }}
================================================
FILE: src/pages/Admin/Account/Users.vue
================================================
Add users
Check and update the number of users in your account. To see active
membership information visit the
members page
.
Only your team's administrators can modify these settings.
You are on a {{ planType }} license. To change your license terms,
please
contact our sales team
{{ upgradeOrDowngrade }} to {{ desiredUsers }} {{ desiredUserOrUsers }}
star_rate You'll
{{ addOrRemove }}
{{ Math.abs(diff) }}
{{ userOrUsers }} at
${{ userCost }} /user/month
(${{ Math.abs(diff) * userCost }}
total)
star_rate Your card
ending in
{{ existingCard.last4 }}
will now be charged
${{ totalCost }} on a
monthly basis
{{ cardError }}
Please enter payment details before adding users
{{ addOrRemove }} {{ userOrUsers }}
================================================
FILE: src/pages/Admin/Admin.vue
================================================
================================================
FILE: src/pages/Admin/Teams/InviteUsers.vue
================================================
Add users to your team
Invite
Invitations
None
Suggested
{{
u.first_name || u.last_name
? u.first_name + ' ' + u.last_name
: u.username
}}
Invite
Close
================================================
FILE: src/pages/Admin/Teams/NewTeam.vue
================================================
Your plan doesn't include multi-tenancy;
Multi-tenancy is only available on Enterprise plans;
contact
sales@prefect.io
to learn more.
chevron_left
Back
people_alt
person_add_alt_1
================================================
FILE: src/pages/Admin/Teams/TeamForm.vue
================================================
fad fa-random
Create
================================================
FILE: src/pages/Admin/Teams/Teams.vue
================================================
Your plan doesn't include multi-tenancy;
Multi-tenancy is only available on Enterprise plans;
contact
sales@prefect.io
to learn more.
================================================
FILE: src/pages/Admin/Teams/TeamsOverview.vue
================================================
You don't have permission to view license teams; contact your
license administrator to get access.
Multi-tenancy is only available on Enterprise plans.
{{ teams.length }}/{{ license.terms.tenants }} team slots used
add New
Are you sure?
This will delete your team and all associated flows, tasks, logs, and
runs.
================================================
FILE: src/pages/Agents/AgentFlowRunHistory.vue
================================================
pi-flow-run Run History
No run history
================================================
FILE: src/pages/Agents/AgentFlowRunTable-Tile.vue
================================================
Flow Runs
{{ item }}
(+{{ state.length - 2 }})
{{ item.name }}
{{ item.flow.name }}
{{ formDate(item.scheduled_start_time) }}
{{ formDate(item.start_time) }}
{{ formDate(item.end_time) }}
brightness_1
================================================
FILE: src/pages/Agents/AgentPage.vue
================================================
{{ agentName }}
delete
Remove
Are you sure you want to stop displaying this agent?
This action will not stop the agent process if it is still
running in your infrastructure.
It will only stop displaying the agent in Cloud.
Cancel
Confirm
================================================
FILE: src/pages/Agents/AgentTile.vue
================================================
Are you sure you want to stop displaying this agent?
This action will not stop the agent process if it is still running
in your infrastructure.
It will only stop displaying the agent in Cloud.
Cancel
Confirm
Overview
Config
adjust
{{ hasLateRuns ? lateRuns.length : 0 }}
{{ submittableRuns ? submittableRuns.length : 0 }}
{{ hasLateRuns ? 'Late submittable' : 'submittable' }}
runs
adjust
Last queried
ago
{{ timer }}
{{ formatDateTime(agent.last_queried) }}
No recent queries
Last queried
ago
{{ timer }}
{{ formatDateTime(agent.last_queried) }}
No recent queries
Core Version
{{ agent.core_version || 'Unknown' }}
Created At
{{ formatTime(agent.created) }}
Token {{ agent.token_name ? 'Name' : 'ID' }}
{{ copiedText[agent.token_id] ? 'check' : 'file_copy' }}
{{ agent.token_name || agent.token_id }}
Agent ID
{{ copiedText[agent.id] ? 'check' : 'file_copy' }}
{{ agent.id || 'Unknown' }}
No config
Agent Config Id: {{ agent.agent_config_id || unknown }}
Action Name{{
agentHook && agentHook.length > 1 ? ` ${index}` : ''
}}:
{{ action.name }}
Action Type{{
agentHook && agentHook.length > 1 ? ` ${index}` : ''
}}:
{{ action.action_type }}
More
Remove
================================================
FILE: src/pages/Agents/Agents.vue
================================================
Something went wrong while trying to fetch agents.
Please try refreshing your page. If this error persists, return to this
page after a few minutes.
{{ tenant.name }}
delete_sweep
Clean Up
Clean up unhealthy agents?
This will remove any agents that haven't queried
Prefect Cloud
Prefect Server
in the last {{ unhealthyThreshold / 60 }} hours.
Note: These agents will appear again if they become healthy by
querying the server.
Cancel
Confirm
filter_list
Filter
Reset
Close
Filters applied.
View Filters
No agents found. Try removing a filter.
You have no agents querying for runs. For help setting up an
agent, check out the agent
docs
or
tutorial .
================================================
FILE: src/pages/Agents/SubmittableRuns.vue
================================================
{{ submittableTabTitle }}
warning
{{ lateTabTitle }}
check
No submittable runs.
{{ flowName(item) }}
chevron_right
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
fa-rocket
Run {{ item.name }} now
check
Everything is running on schedule!
{{ flowName(item) }}
chevron_right
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
behind schedule
Clear late
Close
================================================
FILE: src/pages/Auth/Auth.vue
================================================
================================================
FILE: src/pages/Auth/ForgotPassword.vue
================================================
Recover Password
Don't panic!
We’ll email you instructions to reset your password.
mail_outline
Please check the email address
{{ email }} for instructions
on resetting your password.
Send me a recovery link
keyboard_arrow_left Back to sign in
================================================
FILE: src/pages/Auth/Logout.vue
================================================
You're now signed out.
{{ quote }}
Sign In
================================================
FILE: src/pages/Auth/SignIn.vue
================================================
Sign in
Forgot password?
Continue
{{ error }}
Continue with Google
Continue with GitHub
New to Prefect Cloud?
Create an account
.
================================================
FILE: src/pages/Auth/SignUp.vue
================================================
Create Account
Your password must contain:
At least 10 characters
At least 3 of the following:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special characters (ex. !@#)
Create Account
{{ error }}
Sign up with Google
Sign up with GitHub
Already have an account?
Sign in
.
================================================
FILE: src/pages/Calendar/Calendar-Day.vue
================================================
Reminder!
The Prefect Scheduler
will only schedule 10 runs in advance.
Close
{{ event.name }} {{ calEventTime(event.start_time, date) }}
-
{{ calEventTime(event.end_time, date) }}
================================================
FILE: src/pages/Calendar/Calendar-FlowFilter.vue
================================================
{{ filter.name }}
================================================
FILE: src/pages/Calendar/Calendar-View.vue
================================================
Today
chevron_left
chevron_right
{{ calTitle }}
{{ typeToLabel[type] }}
expand_more
Day
4 Days
================================================
FILE: src/pages/Calendar/FlowName.vue
================================================
{{ flowNameText }}
{{ flowNameText }}
================================================
FILE: src/pages/Calendar/RunMenu.vue
================================================
Reminder!
The Prefect Scheduler
will only schedule 10 runs in advance.
{{ run.name ? run.name : run.task_name }}
{{ run.map_index > -1 ? `(${run.map_index})` : '' }}
open_in_new
State:
{{ run.state }}
Duration:
Start:
{{ formatTime(run.start_time) }}
End:
{{ formatTime(run.end_time) }}
Updated:
{{ formatTime(run.state_timestamp) }}
Max Retries:
{{ run.max_retries || 0 }}
Retry delay:
{{ run.retry_delay || 0 }}
Message:
{{ run.state_message || 'No message' }}
Result:
{{ run.state_result || 'No result' }}
================================================
FILE: src/pages/Dashboard/Agents-Tile.vue
================================================
error
You do not have any agents querying for flow runs. Without an
agent, your flow runs will not be picked up.
See
the Prefect docs
for more information on agents.
check
{{ agentTracker.healthy }}
agent{{ agentTracker.healthy === 1 ? '' : 's' }}
{{ agentTracker.healthy === 1 ? 'is' : 'are' }} querying for flow
runs
warning
{{ agentTracker.stale }}
agent{{ agentTracker.stale === 1 ? '' : 's' }}
{{ agentTracker.stale === 1 ? 'has' : 'have' }}
not queried for flow runs in the last
{{
staleThreshold === 1 ? 'minute' : `${staleThreshold} minutes`
}}.
error
{{ agentTracker.unhealthy }}
agent{{ agentTracker.unhealthy === 1 ? '' : 's' }}
{{ agentTracker.unhealthy === 1 ? 'has' : 'have' }}
not queried for flow runs in the last
{{
unhealthyThreshold === 1
? 'minute'
: `${unhealthyThreshold / 60} hours`
}}.
See
the Prefect docs
for more information on agents.
View details
================================================
FILE: src/pages/Dashboard/ApiHealthCheck-Tile.vue
================================================
API Status
info
This is the most recent message:
{{ connectionMessage }}
Did you set the
graphql_url variable in
~/.prefect/config.toml
correctly before starting Prefect Server?
Click this icon to read more about configuring Prefect.
priority_high
check
Connected
Attempting to connect...
Couldn't connect
{{ url }}
================================================
FILE: src/pages/Dashboard/Automations/AddAction.vue
================================================
{{
actionType.sendText
}}
{{ actionType.title }}
{{ ' ' }}
JSON message
message {{ messageText }}
{{ to }}
using this
config.
Cancel Save
{{ type.icon }}
{{ type.title }}
Type your message here or leave blank to send a default message.
Enter custom JSON payload to send as part of your webhook or leave
blank to send data from the event that triggers the
notification.
info
The default message varies depending on what type of event you
attach the action to. You can also send a custom message.
Attributes you can include in a custom message include:
event_id
flow_name flow_run_name
flow_run_id
agent_ids
state
state_message
flow_run_link
For example:
{{
`"Run {flow_run_name} from flow {flow_name} needs
your attention! See: {flow_run_link}"`
}}
For example:
{{ `{` }}
{{ `"flow": "{flow_name}"` }}
{{ `}` }}
To set up a slack webhook, you'll need to create a
secret with your
slack webhook url.
Select the name of the
secret for your
Slack webhook url.
Prefect Cloud will send a PagerDuty notification. Create your
Integration Key by visiting the Integrations tab of the Service
Details page and setting up an
Events API v2
integration. Providing a PagerDuty API token is optional.
Hint: add to the list after typing by pressing the Enter key
Prefect Cloud will send a payload to the URL you provide.
Prefect Cloud will send a message via the
MS Teams API ; you'll need to set up a Teams Incoming Webhook Connector and
retreive the webhook URL. To securely store your webhook URL, create
a
Prefect secret .
Prefect Cloud will send a message via the
Twilio SMS API . You can retrieve the ACCOUNT SID and
AUTH TOKEN from the dashboard of your
Twilio account. To securely store your auth token, create a
Prefect secret .
You'll also need to configure a
Messaging Service
to recieve messages.
Give your action a name so you can find and re-use it with more
automations.
Next
================================================
FILE: src/pages/Dashboard/Automations/AddAutomationCard.vue
================================================
When
any run
from
all
{{ flowNames }}s
{{ flowNames }}
{{ flowNames }}
this
{{ flowNames }}s
{{ flowNames }}
{{ flowNames }}
with
{{
selectedAgentConfig && selectedAgentConfig.name
? selectedAgentConfig.name + ' config'
: 'this config'
}}
{{ flowEventType.name }}
{{ flowEventType.name }}
after
{{ seconds }}
seconds
to
{{ hookStates }}
, then{{ addAction ? 'do this' : hookAction }} .
Cancel
Save
Choose an automation:
{{ item.type === 'flow' ? 'pi-flow' : 'pi-agent' }}
{{ item.label }}
{{ item.label }}
automations
are only available on Standard and Enterprise plans.
Next
{{
!showAgentConfigForm
? 'Choose an agent config:'
: 'Name your agent config:'
}}
fa-plus
Create agent config
{{ config.name }}
{{ config.id }}
To set up an agent automation you need to add the
agent-config-id flag at agent registration. If you attach the
same id to multiple agents,
Prefect will only notify you if all agents are unhealthy.
Previous
Next
Choose a flow:
Previous
Next
Choose an event:
{{ item.name }}
Flow SLA automations
are only available on Standard and Enterprise plans.
Previous
Next
Choose SLA duration:
Previous
Next
Choose the states that trigger this automation:
{{ item }}
Previous
Next
Choose an action:
fa-plus fa-sm
New
System actions
System actions are only
available on Standard and Enterprise plans.
There are no system actions for this automation.
$prefect {{ item.name || item.action_type }}
Your actions
You have no actions.
{{
actionIcon(item.action_type) || 'fas fa-desktop'
}} {{ item.name || item.action_type }}
This will also delete any associated Automations.
Previous
Save
================================================
FILE: src/pages/Dashboard/Automations/AutomationCard.vue
================================================
{{
hookDetails[hook.event_type]
? hookDetails[hook.event_type].icon
: ''
}}
When all {{ hookType }}
{{ flowNameList.join(', ') }}
with
{{
agentConfig && agentConfig.name
? agentConfig.name
: 'this config'
}}
{{ hookDetail
}}
for
{{ seconds }} seconds
{{ states.join(', ') }} , then {{ hookAction }} .
info
To set up an automation for your agent, you need to add the
agent-config-id flag at agent registration.
To use with a new agent, add this flag:
--agent-config-id {{ agentConfigId }}
Click to copy
Note that if you attach the agent-config-id to multiple
agents, Prefect will only notify you if
all agents are
unhealthy.
more_horiz
delete
Delete
================================================
FILE: src/pages/Dashboard/Automations/Automations.vue
================================================
You do not have access to Automations. If you'd like to be able to
create automations that notify you (or even cancel your run) when
there's a change in your agent or a run,
upgrade your account.
New Automation
Automations
================================================
FILE: src/pages/Dashboard/Automations/CreateAgentConfigForm.vue
================================================
================================================
FILE: src/pages/Dashboard/Automations/DeleteAgentConfig.vue
================================================
more_horiz
{{
copiedText[`--agent-config-id ${config.id}`]
? 'check'
: 'file_copy'
}}
--agent-config-id {{ config.id }}
delete
Delete
================================================
FILE: src/pages/Dashboard/Dashboard.vue
================================================
{{ projectId && project ? project.name : tenant.name }}
Nothing to see here :)
{{ tb.name }}
{{ tb.icon }}
================================================
FILE: src/pages/Dashboard/FailedFlows-Tile.vue
================================================
history
Filter on flow run scheduled start time
error
Something went wrong while trying to fetch failed flow
information. Please try refreshing your page. If this error
persists, return to this page after a few minutes.
{{ failure.flow.name }}
{{ formatDateTime(failure.state_timestamp) }}
arrow_right
check
No reported failures in the last {{ selectedDateFilter }}...
Everything looks good!
================================================
FILE: src/pages/Dashboard/FailedTasks-Tile.vue
================================================
history
Filter by when flows were last updated
error
Something went wrong while trying to fetch Task failures
information. Please try refreshing your page. If this error
persists, return to this page after a few minutes.
check
No reported failures in the last {{ selectedDateFilter }}...
Everything looks good!
================================================
FILE: src/pages/Dashboard/FlowRunHeartbeat-Tile.vue
================================================
label_important
================================================
FILE: src/pages/Dashboard/FlowRunHistory-Tile.vue
================================================
pi-flow-run Run History
No run history in the last month
================================================
FILE: src/pages/Dashboard/FlowTable-Tile.vue
================================================
{{ item.archived ? 'archive' : 'pi-flow' }}
{{ item.name }}
{{ item.project.name }}
================================================
FILE: src/pages/Dashboard/InProgress-Tile.vue
================================================
All
Running
Submitted
warning
You have no
{{
tab == tabs.running
? 'running flows'
: tab == tabs.submitted
? 'submitted runs'
: 'runs in progress'
}}
{{ item.flow.name }}
chevron_right
{{ item.name }}
Cancelling...
Running for
Submitted for execution
{{ overlay ? 'Close' : 'Stop all' }}
================================================
FILE: src/pages/Dashboard/NewProject-Dialog.vue
================================================
Uh oh! There's a problem
Success!
You don't have permission.
Please give your new project a name
{{ specificProjectErrorMessage }}
You don't have permission to create projects.
It looks like your project wasn't added. Please try again. If you still
need help, visit our
Support Page .
Your project has been added.
Go to project
Add Project
Cancel
================================================
FILE: src/pages/Dashboard/Notifications-Tile.vue
================================================
{{ n.content.icon ? n.content.icon : notificationIcon(n.type) }}
arrow_right
check
You're all caught up!
View all notifications
================================================
FILE: src/pages/Dashboard/Project-Selector.vue
================================================
{{ item.name }}
Create a new project
Data across all your team's projects
================================================
FILE: src/pages/Dashboard/Summary-Tile.vue
================================================
history
Filter by when flows were last updated
In the last {{ selectedDateFilter }}
{{ total.toLocaleString() }}
{{ segment.value.toLocaleString() }}
{{ humanLabel(segment.label) }}
0
flow runs
{{
((filteredStateSegments[0].value / total) * 100)
| roundTenths
}}
%
{{
((segment.value / total) * 100)
| roundTenths
| filterOnePercent
}}%
{{ humanLabel(segment.label) }}
{{ humanLabel(filteredStateSegments[0].label) }}
================================================
FILE: src/pages/Dashboard/Task-Item.vue
================================================
{{ failure.task.flow.name }}
chevron_right
{{ failure.task.name }}
arrow_right
================================================
FILE: src/pages/Dashboard/UpcomingRuns-Tile.vue
================================================
{{ upcomingTabTitle }}
warning
{{ lateTabTitle }}
check
No upcoming runs.
{{ item.flow.name }}
chevron_right
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
fa-rocket
Run {{ item.name }} now
check
Everything is running on schedule!
{{ item.flow.name }}
chevron_right
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
behind schedule
Clear late
Options
Close
================================================
FILE: src/pages/Dashboard/UsageTiles/CommittedUsage-Tile.vue
================================================
Run balance
error_outline
You're out of runs!
Please contact sales@prefect.io to refresh your committed runs.
{{ usage && usage.toLocaleString() }}
task runs
Add more runs
================================================
FILE: src/pages/Dashboard/UsageTiles/CycleUsage-Tile.vue
================================================
Usage this cycle
{{ !usage ? 0 : usage.toLocaleString()
}}/20,000
successful task runs
{{ freeUsage }}
%
of runs used of free runs used
Get more runs
================================================
FILE: src/pages/Dashboard/UsageTiles/UpgradeUsage-Tile.vue
================================================
You're on a legacy Cloud plan
Upgrade to get access to usage-based pricing and new features!
Upgrade
Details
================================================
FILE: src/pages/Flow/Actions.vue
================================================
fa-rocket
offline_bolt
Quick Run
You don't have permission to run flows
This flow has required parameters that must be set before a run. Set a
default parameter value in the flow settings page or select the RUN tab
to launch this flow.
This flow is archived and cannot be run.
Run this flow immediately, with a generated flow run name and default
parameters.
Select the RUN tab if you want to customize the flow run name, set
specific parameters, or provide context.
You don't have permission to schedule flows.
This flow is trying to schedule runs but has no schedules! Visit this
flow's
Settings > Schedules to set a new
schedule.
Archived flows cannot be scheduled.
Turn {{ isScheduled ? 'off' : 'on' }} this flow's schedule
================================================
FILE: src/pages/Flow/Automations-Tile.vue
================================================
fad fa-random
Automations
Displaying automations for this flow. To see all automations or
manage automations, go to the main
dashboard .
There are no automations associated with this flow.
================================================
FILE: src/pages/Flow/Describe.vue
================================================
edit
fa-times Cancel
fa-undo-alt
Reset
fa-save
Save
chevron_left
chevron_right
Editor
fa-eye
Preview
This flow has no
ReadMe!
add
================================================
FILE: src/pages/Flow/Details-Tile.vue
================================================
{{ flow.name }}
{{ `Version ${flow.version}` }}
Overview
Details
Created by
{{ flow.created_by.username }}
{{ formatTime(flow.created) }}
Prefect Core Version:
{{ flow.core_version }}
Schedule
General
Flow ID
{{ copiedText[flow.id] ? 'check' : 'file_copy' }}
{{ flow.id }}
{{ flow.id }}
Flow Group ID
{{
copiedText[flow.flow_group_id]
? 'check'
: 'file_copy'
}}
{{ flow.flow_group_id }}
{{ flow.flow_group_id }}
Version Group ID
{{
copiedText[flow.version_group_id]
? 'check'
: 'file_copy'
}}
{{ flow.version_group_id }}
{{ flow.version_group_id }}
Run Config
{{ field }}
{{ flow.run_config[field] }}
Environment
Type
{{ flow.environment.type }}
Executor
{{ flow.environment.executor | typeClass }}
Storage
{{ key }}
{{
copiedText[value] ? 'check' : 'file_copy'
}} {{ value }}
{{ value }}
{{ value }}
Flow Locations
{{ key }}
{{ value }}
Parameters
info
Here you can see the default paramaters for your
flow.
If you want to update your flow group's parameters, you
can do so on the parameters tab in
Flow Settings .
Refer to the
documentation
open_in_new
for more details on parameters.
Close
================================================
FILE: src/pages/Flow/Errors-Tile.vue
================================================
history
Filter by when runs were last updated
{{ error.task.name }}
{{ formatTimeRelative(error.state_timestamp) }}
{{ error.state_message }}
arrow_right
check
No reported errors in the last {{ selectedDateFilter }}...
Everything looks good!
No errors were reported in the last
{{ selectedDateFilter }} before this version was archived.
================================================
FILE: src/pages/Flow/Flow.vue
================================================
{{ selectedFlow.name }}
(Archived)
Overview
view_module
Tasks
pi-task
Runs
pi-flow-run
Schematic
pi-schematic
Automations
fad fa-random
ReadMe
far fa-file-code
Run
fa-rocket
Settings
settings
================================================
FILE: src/pages/Flow/FlowRunHeartbeat-Tile.vue
================================================
label_important
================================================
FILE: src/pages/Flow/FlowRunHistory-Tile.vue
================================================
pi-flow-run Run History
No run history
================================================
FILE: src/pages/Flow/FlowRunTable-Tile.vue
================================================
Flow Runs
{{ item }}
(+{{ state.length - 2 }})
{{ item.name }}
{{ formDate(item.scheduled_start_time) }}
{{ formDate(item.start_time) }}
{{ formDate(item.end_time) }}
brightness_1
================================================
FILE: src/pages/Flow/Run.vue
================================================
archive
This version of your flow is archived
Archived versions of flows cannot be run.
Refer to the
documentation
for more details on versions and archiving.
fad fa-random
now
later...
Inputs
These are the parameters that are passed to your flow
through
Parameter tasks . To update your flow group's default parameters, visit the
parameters tab of the
settings .
Labels
Labels are identifiers used by Prefect Agents for selecting
flow runs when polling for work. Labels that exist on both
the run and the agent will be submitted!
Refer to the
documentation
for more details on labels.
(Optional)
Logging Level
Logging level for the flow run. If none is specified,
default agent logging level will be used.
This can also be controlled by providing an environment
variable, "PREFECT__LOGGING__LEVEL".
Any dropdown selection besides "Default" will override the
environment variable.
Please note this is only guaranteed to work for Agents
running Prefect Core 0.14.17 or later.
{{ item.text }}
{{ item.text }}
Context
The
context for your run to share information
between tasks without the need for explicit task arguments.
Refer to the
documentation
for more details on context.
(Optional)
Run Configuration
The settings that determine where and how your flow should be
executed. Each run config type corresponds to an agent;
options displayed depend on the type of config selected.
Refer to the
documentation
for more details on run configs, including setting them at
registration time.
(Optional)
Reset to default values
expand_less
{{ showAdvanced ? 'Hide' : 'Show' }}
advanced run configuration
expand_more
When:
{{
when == 'now'
? 'now'
: formatDateTimeFromUTC(
scheduledStartDateTime,
scheduledStartTimezone
)
}}
Parameters:
modified
default
Context:
modified
default
RunConfig:
{{ runConfigTemplate.label }}
none
Run
================================================
FILE: src/pages/Flow/Schematic-Tile.vue
================================================
================================================
FILE: src/pages/Flow/Settings/ClockForm.vue
================================================
{{ type }}
Setting the timezone here will take precedence over existing
flow group schedule timezones
Setting the timezone here will take precedence over existing
flow group schedule timezones
This flow has no default parameters.
Checked parameters will override their corresponding defaults for runs
generated from this schedule.
Cancel
{{ createOrSave }}
================================================
FILE: src/pages/Flow/Settings/ClockForms/Cron.vue
================================================
Manually set your schedule's cron string. For more information, read
about
cron expressions
or about
cron clocks in Prefect .
Run this flow...
Invalid input
================================================
FILE: src/pages/Flow/Settings/ClockForms/Interval.vue
================================================
Manually set your schedule's interval. For more information, read about
interval clocks in
the Prefect docs .
{{ infoMessage }}
You can read more about schedules in
the Prefect docs .
remove_circle
add_circle
================================================
FILE: src/pages/Flow/Settings/ClockForms/Simple.vue
================================================
Set a schedule for your flow; schedules set in the UI will override any in
your Flow's code.
...on the
{{ ordinal(minuteValue) }} minute of the hour.
...at the
{{ ordinal(hourValue) }} hour.
Repeat on...
{{ day.label }}
On the...
{{ day }}
...{{ oxfordReducer(dayMonthValue) }}
{{ dayMonthValue.length === 1 ? 'day' : 'days' }}
of the month.
================================================
FILE: src/pages/Flow/Settings/CloudHooks.vue
================================================
Cloud Hooks allow you to send notifications to Slack, email, or any
other endpoint when your flow enters a given state. For example, send a
Slack message to your team when a production-critical flow has failed,
along with the reason for the failure, so you can respond immediately.
Note that some Cloud Hooks such as email are only available with Prefect
Cloud.
cloud New Cloud Hook
{{ flow.name }}
has no Cloud Hooks! Create one using the button above.
You don't have permission to create new Cloud Hooks.
Create a new Cloud Hook for this Flow
{{ typeIcon(item.type) }}
{{ item.name }}
{{ typeTitle(item.type) }}
{{
item.active ? 'On' : 'Off'
}}
You don't have permission to change
Cloud Hook states.
{{
item.active
? 'Deactivate'
: 'Activate'
}}
this Cloud Hook
States:
{{ stateGroup(item.states) }}
================================================
FILE: src/pages/Flow/Settings/DefaultParameters.vue
================================================
You can override the default parameter values on your Flow at the Flow
Group level. If provided, they take precedence over any default
parameters set at flow registration, and apply to all versions of your
Flow. Here you can set new flow group default parameters or reset them
to the parameters you set at registration.
You don't have permission to create or edit parameters.
Reset
Set Params
================================================
FILE: src/pages/Flow/Settings/General.vue
================================================
Project
You don't have permission to move flows between projects.
Move this flow to a new project.
Save
You don't have permission to move flows between projects.
Move this flow to a new project.
Projects are a method of organizing your Flows. Read more about
projects
here
open_in_new
.
Version Locking
Version Locking
{{ isVersionLocked ? 'Enabled' : 'Disabled' }}
You don't have permission to modify flow settings.
Your team doesn't have access to version locking.
{{ isVersionLocked ? 'Disable' : 'Enable' }} version locking for
this flow and its tasks.
Version locking ensures that this flow and its tasks run
just once . Read more about it
here
open_in_new
.
Heartbeat
Heartbeat
{{ isHeartbeatEnabled ? 'Enabled' : 'Disabled' }}
You don't have permission to modify flow settings.
{{ isHeartbeatEnabled ? 'Disable' : 'Enable' }} heartbeats for
this flow.
Heartbeats are sent by Prefect Core every 30 seconds and are used to
confirm the flow run and its associated task runs are healthy; runs
missing four heartbeats in a row are marked as
Failed
by the
Zombie Killer
open_in_new
. You can read more about heartbeats
here
open_in_new
.
Lazarus Process
Lazarus
{{ isLazarusEnabled ? 'Enabled' : 'Disabled' }}
You don't have permission to modify flow settings.
{{ isLazarusEnabled ? 'Disable' : 'Enable' }} Lazarus for this
flow.
The Lazarus process is responsible for rescheduling distressed flow
runs. Read more about Lazarus
here
open_in_new
.
================================================
FILE: src/pages/Flow/Settings/ScheduleParameters.vue
================================================
================================================
FILE: src/pages/Flow/Settings/Schedules.vue
================================================
Psst! We noticed you've got schedules here but your flow's schedule isn't
turned on; turn it on with the toggle at the top of the page to start
scheduling flows!
Close
New schedule
Schedule
Parameters
Modify schedule
Schedule
Parameters
Read-only
This schedule was set in your Flow's code so it can't be
modifed.
Default parameters
This schedule overrides default parameters.
Not scheduled
The existing flow group schedule will overide this
schedule.
info
This schedule was set in your Flow's code so it
can't be modifed.
The existing flow group schedule will overide this
schedule.
This schedule was created as a{{
'cron' in clock
? ' Cron'
: 'date' in clock
? ' Date'
: 'n Interval'
}}
clock with a value of
{{ clock.cron || clock.interval || clock.date
}}{{ clock.interval ? ' µs' : '' }}
Visit the docs
to learn more about
{{
'cron' in clock
? 'Cron'
: 'date' in clock
? 'Date'
: 'Interval'
}}
clocks on Prefect schedules.
Close
edit
Modify this schedule
delete
Remove this schedule
You can always recreate this schedule later.
================================================
FILE: src/pages/Flow/Settings.vue
================================================
General
settings
Cloud Hooks
cloud
Schedules
schedule
Parameters
perm_data_setting
General
settings
Cloud Hooks
cloud
Schedules
schedule
Parameters
format_list_numbered_rtl
================================================
FILE: src/pages/Flow/Summary-Tile.vue
================================================
history
Filter by when runs were last updated
In the last {{ selectedDateFilter }}
All Time
{{ total.toLocaleString() }}
{{ segment.value.toLocaleString() }}
{{ humanLabel(segment.label) }}
0
flow run{{ total !== 1 ? 's' : '' }}
{{
((filteredStateSegments[0].value / total) * 100)
| roundTenths
}}
%
{{
((segment.value / total) * 100)
| roundTenths
| filterOnePercent
}}%
{{ humanLabel(segment.label) }}
{{ humanLabel(filteredStateSegments[0].label) }}
================================================
FILE: src/pages/Flow/TasksTable-Tile.vue
================================================
{{ item.name }}
{{ item.retry_delay | duration }}
-
{{ item.max_retries }}
{{ item.type | typeClass }}
{{ item.trigger | typeClass }}
================================================
FILE: src/pages/Flow/UpcomingRuns-Tile.vue
================================================
{{ upcomingTabTitle }}
warning
{{ lateTabTitle }}
check
No upcoming runs.
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
fa-rocket
Run {{ item.name }} now
check
Everything is running on schedule!
{{ item.name }}
Scheduled for
{{ formatDateTime(item.scheduled_start_time) }}
behind schedule
Clear late
Close
================================================
FILE: src/pages/Flow/Versions-Tile.vue
================================================
{{ item.version }}
{{ formDate(item.created) }}
{{ item.archived ? 'archive' : 'pi-flow' }}
================================================
FILE: src/pages/FlowRun/Actions.vue
================================================
You don't have permission to restart flow runs
This flow run has been scheduled to start as soon as possible.
Flow run already scheduled to start.
Start this flow run immediately
You don't have permission to restart flow runs
You can only restart flow runs from a failed or cancelled state.
If you wish to run this flow run again, you can set it (and its task
runs) into a scheduled state.
Restart run from {{ flowRun.state }}
You don't have permission to delete flows
Coming Soon!
================================================
FILE: src/pages/FlowRun/Details-Tile.vue
================================================
Overview
Parameters
Context
Run Config
Created by
{{
flowRun.auto_scheduled
? 'The Prefect Scheduler'
: flowRun.created_by
? flowRun.created_by.username
: 'A nonexistant user'
}}
Last State Message
[{{ formatTime(flowRun.state_timestamp) }}]:
{{ flowRun.state_message }}
Agent ID
{{ flowRun.agent_id }}
{{ flowRun.flow.name }} version
{{ flowRun.flow.version }}
Scheduled Start Time
{{ formatTime(flowRun.scheduled_start_time) }}
{{ formatDateTime(flowRun.scheduled_start_time) }}
{{ flowRun.start_time ? 'Started' : 'Scheduled to start' }}
{{
flowRun.start_time
? formatTime(flowRun.start_time)
: formatTime(flowRun.scheduled_start_time)
}}
{{
flowRun.start_time
? formatDateTime(flowRun.start_time)
: formatDateTime(flowRun.scheduled_start_time)
}}
Ended
{{ formatTime(flowRun.end_time) }}
{{ formatDateTime(flowRun.end_time) }}
Duration
{{ formatJson(flowRunParams) }}
{{ formatJson(flowRun.context) }}
{{ formatJson(flowRun.run_config) }}
================================================
FILE: src/pages/FlowRun/FlowRun.vue
================================================
Sorry, we weren't able to find this run.
Overview
view_quilt
Schematic
pi-schematic
Logs
format_align_left
Artifacts
fas fa-fingerprint
================================================
FILE: src/pages/FlowRun/Restart-Dialog.vue
================================================
Restart?
Click on confirm to restart this flow run. Restarting will restart all
task runs in {{ reRunStates }} states and run any task runs in a Pending
state. Task runs that rely on upstream results may require additional
configuration to restart correctly. Read more about that
in the Results docs .
Fetching downstream tasks...
Confirm
Cancel
================================================
FILE: src/pages/FlowRun/Schematic-Tile.vue
================================================
Run State:
{{ flowRun.state }}
Duration:
================================================
FILE: src/pages/FlowRun/TaskRunHeartbeat-Tile.vue
================================================
label_important
================================================
FILE: src/pages/FlowRun/TaskRunTable-Tile.vue
================================================
{{ tableTitle }}
{{ item }}
(+{{ state.length - 2 }})
{{ item.name }}
{{ item.task.name
}}
(Mapped Child {{ item.map_index }})
(Parent)
{{ flowRun.name }} - {{ item.task.name }} -
{{ item.name }}
{{ flowRun.name }} - {{ item.task.name
}}
(Mapped Child {{ item.map_index }}) (Parent)
{{ formDate(item.start_time) }}
{{ formDate(item.end_time) }}
...
brightness_1
================================================
FILE: src/pages/FlowRun/Timeline-Tile.vue
================================================
pi-gantt Timeline
No timeline
================================================
FILE: src/pages/GettingStarted/ConnectAgent-Section.vue
================================================
The Prefect Agent is a small entity created to orchestrate flow runs. The
Agent works by querying the Prefect API for new or incomplete Flow Runs
and allocating resources based on the Flow's configured deployment
platform. You can read more about
Agents
in the docs.
Set backend
First, make sure Prefect is working against
{{ isCloud ? 'Prefect Cloud' : 'your Prefect Server' }}
Start an Agent
For your Flows to run, you'll need to start an Agent process. There are
many different types of Agents to choose from, each of which takes a
number of arguments and flags; you can read more about them in the
docs . For example, the following CLI command starts a Local Agent on your
local machine:
$
prefect
agent local
start
--name
"Default Agent"
--token
{{
token
}}
View polling Agents
refresh Refresh agents
check
{{ success }}
error
{{ error }}
Type
Name
Labels
{{ a.type ? agentIcon(a.type) : 'fas fa-robot' }}
{{ a.name }}
{{ label }}
No agents
================================================
FILE: src/pages/GettingStarted/CreateTenant-Section.vue
================================================
Tenants (or teams) are a unit Prefect Server uses to organize data such as
Projects and Flows. If you ran
prefect server start to spin up your infrastucture, a
default tenant was created for you automatically! If you ran the Prefect
services separately (such as in a Kubernetes deployment), you'll need to
create your own tenant using the steps below.
Set backend
First, make sure Prefect is working against
{{ isCloud ? 'Prefect Cloud' : 'your Prefect Server' }}
$
prefect
backend
{{ isCloud ? 'cloud' : 'server' }}
Run the CLI Command
$
prefect
server
create-tenant
--name
default
--slug
default
Select your Tenant
refresh Refresh tenants
check
{{ success }}
error
{{ error }}
Name
Slug
{{ t.name }}
{{ t.slug }}
{{ tenant && tenant.id == t.id ? 'Selected' : 'Select' }}
No tenants
================================================
FILE: src/pages/GettingStarted/GettingStarted.vue
================================================
Welcome to your Prefect UI!
Getting started with Prefect
{{ block.headline }}
{{ block.body }}
{{ block.linkText }}
Connecting your infrastructure
Prefect Server
Creating a tenant
Connecting an Agent
Getting the Prefect SDK
fas fa-align-left
View the documentation
fab fa-github
Visit GitHub
Get the Prefect Core package and start building!
Pip
Conda
Pipenv
$ pip
install
prefect
$ conda
install
-c conda-forge prefect
$ pipenv
install
--pre prefect
================================================
FILE: src/pages/GettingStarted/StartPrefectServer-Section.vue
================================================
Before you can begin to schedule work with
Prefect Server
, you'll need to start the orchestration infrastructure required to manage
your Flows. This includes a database, API, scheduler, and various other
criticial services. Alternatively, you can use Prefect Cloud and get
started right away (it's free!)
Start Prefect Server
Once you've installed the Prefect Python package, this simple CLI
command starts up the various containers that make up Prefect Server.
Note that you'll need to have
Docker
running.
This command has many options to customize your deployment - run it with
the -h flag to see the documentation!
Connect the UI
The GraphQL endpoint is one of the public URLs exposed by Prefect Server
that allows interaction with the API. By default it's exposed at
http://localhost:4200/graphql , but this can be modified. You
can directly modify this endpoint in the input box below:
Prefect Server GraphQL endpoint:
check
error
settings_backup_restore
Reset stored GraphQL endpoint
Connect
...or by setting apollo_url in
./prefect/config.toml on whatever machine you're running
Prefect Server:
[server]
[server.ui]
apollo_url="http://localhost:4200/graphql"
Note: The second method will change the default Apollo endpoint but can
still be overidden by the input box above.
Success! You've successfully connected to your Prefect Server.
Oops! It looks like something went wrong when trying to connect; make
sure Prefect Server is running at the URL above and try again.
Register an Agent
Next you'll want to connect an
Agent , which is responsible for executing your workflows.
================================================
FILE: src/pages/Integrations/PagerDuty.vue
================================================
$newPagerDuty
Save
Create an action to use with Prefect Automations and the Pager Duty
Events API v2 .
{{ item.id }}
{{ item.name }}
{{ item.action_type }}
No action config
Manage Actions
Create Automation
delete
Remove action
Add Action
add
================================================
FILE: src/pages/InteractiveAPI/InteractiveAPI.vue
================================================
================================================
FILE: src/pages/NotFoundPage.vue
================================================
Oh no!
This page seems to have gone missing.
Sorry for disrupting your flow .
arrow_back_ios
Back to dashboard
================================================
FILE: src/pages/Notifications/NotificationGroup.vue
================================================
{{ tenant.name }}
Select all {{ notificationsCount }} notifications
fiber_manual_record
{{ active(n.id) ? 'check_box' : 'check_box_outline_blank' }}
{{ n.content.icon ? n.content.icon : notificationIcon(n.type) }}
{{ formatDateTime(n.created) }}
================================================
FILE: src/pages/Notifications/NotificationTypes/Approval-Notification.vue
================================================
{{ task.flow.name }} has a
paused run that requires approval to resume.
{{ timestamp }}
{{ task.name }} is paused and
requires approval to resume.
{{ task.flow.name }}
================================================
FILE: src/pages/Notifications/NotificationTypes/FlowRun-Notification.vue
================================================
{{ content.event.flow.name }}:
{{ content.event.state }}
{{ timestamp }}
{{ content.event.flow.name }}
Entered a new state: {{ content.event.state }}
================================================
FILE: src/pages/Notifications/NotificationTypes/Membership-Notification.vue
================================================
You joined
{{ content.sender_tenant_name }}
!
An invitation to join
{{ content.sender_tenant_name }}
has expired or was declined.
You joined
{{ content.sender_tenant_name }}
!
An invitation to join
{{ content.sender_tenant_name }}
has expired or was declined.
{{ timestamp }}
================================================
FILE: src/pages/Notifications/NotificationTypes/Message-Notification.vue
================================================
{{ content.title }}
{{ timestamp }}
{{ content.title }}
{{ showDetails ? 'Hide' : 'Show' }} details
================================================
FILE: src/pages/Notifications/NotificationTypes/WhatsNew-Notification.vue
================================================
New
{{ content.title }}
open_in_new
{{ timestamp }}
{{ content.title }}
{{ content.title }}
open_in_new
{{ timestamp }}
Read {{ readMore ? 'less' : 'more' }}
================================================
FILE: src/pages/Notifications/Notifications.vue
================================================
Notifications
All
fiber_manual_record
Unread
fiber_manual_record
Read
fiber_manual_record
Mark as Read
fiber_manual_record
Mark as Unread
delete
Delete Selected
Filter
Your notifications
({{ getCount('user-notifications') }})
{{ team.name }}
({{ getCount(team.id) }})
You're all caught up!
================================================
FILE: src/pages/Notifications/utils.js
================================================
export const componentMap = {
CLOUD_HOOK: 'FlowRunNotification',
MEMBERSHIP_INVITATION: 'MembershipNotification',
REQUIRES_APPROVAL: 'ApprovalNotification',
MESSAGE: 'MessageNotification',
WHATS_NEW: 'WhatsNewNotification'
}
export const iconMap = {
CLOUD_HOOK: 'pi-flow-run',
MEMBERSHIP_INVITATION: 'group_add',
REQUIRES_APPROVAL: 'pause_circle_outline',
MESSAGE: 'chat',
WHATS_NEW: '🎉'
}
export const iconColorMap = {
CLOUD_HOOK: n => {
return n.content.event.state
},
MEMBERSHIP_INVITATION: () => 'primary',
WHATS_NEW: () => 'primary',
MESSAGE: () => 'primary',
REQUIRES_APPROVAL: () => 'accentOrange'
}
export const navigationMap = {
CLOUD_HOOK: (n, tenant) => {
return {
name: 'flow-run',
params: { id: n.content.event.id, tenant: tenant.slug },
query: { notification_id: n.id }
}
},
MEMBERSHIP_INVITATION: () => null,
WHATS_NEW: () => null,
MESSAGE: () => null,
REQUIRES_APPROVAL: (n, tenant) => {
return {
name: 'task-run',
params: { id: n.content.task_run.id, tenant: tenant.slug },
query: { notification_id: n.id }
}
}
}
================================================
FILE: src/pages/Onboard/AcceptInvitationPage.vue
================================================
{{ mutationErrorMessage || errorMessage }}
Back to the dashboard!
fas fa-rocket
You've been invited to join
{{ teamName }}
To accept, please click below.
fa-user-friends
Accept
No Thanks
Are you sure you want to decline?
Clicking Decline will
delete your invitation and take you back to the dashboard.
If you don't want to confirm or delete your invitation right
now, you can click on
Dashboard . You'll be
taken back to your team dashboard and be able to accept (or
decline) the invitation later.
Decline
Dashboard
Cancel
================================================
FILE: src/pages/Onboard/NameTeam.vue
================================================
Let's start by creating your team
fa-question-circle
Prefect automatically creates a sandbox development team for
you to use — this is a great place to test and deploy
flows as you explore Prefect. When you're ready to
collaborate with others, you can
upgrade this team
to invite more users or
contact us
to add another team. For more information about teams in
Prefect, check out our
docs .
Team Details
(You can always change this later)
Contact your team administrators to complete onboarding
Team Name
{{ tenant.name }}
check
clear
Team Slug
info
check
clear
How did you hear about us?
Your pending invitations:
{{ pt.tenant.name }}
fa-user-friends
Accept
No Thanks
Next
Skip
arrow_right
Sorry, something went wrong. Please try again.
Are you sure you want to decline the invitation to
{{ currentInvitation.tenant.name }}?
Clicking
Decline will delete your
invitation.
If you don't want to accept or decline your invitation right now,
you can click on
Cancel . You'll be able to
accept (or decline) the invitation later.
Decline
Cancel
================================================
FILE: src/pages/Onboard/Onboard-Page.vue
================================================
================================================
FILE: src/pages/Onboard/Resources.vue
================================================
Explore the Docs
Get API references, walkthroughs, and tutorials
Prefect Docs
To the dashboard!
fas fa-rocket
Join our Community
Chat with us, ask questions, and share tips
Join Slack
You're all set!
Join our Community
Chat with us, ask questions, and share tips
Join Slack
Explore the Docs
Get API references, walkthroughs, and tutorials
Prefect Docs
To the dashboard!
fas fa-rocket
================================================
FILE: src/pages/Onboard/Welcome.vue
================================================
================================================
FILE: src/pages/Plans.vue
================================================
Features
Select a plan to view features
{{ category.icon }}
{{ category.title }}
fas fa-circle fa-fw
fad fa-dot-circle fa-fw
fad fa-dot-circle fa-fw
fas fa-check fa-fw
{{ feature.name }}
{{ feature.description }}
Available only on
enterprise
plans
Available on
standard
plans and above
Available on
starter
plans and above
Available on all plans
fad fa-concierge-bell
Premium Support
A support plan built to help you quickly grow your workflows.
fad fa-badge-check
Faster, prioritized support responses
fad fa-badge-check
Dedicated support manager
fad fa-badge-check
Emergency support for critical issues
================================================
FILE: src/pages/Schematics/Schematics.vue
================================================
account_tree
Flow Schematics
timeline
{{ flow.name }}
{{ flow.id }}
================================================
FILE: src/pages/Schematics/View.vue
================================================
You have no flows 🤖
To learn how to deploy a flow, visit our
docs .
================================================
FILE: src/pages/Support.vue
================================================
How can we help?
Let us know how our team can improve your experience. We're
up to the task!
Submit
Oh no! It looks like we didn't quite get your message.
Please try again, or feel free to send us an email at
help@prefect.io!
We got your message!
Don't panic! We'll be in touch as soon as possible.
While you wait, you can
You rock! We'll get our team on it immediately.
By the way, you can
Thanks for letting us know! We're always looking to
improve.
If you haven't already,
Thanks! We'll look into your message as soon as possible.
If you haven't already,
join our Slack
to ask questions, provide feedback, or just to chat! You can
also check out our
docs ,
which are filled with lots of helpful tutorials,
explanations, and useful information.
Explore the Docs
Endless possibilities with Prefect automation
Prefect Docs
Join our Slack
Chat with us, ask questions, and share tips
Join Slack
Read the Blog
Find our updates, tutorials, and announcements
Read our blog
================================================
FILE: src/pages/Task/Dependencies-Tile.vue
================================================
================================================
FILE: src/pages/Task/Details-Tile.vue
================================================
Flow
{{ task.flow.name }}
Version {{ task.flow.version }}
Description
{{ task.description }}
Created
{{ formatTime(task.created) }}
Class
{{ task.type | typeClass }}
Trigger
{{ task.trigger | typeClass }}
Max Retries
{{ task.max_retries }}
Retry Delay
{{ task.retry_delay }}
Parameter:
================================================
FILE: src/pages/Task/Task.vue
================================================
{{ task.name }}
Overview
view_module
Runs
pi-task-run
================================================
FILE: src/pages/Task/TaskRunHeartbeat-Tile.vue
================================================
label_important
================================================
FILE: src/pages/Task/TaskRunTable-Tile.vue
================================================
history
Filter by when runs were last updated
{{ item.flow_run.name }}
{{ item.flow_run.name }} - {{ task.name }}
(Mapped Child {{ item.map_index }})
{{ formDate(item.start_time) }}
{{ formDate(item.end_time) }}
...
brightness_1
================================================
FILE: src/pages/TaskRun/Actions.vue
================================================
You don't have permission to restart flow runs
Restart flow run from this task
================================================
FILE: src/pages/TaskRun/Dependencies-Tile.vue
================================================
================================================
FILE: src/pages/TaskRun/Details-Tile.vue
================================================
pi-flow-run
Flow Run
{{ taskRun.flow_run.name }}
{{ taskRun.flow_run.state }}
Last State Message
[{{ formDate(taskRun.state_timestamp) }}]:
{{ formatTime(taskRun.state_timestamp) }}
{{ taskRun.state_message }}
Expected Mapped Runs
{{ expectedRuns }}
This data is only available on Flows registered with Prefect
Core 0.13.5+
The number of mapped children expected to run. Note that the
number of active mapped runs may be less than this if some
have not begun running yet.
Started
{{
formDate(
taskRun.start_time || taskRun.scheduled_start_time
)
}}
{{
formatTime(
taskRun.start_time || taskRun.scheduled_start_time
)
}}
Ended
{{ formDate(taskRun.end_time) }}
{{ formatTime(taskRun.end_time) }}
Duration
Updated
{{ formDate(taskRun.updated) }}
{{ formatTime(taskRun.updated) }}
Result Type
{{ taskRun.serialized_state._result.type | typeClass }}
Result Location
{{
copiedText[taskRun.serialized_state._result.location]
? 'check'
: 'file_copy'
}}
{{ taskRun.serialized_state._result.location || 'None' }}
{{ taskRun.serialized_state._result.location || 'None' }}
Parameter:
{{ filteredParams }}
================================================
FILE: src/pages/TaskRun/MappedTaskRuns-Tile.vue
================================================
{{ item.name || taskRun.task.name }}
{{ item.name }}
({{ taskRun.task.name }} Child
{{ item.map_index.toLocaleString() }})
{{ taskRun.task.name }} Child
{{ item.map_index.toLocaleString() }}
{{ taskRun.task.name }} Parent
{{
item.map_index === -1 ? 'Parent' : item.map_index.toLocaleString()
}}
{{ formDate(item.start_time) }}
{{ formatTime(item.start_time) }}
...
{{ formDate(item.end_time) }}
{{ formatTime(item.end_time) }}
...
...
brightness_1
{{ item.state }}
================================================
FILE: src/pages/TaskRun/Restart-Dialog.vue
================================================
Restart from failed?
Warning: This flow has upstream dependencies which have not been cached.
If you restart the flow-run from here, it is unlikely to succeed.
For extra information, check out
Persistence and Caching
in our docs.
To restart the flow run {{ taskRun.flow_run.name }} from this task run
anyway, click on confirm.
Click on confirm to restart the flow run
{{ taskRun.flow_run.name }} from this task run. This will restart your
flow run and {{ runOrReRunMessage() }}.
Confirm
Cancel
================================================
FILE: src/pages/TaskRun/TaskRun.vue
================================================
Overview
view_module
Logs
format_align_left
Artifacts
fas fa-fingerprint
Mapped Runs
device_hub
================================================
FILE: src/pages/TaskRun/TaskRunHeartbeat-Tile.vue
================================================
label_important
Show More
================================================
FILE: src/pages/TeamSettings/Actions.vue
================================================
Automation Actions
View and manage your team's
automation actions
View the
Automation Actions
of {{ tenant.name }}
{{ item.id }}
{{
copiedActionId === item.id ? 'Copied!' : 'Click to copy ID'
}}
{{ item.name }}
{{ item.action_type }}
No action config
bug_report
delete
================================================
FILE: src/pages/TeamSettings/CloudHooks.vue
================================================
Cloud Hooks
View your team's
Cloud Hooks
View and manage your team's
Cloud Hooks
cloud New Cloud Hook
You don't have permission to create new Cloud Hooks.
Create a new Cloud Hook
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
text-
{{ header.text }}
Loading...
An error occurred
{{ data.flow[0].name }}
No flow :(
No flow :(
{{ typeIcon(item.type) }}
{{ typeTitle(item.type) }}
{{ item.active ? 'On' : 'Off' }}
You don't have permission to change Cloud Hook states.
{{ item.active ? 'Deactivate' : 'Activate' }}
this Cloud Hook.
{{ stateGroup(item.states) }}
{{ formatStates(item.states) }}
bug_report
Test this Cloud Hook (will send a test call to your endpoint)
edit
Modify this cloud hook
delete
Delete this cloud hook
================================================
FILE: src/pages/TeamSettings/CreateRoleTable.vue
================================================
Default Roles can not be modified.
Cancel
{{ template ? 'Update' : 'Create' }} Role
Edit
{{ groupName(index) }}
All
Create
Read
Update
Delete
{{ item.name }}
================================================
FILE: src/pages/TeamSettings/FlowConcurrency.vue
================================================
Flow Concurrency
Impose concurrency limits on the number of flows that are running at any
given time
add
Add Label
Your plan doesn't include flow concurrency limiting.
Upgrade to get access to
flow concurrency and lots of other cool features!
Only team administrators can manage flow concurrency limits.
{{ header.text }}
{{ header.text }}
info
Number of flows that are running with the given label
{{ header.text }}
info
Maximum number of flows that can simultaneously run with the
given label
{{ item.name }}
{{ item.usage }} running
{{ item.usage === 1 ? 'flow' : 'flows' }} ({{
item.limit === 0
? 0
: Math.ceil((item.usage / item.limit) * 100)
}}%)
{{ item.limit }}
info
A concurrency limit of 0 means that flows with this label will
never run.
{{ item.limit }}
edit
Edit the limit for this label
delete
Remove concurrency limits for flows with this label
================================================
FILE: src/pages/TeamSettings/FlowGroups.vue
================================================
Flow Groups
View and manage your team's flows by
version group
View the
flow groups
of {{ tenant.name }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ item.version_group_id }}
{{ item.version_group_id.substring(0, 3) }}...
{{
copiedFvgId === item.version_group_id
? 'Copied!'
: 'Click to copy ID'
}}
{{ item.name }}
{{ item.name }}
-
pi-flow
archive
This version group has an active flow
All flows in this version group are archived
delete
This will delete all versions of
your flow and cannot be undone.
================================================
FILE: src/pages/TeamSettings/KV.vue
================================================
KV Store
Manage your team's key/value store
add
Add KV
You don't have permission to manage kv.
Your team's license does not include this feature. Please contact
help@prefect.io for more information.
Save
{{ formatTime(item.created) }}
{{ formatTime(item.updated) }}
edit
Modify key
delete
Delete key
content_copy
Copy value
{{ kv ? kv.length : 0 }} out of {{ maxKVCount }} keys used
This action cannot be undone.
================================================
FILE: src/pages/TeamSettings/Members/Invitations-Table.vue
================================================
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ formatDateTime(item.created) }}
{{ roleMap[item.role] || item.role }}
delete
Revoke invitation
The user will no longer be able to accept this invitation and will need to
be reinvited to join the team.
================================================
FILE: src/pages/TeamSettings/Members/Members-Table.vue
================================================
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ roleMap[item.role] || item.role }}
edit
Modify this user's role
delete
Remove user
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
Are you sure you want to remove yourself from {{ tenant.name }}? You'll
no longer be able to access your run data associated with
{{ tenant.name }}.
{{ selectedUser.username }}
will no longer be able to access your team account.
================================================
FILE: src/pages/TeamSettings/Members.vue
================================================
Team Members
View your team's members, manage permissions, and send invitations
View the other members of {{ tenant.name }}
person_add
Invite
Your team has no users available;
upgrade your plan to get
more users and access to more features!
Your team has no users available. Contact sales@prefect.io to add
more.
people
Users
mail
Invitations
people
Users
mail
Invitations
Your team has no users available;
upgrade your plan to get
more users and access to more features!
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
Looking for role-based access controls? This feature is available on
Standard plans; check out our
pricing page
for more details.
Looking for custom role-based access controls? This feature is only
available on Enterprise plans; check out our
pricing page
for more details.
================================================
FILE: src/pages/TeamSettings/PlanComparison.vue
================================================
Prefect Plans
Contact Us
All plans come with:
Additionally, this plan includes:
Infrastructure
Observability
Orchestration
Authorization
Contact Us
================================================
FILE: src/pages/TeamSettings/Projects.vue
================================================
Projects
View and manage your team's
projects
View the
projects
of {{ tenant.name }}
view_carousel
Add Project
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ item.id }}
{{
copiedProjectId === item.id ? 'Copied!' : 'Click to copy ID'
}}
{{ item.name }}
{{ item.name }}
-
{{ formDate(item.created) }}
{{ formatDateTime(item.created) }}
-
{{ item.description }}
{{ item.description }}
-
edit
Modify this project
delete
Delete this project
check
clear
check
clear
{{ displayFlowCountMessage }}. If you would like to preserve these
flows, you can move them into a new project now.
Select CONFIRM to delete this project and move its flows to
{{ moveToProjectInput.name }} .
If you choose to leave the "New project" field blank,
you will delete this project and all of its flows. This action
cannot be undone.
This project has no flows and can be safely deleted.
================================================
FILE: src/pages/TeamSettings/Roles.vue
================================================
You do not have permission to access roles.
Default Roles
{{ name }}
{{ formatName(item.name) }}
Custom Roles
add
clear
{{ item.name }}
Delete
close
delete
{{
roleInUse(item) ? 'Role in use' : 'Delete role'
}}
================================================
FILE: src/pages/TeamSettings/Secrets.vue
================================================
Secrets
Manage the
secrets
open_in_new
required by your team's flow executions
add
Add Secret
You don't have permission to manage secrets.
{{ header.text }}
edit
Modify secret
delete
Delete secret
Add a secret that will allow your team to access sensitive data during
flow executions.
This action cannot be undone.
================================================
FILE: src/pages/TeamSettings/Service-Accounts-Table.vue
================================================
{{ header.text }}
{{ item.firstName }}'s Keys
{{ item.firstName }} currently has no keys.
{{ key.name }}
Created {{ key.created_at ? formDate(key.created_at) : '' }}
by {{ key.created_by }}
{{
!key.expires
? 'Never Expires'
: formatTimeRelative(key.expires).includes('ago')
? `Expired ${formatTimeRelative(key.expires)}`
: `Expires ${formatTimeRelative(key.expires)}`
}}
delete
Remove API key
{{ roleMap[item.role] || item.role }}
add
Create API Key
edit
Change Service Account role
delete
Remove account
Copy this key and put it in a secure place.
You won't be able to see this key again once you close this dialog.
Once you delete this API key, you will not be able to use it again to
interact with the Prefect Cloud API.
{{ selectedUser.firstName }}
and all of their API keys will be deleted.
================================================
FILE: src/pages/TeamSettings/Service-Accounts.vue
================================================
Service Accounts
Manage service accounts and their API keys
You don't have permission to manage Service Accounts
person_add
Add Service Account
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
{{ roleMap[item.name] ? roleMap[item.name] : item.name }}
================================================
FILE: src/pages/TeamSettings/TaskConcurrency.vue
================================================
Task Concurrency
Impose
concurrency limits
on the number of tasks that are running at any given time
add
Add Tag
Your plan doesn't include task concurrency limiting.
Upgrade to get access to
task concurrency and lots of other cool features!
Only team administrators can manage task concurrency limits.
{{ header.text }}
{{ header.text }}
info
Number of tasks that are running with the given tag
{{ header.text }}
info
Maximum number of tasks that can simultaneously run with the
given tag
{{ item.name }}
{{ item.usage }} running
{{ item.usage === 1 ? 'task' : 'tasks' }} ({{
item.limit === 0
? 0
: Math.ceil((item.usage / item.limit) * 100)
}}%)
{{ item.limit }}
info
A concurrency limit of 0 means that tasks with this tag will
never run.
{{ item.limit }}
edit
Edit the limit for this tag
delete
Remove concurrency limits for tasks with this tag
================================================
FILE: src/pages/TeamSettings/TeamSettings.vue
================================================
settings
Team
sync_alt
API Tokens
Automation Actions
cloud_queue
Cloud Hooks
pi-flow-run
Flow Concurrency
pi-flow
Flow Groups
KV Store
people
Members
pi-project
Projects
face
Roles
Custom Roles are only
available on Enterprise plans.
vpn_key
Secrets
engineering
Service Accounts
pi-task-run
Task Concurrency
Delete Team
remove_circle
Delete
{{ tenant.name }}
?
This will remove all of your team's flows, tasks, schematics, runs,
and logs.
This can't be undone.
To confirm, type your team's name below:
{{ deleteTeamError }}
Cancel
Delete
================================================
FILE: src/pages/TeamSettings/Tokens.vue
================================================
API Tokens
error_outline DEPRECATED
Service Accounts
are replacing API tokens
Existing tokens will continue to work, but new ones cannot be created.
Manage
RUNNER
open_in_new
and
TENANT
open_in_new
tokens.
Manage and create your
TENANT
open_in_new
tokens.
You don't have permission to manage API tokens.
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ item.created ? formDate(item.created) : '' }}
{{ item.created ? formatTime(item.created) : '' }}
{{ item.last_used ? formDate(item.last_used) : '' }}
{{ item.last_used ? formatTime(item.last_used) : '' }}
{{ item.expires_at ? formatTimeRelative(item.expires_at) : '' }}
delete
Revoke token
Once you delete this token, you will not be able to use it again to
interact with the Prefect Cloud API.
================================================
FILE: src/pages/TeamSwitched.vue
================================================
Team switched
It looks like you switched your team in a different tab. If you believe
this is an error, contact us at help@prefect.io
arrow_back_ios
Back to the dashboard
================================================
FILE: src/pages/Tutorials/FlowRun/CreatePersonalAccessTokenStep.vue
================================================
Excellent! You just generated a Personal Access token.
Let's log in to Prefect Cloud using the Prefect Command Line Interface
(CLI). The following command will authenticate you as a Prefect Cloud
user from the CLI and store your token to your local disk:
{{ loginCommand }}
{{ loginCopied ? 'Copied!' : 'Copy' }}
When you see the words "Login successful!" in your command line, then
feel free to move on to the next step.
You can find and manage your personal access tokens on the
User > Personal Access Tokens page .
Now let's log in to Prefect Cloud from the command line. Before we do
this, we'll need to generate a Personal Access token.
Personal Access (or USER) tokens are used to represent a
single user and to grant access to any teams or projects the user has
access to. You can create new tokens and manage existing tokens on the
Personal Access Tokens page
of the UI.
You can also create a new token here:
Create
Continue
{{ errorMessage }}
Dismiss
================================================
FILE: src/pages/Tutorials/FlowRun/CreateProjectStep.vue
================================================
Projects are used to organize flows that have been deployed to Prefect
Cloud.
Every time you deploy a flow, you will need to specify a project to
deploy into. There are no limits on the number of projects you can
have, and you can always delete projects later. You can read more
about interacting with projects
here .
Submit
Next
================================================
FILE: src/pages/Tutorials/FlowRun/DeployFlowStep.vue
================================================
Now that you've successfully created a project, it's time to deploy a
flow! We've got a demo flow ready to go, which is stored in a Docker image
on our public Dockerhub repository. The code for this demo flow is shown
here:
import prefect
from prefect import task, Flow
from prefect.environments.storage import Docker
@task(name="Welcome", slug="welcome-task")
def welcome_logger():
logger = prefect.context["logger"]
with open("/ascii-welcome.txt", "r") as f:
lines = "\n\n" + "".join(f.readlines()) + "\n\n"
logger.info(lines)
storage = Docker(
registry_url="prefecthq",
image_name="flows",
image_tag="welcome-flow",
files={"welcome.txt": "/ascii-welcome.txt"},
)
f = Flow("Welcome Flow", tasks=[welcome_logger], storage=storage)
When you click the "Deploy Flow" button, we will copy the metadata
associated with this flow into your newly created project. The code itself
remains stored only in the Docker container storing this flow.
Excellent! We've added the demo flow to your project. Next, it's time to
get an agent running!
Deploy Flow
================================================
FILE: src/pages/Tutorials/FlowRun/FlowRunTutorial.vue
================================================
Running a Flow
This tutorial guides you through the process of creating a project,
authenticating with Prefect Cloud, and running a flow through a
Docker agent.
For more details, please see our
documentation.
You don't have the required permissions to complete this tutorial.
Select a project
Deploy your flow
Set up your local environment
Next, we need to make sure you have a working Python 3.6+ environment
with the latest version of Prefect installed. You can install the latest
version of Prefect from the command line using the package manager of
your choice, such as
pip or conda:
pip install prefect -U
conda install prefect -c conda-forge
Prefect Cloud also requires Docker to build and execute flows.
Install Docker, Docker for Windows, or Docker for Mac
here .
Once you install Docker, make sure your local Docker daemon is running.
Continue
Log into Prefect Cloud from the CLI
Run a Docker agent locally
Run the flow
================================================
FILE: src/pages/Tutorials/FlowRun/RunAFlowStep.vue
================================================
It's now time to run the demo flow using our locally-deployed agent!
When you hit the "Run Demo Flow" button below, a new Flow Run will be
created and placed in a "Scheduled" state. The agent you started will see
this scheduled work and submit it for execution on your local machine via
Docker. Note that your flow run will remain in a Submitted state as your
Agent pulls the Docker image, which can take a moment depending on your
connection.
Run Demo Flow
Success! You've started your flow run; observe below as the run starts.
Here are some
common tips
open_in_new
for debugging your flows (just in case this one doesn't succeed).
Flow Run Name
State
Start Time
End Time
{{ flowRun.name }}
brightness_1
{{ flowRun.state }}
{{ formatDateTime(flowRun.start_time) }}
{{ formatDateTime(flowRun.end_time) }}
================================================
FILE: src/pages/Tutorials/FlowRun/RunLocalAgentStep.vue
================================================
Excellent! Now that we've created our token, let's start a Prefect
Agent. This agent will immediately begin looking for scheduled work from
Prefect Cloud. Start your agent with the following command:
{{ agentCommand }}
{{ agentCommandCopied ? 'Copied!' : 'Copy' }}
If you see the error message "docker is not a valid agent", you are
probably running an older version of Prefect Core. You can either
upgrade your package or alter the above command to
prefect agent start -t TOKEN
Our next goal is to get a
Docker agent
up and running. Agents are responsible for communicating with Prefect
Cloud and submitting your Flows for execution. Your agents will also need
tokens (called
RUNNER tokens) for authenticating with Prefect
Cloud, and as before there is no limit to the number of tokens you can
create. Agent tokens can be managed on the Team > API Tokens page of the
UI.
Generate Agent Token
Continue
================================================
FILE: src/pages/Tutorials/Markdown/Universal-Deploy.md
================================================
# Universal Deploy
This tutorial guides you through writing a simple flow and deploying it using [Universal Deploy](https://docs.prefect.io/core/PINs/PIN-13-Universal-Deploy.html#pin-13-universal-cloud-deploys), which allows you to register a flow with Prefect Cloud and run it without configuring external storage.
# Set up your local environment
First, let's make sure that your local environment is set up to run Prefect.
Make sure you have a working `Python 3.6+` environment with the latest version of Prefect installed. If Prefect is not installed, you can install the latest version from the command line using the package manager of your choice, such as `pip` or `conda`:
```python
pip install prefect -U
conda install prefect -c conda-forge
```
# Run a Flow Using Prefect Core
```python
import prefect
from prefect import task, Flow
@task
def hello_task():
logger = prefect.context.get("logger")
logger.info("Hello world!")
flow = Flow("hello-flow", tasks=[hello_task])
flow.run()
```
Paste the code above into an interactive Python REPL session. You should see the following logs after running `flow.run()` :
```
[2020-01-08 23:49:00,239] INFO - prefect.FlowRunner | Beginning Flow run for 'hello-flow'
[2020-01-08 23:49:00,242] INFO - prefect.FlowRunner | Starting flow run.
[2020-01-08 23:49:00,249] INFO - prefect.TaskRunner | Task 'hello_task': Starting task run...
[2020-01-08 23:49:00,249] INFO - prefect.Task: hello_task | Hello world!
[2020-01-08 23:49:00,251] INFO - prefect.TaskRunner | Task 'hello_task': finished task run for task with final state: 'Success'
[2020-01-08 23:49:00,252] INFO - prefect.FlowRunner | Flow run SUCCESS: all reference tasks succeeded
```
If you're running into issues, check that your Python environment is properly set up to run Prefect. Refer to the [Prefect Core Installation](https://docs.prefect.io/core/getting_started/installation.html) documentation for further details.
# Authenticating with Prefect Cloud
To authenticate, you'll need to create an [API Key](/user/keys) and save it.
- In the user menu in the top right corner go to **Account Settings -> API Keys -> Create An API Key**.
- Copy the created key
- Login with the Prefect CLI:
```bash
prefect auth login --key
```
# Creating a project
Projects are used to organize flows that have been deployed to Prefect Cloud.
Every time you deploy a flow, you will need to specify a project to deploy into. There are no limits on the number of projects you can have, and you can always delete projects later. You can read more about interacting with projects [here](https://docs.prefect.io/cloud/concepts/projects.html).
You can create a project using the CLI:
```bash
prefect create project tester
```
You can also create a project using the project selector on the dashboard page of the UI or using the API.
# Deploy your flow with Universal Deploy
We're almost there! With a very slight modification to our flow code, we will be able to register our flow with Prefect Cloud and get a local agent running:
```python
import prefect
from prefect import task, Flow
@task
def hello_task():
logger = prefect.context.get("logger")
logger.info("Hello world!")
flow = Flow("hello-flow", tasks=[hello_task])
flow.register(project_name="tester")
```
And that's it! Your flow is now registered with Prefect Cloud.
# Start your agent
Start your agent using the CLI:
```bash
prefect agent local start
```
# Run Your Flow In Prefect Cloud
To run your flow in Prefect Cloud, navigate to it from the `Flows` tab of the Dashboard and use the `Quick Run` button at the top of the page. This will run your flow with no additional settings.
You can use the `Run` tab on your flow page to pass parameters or context to your flow or to schedule a run for some point in the future. You can update default parameters and add or modify schedules by selecting the `Settings` tab on the flow page.
**Universal Deploy and Labels**
You may have noticed that both your registered flow and your local agent have labels associated with them. Specifically, your may have noticed that your flow had a single label set to the hostname of your local machine (e.g. "Janes-MacBook.local") and your agent had many labels, one of which was also the hostname of your machine.
This hostname label ensures that only local agents started on this machine can execute your registered flow. Without labels, your flow might get picked up by other agents running in your infrastructure, or your locally running agent would attempt to execute other flows - potentially even flows that it can't access!
Labels are a powerful feature of Prefect Cloud, providing fine control over exactly what flows your agents can execute. Keep an eye out for an upcoming tutorial that will cover running a flow with custom labels.
================================================
FILE: src/pages/Tutorials/Tutorials.vue
================================================
school
Tutorials
{{
sentenceCasing(item.name.replace(/-/g, ' '))
}}
{{
sentenceCasing(child.name.substring(1).replace(/-/g, ' '))
}}
================================================
FILE: src/pages/UserSettings/APIKeys.vue
================================================
API Keys
API keys are used to represent a single user, and are typically used by
Prefect Cloud clients (such as the Prefect Cloud CLI) to perform actions
within Prefect.
add
Create an API key
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ item.name }}
{{ item.created_at ? formDate(item.created_at) : '' }}
{{ item.created_at ? formatTime(item.created_at) : '' }}
{{ item.expires ? formatTimeRelative(item.expires) : 'Never' }}
delete
Revoke API key
Copy this key and put it in a secure place.
You won't be able to see this key again once you close this dialog.
Once you delete this key, you will not be able to use it again to interact
with the Prefect Cloud API.
================================================
FILE: src/pages/UserSettings/Profile.vue
================================================
Your Profile
Control how your actions are displayed and how timestamps appear in
Prefect Cloud
Save
================================================
FILE: src/pages/UserSettings/Teams.vue
================================================
Your Teams
View and manage your team memberships
{{ header.text.toUpperCase() }}
{{ header.text.toUpperCase() }}
{{ header.text.toUpperCase() }}
swap_horiz Switch to this team
close Leave this team
You'll no longer be able to access your run data associated with
{{ removeTenant.name }}.
This is the last team you are part of. If you remove it you will
not be able to log back in to Prefect Cloud.
To confirm, type
your tenant URL slug
below:
================================================
FILE: src/pages/UserSettings/Tokens.vue
================================================
Personal Access Tokens
error_outline DEPRECATED
Use the
API Keys
page going forward.
Existing tokens will continue to work, but new ones cannot be created.
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ header.text }}
{{ item.name }}
{{ item.created ? formDate(item.created) : '' }}
{{ item.created ? formatTime(item.created) : '' }}
{{ item.last_used ? formDate(item.last_used) : '' }}
{{ item.last_used ? formatTime(item.last_used) : '' }}
{{
item.expires_at ? formatTimeRelative(item.expires_at) : 'Never'
}}
delete
Revoke token
Once you delete this token, you will not be able to use it again to
interact with the Prefect Cloud API.
================================================
FILE: src/pages/UserSettings/UserSettings.vue
================================================
settings
User
person
Profile
vpn_key
API Keys
sync_alt
Personal Access Tokens
people
Your Teams
================================================
FILE: src/plugins/logrocket.js
================================================
import LogRocket from 'logrocket'
const blockedResponses = [
'CreateAPIToken',
'APITokens',
'CreateRunnerToken',
'CreateAPIKey'
]
const blockedRequests = ['SetSecret']
const initializeLogrocket = () => {
if (
process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID &&
process.env.VUE_APP_BACKEND === 'CLOUD'
) {
LogRocket.init(process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID, {
release: process.env.VUE_APP_RELEASE_TIMESTAMP,
dom: {
inputSanitizer: true
},
network: {
// Requests in the blockedRequests list
// will be sanitized from analytics
requestSanitizer: request => {
if (request.headers['authorization']) {
request.headers['authorization'] = ''
}
if (!request.body) return request
try {
let res = JSON.parse(request.body)
if (!res || !res.operationName) return request
blockedRequests.forEach(term => {
if (res.operationName == term) {
request.body = null
}
})
} catch (e) {
request.body = null
}
return request
},
// Responses in the blockedResponses list
// will be sanitized from analytics
responseSanitizer: response => {
if (!response.body) return response
try {
let res = JSON.parse(response.body)
if (!res || !res.data) return response
blockedResponses.forEach(term => {
if (res.data[term]) {
response.body = null
}
})
} catch (e) {
response.body = null
}
return response
}
}
})
LogRocket.identify('Initialized no user')
}
}
try {
initializeLogrocket()
} catch (e) {
// eslint-disable-next-line no-console
console.error('Failed to initialize LogRocket: ', e)
}
================================================
FILE: src/plugins/okta.js
================================================
import Vue from 'vue'
// import { OktaAuth } from '@okta/okta-auth-js'
import OktaVue from '@okta/okta-vue'
const { VUE_APP_PUBLIC_CLIENT_ID, VUE_APP_PUBLIC_ISSUER } = process.env
// const config = new OktaAuth({
// clientId: VUE_APP_PUBLIC_CLIENT_ID,
// issuer: VUE_APP_PUBLIC_ISSUER,
// redirectUri: 'http://localhost:8080/login',
// scopes: ['openid', 'profile', 'email'],
// pkce: true,
// testing: {
// disableHttpsCheck: true
// }
// })
const config = {
clientId: VUE_APP_PUBLIC_CLIENT_ID,
issuer: VUE_APP_PUBLIC_ISSUER,
redirectUri: 'http://localhost:8080/login',
scopes: ['openid', 'profile', 'email'],
pkce: true,
testing: {
disableHttpsCheck: true
}
}
Vue.use(OktaVue, { ...config })
export default config
================================================
FILE: src/plugins/vuetify.js
================================================
import { STATE_COLORS } from '@/utils/states'
import Vue from 'vue'
import Vuetify from 'vuetify/lib'
// Custom icons
import mrIcon from '@/components/Icons/mr.vue'
import NomadIcon from '@/components/Icons/Nomad.vue'
import PrefectIcon from '@/components/Icons/Prefect.vue'
import TwilioIcon from '@/components/Icons/twilio.vue'
import PagerDutyIcon from '@/components/Icons/PagerDuty.vue'
import newPagerDutyIcon from '@/components/Icons/newPagerDuty.vue'
import Hashicorp from '@/components/Icons/Hashicorp.vue'
export const THEME_COLORS = {
prefect: '#27b1ff', // prefect blue
primary: '#3b8dff', // primary blue
primaryDark: '#2580FF',
primaryLight: '#e0f4ff',
secondaryGray: '#465968',
secondaryGrayDark: '#1d252b',
secondaryGrayLight: '#edf0f3',
accentPink: '#fe5196',
accentCyan: '#2edaff',
accentGreen: '#07e798',
accentOrange: '#f77062',
codePink: '#da2072',
codeBlue: '#0073df',
codeBlueBright: '#004bff',
cloudUIPrimaryBlue: '#007acc',
cloudUIPrimaryDark: '#003d66',
cloudUIPrimaryLight: '#e0f3ff',
secondaryBlue: '#3b8dff',
tertiaryBlue: '#0076ff',
secondary: '#2F383F', // primary grey-light
accent: '#1b5da4', // accent blue
error: '#FF5252', // alerts error
info: '#2196F3', // vuetify default
success: '#4CAF50', // alerts success
warning: '#FFC107', // alerts warning
deepRed: '#B00000',
failRed: '#D50000',
appBackground: '#f9f9f9',
appForeground: '#fff',
navIcons: '#999',
utilGrayLight: '#ddd',
utilGrayMid: '#767676',
utilGrayDark: '#333'
}
export const THEME_COLORS_ALT = {
appBackground: '#2a2d37',
appForeground: '#393e4c',
prefect: '#003d66',
primary: '#1aa3ff',
utilGrayLight: '#585f74',
utilGrayMid: '#9ea4b6',
utilGrayDark: '#ecedf0'
}
Vue.use(Vuetify)
const CUSTOM_ICONS = {
mr: { component: mrIcon },
nomad: { component: NomadIcon },
prefect: { component: PrefectIcon },
twilio: { component: TwilioIcon },
pagerDuty: { component: PagerDutyIcon },
hashicorp: { component: Hashicorp },
newPagerDuty: { component: newPagerDutyIcon }
}
export default new Vuetify({
icons: {
iconfont: 'md',
values: CUSTOM_ICONS
},
theme: {
dark: localStorage.getItem('dark_mode') === 'true',
options: {
customProperties: true
},
themes: {
// We'll add Core and Cloud themes here
light: Object.assign({}, THEME_COLORS, STATE_COLORS),
dark: Object.assign({}, THEME_COLORS, THEME_COLORS_ALT, STATE_COLORS)
}
}
})
================================================
FILE: src/router.js
================================================
import Router from 'vue-router'
// Nav guards
import flowNavGuard from '@/middleware/flowNavGuard'
import multiguard from 'vue-router-multiguard'
import store from '@/store/index'
export const routes = [
{
name: 'not-found',
path: '/404',
component: () =>
import(/* webpackChunkName: "not-found" */ '@/pages/NotFoundPage.vue')
},
{
name: 'api',
path: '/:tenant?/api',
component: () =>
import(
/* webpackChunkName: "interactive-api" */ '@/pages/InteractiveAPI/InteractiveAPI.vue'
)
},
{
name: 'help',
path: '/help',
component: () =>
import(/* webpackChunkName: "support" */ '@/pages/Support.vue')
},
{
name: 'project',
path: '/:tenant?/project/:id',
component: () =>
import(
/* webpackChunkName: "project" */ '@/pages/Dashboard/Dashboard.vue'
)
},
{
name: 'flow',
path: '/:tenant?/flow/:id',
component: () =>
import(/* webpackChunkName: "flow" */ '@/pages/Flow/Flow.vue'),
beforeEnter: multiguard([flowNavGuard])
},
{
name: 'flow-run',
path: '/:tenant?/flow-run/:id',
component: () =>
import(/* webpackChunkName: "flow-run" */ '@/pages/FlowRun/FlowRun.vue')
},
{
name: 'task',
path: '/:tenant?/task/:id',
component: () =>
import(/* webpackChunkName: "task" */ '@/pages/Task/Task.vue')
},
{
name: 'task-run',
path: '/:tenant?/task-run/:id',
component: () =>
import(/* webpackChunkName: "task-run" */ '@/pages/TaskRun/TaskRun.vue')
},
// --------------------------- //
//
// Team settings
//
// --------------------------- //
{
name: 'team',
path: '/team',
component: () =>
import(
/* webpackChunkName: "team-settings" */ '@/pages/TeamSettings/TeamSettings.vue'
),
redirect: { name: 'members' },
children: [
{
name: 'projects',
path: 'projects',
component: () =>
import(
/* webpackChunkName: "team-settings--projects" */ '@/pages/TeamSettings/Projects.vue'
)
},
{
name: 'actions',
path: 'actions',
component: () =>
import(
/* webpackChunkName: "team-settings--actions" */ '@/pages/TeamSettings/Actions.vue'
)
},
{
name: 'flow-groups',
path: 'flow-groups',
component: () =>
import(
/* webpackChunkName: "team-settings--flow-groups" */ '@/pages/TeamSettings/FlowGroups.vue'
)
},
{
name: 'flow-concurrency',
path: 'flow-concurrency',
component: () =>
import(
/* webpackChunkName: "team-settings--flow-concurrency" */ '@/pages/TeamSettings/FlowConcurrency.vue'
)
},
{
name: 'task-concurrency',
path: 'task-concurrency',
component: () =>
import(
/* webpackChunkName: "team-settings--task-concurrency" */ '@/pages/TeamSettings/TaskConcurrency.vue'
)
},
{
name: 'members',
path: 'members',
component: () =>
import(
/* webpackChunkName: "team-settings--members" */ '@/pages/TeamSettings/Members.vue'
)
},
{
name: 'roles',
path: 'roles',
component: () =>
import(
/* webpackChunkName: "team-settings--members" */ '@/pages/TeamSettings/Roles.vue'
)
},
{
name: 'service-accounts',
path: 'service-accounts',
component: () =>
import(
/* webpackChunkName: "team-settings--service-accounts" */ '@/pages/TeamSettings/Service-Accounts.vue'
)
},
{
name: 'kv',
path: 'kv',
component: () =>
import(
/* webpackChunkName: "team-settings--kv" */ '@/pages/TeamSettings/KV.vue'
)
},
{
name: 'secrets',
path: 'secrets',
component: () =>
import(
/* webpackChunkName: "team-settings--secrets" */ '@/pages/TeamSettings/Secrets.vue'
)
},
{
name: 'cloud-hooks',
path: 'cloud-hooks',
component: () =>
import(
/* webpackChunkName: "team-settings--cloud-hooks" */ '@/pages/TeamSettings/CloudHooks.vue'
)
},
{
name: 'tokens',
path: 'tokens',
component: () =>
import(
/* webpackChunkName: "team-settings--tokens" */ '@/pages/TeamSettings/Tokens.vue'
)
}
]
},
// --------------------------- //
//
// User Settings
//
// --------------------------- //
{
name: 'user',
path: '/user',
component: () =>
import(
/* webpackChunkName: "user-settings" */ '@/pages/UserSettings/UserSettings.vue'
),
redirect: { name: 'profile' },
children: [
{
name: 'profile',
path: 'profile',
component: () =>
import(
/* webpackChunkName: "user-settings--profile" */ '@/pages/UserSettings/Profile.vue'
)
},
{
name: 'user-tokens',
path: 'tokens',
component: () =>
import(
/* webpackChunkName: "user-settings--tokens" */ '@/pages/UserSettings/Tokens.vue'
)
},
{
name: 'keys',
path: 'keys',
component: () =>
import(
/* webpackChunkName: "user-settings--keys" */ '@/pages/UserSettings/APIKeys.vue'
)
},
{
name: 'teams',
path: 'teams',
component: () =>
import(
/* webpackChunkName: "user-settings--teams" */ '@/pages/UserSettings/Teams.vue'
)
}
]
},
// ---------------------------//
//
// Calendar
//
// ----------------------------//
{
name: 'calendar',
path: '/:tenant?/calendar',
component: () =>
import(
/* webpackChunkName: "calendar" */ '@/pages/Calendar/Calendar-View'
)
},
// ---------------------------//
//
// Agents
//
// ----------------------------//
{
name: 'agents',
path: '/:tenant?/agent',
component: () =>
import(/*webpackChunkName: "agents" */ '@/pages/Agents/Agents')
},
{
name: 'agent',
path: '/:tenant?/agent/:id',
component: () =>
import(/* webpackChunkName: "agent" */ '@/pages/Agents/AgentPage.vue')
},
// ---------------------------//
//
// Integrations
//
// ----------------------------//
{
name: 'pagerduty',
path: '/:tenant?/pagerduty/:config?',
props: route => ({ pdData: route.query.config }),
beforeEnter(to, from, next) {
if (to?.query?.config) next()
else next('/')
},
component: () =>
import(
/* webpackChunkName: "pagerduty" */ '@/pages/Integrations/PagerDuty.vue'
)
},
// --------------------------- //
//
// Onboarding
//
// --------------------------- //
{
path: '/:tenant?/welcome',
component: () =>
import(
/* webpackChunkName: "onboard" */ '@/pages/Onboard/Onboard-Page.vue'
),
children: [
{
name: 'welcome',
path: '',
component: () =>
import(
/* webpackChunkName: "onboard--welcome" */ '@/pages/Onboard/Welcome.vue'
)
},
{
name: 'name-team',
path: 'name-team',
component: () =>
import(
/* webpackChunkName: "onboard--name-team" */ '@/pages/Onboard/NameTeam.vue'
)
},
{
name: 'onboard-resources',
path: 'resources',
component: () =>
import(
/* webpackChunkName: "onboard--resources" */ '@/pages/Onboard/Resources.vue'
)
},
{
name: 'accept',
path: 'accept',
component: () =>
import(
/* webpackChunkName: "accept" */ '@/pages/Onboard/AcceptInvitationPage.vue'
)
}
]
},
// --------------------------- //
//
// Plans
//
// --------------------------- //
{
name: 'plans',
path: '/plans',
component: () => import(/* webpackChunkName: "plans" */ '@/pages/Plans.vue')
},
// --------------------------- //
//
// Login
//
// --------------------------- //
{
name: 'login',
path: '/login',
redirect: { name: 'sign-in' },
component: () =>
import(/* webpackChunkName: "Auth" */ '@/pages/Auth/Auth.vue'),
children: [
{
name: 'sign-in',
path: '',
component: () =>
import(/* webpackChunkName: "login" */ '@/pages/Auth/SignIn.vue')
},
{
name: 'sign-up',
path: 'sign-up',
component: () =>
import(/* webpackChunkName: "sign-up" */ '@/pages/Auth/SignUp.vue')
},
{
name: 'forgot-password',
path: 'forgot-password',
component: () =>
import(
/* webpackChunkName: "forgot-password" */ '@/pages/Auth/ForgotPassword.vue'
)
}
]
},
{
name: 'logout',
path: '/logout',
component: () =>
import(/* webpackChunkName: "Auth" */ '@/pages/Auth/Logout.vue')
},
{
path: '/accept',
redirect: 'welcome/accept'
},
// --------------------------- //
//
// Tutorials
//
// --------------------------- //
{
name: 'tutorial',
path: '/tutorial/:id?',
component: () =>
import(
/* webpackChunkName: "tutorials" */ '@/pages/Tutorials/Tutorials.vue'
)
},
{
name: 'notifications',
path: '/notifications',
component: () =>
import(
/* webpackChunkName: "notifications" */ '@/pages/Notifications/Notifications.vue'
)
},
{
name: 'getting-started',
path: '/getting-started',
component: () =>
import(
/* webpackChunkName: "getting-started" */ '@/pages/GettingStarted/GettingStarted.vue'
)
},
{
name: 'admin',
path: '/admin',
redirect: { name: 'account' },
component: () =>
import(/* webpackChunkName: "admin" */ '@/pages/Admin/Admin.vue'),
children: [
{
name: 'account',
path: 'account',
component: () =>
import(
/* webpackChunkName: "admin--account" */ '@/pages/Admin/Account/Account.vue'
)
},
{
name: 'admin-teams',
path: 'teams',
component: () =>
import(
/* webpackChunkName: "admin--teams" */ '@/pages/Admin/Teams/Teams.vue'
),
redirect: { name: 'overview' },
children: [
{
name: 'overview',
path: '',
component: () =>
import(
/* webpackChunkName: "admin--teams-overview" */ '@/pages/Admin/Teams/TeamsOverview.vue'
)
},
{
name: 'new',
path: 'new',
component: () =>
import(
/* webpackChunkName: "admin--new-team" */ '@/pages/Admin/Teams/NewTeam.vue'
)
}
]
}
]
},
{
name: 'team-switched',
path: '/team-switched',
component: () =>
import(/* webpackChunkName: "team-switched" */ '@/pages/TeamSwitched.vue')
},
{
name: 'access-denied',
path: '/access-denied',
component: () =>
import(/* webpackChunkName: "access-denied" */ '@/pages/AccessDenied.vue')
},
{
name: 'dashboard',
alias: '/',
path: '/:tenant?',
component: () =>
import(
/* webpackChunkName: "dashboard" */ '@/pages/Dashboard/Dashboard.vue'
)
},
{
path: '*',
redirect: '404'
}
]
function getElementPosition(el) {
const docEl = document.documentElement
const docRect = docEl.getBoundingClientRect()
const elRect = el.getBoundingClientRect()
return {
x: elRect.left - docRect.left,
y: elRect.top - docRect.top
}
}
function scrollToHash(to) {
const targetElement = document.querySelector(to.hash)
if (targetElement) {
let elPos = getElementPosition(targetElement),
elRect = targetElement.getBoundingClientRect()
let position =
elRect.height > window.innerHeight
? elPos.y
: elPos.y - (window.innerHeight - elRect.height) / 2
return window.scrollTo({
top: position,
behavior: 'smooth'
})
}
}
export const createRouter = () => {
const router = new Router({
mode: 'history',
base: window.prefect_ui_settings?.base_url || '',
routes,
scrollBehavior(to) {
if (to.hash) {
scrollToHash(to)
}
}
})
router.beforeEach((to, from, next) => {
if (
'tenant' in to?.params &&
!to?.params?.tenant &&
store.getters['tenant/tenant']?.slug
) {
return next({
name: to.name,
replace: true,
params: { ...to.params, tenant: store.getters['tenant/tenant'].slug },
query: to.query
})
} else next()
})
return router
}
================================================
FILE: src/store/agent/index.js
================================================
import moment from '@/utils/moment'
//helper functions for sorting
const agentHealth = agent => {
if (agent.last_queried) {
const secondsSinceLastQuery = moment().diff(
moment(agent.last_queried),
'seconds'
)
agent.secondsSinceLastQuery = secondsSinceLastQuery
agent.status =
secondsSinceLastQuery < 60 * state.thresholds.stale
? 'healthy'
: secondsSinceLastQuery < 60 * state.thresholds.unhealthy
? 'stale'
: 'unhealthy'
} else {
agent.status = 'unhealthy'
}
return agent
}
const state = {
thresholds: {
// Time before an agent becomes stale
stale: 5, // minutes since last query
// Time before an agent becomes unhealthy
unhealthy: 720 // minutes since last query,
},
agents: null,
sortedAgents: null,
sorting: true,
flowRuns: null
}
const getters = {
staleThreshold(state) {
return state.thresholds.stale
},
unhealthyThreshold(state) {
return state.thresholds.unhealthy
},
agents(state) {
return state.agents
},
sortedAgents(state) {
return state.sortedAgents
},
agent: state => id => {
return state.agents?.filter(agent => agent.id === id)[0]
},
sortedAgent: state => id => {
return state.sortedAgents?.filter(agent => agent.id === id)[0]
},
sorting(state) {
return state.sorting
}
}
const mutations = {
setSortedAgents(state, agents) {
if (!agents) {
state.sortedAgents = null
state.agents = []
return
}
const healthyList = []
const staleList = []
const oldList = []
agents.forEach(agent => {
agentHealth(agent)
if (agent.status === 'healthy') {
healthyList.push(agent)
} else if (agent.status === 'stale') {
staleList.push(agent)
} else {
oldList.push(agent)
}
})
state.agents = agents
healthyList.sort((a, b) => a.id.localeCompare(b.id))
oldList.sort((a, b) => a.secondsSinceLastQuery - b.secondsSinceLastQuery)
const fullList = [...healthyList, ...staleList, ...oldList]
state.sortedAgents = fullList
state.sorting = false
}
}
export default {
getters,
mutations,
state,
namespaced: true
}
================================================
FILE: src/store/alert/index.js
================================================
import uniqueId from 'lodash/uniqueId'
const state = {
alert: {
alertShow: false,
alertMessage: '',
alertType: null,
alertLink: null,
linkText: '',
alertCopy: ''
},
notifications: [],
notificationTimeouts: {}
}
const getters = {
getAlert(state) {
return state.alert
},
notifications(state) {
return state.notifications
},
notificationTimeouts(state) {
return state.notificationTimeouts
}
}
const mutations = {
setAl(state, alert) {
state.alert = alert
},
setEmpty(state) {
state.alert = {
alertShow: false,
alertMessage: '',
alertType: null,
alertLink: null,
linkText: '',
alertCopy: ''
}
},
setNotifications(state, notifications = []) {
state.notifications = notifications
},
setNotificationTimeout(state, { id, timeoutId }) {
clearTimeout(state['notificationTimeouts'][id])
state.notificationTimeouts[id] = timeoutId
}
}
const actions = {
setAlert({ commit }, alert, timeout = 6000) {
commit('setAl', alert)
setTimeout(commit, timeout, 'setEmpty')
},
addNotification({ getters, commit, dispatch }, notification) {
const id = uniqueId('notification-')
const notifications = [...getters['notifications']]
notifications.push({ id: id, ...notification })
commit('setNotifications', notifications)
if (notification?.timeout) {
const timeoutId = setTimeout(() => {
dispatch('dismissNotification', { id })
}, notification.timeout)
commit('setNotificationTimeout', { id, timeoutId })
}
return id
},
dismissNotification({ getters, commit }, { id }) {
const notifications = [...getters['notifications']]
const index = notifications.findIndex(n => n.id == id)
if (index > -1) {
notifications.splice(index, 1)
commit('setNotifications', notifications)
}
},
updateNotification({ getters, commit, dispatch }, { id, notification }) {
const notifications = [...getters['notifications']]
const index = notifications.findIndex(n => n.id == id)
if (index > -1) {
notifications[index] = {
...notifications[index],
...notification
}
commit('setNotifications', notifications)
if (notification.timeout) {
const timeoutId = setTimeout(() => {
dispatch('dismissNotification', { id })
}, notification.timeout)
commit('setNotificationTimeout', { id: id, timeoutId })
}
}
}
}
export default {
getters,
mutations,
state,
actions,
namespaced: true
}
================================================
FILE: src/store/api/index.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
import LogRocket from 'logrocket'
const SERVER_KEY = `${process.env.VUE_APP_RELEASE_TIMESTAMP}_server_url`
const maxRetries = 3
const state = {
backend: process.env.VUE_APP_BACKEND || 'SERVER',
connected: true,
connectionMessage: null,
connectionTimeout: null,
coreVersion: null,
releaseTimestamp: null,
apiMode: null,
cloudUrl: process.env.VUE_APP_CLOUD_URL,
retries: 0,
serverUrl:
localStorage.getItem(SERVER_KEY) ||
window.prefect_ui_settings?.server_url ||
process.env.VUE_APP_SERVER_URL,
version: null
}
const getters = {
backend(state) {
return state.backend
},
apiMode(state) {
return state.apiMode
},
connected(state) {
return state.connected
},
connecting(state) {
return !state.connected && state.retries < maxRetries
},
connectionMessage(state) {
return state.connectionMessage
},
connectionTimeout(state) {
return state.connectionTimeout
},
isCloud(state) {
return state.backend === 'CLOUD'
},
isServer(state) {
return state.backend === 'SERVER'
},
releaseTimestamp(state) {
return state.releaseTimestamp
},
cloudUrl(state) {
return state.cloudUrl
},
retries(state) {
return state.retries
},
serverUrl(state) {
return state.serverUrl
},
url(state) {
switch (state.backend) {
case 'CLOUD':
return state.cloudUrl
case 'SERVER':
return state.serverUrl
default:
return null
}
},
version(state) {
return state.version
},
coreVersion(state) {
return state.coreVersion
}
}
const mutations = {
setBackend(state, backend) {
if (backend !== 'CLOUD' && backend !== 'SERVER') {
throw new Error('Invalid backend')
}
state.backend = backend
},
unsetBackend(state) {
state.backend = null
},
setConnected(state, connected) {
if (typeof connected !== 'boolean') {
throw new Error('Invalid connected state - connected should be a boolean')
}
state.connected = connected
},
setConnectionMessage(state, message) {
state.connectionMessage = message
},
unsetConnectionMessage(state) {
state.connectionMessage = null
},
setConnectionTimeout(state, timeout) {
state.connectionTimeout = timeout
},
unsetConnectionTimeout(state) {
clearTimeout(state.connectionTimeout)
state.connectionTimeout = null
},
setReleaseTimestamp(state, timestamp) {
state.releaseTimestamp = timestamp
},
setApiMode(state, apiMode) {
if (apiMode && apiMode !== 'normal' && apiMode !== 'maintenance') {
throw new Error('Unexpected api mode')
}
state.apiMode = apiMode
},
unsetReleaseTimetamp(state) {
state.releaseTimestamp = null
},
setRetries(state, retries) {
state.retries = retries
},
setServerUrl(state, url) {
state.serverUrl = url
localStorage.setItem(SERVER_KEY, url)
},
unsetServerUrl(state) {
state.serverUrl = null
localStorage.removeItem(SERVER_KEY)
},
setVersion(state, version) {
state.version = version
},
unsetVersion(state) {
state.version = null
},
setCoreVersion(state, version) {
state.coreVersion = version
},
unsetCoreVersion(state) {
state.coreVersion = null
}
}
const actions = {
async getApi({ commit, dispatch }) {
try {
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/api.gql'),
fetchPolicy: 'no-cache'
})
commit('setReleaseTimestamp', data.api.release_timestamp)
commit('setVersion', data.api.version)
commit('setCoreVersion', data.api.core_version)
commit('setConnected', true)
commit('setApiMode', data.api.mode)
} catch (error) {
commit('unsetReleaseTimetamp')
commit('unsetVersion')
commit('unsetCoreVersion')
commit('setConnected', false)
LogRocket.captureException(error, {
extra: {
pageName: 'API Store',
stage: 'getApi'
}
})
}
dispatch('monitorConnection')
},
async monitorConnection({ getters, commit }) {
commit('unsetConnectionTimeout')
const monitorConnection = async () => {
if (getters['retries'] >= maxRetries) {
commit('setRetries', 0)
}
commit('setRetries', getters['retries'] + 1)
try {
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/api.gql'),
fetchPolicy: 'network-only',
errorPolicy: 'none'
})
if (data) {
commit('setReleaseTimestamp', data.api.release_timestamp)
commit('setVersion', data.api.version)
commit('setConnectionMessage', 'Connected')
commit('setRetries', 0)
commit('setConnected', true)
commit('setApiMode', data.api.mode)
} else {
throw new Error('no data returned from api query')
}
} catch (e) {
commit('setConnectionMessage', e.toString())
commit('setConnected', false)
} finally {
const timeout = setTimeout(
monitorConnection,
getters['retries'] >= maxRetries || getters['connected']
? 10000
: 3000
)
commit('setConnectionTimeout', timeout)
}
}
monitorConnection()
},
async setServerUrl({ commit }, url) {
commit('setServerUrl', url)
},
async switchBackend({ commit, dispatch, rootGetters }, backend) {
commit('setBackend', backend)
commit('tenant/unsetTenant', null, { root: true })
commit('tenant/unsetTenants', null, { root: true })
if (backend == 'CLOUD') {
await dispatch('auth/authenticate', null, { root: true })
await dispatch('auth/authorize', null, { root: true })
await dispatch('user/getUser', null, { root: true })
}
await dispatch('getApi')
await dispatch('tenant/getTenants', null, { root: true })
if (backend == 'SERVER') {
commit('tenant/setDefaultTenant', rootGetters['tenant/tenants']?.[0], {
root: true
})
}
if (rootGetters['tenant/defaultTenant']?.slug) {
await dispatch(
'tenant/setCurrentTenant',
rootGetters['tenant/defaultTenant']?.slug,
{ root: true }
)
}
dispatch('monitorConnection')
}
}
export default {
getters,
mutations,
state,
actions,
namespaced: true
}
================================================
FILE: src/store/auth/index.js
================================================
import jwt_decode from 'jwt-decode'
const state = {
authorizationToken: null,
authorizationTokenExpiry: null,
idToken: null,
idTokenExpiry: null,
refreshToken: null,
refreshTokenExpiry: null,
user: null
}
const getters = {
isAuthenticated(state) {
return !!state.idToken && new Date().getTime() < state.idTokenExpiry
},
isAuthorized(state) {
return (
!!state.authorizationToken &&
new Date().getTime() < state.authorizationTokenExpiry
)
},
user(state) {
return state.user
},
idToken(state) {
return state.idToken
},
idTokenExpiry(state) {
return state.idTokenExpiry
},
refreshToken(state) {
return state.refreshToken
},
refreshTokenExpiry(state) {
return state.refreshTokenExpiry
},
authorizationToken(state) {
return state.authorizationToken
},
authorizationTokenExpiry(state) {
return state.authorizationTokenExpiry
}
}
const mutations = {
error(state, error) {
state.error = error
},
user(state, user) {
if (typeof user !== 'object' || user == null)
throw new TypeError(`user must be an object, got ${typeof user} instead`)
state.user = user
},
unsetUser(state) {
state.user = null
},
accessToken(state, accessToken) {
try {
jwt_decode(accessToken)
} catch (e) {
throw new TypeError(
`accessToken must be a valid JWT, got a malformed one instead. ${e}`
)
}
state.accessToken = accessToken
},
idToken(state, idToken) {
try {
jwt_decode(idToken)
} catch (e) {
throw new TypeError(
`idToken must be a valid JWT, got a malformed one instead. ${e}`
)
}
state.idToken = idToken
},
unsetIdToken(state) {
state.idToken = null
},
idTokenExpiry(state, idTokenExpiry) {
if (typeof idTokenExpiry !== 'number' || idTokenExpiry == null)
throw new TypeError(
`idTokenExpiry must be an number, got ${typeof idTokenExpiry} instead`
)
state.idTokenExpiry = idTokenExpiry
},
unsetIdTokenExpiry(state) {
state.idTokenExpiry = null
},
authorizationToken(state, authorizationToken) {
try {
jwt_decode(authorizationToken)
} catch (e) {
throw new TypeError(
`authorizationToken must be a valid JWT, got a malformed one instead. ${e}`
)
}
state.authorizationToken = authorizationToken
},
unsetAuthorizationToken(state) {
state.authorizationToken = null
},
refreshToken(state, refreshToken) {
try {
jwt_decode(refreshToken)
} catch (e) {
throw new TypeError(
`refreshToken must be a valid JWT, got a malformed one instead. ${e}`
)
}
state.refreshToken = refreshToken
},
unsetRefreshToken(state) {
state.refreshToken = null
},
authorizationTokenExpiry(state, authorizationTokenExpiry) {
if (
typeof authorizationTokenExpiry !== 'number' ||
authorizationTokenExpiry == null
)
throw new TypeError(
`authorizationTokenExpiry must be an number, got ${typeof authorizationTokenExpiry} instead`
)
state.authorizationTokenExpiry = authorizationTokenExpiry
},
unsetAuthorizationTokenExpiry(state) {
state.authorizationTokenExpiry = null
},
refreshTokenExpiry(state, refreshTokenExpiry) {
if (typeof refreshTokenExpiry !== 'number' || refreshTokenExpiry == null)
throw new TypeError(
`refreshTokenExpiry must be an number, got ${typeof refreshTokenExpiry} instead`
)
state.refreshTokenExpiry = refreshTokenExpiry
},
unsetRefreshTokenExpiry(state) {
state.refreshTokenExpiry = null
}
}
const actions = {}
export default {
state,
getters,
mutations,
actions,
namespaced: true
}
================================================
FILE: src/store/data/index.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
const state = {
activeFlow: null,
activeProject: null,
activeTask: null,
flows: null,
projects: null,
tasks: null
}
const getters = {
activeFlow(state) {
return state.activeFlow
},
activeFlowId(state) {
return state.activeFlow?.id
},
activeProject(state) {
return state.activeProject
},
activeProjectId(state) {
return state.activeProject?.id
},
activeTask(state) {
return state.activeTask
},
activeTaskId(state) {
return state.activeTask?.id
},
flows(state) {
return state.flows
},
projects(state) {
return state.projects
},
tasks(state) {
return state.tasks
}
}
const mutations = {
setActiveProject(state, project) {
if (
!project ||
typeof project !== 'object' ||
Array.isArray(project) ||
Object.keys(project) < 1
) {
throw new Error(
'passed invalid or empty Project; Expected Object, got: ' + project
)
}
state.activeProject = project
},
unsetActiveProject(state) {
state.activeProject = null
},
setActiveFlow(state, flow) {
if (
!flow ||
typeof flow !== 'object' ||
Array.isArray(flow) ||
Object.keys(flow) < 1
) {
throw new Error(
'passed invalid or empty Flow; Expected Object, got: ' + flow
)
}
state.activeFlow = flow
},
unsetActiveFlow(state) {
state.activeFlow = null
},
setActiveTask(state, task) {
if (
!task ||
typeof task !== 'object' ||
Array.isArray(task) ||
Object.keys(task) < 1
) {
throw new Error(
'passed invalid or empty Task; Expected Object, got: ' + task
)
}
state.activeTask = task
},
unsetActiveTask(state) {
state.activeTask = null
},
addTasks(state, tasks) {
if (!tasks || !Array.isArray(tasks)) {
throw new Error(
'passed null or invalid Tasks; Expected Array, got: ' + tasks
)
}
if (!state.tasks) {
state.tasks = tasks
return
}
tasks.forEach(task => {
let i = state.tasks.findIndex(t => t.id == task.id)
if (i > -1) state.tasks[i] = task
else state.tasks.push(task)
})
},
setTasks(state, tasks) {
if (!tasks || !Array.isArray(tasks)) {
throw new Error('passed invalid Tasks; Expected Array, got: ' + tasks)
}
state.tasks = tasks
},
unsetTasks(state) {
state.tasks = null
},
setFlows(state, flows) {
if (!flows || !Array.isArray(flows)) {
throw new Error('passed invalid Flows; Expected Array, got: ' + flows)
}
state.flows = flows
},
unsetFlows(state) {
state.flows = null
},
setProjects(state, projects) {
if (!projects || !Array.isArray(projects)) {
throw new Error(
'passed invalid Projects; Expected Array, got: ' + projects
)
}
state.projects = projects
},
unsetProjects(state) {
state.projects = null
}
}
const actions = {
async activateFlow({ commit, getters, dispatch }, id) {
let flow = getters['flows']?.find(f => f.id == id || f.flow_group_id == id)
if (!flow || flow.id !== id) {
id = flow?.id || id
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/Nav/flow.gql'),
variables: {
id: id
}
})
// Dedupes incoming flows
const flows =
getters['flows']?.filter(f => !data.flow.find(_f => _f.id == f.id)) ||
[]
commit('setFlows', [...flows, ...data.flow])
flow = getters['flows']?.find(f => f.id == id || f.flow_group_id == id)
}
if (!flow) throw new Error("Couldn't retrieve flow.")
commit('setActiveFlow', flow)
await dispatch('activateProject', flow.project_id)
},
async activateProject({ commit, getters }, id) {
let project = getters['projects']?.find(p => p.id == id)
if (!project) {
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/Nav/projects.gql')
})
commit('setProjects', data.project)
project = getters['projects'].find(p => p.id == id)
}
if (!project) throw new Error("Couldn't retrieve project.")
commit('setActiveProject', project)
},
async activateTask({ commit, getters, dispatch }, id) {
let task = getters['tasks']?.find(t => t.id == id)
if (!task) {
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/Nav/task.gql'),
variables: {
taskId: id
}
})
commit('addTasks', data.task)
task = getters['tasks'].find(t => t.id == id)
}
if (!task) throw new Error("Couldn't retrieve task.")
commit('setActiveTask', task)
await dispatch('activateFlow', task.flow_id)
},
resetActiveData({ commit }) {
commit('unsetActiveFlow')
commit('unsetActiveProject')
commit('unsetActiveTask')
},
resetData({ commit }) {
commit('unsetActiveFlow')
commit('unsetActiveProject')
commit('unsetActiveTask')
commit('unsetFlows')
commit('unsetProjects')
commit('unsetTasks')
}
}
export default {
getters,
mutations,
state,
actions,
namespaced: true
}
================================================
FILE: src/store/index.js
================================================
// Core
import Vue from 'vue'
import Vuex from 'vuex'
// Plugins
import LogRocket from 'logrocket'
import createPlugin from 'logrocket-vuex'
// Modules
import agent from '@/store/agent'
import api from '@/store/api'
import auth from '@/store/auth'
import data from '@/store/data'
import license from '@/store/license'
import refresh from '@/store/refresh'
import sideNav from '@/store/sideNav'
import tenant from '@/store/tenant'
import user from '@/store/user'
import alert from '@/store/alert'
import polling from '@/store/polling'
Vue.use(Vuex)
const logrocketPlugin = createPlugin(LogRocket, mutation => {
if (
mutation.type === 'setAuthenticationTokens' ||
mutation.type === 'setAuthorizationToken' ||
mutation.type === 'setUser'
) {
return {
type: mutation.type
}
}
return mutation
})
const store = new Vuex.Store({
modules: {
agent,
alert,
api,
auth,
data,
license,
polling,
refresh,
sideNav,
tenant,
user
},
strict: process.env.NODE_ENV !== 'production',
plugins: [logrocketPlugin]
})
export default store
================================================
FILE: src/store/license/index.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
import LogRocket from 'logrocket'
const state = {
license: null,
permissions: null,
tempLicenseType: null,
role: null
}
const getters = {
hasLicense(state) {
return !!state.license
},
license(state) {
return state.license
},
permissions(state) {
return state.permissions
},
tempLicenseType(state) {
return state.tempLicenseType
},
planType: state => type => {
if (type) {
return state.license?.terms?.plan.includes(type)
}
return state.license?.terms?.plan
},
hasPermission: state => (operation, ref) => {
if (process.env.VUE_APP_BACKEND !== 'CLOUD') return true
return state.permissions?.includes(`${operation}:${ref}`)
},
allowedUsers: state => type => {
if (type === 'read') {
return state.license?.terms?.read_only_users
}
return state.license?.terms?.users
},
role(state) {
return state.role
}
}
const mutations = {
setLicense(state, license) {
state.license = license
state.tempLicenseType = null
},
setRole(state, role) {
state.role = role
},
setTempLicenseType(state, type) {
state.tempLicenseType = type
},
unsetLicense(state) {
state.license = null
},
setPermissions(state, permissions) {
state.permissions = permissions
},
unsetPermissions(state) {
state.permissions = null
}
}
const actions = {
async getLicense({ commit }) {
try {
const { data } = await fallbackApolloClient.query({
query: require('@/graphql/License/license.gql'),
fetchPolicy: 'no-cache'
})
if (data?.auth_info?.license) {
commit('setLicense', data.auth_info.license)
}
if (data?.auth_info?.role_id) {
commit('setRole', data.auth_info.role_id)
}
if (data?.auth_info?.permissions) {
commit('setPermissions', data.auth_info.permissions)
}
} catch (error) {
commit('unsetLicense')
commit('unsetPermissions')
// eslint-disable-next-line no-console
console.log(error)
LogRocket.captureException(error, {
extra: {
pageName: 'LicenseStore',
stage: 'getLicense'
}
})
}
}
}
export default {
getters,
mutations,
state,
actions,
namespaced: true
}
================================================
FILE: src/store/polling/index.js
================================================
const state = {
uniqueId: -1,
tenants: [],
agents: [],
projects: [],
flows: []
}
const getters = {
shouldPollTenants(state) {
return state.tenants.length > 0
},
shouldPollAgents(state) {
return state.agents.length > 0
},
shouldPollProjects(state) {
return state.projects.length > 0
},
shouldPollFlows(state) {
return state.flows.length > 0
}
}
const mutations = {
incrementUniqueId(state) {
state.uniqueId++
},
addSubscriber(state, { stream, uniqueId }) {
if (state[stream].indexOf(uniqueId) == -1) {
state[stream].push(uniqueId)
}
},
removeSubscriber(state, { stream, uniqueId }) {
if (state[stream].indexOf(uniqueId) != -1) {
state[stream] = [...state[stream].filter(id => id != uniqueId)]
}
}
}
const actions = {
getUniqueId({ commit, state }) {
commit('incrementUniqueId')
return state.uniqueId
},
async subscribe({ commit, dispatch }, streams) {
const uniqueId = await dispatch('getUniqueId')
const addSubscriber = stream =>
commit('addSubscriber', { uniqueId, stream })
if (!Array.isArray(streams)) {
streams = [streams]
}
streams.forEach(addSubscriber)
return () => dispatch('unsubscribe', { uniqueId, streams })
},
unsubscribe({ commit }, { uniqueId, streams }) {
streams.forEach(stream => commit('removeSubscriber', { uniqueId, stream }))
}
}
export default {
getters,
mutations,
state,
actions,
namespaced: true
}
================================================
FILE: src/store/refresh/index.js
================================================
const state = {
componentKey: 0
}
const getters = {
componentKey(state) {
return state.componentKey
}
}
const mutations = {
add(state) {
state.componentKey++
}
}
export default {
getters,
mutations,
state,
namespaced: true
}
================================================
FILE: src/store/sideNav/index.js
================================================
const state = {
open: false
}
const getters = {
isOpen(state) {
return state.open
}
}
const mutations = {
close(state) {
state.open = false
},
open(state) {
state.open = true
},
toggle(state) {
state.open = !state.open
}
}
export default {
getters,
mutations,
state,
namespaced: true
}
================================================
FILE: src/store/tenant/index.js
================================================
import { fallbackApolloClient } from '@/vue-apollo'
import { prefectTenants } from '@/middleware/prefectAuth'
import { switchTenant, commitTokens } from '@/auth/index.js'
const state = {
defaultTenant: null,
tenant: {
id: null,
name: null,
info: null,
slug: null,
role: null,
licenses: [],
settings: {},
prefectAdminSettings: {},
stripe_customer: null
},
isLoadingTenant: false,
tenantIsSet: false,
tenants: []
}
const getters = {
defaultTenant(state) {
return state.defaultTenant
},
isLoadingTenant(state) {
return state.isLoadingTenant
},
role(state) {
return state.tenant.role
},
tenant(state) {
return state.tenant || state.defaultTenant
},
tenantIsSet(state) {
return !!state.tenant?.id
},
tenants(state) {
return state.tenants
}
}
const mutations = {
setDefaultTenant(state, tenant) {
if (
!tenant ||
typeof tenant !== 'object' ||
Array.isArray(tenant) ||
Object.keys(tenant) < 1
) {
throw new Error('passed invalid or empty tenant object')
}
state.defaultTenant = tenant
},
setIsLoadingTenant(state, value) {
if (typeof value !== 'boolean') {
throw new Error(
`passed invalid value to setIsLoadingTenant mutation, got ${typeof val}, expected Boolean.`
)
}
state.isLoadingTenant = value
},
setTenant(state, tenant) {
if (
!tenant ||
typeof tenant !== 'object' ||
Array.isArray(tenant) ||
Object.keys(tenant) < 1
) {
throw new Error('passed invalid or empty tenant object')
}
state.tenant = { ...tenant }
},
setTenants(state, tenants) {
if (!tenants || tenants?.length === 0) {
throw new Error('passed invalid or empty tenant array')
}
state.tenants = tenants
},
unsetTenant(state) {
state.tenant = {
id: null,
name: null,
info: null,
slug: null,
role: null,
licenses: [],
settings: {},
prefectAdminSettings: {},
stripe_customer: null
}
},
unsetTenants(state) {
state.tenants = []
},
updateTenantSettings(state, settings) {
if (!settings || !Object.keys(settings).length) {
throw new Error('passed invalid or empty settings object')
}
state.tenant.settings = settings
}
}
const actions = {
async getTenants({ commit, getters, rootGetters }) {
try {
const tenants = await prefectTenants(rootGetters['api/isCloud'])
commit('setTenants', tenants)
// Make sure the current tenant object is updated
if (getters['tenantIsSet']) {
let tenant = getters['tenants']?.find(
t => t.id === getters['tenant'].id
)
tenant.role = rootGetters['user/memberships'].find(
membership => membership.tenant.id == tenant.id
)?.role_detail?.name
commit('setTenant', tenant)
}
} catch {
// Do nothing since the GraphQL error should be logged by Apollo afterware
}
return getters['tenants']
},
async setCurrentTenant({ commit, dispatch, getters, rootGetters }, slug) {
slug = slug || getters['defaultTenant']?.slug || getters['tenants'][0]?.slug
if (!slug) {
throw new Error(
'No slug was provided when trying to set the current tenant'
)
}
try {
commit('setIsLoadingTenant', true)
let tenant = getters['tenants']?.find(t => t.slug === slug)
if (!tenant) {
// If the tenant doesn't exist
// try to retrieve tenants again
await dispatch('getTenants')
}
tenant = getters['tenants']?.find(t => t.slug === slug)
if (!tenant) {
throw new Error("Unable to set current tenant: tenant doesn't exist")
}
if (rootGetters['api/isCloud']) {
// We only need to get new tokens if we have a tenant
// already - otherwise tokens are fetched through the initial
// authorization process
if (getters['tenantIsSet']) {
const tokens = await switchTenant(tenant.id)
commitTokens(tokens)
}
// Get the current license
await dispatch('license/getLicense', null, { root: true })
tenant.role = rootGetters['user/memberships'].find(
membership => membership.tenant.id == tenant.id
)?.role_detail?.name
} else {
tenant.role = 'TENANT_ADMIN'
}
commit('setTenant', tenant)
} catch (e) {
throw new Error(`Problem setting tenant: ${e}`)
}
commit('setIsLoadingTenant', false)
return getters['tenant']
},
async updateTenantSettings({ dispatch }, settings) {
try {
if (!settings || !Object.keys(settings).length) {
throw new Error('passed invalid or empty settings object')
}
await fallbackApolloClient.mutate({
mutation: require('@/graphql/Mutations/update-tenant-settings.gql'),
variables: {
settings
},
error(error) {
throw error
}
})
await dispatch('getTenants')
} catch (e) {
throw new Error(`Problem updating tenant settings: ${e}`)
}
}
}
export default {
actions,
getters,
mutations,
state,
namespaced: true
}
================================================
FILE: src/store/user/index.js
================================================
import { prefectUser } from '@/middleware/prefectAuth'
const state = {
user: {
id: null,
email: null,
username: null,
default_membership_id: null,
memberships: null,
first_name: '',
last_name: '',
settings: {
timezone: '',
isDark: false
}
},
oktaUser: {
name: null,
email: null,
picture: null
},
userIsSet: false,
invitations: null
}
const getters = {
user(state) {
return state.user
},
username(state) {
return state.username
},
oktaUser(state) {
return state.oktaUser
},
defaultMembershipId(state) {
return state.user.default_membership_id
},
memberships(state) {
return state.user.memberships
},
userIsSet(state) {
return state.userIsSet
},
timezone(state) {
return state.user.settings.timezone
},
isDark(state) {
return state.user.settings.isDark
},
settings(state) {
return state.user.settings
},
firstName(state) {
return state.user.first_name
},
lastName(state) {
return state.user.last_name
},
invitations(state) {
return state.invitations
}
}
const mutations = {
user(state, user) {
state.user = { ...user }
state.userIsSet = true
},
setOktaUser(state, oktaUser) {
state.oktaUser = {
name: oktaUser.name,
email: oktaUser.email,
picture: oktaUser.picture || oktaUser.picture_url
}
},
setUserSettings(state, settings) {
if (state.user.settings != settings) {
state.user.settings = settings
}
},
unsetUser(state) {
state.user = {
id: null,
email: null,
username: null,
first_name: '',
last_name: '',
default_membership_id: null,
memberships: null,
settings: { timezone: '' }
}
state.userIsSet = false
},
unsetOktaUser(state) {
state.oktaUser = {
name: null,
email: null,
picture: null
}
},
setUserDefaultMembershipId(state, membershipId) {
state.user.default_membership_id = membershipId
},
setInvitations(state, invitations) {
state.invitations = invitations
},
unsetInvitations(state) {
state.invitations = null
}
}
const actions = {
async setDefaultTenant({ commit, getters, rootGetters }) {
const defaultMembershipId = getters['defaultMembershipId']
const defaultTenant = getters['memberships']?.find(
membership => membership.id === defaultMembershipId
)?.tenant
const firstTenant =
getters['memberships']?.[0]?.tenant || rootGetters['tenant/tenants']?.[0]
commit('tenant/setDefaultTenant', defaultTenant || firstTenant, {
root: true
})
},
async getUser({ commit, getters, dispatch, rootGetters }) {
// If this is Server, we don't continue, since this will fail
if (rootGetters['api/isServer']) return
const user = await prefectUser()
commit('user', user)
dispatch('setDefaultTenant')
return getters['user']
}
}
export default {
getters,
mutations,
actions,
state,
namespaced: true
}
================================================
FILE: src/styles/atelier-sulphurpool-light.scss
================================================
/* Base16 Atelier Sulphurpool Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* Atelier-Sulphurpool Comment */
.hljs-comment,
.hljs-quote {
color: #6b7394;
}
/* Atelier-Sulphurpool Red */
.hljs-variable,
.hljs-template-variable,
.hljs-attribute,
.hljs-tag,
.hljs-name,
.hljs-regexp,
.hljs-link,
.hljs-selector-id,
.hljs-selector-class {
color: #c94922;
}
/* Atelier-Sulphurpool Orange */
/* stylelint-disable-next-line */
.hljs-built_in,
.hljs-number,
.hljs-meta,
.hljs-builtin-name,
.hljs-literal,
.hljs-type,
.hljs-params {
color: #c76b29;
}
/* Atelier-Sulphurpool Green */
.hljs-string,
.hljs-symbol,
.hljs-bullet {
color: #ac9739;
}
/* Atelier-Sulphurpool Blue */
.hljs-title,
.hljs-section {
color: #3d8fd1;
}
/* Atelier-Sulphurpool Purple */
.hljs-keyword,
.hljs-selector-tag {
color: #6679cc;
}
.hljs {
background: #f5f7ff;
color: #5e6687;
display: block;
overflow-x: auto;
padding: 0.5em;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: bold;
}
================================================
FILE: src/styles/global.scss
================================================
/*
This file is for styles used throughout the app, and global overrides.
The style sections are:
- Transition and Animation classes (used throughout the app for consistent look and feel)
- Vuetify overrides (where Vuetify/material theming doesn't fit with our aesthetic)
- Utility classes (see if Vuetify offers the class you need before making more of these!)
- Common UI elements (used throughout the app for consistent look and feel)
If you have styles used on several pages, but they aren't truly "global", you can create
a "regional" stylesheet, and import it only on the pages needed. This will keep our CSS
concise and snappy, and the files easier to read!
*/
:root {
--v-tabs-height: 48px;
--v-sm: 600px;
--v-md: 960px;
--v-lg: 1264px;
--v-xl: 1904px;
}
html,
body {
overflow: overlay;
}
.not-mac * {
box-sizing: border-box;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
// This is for scrollbar-css compliant browsers only
// ... which is just FireFox for now.
// the -webkit-* selectors will be deprecated at some point
// so this will serve as a fallback
scrollbar-color: #babac0 transparent;
scrollbar-width: thin;
// Styles the scrollbar container
::-webkit-scrollbar {
background-color: transparent;
width: 16px;
}
// Removes track default background
::-webkit-scrollbar-track {
background-color: transparent;
}
// Styles scrollbar body
::-webkit-scrollbar-thumb {
background-color: #babac0;
border: 4px solid #fff;
border-radius: 16px;
min-height: 25px;
}
// Removes scrollar arrow buttons
/* stylelint-disable-next-line */
::-webkit-scrollbar-button {
display: none;
}
}
/* Transition and animation classes */
.fade-enter-active {
animation: fade 500ms;
}
.fade-leave-active {
animation: fade 500ms reverse;
}
.tooltip-fade-enter-active {
animation: fade 150ms;
}
.tooltip-fade-leave-active {
animation: fade 150ms reverse;
}
@keyframes fade {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.fade-expand-enter-active,
.fade-expand-leave-active {
max-height: 1000px;
opacity: 1;
}
.fade-expand-enter-active {
transition: max-height linear 200ms 200ms, opacity linear 200ms 400ms;
}
.fade-expand-leave-active {
transition: max-height linear 200ms 200ms, opacity linear 200ms;
}
.fade-expand-enter,
.fade-expand-leave-to {
max-height: 0;
opacity: 0;
}
.quick-fade-leave-active {
transition: opacity 150ms ease-in-out !important;
}
.quick-fade-enter-active,
.quick-fade-leave-active {
opacity: 1;
transition: opacity 200ms ease-in-out;
}
.quick-fade-enter,
.quick-fade-leave-to {
opacity: 0;
}
.tab-fade-leave-active {
transition: opacity 150ms ease-in-out !important;
}
.tab-fade-enter-active,
.tab-fade-leave-active {
opacity: 1;
position: absolute;
transition: opacity 350ms ease-in-out;
width: 100%;
}
.tab-fade-enter,
.tab-fade-leave-to {
opacity: 0;
}
.roll {
animation: roll 3s ease-in-out;
pointer-events: none;
}
@keyframes roll {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
/* End transition and animation classes */
/* Vuetify overrides */
// stylelint-disable
.vertical-button {
&.v-btn--tile {
height: auto !important;
}
.v-btn__content {
flex-direction: column-reverse !important;
}
}
// toggle button with label above
.v-input--vertical .v-input__slot {
flex-direction: column-reverse !important;
.v-input--selection-controls__input {
align-self: center;
margin: auto !important;
}
.v-btn:not(.v-btn--round).v-size--small {
height: unset !important;
}
}
// overflow menu with checkboxes
.v-input--reverse .v-input__slot {
flex-direction: row-reverse;
justify-content: flex-end;
.v-application--is-ltr & {
.v-input--selection-controls__input {
margin-left: 8px;
margin-right: 0;
}
}
.v-application--is-rtl & {
.v-input--selection-controls__input {
margin-left: 0;
margin-right: 8px;
}
}
}
.small-switch.v-input {
margin-top: 0 !important;
padding-top: 0 !important;
transform: scale(0.8);
}
.multi-color-switch {
.v-input--switch__track,
.v-input--switch__thumb {
color: inherit !important;
}
}
//ugly box shadow on expanded data tables
.v-data-table
> .v-data-table__wrapper
tbody
tr.v-data-table__expanded__content {
box-shadow: none !important;
}
.theme--light.v-tabs-items {
background-color: var(--v-appBackground-base) !important;
}
// stylelint-enable
/* End vuetify overrides */
/* Utility classes */
.cursor-pointer {
cursor: pointer;
}
.position-absolute {
position: absolute !important;
}
.position-relative {
position: relative !important;
}
.word-break-normal {
word-break: normal;
}
$percents: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100;
@each $percent in $percents {
.o-#{$percent} {
opacity: $percent/100 !important;
}
.hover-o-#{$percent} {
&:hover,
&:focus {
opacity: $percent/100 !important;
}
}
}
.user-select-none {
user-select: none;
}
.fill-height {
height: calc(100vh - 64px);
}
.code-block {
font-family: 'Source Code Pro', monospace !important;
white-space: pre-wrap;
}
/* End utility classes */
/* Common UI elements */
.tabs-border-bottom {
.v-tabs-bar {
border-bottom: 1px solid var(--v-utilGrayLight-base) !important;
}
}
.tabs-border-top {
.v-tabs-bar {
border-top: 1px solid var(--v-utilGrayLight-base) !important;
}
}
.fixed-table {
table {
table-layout: fixed;
}
}
.truncate-table.v-data-table {
font-size: 0.9rem !important;
td {
font-size: inherit !important;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.remove--disabled.theme--light.v-btn.v-btn--disabled:not(.v-btn--flat):not(.v-btn--text):not(.v-btn-outlined),
.remove--disabled.theme--dark.v-btn.v-btn--disabled:not(.v-btn--flat):not(.v-btn--text):not(.v-btn-outlined) {
.v-icon {
color: inherit !important;
}
}
/* stylelint-disable */
.disabled.v-badge {
pointer-events: none !important;
.v-badge__wrapper,
.v-badge__badge {
pointer-events: none !important;
}
}
.v-text-field-input-color {
.v-text-field__slot {
input {
color: inherit !important;
}
}
}
// hides subnav on small screens
.tabs-hidden {
.v-tabs-bar {
display: none;
}
}
.v-picker__body {
background: inherit !important;
}
.overflow-table > .v-data-table__wrapper {
overflow: initial !important;
}
// stylelint-enable
/* End common UI elements */
/* Navbar global styles */
.navbar-icon {
font-size: 0.85rem;
height: 36px !important;
width: 36px !important;
.svg-inline--fa {
--fa-primary-color: #fff;
--fa-secondary-color: #efefef;
transition: all 150ms linear;
&.fa-search {
--fa-primary-color: #efefef;
--fa-secondary-color: #fff;
--fa-secondary-opacity: 1;
}
&.fa-bell {
--fa-primary-color: #efefef;
--fa-secondary-color: #fff;
--fa-secondary-opacity: 1;
}
&.fa-server {
--fa-secondary-opacity: 1;
}
&.fa-circle {
--fa-secondary-color: #fff;
--fa-secondary-opacity: 0;
height: 0;
width: 0;
}
}
&:hover,
&:focus {
.svg-inline--fa {
--fa-primary-color: var(--v-accentPink-base);
}
}
&.active {
.svg-inline--fa.fa-sliders-v-square {
--fa-primary-color: var(--v-accentPink-base);
}
}
}
.banner-icon {
color: transparent;
font-size: 36px !important;
height: 36px !important;
line-height: 36px !important;
width: 60px !important;
.svg-inline--fa {
transition: all 150ms linear;
&.fa-list-ul {
--fa-primary-color: var(--v-warning-base);
--fa-secondary-color: var(--v-utilGrayLight-base);
--fa-secondary-opacity: 1;
}
}
}
.system-icon {
font-size: 64px !important;
height: 64px !important;
line-height: 64px !important;
width: 80px !important;
&.fa-stack {
position: relative !important;
.fa-stack-1x,
.fa-stack-2x {
height: inherit !important;
position: relative;
width: inherit !important;
}
.svg-inline--fa.fa-stack-1x {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -25%);
}
}
.svg-inline--fa {
--fa-primary-color: #444;
--fa-secondary-opacity: 0.75;
transition: all 150ms linear;
&.fa-list-alt {
--fa-primary-color: var(--v-warning-base);
--fa-secondary-opacity: 1;
}
&.fa-align-slash {
--fa-primary-color: var(--v-error-base);
--fa-secondary-opacity: 1;
}
&.fa-slash {
color: var(--v-error-base);
}
}
&.active {
.svg-inline--fa {
&.fa-list-alt {
--fa-primary-color: var(--v-primary-base);
--fa-secondary-opacity: 1;
}
}
}
}
.fa-stack {
&.active {
.nav-bar-duotone-icon {
--fa-primary-color: var(--v-accentPink-base);
}
.fa-stack-1x {
height: 100%;
left: 50%;
transform: translate(-50%, 1.15em) scale(0.6);
width: 100%;
}
}
}
/* End Navbar global styles */
/* Dark Mode background overrides */
// stylelint-disable
.theme--dark {
.v-tabs-items,
&.v-application {
background-color: var(--v-appBackground-base) !important;
}
&.v-calendar-daily,
&.v-card,
&.v-data-table,
&.v-data-table.v-data-table--fixed-header thead th,
&.v-navigation-drawer,
.v-sheet,
&.v-tabs > .v-tabs-bar,
&.v-text-field--solo > .v-input__control > .v-input__slot,
&.v-toolbar.v-sheet:not(header) {
background-color: var(--v-appForeground-base);
}
&.v-data-table
> .v-data-table__wrapper
> table
> tbody
> tr:hover:not(.v-data-table__expanded__content):not(.v-data-table__empty-wrapper),
&.v-tooltip__content {
background-color: var(--v-utilGrayMid-darken2) !important;
}
scrollbar-color: var(--v-utilGrayMid-darken2) transparent;
scrollbar-width: thin;
::-webkit-scrollbar {
background-color: transparent;
width: 10px;
}
::-webkit-scrollbar-track {
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background-color: var(--v-utilGrayMid-darken2);
border-radius: 16px;
min-height: 25px;
}
::-webkit-scrollbar-corner {
background-color: transparent;
}
.v-skeleton-loader__bone {
background-color: var(--v-utilGrayMid-darken3) !important;
}
}
/* End Dark Mode background overrides */
/* Plans global styles */
/* stylelint-disable no-descending-specificity */
.plans-feature-icon {
align-items: center;
display: inline-flex;
height: 20px;
justify-content: center;
width: 20px;
.svg-inline--fa {
--fa-primary-color: var(--v-primary-base);
--fa-secondary-color: var(--v-primary-base);
--fa-secondary-opacity: 0.6;
transition: all 150ms linear;
}
&.feature-green {
.svg-inline--fa {
--fa-primary-color: var(--v-accentGreen-base);
--fa-secondary-color: var(--v-accentGreen-base);
--fa-secondary-opacity: 0.6;
transition: all 150ms linear;
}
}
.fa-toolbox.svg-inline--fa {
--fa-primary-opacity: 0.6 !important;
--fa-secondary-opacity: 1 !important;
}
&.plans-feature-icon-light {
.svg-inline--fa {
--fa-primary-color: var(--v-primary-base);
--fa-secondary-color: var(--v-primaryLight-base);
--fa-secondary-opacity: 1;
}
}
}
.feature-category-icon {
.svg-inline--fa {
--fa-primary-color: var(--v-primary-base);
--fa-secondary-color: var(--v-accentPink-base);
--fa-secondary-opacity: 1;
transition: all 150ms linear;
&.fa-chart-scatter {
--fa-primary-color: var(--v-accentPink-base);
--fa-secondary-color: var(--v-primary-base);
}
}
}
.feature-list-icon {
$color: #607d8b;
.svg-inline--fa {
--fa-primary-color: #{$color};
--fa-secondary-color: #{$color};
--fa-secondary-opacity: 1;
color: $color;
opacity: 1;
transition: all 150ms linear;
}
&.empty-circle .svg-inline--fa {
--fa-primary-opacity: 0 !important;
}
&.empty-outline .svg-inline--fa {
--fa-secondary-opacity: 0 !important;
}
&.feature-list-icon-disabled .svg-inline--fa {
opacity: 0.3 !important;
}
}
.support-icon {
.svg-inline--fa {
--fa-primary-color: var(--v-primary-base);
--fa-secondary-color: var(--v-primary-base);
--fa-secondary-opacity: 0.5;
}
.fa-badge-check.svg-inline--fa {
--fa-primary-color: var(--v-accentGreen-darken2);
--fa-secondary-color: var(--v-accentGreen-base);
}
}
/* stylelint-enable no-descending-specificity */
/* End plans global styles */
$fa-cc-amex: #007bc1;
$fa-cc-diners-club: #004a97;
$fa-cc-discover: #f68121;
$fa-cc-jcb: #003a8f;
$fa-cc-mastercard: #0a3a82;
$fa-cc-paypal: #253b80;
$fa-cc-stripe: #00afe1;
$fa-cc-visa: #0157a2;
.fa-cc-amex {
color: $fa-cc-amex !important;
}
.fa-cc-diners-club {
color: $fa-cc-diners-club !important;
}
.fa-cc-discover {
color: $fa-cc-discover !important;
}
.fa-cc-jcb {
color: $fa-cc-jcb !important;
}
.fa-cc-mastercard {
color: $fa-cc-mastercard !important;
}
.fa-cc-paypal {
color: $fa-cc-paypal !important;
}
.fa-cc-stripe {
color: $fa-cc-stripe !important;
}
.fa-cc-visa {
color: $fa-cc-visa !important;
}
================================================
FILE: src/styles/json-input-style.scss
================================================
/* stylelint-disable */
.cm-s-json-input.CodeMirror {
background-color: var(--v-appForeground-base) !important;
color: var(--v-utilGrayDark-base) !important;
.CodeMirror-code {
letter-spacing: 0.15rem;
}
div.CodeMirror-selected {
background: var(--v-primaryLight-base) !important;
}
.CodeMirror-line {
&::selection,
> span::selection,
> span > span::selection {
background: var(--v-primaryLight-base) !important;
}
}
.CodeMirror-gutters {
background: #f8f8f8 !important;
border-left: 6px solid rgba(0, 83, 159, 0.65) !important;
color: #333 !important;
}
.CodeMirror-linenumber {
color: #aaa !important;
padding-left: 8px !important;
}
.CodeMirror-cursor {
border-left: 1px solid var(--v-utilGrayMid-base) !important;
}
.cm-keyword {
color: #6262ff !important;
}
.cm-atom {
color: var(--v-accentOrange-base) !important;
}
.cm-number {
color: var(--v-accentGreen-base) !important;
}
.cm-def {
color: #8da6ce !important;
}
span.cm-variable-2,
span.cm-tag {
color: #690 !important;
}
span.cm-variable-3,
span.cm-def,
span.cm-type {
color: var(--v-error-base) !important;
}
.cm-variable {
color: var(--v-error-base) !important;
}
.cm-qualifier {
color: #690 !important;
}
.cm-operator {
color: var(--v-error-base) !important;
}
.cm-comment {
color: var(--v-utilGrayMid-base) !important;
font-weight: normal !important;
}
.cm-string {
color: var(--v-accentPink-base) !important;
}
.cm-property.cm-string {
color: var(--v-tertiaryBlue-base) !important;
}
.cm-property {
color: var(--v-error-base) !important;
}
.cm-string-2 {
color: var(--v-error-base) !important;
}
.cm-meta {
color: #000 !important;
}
.cm-builtin {
color: #deaa54 !important;
}
.cm-tag {
color: #ff9447 !important;
}
.cm-attribute {
color: #d6bb6d !important;
}
.cm-header {
color: #ea5a2e !important;
}
.cm-hr {
color: #aeaeae !important;
}
.cm-link {
color: #42c1d6 !important;
font-style: italic !important;
text-decoration: none !important;
}
.cm-error {
border-bottom: 1px solid red !important;
}
div .CodeMirror-activeline-background {
background: #efefff !important;
}
div span.CodeMirror-matchingbracket {
background-color: rgb(69, 90, 100, 0.35) !important;
color: inherit !important;
}
}
/* stylelint-enable */
================================================
FILE: src/styles/md-style.scss
================================================
.md {
margin-left: 2.25rem;
margin-top: 3.25rem;
/* stylelint-disable-next-line */
a[aria-hidden='true'] {
float: left;
font-size: 0.85em;
margin-left: -0.87em;
margin-top: 0.125em;
opacity: 0;
padding-right: 0.23em;
}
/* stylelint-disable-next-line */
a[aria-hidden='true']:hover {
opacity: 1;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 2em;
}
h3 {
font-size: 1.75em;
}
h4 {
font-size: 1.5em;
}
h5 {
font-size: 1.25em;
}
h6 {
font-size: 1em;
}
/* stylelint-disable a11y/line-height-is-vertical-rhythmed */
h1,
h2,
h3,
h4,
h5,
h6 {
border-bottom: 1px solid #d2dadf;
color: var(--v-utilGrayDark-base);
font-weight: 700;
line-height: 1.15;
margin-top: 1em;
padding-bottom: 0.7rem;
text-rendering: optimizeLegibility;
}
/* stylelint-enable */
ol,
p,
ul {
color: var(--v-utilGrayDark-base);
font-size: 1em;
line-height: 1.75;
}
p {
color: var(--v-utilGrayDark-base);
display: block;
margin-block-end: 1em;
margin-block-start: 1em;
margin-inline-end: 0;
margin-inline-start: 0;
}
img {
max-width: 100%;
}
a {
font-weight: 500;
text-decoration: none;
}
pre > code {
background-color: var(--v-appBackground-base);
border: 1px solid var(--v-appBackground-base);
border-radius: 2px;
color: var(--v-utilGrayMid-base);
display: block;
font-family: 'Source Code Pro', monospace;
font-size: 1em;
font-weight: 400;
line-height: 1.5;
margin-bottom: 1.6em;
margin-top: 16px;
max-width: 100%;
overflow: auto;
padding: 12px;
page-break-inside: avoid;
word-wrap: break-word;
}
p > code {
background-color: var(--v-appBackground-base);
border-radius: 3px;
color: var(--v-primary-base);
font-size: 0.85em;
margin: 0;
padding: 0.25rem 0.5rem;
}
/* stylelint-disable a11y/font-size-is-readable */
blockquote {
background-color: #fffaf1;
border-color: #e90;
border-left-style: solid;
border-left-width: 0.5rem;
font-size: 13px;
margin: 1rem 0;
padding: 0.1rem 1.5rem;
}
/* stylelint-enable */
}
================================================
FILE: src/styles/playground.scss
================================================
.CodeMirror {
font-size: 1.1rem !important;
height: 100%;
padding: 5px;
}
.cm-s-playground {
&.CodeMirror {
background: var(--v-secondaryGrayDark-base);
color: #d6d5d4;
}
&.CodeMirror.light {
background: var(--v-secondaryGrayLight-base);
color: var(--v-secondaryGrayDark-base);
}
div.CodeMirror-selected {
background: #3a3432;
}
&.CodeMirror-empty {
color: #777;
}
.CodeMirror-gutters {
background: var(--v-secondaryGrayDark-base);
border-right: 0;
}
.CodeMirror-guttermarker {
color: #db2d20;
}
.CodeMirror-guttermarker-subtle,
.CodeMirror-linenumber {
color: var(--v-secondaryGray-base);
}
.CodeMirror-cursor {
border-left: 1px solid #807d7c;
}
span {
&.cm-comment {
color: #666;
}
&.cm-atom,
&.cm-number {
color: #a16a94;
}
&.cm-property,
&.cm-attribute {
color: var(--v-accentOrange-base);
}
&.cm-keyword {
color: var(--v-codeBlue-base);
}
&.cm-string {
color: #fded02;
}
&.cm-variable {
color: #01a252;
}
&.cm-variable-2 {
color: #01a0e4;
}
&.cm-def {
color: var(--v-codePink-base);
}
&.cm-bracket {
color: #d6d5d4;
}
&.cm-tag {
color: #db2d20;
}
&.cm-link {
color: #a16a94;
}
&.cm-error {
background: #db2d20;
color: #807d7c;
}
}
.CodeMirror-activeline-background {
background: #2f2f2f;
}
.CodeMirror-matchingbracket {
color: #fff !important;
background-color: rgba(0, 115, 223, 0.5);
}
}
.cm-s-playground-light {
&.CodeMirror {
background: var(--v-secondaryGrayLight-base);
color: var(--v-secondaryGrayDark-base);
font-size: 0.85rem;
}
div.CodeMirror-selected {
background: #3a3432;
}
&.CodeMirror-empty {
color: #999;
}
.CodeMirror-gutters {
background: var(--v-secondaryGrayDark-base);
border-right: 0;
}
.CodeMirror-guttermarker {
color: #db2d20;
}
.CodeMirror-guttermarker-subtle,
.CodeMirror-linenumber {
color: var(--v-secondaryGray-base);
}
.CodeMirror-cursor {
border-left: 1px solid #807d7c;
}
span {
&.cm-comment {
color: #666;
}
&.cm-atom,
&.cm-number {
color: var(--v-codePink-base);
}
&.cm-property,
&.cm-attribute {
color: var(--v-accentOrange-base) !important;
}
&.cm-keyword {
color: var(--v-codeBlue-base);
}
&.cm-string {
color: #0075b8;
}
&.cm-variable {
color: #01a252;
}
&.cm-variable-2 {
color: #01a0e4;
}
&.cm-def {
color: var(--v-codePink-base);
}
&.cm-bracket {
color: #d6d5d4;
}
&.cm-tag {
color: #db2d20;
}
&.cm-link {
color: #a16a94;
}
&.cm-error {
background: #db2d20;
color: #807d7c;
}
}
.CodeMirror-activeline-background {
background: #2f2f2f;
}
.CodeMirror-matchingbracket {
color: #fff !important;
text-decoration: underline;
}
}
================================================
FILE: src/styles/slash.scss
================================================
@keyframes slide-right-slant {
0% {
transform: skewY(-26deg) translate(0, 0);
width: 0%;
}
100% {
transform: skewY(-26deg) translate(0, -50%);
width: 100%;
}
}
@keyframes slide-left-slant {
0% {
transform: skewY(-26deg) translate(0, -50%);
width: 100%;
}
100% {
transform: skewY(-26deg) translate(0, 0);
width: 0%;
}
}
.slash {
animation-delay: unset;
position: relative;
&::before {
content: '';
height: inherit;
position: absolute;
transform: skewY(-26deg) translate(0, -50%);
transform-origin: inherit;
transform-origin: 50% 50%;
transition-delay: inherit !important;
transition-duration: 500ms;
transition-property: all;
width: 100%;
z-index: 0;
}
&.paused::before {
animation-play-state: paused;
transform: skewY(-26deg) translate(0, 0);
width: 0 !important;
}
&.slash-shadow::before {
box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2),
0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12) !important;
}
&.slash-enter::before {
animation-delay: inherit !important;
animation-duration: 500ms;
animation-fill-mode: forwards;
animation-name: slide-right-slant;
animation-timing-function: ease-in-out;
}
&.slash-leave::before {
animation-delay: 0 !important;
animation-duration: 500ms;
animation-fill-mode: forwards;
animation-name: slide-left-slant;
animation-timing-function: ease-in-out;
}
&.slash-origin-left {
&::before {
left: 0;
}
}
&.slash-origin-right {
&::before {
right: 0;
}
}
&.slash-reverse::before {
transform: skewY(26deg);
}
&.slash-grey::before {
background-image: linear-gradient(
105deg,
#647489,
var(--v-secondary-base)
) !important;
}
&.slash-grey-reverse::before {
background-image: linear-gradient(
105deg,
var(--v-secondary-base),
#647489
) !important;
}
&.slash-orange::before {
background-image: linear-gradient(105deg, #ff60de, #ff4d20) !important;
}
&.slash-pink::before {
background-image: linear-gradient(105deg, #ff4d20, #ff60de) !important;
}
&.slash-blue::before {
background-image: linear-gradient(
105deg,
var(--v-accentCyan-base),
#0e50f5
) !important;
}
&.slash-light-blue::before {
background-image: linear-gradient(
105deg,
#0e50f5,
var(--v-accentCyan-base)
) !important;
}
div {
z-index: 1 !important;
}
}
.slash-horizontal {
position: relative;
transition: all 250ms;
width: 100%;
&::before {
content: '';
height: inherit;
left: 0;
position: absolute;
right: 0;
top: 0;
transform-origin: inherit;
transition: all 250ms;
transition-delay: 250ms;
width: 100%;
z-index: 0;
}
&.slash-grey::before {
background-image: linear-gradient(
105deg,
#647489,
var(--v-secondary-base)
) !important;
}
&.slash-grey-reverse::before {
background-image: linear-gradient(
105deg,
var(--v-secondary-base),
#647489
) !important;
}
&.slash-blue::before {
background-image: linear-gradient(
105deg,
var(--v-accentCyan-base),
#0e50f5
) !important;
}
&.slash-orange::before {
background-image: linear-gradient(105deg, #ff60de, #ff4d20) !important;
}
&.slash-pink::before {
background-image: linear-gradient(105deg, #ff4d20, #ff60de) !important;
}
div {
z-index: 1 !important;
}
&.slash-shadow::before {
box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2),
0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12) !important;
}
}
================================================
FILE: src/styles/yaml-input-style.scss
================================================
/* stylelint-disable */
.cm-s-yaml-input.CodeMirror {
background-color: var(--v-appForeground-base) !important;
color: var(--v-utilGrayDark-base) !important;
.CodeMirror-code {
letter-spacing: 0.15rem;
}
div.CodeMirror-selected {
background: var(--v-primaryLight-base) !important;
}
.CodeMirror-line {
&::selection,
> span::selection,
> span > span::selection {
background: var(--v-primaryLight-base) !important;
}
}
.CodeMirror-gutters {
background: #f8f8f8 !important;
border-left: 6px solid rgba(0, 83, 159, 0.65) !important;
color: #333 !important;
}
.CodeMirror-linenumber {
color: #aaa !important;
padding-left: 8px !important;
}
.CodeMirror-cursor {
border-left: 1px solid var(--v-utilGrayMid-base) !important;
}
.cm-keyword {
color: #6262ff !important;
}
.cm-atom {
color: var(--v-accentOrange-base) !important;
}
.cm-number {
color: var(--v-accentGreen-base) !important;
}
.cm-def {
color: #8da6ce !important;
}
span.cm-variable-2,
span.cm-tag {
color: #690 !important;
}
span.cm-variable-3,
span.cm-def,
span.cm-type {
color: var(--v-error-base) !important;
}
.cm-variable {
color: var(--v-error-base) !important;
}
.cm-qualifier {
color: #690 !important;
}
.cm-operator {
color: var(--v-error-base) !important;
}
.cm-comment {
color: var(--v-utilGrayMid-base) !important;
font-weight: normal !important;
}
.cm-string {
color: var(--v-accentPink-base) !important;
}
.cm-property.cm-string {
color: var(--v-tertiaryBlue-base) !important;
}
.cm-property {
color: var(--v-error-base) !important;
}
.cm-string-2 {
color: var(--v-error-base) !important;
}
.cm-meta {
color: #000 !important;
}
.cm-builtin {
color: #deaa54 !important;
}
.cm-tag {
color: #ff9447 !important;
}
.cm-attribute {
color: #d6bb6d !important;
}
.cm-header {
color: #ea5a2e !important;
}
.cm-hr {
color: #aeaeae !important;
}
.cm-link {
color: #42c1d6 !important;
font-style: italic !important;
text-decoration: none !important;
}
.cm-error {
border-bottom: 1px solid red !important;
}
div .CodeMirror-activeline-background {
background: #efefff !important;
}
div span.CodeMirror-matchingbracket {
background-color: rgb(69, 90, 100, 0.35) !important;
color: inherit !important;
}
}
/* stylelint-enable */
================================================
FILE: src/utils/Tree.js
================================================
export function Tree(tree) {
this.tree = tree
this.arr = []
this.mapping = {}
this.inOrder(this.tree)
this.height = this.calcHeight()
this.width = this.calcWidth()
}
Tree.prototype.inOrder = function(node, row = 0) {
if (node == null) return
let _row = row
if (!this.mapping[node.id] && node.id) {
_row = row + 1
this.arr[row]
? this.arr[row].push(node.children.length)
: (this.arr[row] = [node.children.length])
this.mapping[node.id] = true
}
let len = node.children.length
for (let i = 0; i < len; ++i) {
this.inOrder(node.children[i], _row)
}
}
Tree.prototype.calcWidth = function() {
let height = 0
let len = this.arr.length
for (let i = 0; i < len; ++i) {
height = this.arr[i].length > height ? this.arr[i].length : height
}
return height
}
Tree.prototype.calcHeight = function() {
return this.arr.length
}
================================================
FILE: src/utils/array.js
================================================
// fisher yates shuffle
export function shuffle(inputArray) {
// Copy array so as not to mutate
let array = [...inputArray]
let currentIndex = array.length,
temporaryValue,
randomIndex
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex)
currentIndex -= 1
// And swap it with the current element.
temporaryValue = array[currentIndex]
array[currentIndex] = array[randomIndex]
array[randomIndex] = temporaryValue
}
return array
}
================================================
FILE: src/utils/automations.js
================================================
export const presentTenseStates = {
FAILED: 'fails',
PENDING: 'is pending',
SCHEDULED: 'is scheduled',
RETRYING: 'retries',
RESUME: 'resumes',
QUEUED: 'is queued',
SUBMITTED: 'is submitted',
PAUSED: 'pauses',
RUNNING: 'runs',
FINISHED: 'finishes',
SUCCESS: 'succeeds',
CANCELLED: 'is cancelled',
CACHED: 'is cached',
TRIGGERFAILED: 'trigger fails',
SKIPPED: 'skips',
TIMEDOUT: 'times out',
MAPPED: 'maps',
LOOPED: 'loops'
}
export const titleCasePresentTenseStates = {
Failed: 'fails',
Pending: 'is pending',
Scheduled: 'is scheduled',
Retrying: 'retries',
RESUME: 'resumes',
Queued: 'is queued',
Submitted: 'is submitted',
PAUSED: 'pauses',
Running: 'runs',
Finished: 'finishes',
Success: 'succeeds',
Cancelled: 'is cancelled',
Cached: 'is cached',
Triggerfailed: 'trigger fails',
Skipped: 'skips',
Timedout: 'times out',
Mapped: 'maps',
Looped: 'loops'
}
//Can use requiresCloud or specific permission type to filter where needed
export const actionTypes = [
{
title: 'Email',
type: 'EMAIL',
actionType: 'EmailNotificationAction',
verb: 'email',
sendText: 'Send an',
icon: 'fas fa-envelope',
config: { to: null },
requiresCloud: true
},
{
title: 'Slack',
type: 'SLACK_WEBHOOK',
actionType: 'SlackNotificationAction',
verb: 'slack',
sendText: 'Send a',
icon: 'fab fa-slack',
config: { url: null },
requiresCloud: false
},
{
title: 'Twilio',
type: 'TWILIO',
actionType: 'TwilioNotificationAction',
sendText: 'Send a',
verb: 'twilio',
icon: '$twilio',
config: {
account_sid: null,
auth_token: null,
to: [],
messaging_service_sid: null
},
requiresCloud: false
},
{
title: 'PagerDuty',
sendText: 'Send a',
type: 'PAGERDUTY',
actionType: 'PagerDutyNotificationAction',
verb: 'PagerDuty',
icon: '$pagerDuty',
config: { routing_key: null, api_token: null, severity: [] },
requiresCloud: false
},
{
title: 'Microsoft Teams',
sendText: 'Send a',
type: 'MS_TEAMS',
actionType: 'TeamsWebhookNotificationAction',
verb: 'teams',
icon: 'fab fa-microsoft',
config: { webhook_url_secret: null, message: null, title: null },
requiresCloud: true
},
{
title: 'Webhook',
sendText: 'Send a',
verb: 'send webhook to',
type: 'WEBHOOK',
icon: 'fas fa-desktop',
config: { to: null },
requiresCloud: false
}
]
export const featureFlaggedEventTypes = [...actionTypes]
export const flowEventTypes = [
{
name: 'changes state',
enum: 'CHANGES_STATE',
permission: null
},
{
name: 'does not finish',
enum: 'STARTED_NOT_FINISHED',
permission: 'feature:flow-sla'
},
{
name: 'does not start',
enum: 'SCHEDULED_NOT_STARTED',
permission: 'feature:flow-sla'
}
]
export const AUTOMATIONSTATES = {
All: [
'Failed',
'Pending',
'Scheduled',
'Retrying',
'Resume',
'Queued',
'Submitted',
'Paused',
'Running',
'Finished',
'Success',
'Cancelled',
'Cached',
'Triggerfailed',
'Skipped',
'Timedout',
'Mapped',
'Looped'
],
Failed: ['Failed', 'Timedout', 'Triggerfailed'],
Finished: [
'Finished',
'Looped',
'Cancelled',
'Success',
'Cached',
'Mapped',
'Skipped'
],
Success: ['Success', 'Cached', 'Mapped', 'Skipped'],
Custom: []
}
export const jsonPlacehold = {
jsonBlob: {
event_name: '{event_type}',
message: '',
tenant_id: '{tenant_id}',
tenant_slug: '{tenant_slug}',
timestamp: '',
id: '{event_id}',
flow_id: '{flow_id}',
flow_name: '{flow_name}',
flow_group_id: '{flow_group_id}',
flow_link: '{flow_link}',
flow_run_id: '{flow_run_id}',
flow_run_name: '{flow_run_name}',
state: '{state}',
state_message: '{state_message}',
flow_run_link: '{flow_run_link}',
flow_sla_config_id: '{flow_sla_config_id}',
kind: '{flow_sla_type}',
duration_seconds: '{duration}',
event_type: '{event_type}'
}
}
================================================
FILE: src/utils/cloudHooks.js
================================================
export const openCloudHookTypes = [
{
title: 'Email',
type: 'EMAIL',
icon: 'fas fa-envelope',
config: { to: null },
requiresCloud: true
},
{
title: 'Slack',
type: 'SLACK_WEBHOOK',
icon: 'fab fa-slack',
config: { url: null },
requiresCloud: false
},
{
title: 'Twilio',
type: 'TWILIO',
icon: '$twilio',
config: {
account_sid: null,
auth_token: null,
to: [],
messaging_service_sid: null
},
requiresCloud: false
},
{
title: 'PagerDuty',
type: 'PAGERDUTY',
icon: '$pagerDuty',
config: { routing_key: null, api_token: null, severity: [] },
requiresCloud: false
},
{
title: 'Web',
type: 'WEBHOOK',
icon: 'fas fa-desktop',
config: { to: null },
requiresCloud: false
},
{
title: 'Prefect',
type: 'PREFECT_MESSAGE',
icon: '$prefect',
config: {},
requiresCloud: false
}
]
export const presentTenseStates = {
FAILED: 'fails',
PENDING: 'is pending',
SCHEDULED: 'is scheduled',
RETRYING: 'retries',
// RESUME: 'resumes',
QUEUED: 'is queued',
SUBMITTED: 'is submitted',
// PAUSED: 'pauses',
RUNNING: 'runs',
FINISHED: 'finishes',
SUCCESS: 'succeeds',
CANCELLED: 'is cancelled',
CACHED: 'is cached',
TRIGGERFAILED: 'trigger fails',
SKIPPED: 'skips',
TIMEDOUT: 'times out',
MAPPED: 'maps',
LOOPED: 'loops'
}
export const titleCasePresentTenseStates = {
Failed: 'fails',
Pending: 'is pending',
Scheduled: 'is scheduled',
Retrying: 'retries',
// RESUME: 'resumes',
Queued: 'is queued',
Submitted: 'is submitted',
// PAUSED: 'pauses',
Running: 'runs',
Finished: 'finishes',
Success: 'succeeds',
Cancelled: 'is cancelled',
Cached: 'is cached',
Triggerfailed: 'trigger fails',
Skipped: 'skips',
Timedout: 'times out',
Mapped: 'maps',
Looped: 'loops'
}
export const featureFlaggedCloudHookTypes = [...openCloudHookTypes]
export const GROUP_COLORS = {
All: 'primary',
Custom: 'codePink',
Failed: 'Failed',
Finished: 'Finished',
Success: 'Success'
}
export const STATES = {
All: [
'FAILED',
'PENDING',
'SCHEDULED',
'RETRYING',
'RESUME',
'QUEUED',
'SUBMITTED',
'PAUSED',
'RUNNING',
'FINISHED',
'SUCCESS',
'CANCELLED',
'CACHED',
'TRIGGERFAILED',
'SKIPPED',
'TIMEDOUT',
'MAPPED',
'LOOPED'
],
Failed: ['FAILED', 'TIMEDOUT', 'TRIGGERFAILED'],
Finished: [
'FINISHED',
'LOOPED',
'CANCELLED',
'SUCCESS',
'CACHED',
'MAPPED',
'SKIPPED'
],
Success: ['SUCCESS', 'CACHED', 'MAPPED', 'SKIPPED']
}
================================================
FILE: src/utils/cron.js
================================================
export const months = {
1: 'January',
2: 'February',
3: 'March',
4: 'April',
5: 'May',
6: 'June',
7: 'July',
8: 'August',
9: 'September',
10: 'October',
11: 'November',
12: 'December',
get JAN() {
return this[1]
},
get FEB() {
return this[2]
},
get MAR() {
return this[3]
},
get APR() {
return this[4]
},
get MAY() {
return this[5]
},
get JUN() {
return this[6]
},
get JUL() {
return this[7]
},
get AUG() {
return this[8]
},
get SEP() {
return this[9]
},
get OCT() {
return this[10]
},
get NOV() {
return this[11]
},
get DEC() {
return this[12]
}
}
export const daysWeek = {
0: 'Sunday',
1: 'Monday',
2: 'Tuesday',
3: 'Wednesday',
4: 'Thursday',
5: 'Friday',
6: 'Saturday',
get SUN() {
return this[0]
},
get MON() {
return this[1]
},
get TUE() {
return this[2]
},
get WED() {
return this[3]
},
get THU() {
return this[4]
},
get FRI() {
return this[5]
},
get SAT() {
return this[6]
}
}
export const common = {
'* * * * *': 'every minute',
'* * * * * *': 'every minute',
'0 * * * *': 'every hour',
'0 * * * * *': 'every hour',
'0 0 * * * *': 'every day at 12:00 AM',
'0 0 * * *': 'every day at 12:00 AM',
'0 0 1 * *': '12:00 AM on the 1st day of every month',
'0 0 1 * * *': '12:00 AM on the 1st day of every month'
}
// Returns nothing, a comma, or 'and'
// depending on a list and the position of the
// element in the list
export const oxfordList = (list, i) => {
const required = list.length > 2
const isTwoElements = list.length == 2
const isLast = i + 1 == list.length
const isSecondToLast = i + 2 == list.length
if (required && !isLast && !isSecondToLast) {
return ', '
}
if (required && isSecondToLast) {
return ', and '
}
if (isTwoElements && i === 0) {
return ' and '
}
return ''
}
================================================
FILE: src/utils/curveMetro.js
================================================
function Turn(context) {
this._context = context
}
export function isDiagonal(x1, y1, x2, y2) {
return x2 !== x1 && y2 !== y1
}
export function makeQuadraticBezierPoints(x1, y1, x2, y2) {
const turnDist = 0.3
let py1 = 0,
py2 = 0,
dy = y2 - y1,
dist = Math.abs(dy) * turnDist
if (dy > 0) {
py1 = y1 + dist
py2 = y2 - dist
} else {
py1 = y1 - dist
py2 = y2 + dist
}
return [
[x1, py1],
[x2, py2]
]
}
Turn.prototype = {
lineStart: function() {
this._point = 0
this._x = this._y = null
},
lineEnd: function() {},
point: function(x, y) {
x = +x
y = +y
switch (this._point) {
case 0:
this._context.moveTo(x, y)
this._point = 1
break
default:
this._point = 2
if (isDiagonal(this._x, this._y, x, y)) {
let to = makeQuadraticBezierPoints(this._x, this._y, x, y)
this._context.lineTo(...to[0])
this._context.lineTo(...to[1])
}
this._context.lineTo(x, y)
break
}
this._x = x
this._y = y
}
}
export const curveMetro = function(context) {
return new Turn(context)
}
================================================
FILE: src/utils/dateTime.js
================================================
import { duration } from '@/utils/moment'
import moment from '@/utils/moment'
import { toPluralString } from '@/utils/string'
export const MS_PER_SECOND = 1000
export const MS_PER_MINUTE = MS_PER_SECOND * 60
export const MS_PER_HOUR = MS_PER_MINUTE * 60
export const MS_PER_DAY = MS_PER_HOUR * 24
export const runTimeToEnglish = (startDate, endDate) => {
if (
!startDate ||
!endDate ||
!(startDate instanceof Date) ||
!(endDate instanceof Date)
) {
return ''
}
const runTimeInMilliseconds = endDate - startDate
const runTime = duration(runTimeInMilliseconds)
if (runTimeInMilliseconds === 0) {
return '0 seconds'
} else if (runTime >= duration(1, 'week')) {
return runTime.format('w [weeks], d [days], h [hours]')
} else if (runTime >= duration(1, 'day')) {
return runTime.format('d [days], h [hours], m [minutes]')
} else if (runTime >= duration(1, 'hour')) {
return runTime.format('h [hours], m [minutes], s [seconds]')
} else if (runTime >= duration(1, 'minute')) {
return runTime.format('m [minutes], s [seconds]')
} else if (runTime >= duration(1, 'second')) {
return runTime.format('s [seconds]')
} else if (runTime < duration(1, 'second')) {
return '~1 second'
}
return runTime.humanize()
}
export const durationToEnglish = durationString => {
if (!durationString) return ''
const runTime = duration(durationString)
if (runTime >= duration(1, 'week')) {
return runTime.format('w [weeks], d [days], h [hours]')
} else if (runTime >= duration(1, 'day')) {
return runTime.format('d [days], h [hours], m [minutes]')
} else if (runTime >= duration(1, 'hour')) {
return runTime.format('h [hours], m [minutes], s [seconds]')
} else if (runTime >= duration(1, 'minute')) {
return runTime.format('m [minutes], s [seconds]')
} else if (runTime >= duration(1, 'second')) {
return runTime.format('s [seconds]')
} else if (runTime < duration(1, 'second')) {
return '< 1 second'
}
return runTime.humanize()
}
export const intervalToEnglish = numberOfMilliseconds => {
if (numberOfMilliseconds === 604800000) {
return 'Weekly'
} else if (numberOfMilliseconds === 86400000) {
return 'Daily'
} else if (numberOfMilliseconds === 3600000) {
return 'Hourly'
} else if (numberOfMilliseconds === 60000) {
return 'Every minute'
} else if (numberOfMilliseconds === 1000) {
return 'Every second'
}
const interval = duration(numberOfMilliseconds)
if (interval > duration(1, 'week')) {
return interval.format('[Every] w [weeks], d [days], h [hours]', {
trim: 'both'
})
} else if (interval > duration(1, 'day')) {
return interval.format('[Every] d [days], h [hours], m [minutes]', {
trim: 'both'
})
} else if (interval > duration(1, 'hour')) {
return interval.format('[Every] h [hours], m [minutes], s [seconds]', {
trim: 'both'
})
} else if (interval > duration(1, 'minute')) {
return interval.format('[Every] m [minutes], s [seconds]', { trim: 'both' })
} else if (interval < duration(1, 'minute')) {
return interval.format('[Every] s [seconds]', { trim: 'both' })
}
return ''
}
export const oneAgo = unitOftime => {
return moment
.utc()
.subtract(1, unitOftime)
.format()
}
export const roundedOneAgo = unitOftime => {
let roundedTo
switch (unitOftime) {
case 'year':
roundedTo = 'month'
break
case 'month':
roundedTo = 'day'
break
case 'day':
roundedTo = 'hour'
break
case 'hour':
roundedTo = 'minute'
break
case 'minute':
roundedTo = 'second'
break
}
return moment
.utc()
.subtract(1, unitOftime)
.startOf(roundedTo)
.format()
}
export function isIsoDateString(value) {
return /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d/.test(value)
}
export function getMillisecondsUntilNextSecond() {
const now = new Date()
return MS_PER_SECOND - now.getMilliseconds()
}
export function getMillisecondsUntilNextMinute() {
const now = new Date()
return MS_PER_MINUTE - now.getSeconds() * getMillisecondsUntilNextSecond()
}
export function getMillisecondsUntilNextHour() {
const now = new Date()
return MS_PER_HOUR - now.getMinutes() * getMillisecondsUntilNextMinute()
}
export function durationDifference(start, end) {
const difference = end - start
const day = Math.floor(difference / MS_PER_DAY)
const hour = Math.floor((difference % MS_PER_DAY) / MS_PER_HOUR)
const minute = Math.floor((difference % MS_PER_HOUR) / MS_PER_MINUTE)
const second = Math.floor((difference % MS_PER_MINUTE) / MS_PER_SECOND)
return { day, hour, minute, second }
}
export function toDurationDifferenceString(durationDifference) {
return Object.entries(durationDifference)
.reduce((blocks, [key, value]) => {
if (blocks.length < 2 && value > 0) {
blocks.push(`${value} ${toPluralString(key, value)}`)
}
return blocks
}, [])
.join(', ')
}
================================================
FILE: src/utils/error.js
================================================
export const ERROR_MESSAGE =
'Oops! Something went wrong - please try again in a few minutes. If the issue persists, try logging out and back in again.'
================================================
FILE: src/utils/features.js
================================================
export const featureTypes = [
{
color: 'accentOrange',
type: 'version-locking',
title: 'Version Locking',
icon: 'lock',
text:
'Ensure your flows and tasks never run unexpectedly with opt-in version-locking.',
link:
'https://docs.prefect.io/orchestration/concepts/flows.html#flow-settings'
},
{
color: 'accentCyan',
type: 'concurrency-limit',
title: 'Task Concurrency',
icon: 'pi-task-run',
text:
'Create team-wide task concurrency limits for fine-grained control of your running tasks - without ever leaving the UI.',
link:
'https://docs.prefect.io/orchestration/concepts/task-concurrency-limiting.html'
},
{
color: 'accentPink',
type: 'audit-trail',
title: 'Audit Trail',
icon: 'verified',
text:
"Keep a record of all actions in your tenant to better understand your team's workflow and ensure security compliance.",
link: ''
}
]
================================================
FILE: src/utils/html.js
================================================
export function escapeHTML(value) {
return value
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
}
================================================
FILE: src/utils/json.js
================================================
import jsBeautify from 'js-beautify'
export function tryFormatJson(value) {
if (value == null || typeof value !== 'object') {
return value
}
try {
return formatJson(value)
} catch {
return null
}
}
export function tryFormatSingleLineJson(value) {
if (value == null || typeof value !== 'object') {
return value
}
try {
return formatSingleLineJson(value)
} catch {
return null
}
}
export function formatJson(value) {
return jsBeautify(JSON.stringify(value), {
indent_size: 2,
space_in_empty_paren: true,
preserve_newlines: false
})
}
export function formatSingleLineJson(value) {
const formatted = jsBeautify(JSON.stringify(value), {
indent_size: 0,
space_in_empty_paren: true,
preserve_newlines: false
})
return formatted.replace(/\n/g, ' ')
}
export function tryParseJson(value) {
try {
return parseJson(value)
} catch {
return null
}
}
export function parseJson(value) {
return JSON.parse(value)
}
export function isValidJson(value) {
try {
parseJson(value)
return true
} catch {
return false
}
}
================================================
FILE: src/utils/markdownParser.js
================================================
import remark from 'remark'
import html from 'remark-html'
import breaks from 'remark-breaks'
import slug from 'remark-slug'
import headings from 'remark-autolink-headings'
import gfm from 'remark-gfm'
import all from 'mdast-util-to-hast/lib/all'
import normalize from 'mdurl/encode'
import u from 'unist-builder'
import table from 'mdast-util-to-hast/lib/handlers/table'
export function parser(md) {
let result = ''
if (typeof md === 'string') {
remark()
.use(breaks)
.use(slug)
.use(headings, {
content: {
type: 'text',
value: '# '
}
})
.use(html, {
sanitize: {
clobberPrefix: ''
}
})
.process(md, (err, file) => {
result = String(file)
})
} else {
result = `Error! A ${typeof md} was passed in instead of a string`
}
return result
}
export function artifact_parser(md) {
let result = ''
if (typeof md === 'string') {
remark()
.use(breaks)
.use(slug)
.use(gfm)
.use(html, {
handlers: {
heading: function(h, node) {
node.data = {
hProperties: { className: ['h' + node.depth, 'mt-6'] }
}
return h(node, 'h' + node.depth, all(h, node))
},
link: function(h, node) {
let props = { href: normalize(node.url), target: '_blank' }
if (node.title !== null && node.title !== undefined) {
props.title = node.title
}
return h(node.position, 'span', [
h(node, 'a', props, all(h, node)),
h(node.position, 'sup', [
h(
node.position,
'i',
{
className: 'v-icon notranslate material-icons theme--light',
style: 'font-size: 12px'
},
[u('text', 'open_in_new')]
)
])
])
},
paragraph: function(h, node) {
node.data = {
hProperties: { className: 'text-body-1' }
}
return h(node, 'p', all(h, node))
},
strong: function(h, node) {
node.data = {
hProperties: { className: 'font-weight-medium' }
}
return h(node, 'span', all(h, node))
},
table: function(h, node) {
node.data = {
hProperties: {
className: [
'my-3',
'grey',
'lighten-5',
'px-4',
'py-2',
'text--darken-2',
'blue-grey--text'
]
}
}
return table(h, node)
},
thematicBreak: function(h, node) {
node.data = {
hProperties: { className: ['my-6'] }
}
return h(node, 'hr')
}
}
})
.process(md, (err, str) => {
result = String(str)
})
} else {
result = `Error! A ${typeof md} was passed in instead of a string`
}
return result
}
export function getRoutes() {
const context = require.context('../pages/Tutorials/Markdown')
const obj = context
.keys()
.map(context)
.map((content, i) => {
const htmlStr = parser(content)
const removeSlash = context.keys()[i].replace(/\//g, '')
const removePeriod = removeSlash.replace(/\./, '')
const file = removePeriod.replace(/\.md/, '')
const allIds = htmlStr.match(/id="(.*?)"/gm).map(id => {
const getIDName = id.replace(/id="/gm, '#').replace(/^"|"$/g, '')
return { name: getIDName, file }
})
return { name: file, children: allIds }
})
return obj
}
================================================
FILE: src/utils/moment.js
================================================
/*
Why? momentDurationFormat is a plugin for moment.js
Because plugins for moment look for the defined moment instance by default, I'd like to use this file to install plugins for moment and then export particular functions from moment so that I can use plugins from those functions.
For example, with the code below Vue components can now:
import { duration } from '@/utils/moment'
and use duration({{ input }}).format() without having to import moment and moment-duration-format.
*/
import moment from 'moment-timezone'
// eslint-disable-next-line no-unused-vars
import momentDurationFormat from 'moment-duration-format'
export const duration = moment.duration
export default moment
================================================
FILE: src/utils/ordinal.js
================================================
export const ordinal = n => {
n = parseInt(n)
return (
['st', 'nd', 'rd'][(((((n < 0 ? -n : n) + 90) % 100) - 10) % 10) - 1] ||
'th'
)
}
================================================
FILE: src/utils/plans.js
================================================
export const PLANS_2021 = {
free: {
name: 'Free',
price: 'Free',
taskRuns: 20000,
additionalCost: 0,
users: 1,
value: 'FREE_2021',
history: 'week',
title: 'developer'
},
starter: {
name: 'Starter',
price: '0.0025',
taskRuns: 20000,
additionalCost: null,
users: 1,
value: 'STARTER_2021',
history: 'week',
title: 'starter'
},
standard: {
name: 'Standard',
price: '0.0050',
taskRuns: 20000,
additionalCost: null,
value: 'STANDARD_2021',
users: 3,
history: 'month',
title: 'standard'
},
enterprise: {
name: 'Enterprise',
price: 'contact',
value: 'ENTERPRISE_2021',
taskRuns: 0,
additionalCost: 0.0025,
users: 'unlimited',
history: 'year',
title: 'enterprise'
}
}
export const basicFeatures = [
{
name: 'Robust Scheduling',
description:
'Create custom schedules including business days, offsets, and blackout windows, or fall back on good old cron.'
},
{
name: 'Intelligent Scheduling',
description:
'Schedule varying parameter values or even where your runs should occur'
},
{
name: 'Artifacts',
description: 'Publish custom data and render it in the Prefect UI'
},
{
name: 'Mapping',
description: 'Dynamically generate parallel pipelines at runtime'
},
{
name: 'Retries',
description:
'Advanced checkpointing and real-time state reporting protect you from the unexpected'
},
{
name: 'Run History',
description:
'Use the Prefect UI to manage all of your flow runs, no matter how often or where they run'
},
{
name: 'Dataflow Automation',
description:
'Pass data between tasks for complex processing and advanced analytics'
},
{
name: 'Caching',
description:
'Persist the results of complex tasks with custom validation logic'
},
{
name: 'Versioning',
description:
"Every Prefect flow is automatically versioned, so you're always up-to-date"
}
]
export const infrastructureFeatures = [
{
name: 'Hosted Orchestration Platform',
description:
'Focus on your code while Prefect Cloud manages a highly-available orchestration API',
plan: 'starter',
value: 1
},
{
name: 'Performance',
description: 'Run tasks as fast as your infrastructure allows',
plan: 'starter',
value: 1
},
{
name: 'API Security',
description: 'Permission access via API tokens',
plan: 'starter',
value: 1
},
{
name: 'Automatic Updates',
description:
'Prefect Cloud releases every two weeks with new features and performance enhancements',
plan: 'starter',
value: 1
},
{
name: 'Raise Rate Limits',
description: 'TK',
plan: 'enterprise',
value: 3
}
]
export const observabilityFeatures = [
{
name: 'Logs Management',
description: 'Stream, filter, and examine all of your workflow logs',
plan: 'starter',
value: 1
},
{
name: 'Advanced Alerting',
description: 'Configure notifications when custom criteria are met',
plan: 'standard',
value: 2
},
{
name: 'Flow SLAs',
description: 'Set SLAs for late or long-running workflows',
plan: 'standard',
value: 2
},
{
name: 'Agent SLAs',
description: 'Set SLAs for agents to ensure uptime',
plan: 'standard',
value: 2
},
{
name: 'History Retention',
description: 'Track one year of run history',
plan: 'enterprise',
value: 3
},
{
name: 'Audit Trail',
description: 'Track every action taken via the Prefect API',
plan: 'enterprise',
value: 3
}
]
export const orchestrationFeatures = [
{
name: 'Stateless Deployments',
description:
'Spin up and tear down agent deployments with ease - Prefect Cloud manages all state for you',
plan: 'starter',
value: 1
},
{
name: 'Multiple Execution Environments',
description:
'Promote your workflows from dev to prod with a single API call, or schedule them to run in multiple places at once!',
plan: 'starter',
value: 1
},
{
name: 'Secrets',
description: 'Manage sensitive information',
plan: 'starter',
value: 1
},
{
name: 'Advanced Automation',
description:
'Automatically configure API actions when custom criteria are met',
plan: 'standard',
value: 2
},
{
name: 'Concurrency Limits',
description:
'Set concurrency limits at the flow or task level to control access to resources',
plan: 'standard',
value: 2
}
]
export const authorizationFeatures = [
{
name: 'Team Management',
description:
'Get a complete view of everyone who can access your workflows',
plan: 'starter',
value: 1
},
{
name: 'Read-Only Users',
description: 'Invite analyts to work with the output of your workflows',
plan: 'standard',
value: 2
},
{
name: 'Custom Permissions',
description: 'Assign granular permissions, including per-project limits',
plan: 'enterprise',
value: 3
},
{
name: 'SSO',
description: 'Log in to Prefect Cloud via SSO',
plan: 'enterprise',
value: 3
},
{
name: 'Custom Roles',
description: 'Create and assign custom roles',
plan: 'enterprise',
value: 3
}
]
================================================
FILE: src/utils/regEx.js
================================================
const EMAIL_REGEX = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
const PARSED_SCHEDULE_REGEX = /([0-9]{1,2}:?[0-9]{0,2})|(?:am|pm|days|day|years|year|weeks|week|hours|hour|minutes|minute|seconds|second|monday|tuesday|wednesday|thursday|friday|saturday|sunday|january|february|march|april|may|june|july|august|september|october|november|december)/gim
// These work in most cases but don't protect against double dashes or slashes
// e.g. 5/6/7 or 5-6-7
// It gives us a pretty reasonable approximation of a valid string though.
// [1-5]?[0-9]
// Tests: https://regex101.com/r/e588QW/1
const CRON_MINUTE_REGEX = /(^\*{1})$|(^(\*\/)?[1-5]?[0-9](?:[,-/][1-5]?[0-9])*$)/i
// 2[0-3]|1[0-9]|[0-9]
// Tests: https://regex101.com/r/5cbtnj/1
const CRON_HOUR_REGEX = /^(^\*{1})$|(^(\*\/)?(2[0-3]|1[0-9]|[0-9])(?:[,-/](2[0-3]|1[0-9]|[0-9]))*$)/i
// 3[01]|[12][0-9]|[1-9]
// Tests: https://regex101.com/r/y1auyB/1
const CRON_DAY_MONTH_REGEX = /^(\*{1})$|(^(\*\/)?(3[01]|[12][0-9]|[1-9])(?:[,-/](3[01]|[12][0-9]|[1-9]))*$)/i
// 1[0-2]|[1-9]
// Tests: https://regex101.com/r/dPw34Y/1
const CRON_MONTH_REGEX = /^(\*{1})$|(^(\*\/)?(1[0-2]|[1-9])(?:[,-/](1[0-2]|[1-9]))*$)|(^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(?:[,-/](jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))*$)/i
// [0-6]
// Tests: https://regex101.com/r/G4cbea/1
const CRON_DAY_WEEK_REGEX = /^(\*{1})$|(^(\*\/)?([0-6])(?:[,-/#]([0-6]))*$)|(^(sun|mon|tue|wed|thu|fri|sat)(?:[,-/#](sun|mon|tue|wed|thu|fri|sat))*$)/i
export {
EMAIL_REGEX,
PARSED_SCHEDULE_REGEX,
CRON_MINUTE_REGEX,
CRON_HOUR_REGEX,
CRON_DAY_MONTH_REGEX,
CRON_MONTH_REGEX,
CRON_DAY_WEEK_REGEX
}
================================================
FILE: src/utils/roles.js
================================================
export const ROLE_MAP = {
READ_ONLY_USER: 'Read only',
ENTERPRISE_LICENSE_ADMIN: 'License administrator',
USER: 'User',
TENANT_ADMIN: 'Administrator',
PENDING: 'Pending'
}
export const ROLE_COLOR_MAP = {
USER: 'codeBlueBright',
ENTERPRISE_LICENSE_ADMIN: 'accent',
READ_ONLY_USER: 'cloudUIPrimaryDark',
TENANT_ADMIN: 'cloudUIPrimaryBlue',
PENDING: 'accentOrange'
}
================================================
FILE: src/utils/states.js
================================================
export const STATE_COLORS = {
Failed: '#eb0000',
Pending: '#b9dcff',
Scheduled: '#ffbe1e',
ScheduledAlt: '#ffeec4',
Retrying: '#fc7b09',
Resume: '#f58c0c',
Queued: '#fff9c2',
Submitted: '#fff499',
Paused: '#99a8e8',
Running: '#27b1ff',
Listening: '#93d8ff',
Finished: '#003483',
Success: '#2cbe4e',
Cancelled: '#bdbdbd',
Cancelling: '#E8E8E8',
Cached: '#74c367',
TriggerFailed: '#c42800',
Skipped: '#607583',
TimedOut: '#dc370b',
Mapped: '#4067a2',
Looped: '#4c4cff',
InProgress: '#93d2cc'
}
export const STATE_TYPES = {
Failed: 'Finished',
Pending: 'Pending',
Scheduled: 'Pending',
Retrying: 'Pending',
Resume: 'Pending',
Submitted: 'Pending',
Paused: 'Pending',
Queued: 'Pending',
Running: 'Running',
Listening: 'Running',
Finished: 'Finished',
Success: 'Finished',
Cancelled: 'Finished',
Cancelling: 'Running',
Cached: 'Finished',
TriggerFailed: 'Finished',
Skipped: 'Finished',
TimedOut: 'Finished',
Mapped: 'Finished',
Looped: 'Finished'
}
export const STATE_NAMES = [
'All',
'Success',
'Failed',
'Finished',
'Scheduled',
'Pending',
'Running',
'Cancelled',
'Cancelling',
'Cached',
'Retrying',
'Queued',
'Paused',
'Mapped',
'Looped',
'Skipped',
'Resume',
'Submitted',
'TriggerFailed',
'ValidationFailed'
]
export const STATE_PAST_TENSE = {
Failed: 'failed',
Pending: 'are pending',
Scheduled: 'are scheduled',
Retrying: 'retried',
Resuming: 'were resumed',
Submitted: 'are submitted',
Paused: 'are paused',
Queued: 'are queued',
Running: 'are running',
Listening: 'are listening',
Finished: 'are finished',
Success: 'succeeded',
Cancelled: 'were cancelled',
Cancelling: 'are cancelling',
Cached: 'are cached',
TriggerFailed: 'had failed triggers',
Skipped: 'were skipped',
TimedOut: 'timed out',
Mapped: 'were mapped',
Looped: 'were looped'
}
export const FINISHED_STATES = [
'Finished',
'Looped',
'Success',
'Cancelled',
'Failed',
'TriggerFailed',
'ValidationFailed',
'TimedOut',
'Cached',
'Mapped',
'Skipped'
]
export function calculateDuration(startTime, endTime, state) {
if (endTime) {
return endTime
}
if (FINISHED_STATES.includes(state)) {
return startTime
}
return null
}
export default function(state) {
return STATE_COLORS[state]
}
================================================
FILE: src/utils/string.js
================================================
export function toPluralString(word, count) {
if (count == 1) {
return word
}
const ending = ['s', 'sh', 'ch', 'x', 'z'].some(chars => word.endsWith(chars))
? 'es'
: 's'
return `${word}${ending}`
}
================================================
FILE: src/utils/types.js
================================================
export const types = [
'None',
'Boolean',
'Integer',
'String',
'Dictionary',
'List',
'Date'
]
export function isValidType(type) {
return types.includes(type)
}
================================================
FILE: src/utils/yaml.js
================================================
import YAML from 'yaml'
export function formatYaml(value) {
if (value == null) {
return null
}
try {
return YAML.stringify(value)
} catch {
return null
}
}
export function tryParseYaml(value) {
try {
return parseYaml(value)
} catch {
return null
}
}
export function parseYaml(value) {
return YAML.parse(value)
}
export function isValidYaml(value) {
try {
parseYaml(value)
return true
} catch {
return false
}
}
================================================
FILE: src/vue-apollo.js
================================================
import Vue from 'vue'
import VueApollo from 'vue-apollo'
import {
createApolloClient,
restartWebsockets
} from 'vue-cli-plugin-apollo/graphql-client'
import store from '@/store/index'
import { setContext } from 'apollo-link-context'
import { ApolloLink, Observable } from 'apollo-link'
import { BatchHttpLink } from 'apollo-link-batch-http'
import { onError } from 'apollo-link-error'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { HttpLink } from '@apollo/client'
import LogRocket from 'logrocket'
// Install the vue plugin
Vue.use(VueApollo)
// Name of the localStorage item
const AUTH_TOKEN = 'authorization_token'
function isExpired(expiry) {
return new Date().getTime() > expiry
}
function notExpired(expiry) {
return !isExpired(expiry)
}
let errors = 0,
apiErrors = 0
const batchLink = new BatchHttpLink({
batchMax: 25,
batchInterval: 2000,
uri: () => store.getters['api/url']
})
const httpLink = new HttpLink({ uri: () => store.getters['api/url'] })
// Resets the cache and stops requests if
// the backend has changed
const backendMiddleware = new ApolloLink((operation, forward) => {
const context = operation.getContext()
if (context.headers?.['X-Backend'] !== store.getters['api/backend']) {
defaultApolloClient.cache.reset()
return
}
return forward(operation).map(response => {
errors = 0
apiErrors = 0
return response
})
})
// Used to identify the request in the server
const headerMiddleware = setContext((_, { headers }) => {
headers['X-Prefect-UI'] = true
headers['X-Backend'] = store.getters['api/backend']
headers['X-Prefect-Tenant-ID'] = store.getters['tenant/tenant'].id
headers['X-Prefect-User-ID'] = store.getters['user/user'].id
headers['X-Frame-Options'] = 'deny'
headers['X-Content-Type-Options'] = 'nosniff'
headers['X-Permitted-Cross-Domain-Policies'] = 'none'
headers['Content-Security-Policy'] = "default-src 'self'"
return {
headers: {
...headers
}
}
})
// After requests have been made, formats errors for the JS console
// to easily track the error sources in collapsible traces
const errorAfterware = onError(
({ response, operation, graphQLErrors, networkError, forward }) => {
// Only throw the API error once in a row
// (prevents spamming the console when there's no connection)
if (operation.operationName === 'Api') {
if (apiErrors > 0) {
// TODO: fix this
Observable
// return Observable.of()
}
apiErrors++
}
if (process.env.NODE_ENV !== 'production') {
/* eslint-disable no-console */
console.groupCollapsed(
`%c${operation.operationName || 'Unnamed Query'} error`,
'color: #D64292; font-weight:bold;'
)
console.log('Operation: ', operation)
if (graphQLErrors?.length > 0) {
console.group('%cGraphQL Errors', 'color: #CA9800; font-weight:bold;')
graphQLErrors?.forEach(error => {
console.group(
`%c${error.extensions?.code || 'ERROR'}`,
'color: #B11A04; font-weight:bold;'
)
console.log(`Message: ${error.message}`)
console.log('Full log: ', error)
console.groupEnd()
})
console.groupEnd()
}
if (networkError) {
console.group('%cNetwork Error', 'color: #CA9800; font-weight:bold;')
console.log(networkError)
console.groupEnd()
}
console.groupEnd()
/* eslint-enable no-console */
}
if (
store.getters['api/isCloud'] &&
graphQLErrors?.[0].message === 'Operation timed out'
) {
LogRocket.captureException(operation, {
type: 'Timeout'
})
// For now we just capture Cloud errors,
// we can expand this if it's helpful for debugging later
} else if (
(store.getters['api/isCloud'] && graphQLErrors) ||
networkError
) {
if (graphQLErrors) {
LogRocket.captureException(graphQLErrors, {
type: 'GraphQL Errors'
})
} else if (networkError)
LogRocket.captureException(networkError, {
type: 'Network Error'
})
}
if (response) {
response.errors = null
}
errors++
if (errors > 10) {
defaultApolloClient.stop()
}
// Can return Observable.of returned from error link to supress errors
// otherwise return forward(operation)
// for a single retry of the failure
// if (process.env.NODE_ENV !== 'production') return Observable.of()
return forward(operation)
}
)
export { errorAfterware }
// Adds authorization headers to requests headed for the Cloud API;
// just forwards requests if headed for a Server API
const authMiddleware = setContext(async (_, { headers }) => {
if (store.getters['api/isServer']) {
return {
headers: {
...headers
}
}
}
const bearer = `Bearer ${store.getters['auth/authorizationToken']}`
return {
headers: {
...headers,
authorization: bearer,
'authorization-expiry': store.getters['auth/authorizationTokenExpiry']
}
}
})
// The last link in the chain before the request is sent;
// Checks that the request should be sent based on authorization header expiration
// and stops the request if it shouldn't be
const terminalRequestLink = new ApolloLink((operation, forward) => {
if (store.getters['api/isServer']) return forward(operation)
const context = operation.getContext()
const expiration = context.headers?.['authorization-expiry']
// If there's no expiration, we forward the operation
if (!expiration) return forward(operation)
// otherwise we check that the authorization header hasn't expired before
// forwarding the request
if (notExpired(expiration)) return forward(operation)
})
// Apollo link chain; acts as middleware for GraphQL queries
const link = ApolloLink.from([
authMiddleware,
headerMiddleware,
backendMiddleware,
errorAfterware,
terminalRequestLink,
batchLink
])
const fallbackLink = ApolloLink.from([
authMiddleware,
headerMiddleware,
backendMiddleware,
errorAfterware,
terminalRequestLink,
httpLink
])
export const cache = new InMemoryCache({
resultCaching: false
})
// Config
export const defaultOptions = {
// You can use `https` for secure connection (recommended in production)
httpEndpoint: () => store.getters['api/url'],
// You can use `wss` for secure connection (recommended in production)
// Use `null` to disable subscriptions
wsEndpoint: null,
//'ws://localhost:4300',
// LocalStorage token
tokenName: AUTH_TOKEN,
// Enable Automatic Query persisting with Apollo Engine
persisting: false,
// Use websockets for everything (no HTTP)
// You need to pass a `wsEndpoint` for this to work
websocketsOnly: false,
// Is being rendered on the server?
ssr: false,
// Override default apollo link
// note: don't override httpLink here, specify httpLink options in the
// httpLinkOptions property of defaultOptions.
defaultHttpLink: false,
link: link,
// Override default cache
cache: cache,
// Override the way the Authorization header is set
// getAuth: () => ...
// Additional ApolloClient options
// apollo: { ... }
// Client local data (see apollo-link-state)
// clientState: { resolvers: { ... }, defaults: { ... } }
queryDeduplication: true
}
let defaultApolloClient
let fallbackApolloClient
// Create apollo client
export const createApolloProvider = (options = defaultOptions) => {
const { apolloClient, wsClient } = createApolloClient({
id: 'initial',
...options
})
apolloClient.wsClient = wsClient
// Create vue apollo provider
const apolloProvider = new VueApollo({
defaultClient: apolloClient,
defaultOptions: {
$query: {
errorPolicy: 'all',
fetchPolicy: 'cache-and-network'
},
$subscription: {
errorPolicy: 'all'
}
}
})
return apolloProvider
}
export const clearCache = () => {
defaultApolloClient.cache.reset()
}
export const defaultApolloProvider = createApolloProvider()
defaultApolloClient = defaultApolloProvider.defaultClient
export { defaultApolloClient }
// This is the client we use that is not subject to the stop/restarts of the application
export const fallbackApolloProvider = createApolloProvider({
...defaultOptions,
link: fallbackLink
})
fallbackApolloClient = fallbackApolloProvider.defaultClient
export { fallbackApolloClient }
export async function apolloOnLogin(apolloClient) {
if (apolloClient.wsClient) restartWebsockets(apolloClient.wsClient)
await apolloClient.clearStore()
}
export async function apolloOnLogout(apolloClient) {
if (apolloClient.wsClient) restartWebsockets(apolloClient.wsClient)
await apolloClient.clearStore()
}
================================================
FILE: src/workers/auth.worker.js
================================================
import {
authorize,
refreshTokens,
authorizeTenant
} from '@/auth/authorization.js'
import jwt_decode from 'jwt-decode'
const ports = []
const channelPorts = []
/*
values in the tokens Array take the form:
interface TenantTokens {
tenantId: string
authorizationToken: string
refreshToken: string
}
*/
const state = {
idToken: null,
authorizationToken: null,
tenantId: null
}
const postToConnections = payload => {
for (let i = 0; i < ports.length; ++i) {
ports[i].postMessage(payload)
}
}
const postToChannelPorts = payload => {
for (let i = 0; i < ports.length; ++i) {
channelPorts[i]?.postMessage(payload)
}
channelPorts.length = 0
}
console.connect = payload => {
// eslint-disable
console.groupCollapsed('Auth worker trace', payload)
console.log(payload)
console.trace()
console.groupEnd()
// eslint-enable
for (let i = 0; i < ports.length; ++i) {
ports[i].postMessage({
type: 'console',
payload: payload
})
}
}
const refreshAuthorizationToken = async () => {
const authorizationResponse = await refreshTokens(
state.authorizationToken.access_token,
state.authorizationToken.refresh_token
)
setAuthorizationToken(authorizationResponse)
}
const handleSwitchTenant = async tenantId => {
const authorizationResponse = await authorizeTenant(
state.authorizationToken.access_token,
tenantId
)
setAuthorizationToken(authorizationResponse)
postToConnections({
type: 'switch-tenant',
payload: { token: state.authorizationToken, tenantId: tenantId }
})
console.connect({
message: 'handleSwitchTenant',
tokenExpiration: state.authorizationToken?.expires_at || 'No token',
tenantId: tenantId,
currentTime: Date.now()
})
}
let authorizationTimeout = null
const setAuthorizationToken = token => {
clearTimeout(authorizationTimeout)
state.authorizationToken = token
postToChannelPorts({
type: 'authorizationToken',
payload: state.authorizationToken
})
postToConnections({
type: 'authorizationToken',
payload: state.authorizationToken
})
try {
const expiration = new Date(token.expires_at)
const timeout = ((expiration - Date.now()) * 3) / 4
console.connect({
message: 'setAuthorizationToken',
tokenExpiration: token.expires_at || 'No token',
currentTime: new Date().toString()
})
authorizationTimeout = setTimeout(() => {
refreshAuthorizationToken()
}, timeout || 15000)
} catch (e) {
clearTimeout(authorizationTimeout)
postToConnections({ type: 'error', payload: e })
}
}
const handleLogin = async () => {
console.connect({
message: 'handleLogin',
tokenExpiration: state.idToken?.expiresAt
? state.idToken.expiresAt * 1000
: 'No Token',
currentTime: new Date().toString()
})
postToChannelPorts({ payload: state.idToken })
}
const handleLogout = () => {
state.idToken = null
state.authorizationToken = null
postToConnections({ type: 'logout' })
console.connect({
message: 'handleLogout',
tenantId: state.tenantId,
currentTime: new Date().toString()
})
}
const handleClear = () => {
state.idToken = null
state.authorizationToken = null
console.connect({
message: 'handleClear',
tenantId: state.tenantId || 'No tenant',
currentTime: new Date().toString()
})
}
let authorizing = false
const handleAuthorize = async idToken => {
authorizing = true
if (
!state.authorizationToken ||
(state.authorizationToken &&
new Date(state.authorizationToken.expires_at) <= Date.now())
) {
const authorizationResponse = await authorize(idToken)
if (authorizationResponse && authorizationResponse.access_token) {
setAuthorizationToken(authorizationResponse)
} else {
postToConnections({ type: 'accessDenied', payload: state.idToken })
}
}
postToChannelPorts({ payload: state.authorizationToken })
authorizing = false
}
const connect = c => {
const port = c.ports[0]
ports.push(port)
port.onmessage = async e => {
try {
const type = e.data?.type
const channelPort = e.ports[0]
const payload = e.data?.payload
if (type == 'login') {
channelPorts.push(channelPort)
await handleLogin()
}
if (type == 'idToken') {
state.idToken = payload
}
if (type == 'logout') {
handleLogout()
}
if (type == 'authorize') {
channelPorts.push(channelPort)
if (!authorizing) {
await handleAuthorize(payload)
}
}
if (type == 'switch-tenant') {
channelPorts.push(channelPort)
await handleSwitchTenant(payload)
}
if (type == 'clear') {
handleClear()
}
} catch (e) {
postToConnections({ type: 'error', payload: e })
}
}
port.start() // Required when using addEventListener. Otherwise called implicitly by onmessage setter.
}
self.onconnect = connect
self.onerror = e => {
// eslint-disable-next-line no-console
console.log('in error handler', e)
console.connect({
message: 'error',
error: e
})
}
================================================
FILE: src/workers/cache.worker.js
================================================
================================================
FILE: src/workers/schematic.js
================================================
import { Tree } from '@/utils/Tree'
import * as d3_dag from 'd3-dag'
global.process = process
// eslint-disable-next-line no-global-assign
// window = undefined
// Add our custom curve to d3 base
// and then merges the libraries together into one
// access point
const d3 = Object.assign({}, d3_dag)
let layout, dag
export function GenerateTree(data) {
let tree = new Tree(Object.assign({}, data))
return tree
}
export function Stratify(data) {
dag = d3.dagStratify()(data)
dag.each(node => (node.heightRatio = 1))
return dag
}
export function GenerateLayout(data) {
const tree = data.tree
const height = data.height
const layoutPlan = data.layoutPlan
const width = data.width
let canvasAdjustment = { h: null, w: null }
let links, descendants
// arquint - the layout algorithm of the graph - allows for node heights
// size - array of width/height
// decross - the amount of crossing edges that will be present in the
// layout; in order of speed (slowest to fastest):
// - decrossOpt (don't use this, it's v v slow for large graphs)
// - decrossTwoLayer().order(d3.twolayerOpt())
// - decrossTwoLayer
// columnWidth - function should return a number, ex: () => 1
// columnSeparation - space between columns; function should return a number, ex: () => 1
// interLayerSeparation - vertical distance between layers
// layering - node layer assignment (slowest to fastest):
// - layeringSimplex
// - layeringCoffmanGraham
// - layeringTopological
// - layeringLongestPath().topDown(false)
// - layeringLongestPath
// columnAssignment - node column assignment:
// Simple Left - columnSimpleLeft
// Simple Center - columnSimpleCenter
// Adjacent Left - columnAdjacent
// Adjacent Center - columnAdjacent.center(true)
// Complex Left - columnComplex
// Complex Center - columnComplex.center(true)
// column2Coord(d3.column2CoordRect()) - converts the column assignment of each node to actual x0 and x1 coordinates
// coord - coordinate assignment (slowest to fastest):
// Vertical - coordVert
// Minimum Curves - coordMinCurve
// Greedy - coordGreedy
// Center - coordCenter
//
if (tree.width <= 3 && tree.height <= 3) {
canvasAdjustment.h = height * 0.35
canvasAdjustment.w = width * 0.35
} else {
canvasAdjustment.h = height * (1 / tree.height)
canvasAdjustment.w = width * (1 / tree.width)
}
if (layoutPlan == 'sugiyama' && !layout) {
layout = d3
.sugiyama()
.size([width - canvasAdjustment.w, height - canvasAdjustment.h])
.layering(d3.layeringLongestPath().topDown(false))
// .decross(d3.decrossTwoLayer().order(d3.twolayerOpt())) // Disabling this due to runaway worker memory usage for large graphs
// .coord(d3.coordMinCurve()) // Disabling this due to some edge cases with quadratic positive definites
.separation((a, b) => {
return (a.data !== undefined) + (b.data !== undefined)
})
}
layout(dag)
descendants = dag.descendants()
links = dag.links()
return { canvasAdjustment, descendants, links }
}
================================================
FILE: src/workers/timeline.js
================================================
export function GenerateRows(items) {
const grid = []
const start = Date.now()
const end = Date.now()
const rowMap = {}
itemLoop: for (let i = 0; i < items.length; ++i) {
const item = items[i]
// If the item hasn't started yet, we distribute
// it to the row with the least items already
if (!item.start_time) {
const lengths = grid.map(row => row.length)
let row = lengths.indexOf(Math.min(...lengths))
rowMap[item.id] = row
if (!grid[row]) {
grid.push([[start, end]])
} else {
grid[row].push([start, end])
}
continue itemLoop
}
const start_ = item.start_time ? new Date(item.start_time).getTime() : null
const end_ = item.end_time ? new Date(item.end_time).getTime() : Date.now()
for (let row = 0; row <= grid.length; ++row) {
// If the current row doesn't exist, create it, put this item on it,
// and move to the next item
if (!grid[row]) {
rowMap[item.id] = row
grid.push([[start_, end_]])
continue itemLoop
}
if (!start_) {
const lengths = grid.map(row => row.length)
let row = lengths.indexOf(Math.min(...lengths))
rowMap[item.id] = row
grid[row].push([start_, end_])
continue itemLoop
}
// Otherwise check the start and end times against each
// start[0] and end[1] time in the row
let intersects = grid[row].some(
slot => end_ <= slot[0] - 2000 || start_ <= slot[1] + 2000
)
// let intersects = grid[row].some(
// slot => end <= slot[0] || start <= slot[1]
// )
if (!intersects) {
rowMap[item.id] = row
grid[row].push([start_, end_])
continue itemLoop
}
}
}
return { rowMap, rows: grid.length }
}
================================================
FILE: src/workers/util/worker-interface.js
================================================
// Returns a promise that awaits a message from a passed worker on a provisioned channel
export const promiseChannel = (worker, signalType, payload) =>
new Promise((res, rej) => {
const channel = new MessageChannel()
channel.port1.onmessage = data => {
channel.port1.close()
if (data.type == 'error') {
rej(data)
} else {
res(data.data.payload)
}
}
worker.port.postMessage({ type: signalType, payload: payload }, [
channel.port2
])
})
================================================
FILE: start_server.sh
================================================
#!/usr/bin/env bash
# Set default prefect_ui_settings if
# env vars not present
if [[ -z ${PREFECT_SERVER__APOLLO_URL} ]]
then
echo "Missing the PREFECT_SERVER__APOLLO_URL environment variable. Using default"
PREFECT_SERVER__APOLLO_URL="http://localhost:4200/graphql"
fi
if [[ -z ${PREFECT_SERVER__BASE_URL} ]]
then
echo "Missing the PREFECT_SERVER__BASE_URL environment variable. Using default"
PREFECT_SERVER__BASE_URL="/"
fi
sed -i "s,PREFECT_SERVER__APOLLO_URL,$PREFECT_SERVER__APOLLO_URL," /var/www/settings.json
sed -i "s,PREFECT_SERVER__BASE_URL,$PREFECT_SERVER__BASE_URL," /var/www/settings.json
echo "👾👾👾 UI running at localhost:8080 👾👾👾"
nginx -g "daemon off;"
================================================
FILE: stylelint.config.js
================================================
module.exports = {
root: true,
extends: ['stylelint-config-recommended', 'stylelint-config-sass-guidelines'],
plugins: ['stylelint-scss', 'stylelint-order', 'stylelint-a11y'],
rules: {
'max-nesting-depth': [
3,
{
ignoreAtRules: ['each', 'media', 'supports', 'include']
}
],
'function-parentheses-space-inside': 'never-single-line',
'a11y/no-outline-none': true,
'a11y/selector-pseudo-class-focus': true,
'a11y/content-property-no-static-value': [true, { severity: 'warning' }],
'a11y/font-size-is-readable': [true, { severity: 'warning' }],
'a11y/line-height-is-vertical-rhythmed': [true, { severity: 'warning' }],
'a11y/no-display-none': [true, { severity: 'warning' }],
'a11y/no-spread-text': [true, { severity: 'warning' }],
'a11y/no-obsolete-attribute': [true, { severity: 'warning' }],
'a11y/no-obsolete-element': [true, { severity: 'warning' }],
'a11y/no-text-align-justify': [true, { severity: 'warning' }]
}
}
================================================
FILE: tests/.eslintrc.js
================================================
module.exports = {
env: {
jest: true
}
}
================================================
FILE: tests/__mocks__/@auth0/auth0-js.js
================================================
export const mockAuthorize = jest.fn()
export const mockLogout = jest.fn()
export const mockParseHashResult = {
accessToken: '654334335242321',
idToken: '1432g435ewgh55y'
}
export const mockParseHash = jest
.fn()
.mockImplementationOnce(callback => {
callback(null, mockParseHashResult)
})
.mockImplementationOnce(callback => {
callback(new Error('test error'))
})
class WebAuth {
constructor() {
this.authorize = mockAuthorize
this.logout = mockLogout
this.parseHash = mockParseHash
}
}
const mock = {
WebAuth
}
export default mock
================================================
FILE: tests/__mocks__/@auth0/auth0-spa-js.js
================================================
export const handleRedirectCallback = jest.fn()
export const isAuthenticated = jest.fn().mockReturnValue(Math.random() >= 0.5)
export const getUser = jest.fn().mockReturnValue({})
export const getIdTokenClaims = jest.fn().mockReturnValue({ __raw: 'eyj' })
export const getTokenSilently = jest.fn()
export const loginWithRedirect = jest.fn()
export const logout = jest.fn()
export class Auth0Client {
constructor() {
this.__exists = true
this.handleRedirectCallback = handleRedirectCallback
this.isAuthenticated = isAuthenticated
this.getUser = getUser
this.getIdTokenClaims = getIdTokenClaims
this.loginWithRedirect = loginWithRedirect
this.logout = logout
this.getTokenSilently = getTokenSilently
}
}
export default function createAuth0Client() {
return new Promise(resolve => resolve(new Auth0Client()))
}
================================================
FILE: tests/__mocks__/@okta/okta-auth-js.js
================================================
const raw_jwt =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiYXdkYXdkYWRhLTQ5NDItNDhhNS04YzY2LWFkYXdkYWRhZCIsInRlbmFudF9pZCI6ImF3ZGF3ZGFkLWQ1NzAtNGYwYy05MTFkLWRjYWFiNWNlYzNkMCIsInJvbGUiOiJURU5BTlRfQURNSU4iLCJpYXQiOjE1Njg4NDAyODQsImV4cCI6MTkzMzk1NDA5OSwianRpIjoiMThiNDRhMTgtNTU2Yy00M2YzLTkxOWEtZDAwOWIwNDIzOTA3IiwiaXNzIjoiUHJlZmVjdCBDbG91ZCIsImF1ZCI6IlByZWZlY3QgQ2xvdWQgQVBJIC0gREVWIn0.iHL0fkdNxMnbRXNJuDwYlvdsaylh1gb-MaRJtuyaZLg'
export const idToken = {
authorizeUrl: 'https://some.authorization.url/oauth2/authorize',
claims: {
sub: 'abc123',
name: 'Marvin',
email: 'marvin@theship.com',
ver: 1,
iss: 'https://some.issuer.url/oauth2',
exp: 9999999999,
iat: 9999999999,
nonce: 'abc123'
},
clientId: '789xyz',
expiresAt: 9999999999,
idToken: raw_jwt,
issuer: 'https://some.issuer.url/oauth2',
scopes: ['openid', 'profile', 'email'],
value: raw_jwt
}
export const expiredIdToken = {
authorizeUrl: 'https://some.authorization.url/oauth2/authorize',
claims: {
sub: 'abc123',
name: 'Marvin',
email: 'marvin@theship.com',
ver: 1,
iss: 'https://some.issuer.url/oauth2',
exp: 1305389672,
iat: 1305389671,
nonce: 'abc123'
},
clientId: '789xyz',
expiresAt: 1305389672,
idToken: raw_jwt,
issuer: 'https://some.issuer.url/oauth2',
scopes: ['openid', 'profile', 'email'],
value: raw_jwt
}
export const accessToken = {
authorizeUrl:
'https://universal.prefect.io/oauth2/aus9ej78aeaYy8Lcf1d6/v1/authorize',
claims: {
aud: 'prefect',
cid: 'abc123',
exp: 9999999999,
iat: 9999999999,
iss: 'https://some.issuer.url/oauth2',
jti: '456xyz',
scp: (3)[('email', 'openid', 'profile')],
sub: 'nicholas@prefect.io',
uid: '00u9dbxkpyijFlaHF1d6',
ver: 1
},
expiresAt: 9999999999,
scopes: ['openid', 'profile', 'email'],
tokenType: 'Bearer',
userinfoUrl: 'https://some.issuer.url/userinfo',
value: raw_jwt
}
export const MOCK_TOKEN_PAYLOAD = {
tokens: { idToken: idToken, accessToken: accessToken }
}
export const parseFromUrl = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD)
export const getTokens = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD.tokens)
export const getWithRedirect = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD)
export const getTokenByKey = jest.fn().mockReturnValue(false)
export const isAuthenticated = jest.fn().mockReturnValue(false)
export const isLoginRedirect = jest.fn().mockReturnValue(false)
export const getUser = jest.fn().mockReturnValue({})
export const setTokens = jest.fn()
export const start = jest.fn()
export const clear = jest.fn()
export const signOut = jest.fn()
export const on = jest.fn()
export const isPKCESupported = jest.fn().mockReturnValue(true)
export const hasExpired = jest.fn(
token => token.expiresAt * 1000 < new Date().getTime()
)
export const renew = jest.fn().mockReturnValue(idToken)
export class OktaAuth {
static features = {
isPKCESupported: isPKCESupported
}
constructor() {
this.__exists = true
this.token = {
getWithRedirect: getWithRedirect,
parseFromUrl: parseFromUrl
}
this.tokenManager = {
hasExpired: hasExpired,
getTokens: getTokens,
get: getTokenByKey,
renew: renew,
setTokens: setTokens,
on: on,
clear: clear
}
this.isLoginRedirect = isLoginRedirect
this.isAuthenticated = isAuthenticated
this.getUser = getUser
this.signOut = signOut
this.start = start
}
}
export default OktaAuth
================================================
FILE: tests/jestSetup.js
================================================
import 'babel-polyfill'
================================================
FILE: tests/unit/auth/authentication-construction.spec.js
================================================
/*
This tests only the constructor of the OktaAuth client;
keeping this in a separate file from the rest of the authentication tests
allows us to work around module import issues. See https://github.com/facebook/jest/issues/2582
for more details about the other issues and see @/tests/unit/auth/authentication.spec for the rest
of the authentication tests
*/
jest.mock('@okta/okta-auth-js', () => {
const OktaAuth = jest.fn().mockImplementation(() => {
return {
start: jest.fn()
}
})
OktaAuth.features = { isPKCESupported: jest.fn() }
return {
OktaAuth: OktaAuth
}
})
import { OktaAuth } from '@okta/okta-auth-js'
describe('authentication', () => {
it('initializes the auth client', async () => {
require('@/auth/authentication.js')
expect(OktaAuth).toHaveBeenCalledTimes(1)
expect(OktaAuth.features.isPKCESupported).toHaveBeenCalledTimes(1)
})
})
================================================
FILE: tests/unit/auth/authentication.spec.js
================================================
jest.mock('@okta/okta-auth-js')
import {
isLoginRedirect,
parseFromUrl,
getTokens,
getWithRedirect,
setTokens,
MOCK_TOKEN_PAYLOAD,
expiredIdToken,
renew
} from '@okta/okta-auth-js'
describe('the authentication module', () => {
it('exports the auth client', async () => {
const mod = require('@/auth/authentication.js')
expect(mod.authClient).toBeDefined()
})
it('exports an authenticate method', async () => {
const mod = require('@/auth/authentication.js')
expect(mod.authenticate).toBeDefined()
})
describe('the authenticate method', () => {
const clearMocks = () => {
isLoginRedirect.mockClear()
parseFromUrl.mockClear()
setTokens.mockClear()
getTokens.mockClear()
renew.mockClear()
getWithRedirect.mockClear()
sessionStorage.setItem.mockClear()
sessionStorage.getItem.mockClear()
sessionStorage.removeItem.mockClear()
}
let mod
beforeEach(() => {
mod = require('@/auth/authentication.js')
})
afterEach(clearMocks)
it('calls the isLoginRedirect method', async () => {
await mod.authenticate()
expect(isLoginRedirect).toHaveBeenCalledTimes(1)
})
it('checks session storage for a redirect route', async () => {
await mod.authenticate()
expect(sessionStorage.getItem).toHaveBeenCalledWith('redirectRoute')
})
describe('(login redirect)', () => {
let mod
beforeEach(() => {
mod = require('@/auth/authentication.js')
isLoginRedirect.mockReturnValueOnce(true)
})
afterEach(clearMocks)
it('attempts to get tokens from the URL on login redirect', async () => {
await mod.authenticate()
expect(parseFromUrl).toHaveBeenCalledTimes(1)
})
it('calls the set tokens method when parsing tokens from the url', async () => {
const tokens = MOCK_TOKEN_PAYLOAD.tokens
await mod.authenticate()
// The parseFromUrl method is mocked to return the MOCK_TOKEN_PAYLOAD by default
expect(setTokens).toHaveBeenCalledWith(tokens)
})
it('pushes the redirect route to browser history', async () => {
// This is necessary for us to get the args from history.replaceState
jest.spyOn(window.history, 'replaceState')
sessionStorage.getItem.mockReturnValueOnce('/foo')
await mod.authenticate()
// The parseFromUrl method is mocked to return the MOCK_TOKEN_PAYLOAD by default
expect(history.replaceState).toHaveBeenCalledWith(null, null, '/foo')
})
it('throws error if we fail to get tokens', async () => {
parseFromUrl.mockImplementation(() => {
throw new Error('access denied')
})
const authenticate = mod.authenticate()
await expect(authenticate).rejects.toThrow('access denied')
})
})
describe('(not login redirect)', () => {
let mod
beforeEach(() => {
mod = require('@/auth/authentication.js')
isLoginRedirect.mockReturnValueOnce(false)
})
afterEach(clearMocks)
it('does not attempt to get tokens from the URL when not login redirect', async () => {
await mod.authenticate()
expect(parseFromUrl).not.toHaveBeenCalled()
})
it('sets the redirect route in session storage when unset', async () => {
sessionStorage.getItem.mockReturnValueOnce(undefined)
await mod.authenticate()
expect(sessionStorage.setItem).toHaveBeenCalledWith(
'redirectRoute',
window.location.pathname + window.location.search
)
})
it('does not set the redirect route if already set', async () => {
sessionStorage.getItem.mockReturnValueOnce('/foo-bar')
await mod.authenticate()
expect(sessionStorage.setItem).not.toHaveBeenCalled()
})
it('attempts to get tokens from the token manager', async () => {
await mod.authenticate()
expect(getTokens).toHaveBeenCalledTimes(1)
})
it('gets tokens with redirect if none are returned from the token manager', async () => {
getTokens.mockReturnValueOnce(null)
await mod.authenticate()
expect(getWithRedirect).toHaveBeenCalledTimes(1)
})
it('attempts to renew expired id tokens', async () => {
const tokens = { accessToken: 'bar', idToken: expiredIdToken }
getTokens.mockReturnValueOnce(tokens)
await mod.authenticate()
expect(renew).toHaveBeenCalledTimes(1)
})
it('calls get with redirect if token renewal throws an error', async () => {
const tokens = { accessToken: 'bar', idToken: expiredIdToken }
getTokens.mockReturnValueOnce(tokens)
renew.mockImplementation(() => {
throw new Error('I fail on purpose')
})
await mod.authenticate()
expect(getWithRedirect).toHaveBeenCalledTimes(1)
})
})
})
})
================================================
FILE: tests/unit/auth/authorization.spec.js
================================================
// const query = jest.fn()
// const mutate = jest.fn()
jest.mock('@/apollo.js')
import { mutate } from '@/apollo.js'
jest.mock('@/graphql/log-in.gql', () => 'log in string')
jest.mock('@/graphql/refresh-token.gql', () => 'refresh token string')
jest.mock('@/graphql/Tenant/tenant-token.gql', () => 'switch tenant string')
const headers = {
'X-PREFECT-UI': true,
'X-Backend': 'cloud'
}
describe('the authorization module', () => {
it('exports the authorize method', () => {
const mod = require('@/auth/authorization.js')
expect(mod.authorize).toBeDefined()
})
it('exports the refreshTokens method', () => {
const mod = require('@/auth/authorization.js')
expect(mod.refreshTokens).toBeDefined()
})
it('exports the authorizeTenant method', () => {
const mod = require('@/auth/authorization.js')
expect(mod.authorizeTenant).toBeDefined()
})
describe('the authorize method', () => {
const clearMocks = () => {
mutate.mockClear()
}
let mod
beforeEach(() => {
mod = require('@/auth/authorization.js')
})
afterEach(clearMocks)
it('throws an error when no id token is passed', async () => {
await expect(mod.authorize()).rejects.toThrow(
'No ID token passed to authorize'
)
})
it('calls the client mutate method', async () => {
const idToken = 'foo'
await mod.authorize(idToken)
expect(mutate).toHaveBeenCalledWith({
mutation: require('@/graphql/log-in.gql'),
variables: {
input: { id_token: idToken }
},
context: {
headers: headers
},
errorPolicy: 'all',
fetchPolicy: 'no-cache'
})
expect(mutate).toHaveBeenCalledTimes(1)
})
it('returns data from the log in mutation', async () => {
const mockReturn = {
data: {
log_in: {
access_token: 'bar',
refresh_token: 'batz',
expires_at: 99999
}
}
}
mutate.mockReturnValueOnce(mockReturn)
const response = await mod.authorize('foo')
expect(response).toStrictEqual(mockReturn.data.log_in)
})
})
describe('the refreshTokens method', () => {
const clearMocks = () => {
mutate.mockClear()
}
let mod
beforeEach(() => {
mod = require('@/auth/authorization.js')
})
afterEach(clearMocks)
it('throws an error when no access token or refresh token is passed', async () => {
const error = 'No access or refresh token passed to refreshTokens'
await expect(mod.refreshTokens()).rejects.toThrow(error)
await expect(mod.refreshTokens('foo', undefined)).rejects.toThrow(error)
await expect(mod.refreshTokens(undefined, 'bar')).rejects.toThrow(error)
})
it('calls the client mutate method', async () => {
const accessToken = 'foo'
const refreshToken = 'bar'
await mod.refreshTokens(accessToken, refreshToken)
expect(mutate).toHaveBeenCalledWith({
mutation: require('@/graphql/refresh-token.gql'),
variables: {
input: { access_token: accessToken }
},
context: {
headers: {
...headers,
authorization: `Bearer ${refreshToken}`
}
},
fetchPolicy: 'no-cache'
})
expect(mutate).toHaveBeenCalledTimes(1)
})
it('returns data from the refresh token mutation', async () => {
const mockReturn = {
data: {
refresh_token: {
access_token: 'bar',
refresh_token: 'batz',
expires_at: 99999
}
}
}
mutate.mockReturnValueOnce(mockReturn)
const response = await mod.refreshTokens('foo', 'bar')
expect(response).toStrictEqual(mockReturn.data.refresh_token)
})
})
describe('the authorizeTenant method', () => {
const clearMocks = () => {
mutate.mockClear()
}
let mod
beforeEach(() => {
mod = require('@/auth/authorization.js')
})
afterEach(clearMocks)
it('throws an error when no access token or refresh token is passed', async () => {
const error = 'No access token or no tenant id passed to authorizeTenant'
await expect(mod.authorizeTenant()).rejects.toThrow(error)
await expect(mod.authorizeTenant('foo', undefined)).rejects.toThrow(error)
await expect(mod.authorizeTenant(undefined, 'bar')).rejects.toThrow(error)
})
it('calls the client mutate method', async () => {
const accessToken = 'foo'
const tenantId = 'bar'
await mod.authorizeTenant(accessToken, tenantId)
expect(mutate).toHaveBeenCalledWith({
mutation: require('@/graphql/Tenant/tenant-token.gql'),
variables: {
tenantId: tenantId
},
context: {
headers: {
...headers,
authorization: `Bearer ${accessToken}`
}
},
fetchPolicy: 'no-cache'
})
expect(mutate).toHaveBeenCalledTimes(1)
})
it('returns data from the switch tenant mutation', async () => {
const mockReturn = {
data: {
switch_tenant: {
access_token: 'bar',
refresh_token: 'batz',
expires_at: 99999
}
}
}
mutate.mockReturnValueOnce(mockReturn)
const response = await mod.authorizeTenant('foo', 'bar')
expect(response).toStrictEqual(mockReturn.data.switch_tenant)
})
})
})
================================================
FILE: tests/unit/auth/index.spec.js
================================================
jest.mock('@/auth/authentication.js', () => ({
authenticate: jest.fn(),
authClient: {
tokenManager: {
on: jest.fn()
}
},
signOut: jest.fn()
}))
jest.mock('@/main', () => {
return {
TokenWorker: {
postMessage: jest.fn()
}
}
})
jest.mock('@/auth/authorization.js', () => ({
authorize: jest.fn(),
authorizeTenant: jest.fn(),
refreshTokens: jest.fn()
}))
jest.mock('@/workers/util/worker-interface.js', () => ({
promiseChannel: jest.fn()
}))
const start = jest.fn()
const postMessage = jest.fn()
const onmessage = jest.fn()
class SharedWorker {
defaultOptions = { type: 'classic', credentials: 'omit', name: null }
constructor(url, name, options = {}) {
this.url = url
this.name = name
this.options = { ...this.defaultOptions, ...options }
}
get port() {
return {
start: start,
postMessage: postMessage,
onmessage: onmessage
}
}
}
describe('the auth module', () => {
let mod
const clearMocks = () => {
mod = undefined
}
beforeEach(() => {
jest.resetModules()
// global.SharedWorker = SharedWorker
})
afterEach(clearMocks)
it('exports a login method', async () => {
mod = require('@/auth/index.js')
expect(mod.login).toBeDefined()
})
it('exports a switchTenant method', async () => {
mod = require('@/auth/index.js')
expect(mod.switchTenant).toBeDefined()
})
it('exports a logout method', async () => {
mod = require('@/auth/index.js')
expect(mod.logout).toBeDefined()
})
it('exports an unsetTokens method', async () => {
mod = require('@/auth/index.js')
expect(mod.unsetTokens).toBeDefined()
})
it('exports a commitTokens method', async () => {
mod = require('@/auth/index.js')
expect(mod.commitTokens).toBeDefined()
})
describe('browser has shared worker support', () => {
let mod, promiseChannel, authenticate, TokenWorker
const clearMocks = () => {
global.SharedWorker = SharedWorker
jest.resetModules()
promiseChannel?.mockClear()
authenticate?.mockClear()
promiseChannel = require('@/workers/util/worker-interface.js')
.promiseChannel
authenticate = require('@/auth/authentication.js').authenticate
mod = require('@/auth/index.js')
TokenWorker = mod.TokenWorker
}
beforeEach(clearMocks)
it('exports a shared token worker', () => {
expect(TokenWorker).toBeDefined()
})
describe('the login method', () => {
beforeEach(clearMocks)
it('calls the promiseChannel method when a token worker exists', async () => {
await mod.login()
expect(promiseChannel).toHaveBeenCalledWith(TokenWorker, 'login')
})
describe('expired id token', () => {
beforeEach(clearMocks)
it('calls the authenticate method', async () => {
const expiration = Date.now() / 1000 - 1000
const idToken = {
value: 'foo.bar',
expiresAt: expiration
}
promiseChannel.mockReturnValueOnce(idToken)
await mod.login()
expect(expiration).toBeLessThan(Date.now())
expect(authenticate).toHaveBeenCalledTimes(1)
})
})
describe('no id token', () => {
beforeEach(clearMocks)
it('calls the authenticate method', async () => {
const idToken = undefined
promiseChannel.mockReturnValueOnce(idToken)
await mod.login()
expect(authenticate).toHaveBeenCalledTimes(1)
})
})
it('posts the id token payload to the token worker, when none exists', async () => {
const idToken = { value: 'foo.bar' }
promiseChannel.mockReturnValueOnce(undefined)
authenticate.mockReturnValueOnce({ idToken: idToken })
await mod.login()
expect(authenticate).toHaveBeenCalledTimes(1)
expect(postMessage).toHaveBeenCalledWith({
type: 'idToken',
payload: idToken
})
expect(promiseChannel).toHaveBeenCalledWith(
TokenWorker,
'authorize',
idToken.value
)
})
})
})
describe('browser does not have shared worker support', () => {
let mod, promiseChannel, authenticate, authorize, TokenWorker
const clearMocks = () => {
global.SharedWorker = undefined
jest.resetModules()
promiseChannel?.mockClear()
authenticate?.mockClear()
promiseChannel = require('@/workers/util/worker-interface.js')
.promiseChannel
authenticate = require('@/auth/authentication.js').authenticate
authorize = require('@/auth/authorization.js').authorize
mod = require('@/auth/index.js')
TokenWorker = mod.TokenWorker
}
beforeEach(clearMocks)
it('does not export a shared token worker', () => {
expect(TokenWorker).toBeUndefined()
})
it('calls the authenticate method', async () => {
const idToken = { value: 'foo.bar' }
authenticate.mockReturnValueOnce({ idToken: idToken })
authorize.mockReturnValueOnce({
expires_at: Date.now() + 5000,
access_token: null,
refresh_token: null
})
await mod.login()
expect(TokenWorker).toBeUndefined()
expect(authenticate).toHaveBeenCalledWith()
})
})
describe('login uses fallback', () => {
let mod, promiseChannel, authenticate, authorize, TokenWorker
const clearMocks = () => {
global.SharedWorker = SharedWorker
jest.resetModules()
promiseChannel?.mockClear()
authenticate?.mockClear()
promiseChannel = require('@/workers/util/worker-interface.js')
.promiseChannel
authenticate = require('@/auth/authentication.js').authenticate
authorize = require('@/auth/authorization.js').authorize
mod = require('@/auth/index.js')
TokenWorker = mod.TokenWorker
}
beforeEach(clearMocks)
it('does not use the token worker if fallback is defined', async () => {
const idToken = { value: 'foo.bar' }
authenticate.mockReturnValueOnce({ idToken: idToken })
authorize.mockReturnValueOnce({
expires_at: Date.now() + 5000,
access_token: null,
refresh_token: null
})
await mod.login(true)
expect(TokenWorker).toBeDefined()
expect(promiseChannel).not.toHaveBeenCalled()
expect(authenticate).toHaveBeenCalledWith()
})
})
})
================================================
FILE: tests/unit/main.spec.js
================================================
jest.mock('@/app.js', () => ({
CreatePrefectUI: jest.fn()
}))
jest.mock('jwt-decode')
jest.mock('@/auth/index.js', () => ({
login: jest.fn(),
switchTenant: jest.fn(),
commitTokens: jest.fn()
}))
jest.mock('@/store')
jest.mock('@/plugins/logrocket.js')
jest.mock('logrocket')
import { login } from '@/auth/index.js'
const url = 'https://cloud.prefect.io'
Object.defineProperty(window, 'location', {
value: {
pathname: url
}
})
import { CreatePrefectUI } from '@/app.js'
describe('Main', () => {
it('says hello', () => {
expect('hello').toEqual('hello')
})
it('exports the setStartupTenant method', () => {
const mod = require('@/main.js')
expect(mod.setStartupTenant).toBeDefined()
})
it('exports the start method', () => {
const mod = require('@/main.js')
expect(mod.start).toBeDefined()
})
describe('the start method', () => {
const clearMocks = () => {
login.mockClear()
}
let mod
beforeEach(() => {
mod = require('@/main.js')
window.location.pathname = null
localStorage.clear()
// This is required before each test after import
// because the script calls the start method
// on load
CreatePrefectUI.mockClear()
})
afterEach(clearMocks)
it('immediately creates the application if the window location is the logout route', async () => {
window.location.pathname = 'https://cloud.prefect.io/logout'
await mod.start()
expect(CreatePrefectUI).toHaveBeenCalledTimes(1)
})
it('calls the fallback login method if login throws an error', async () => {
process.env.VUE_APP_BACKEND = 'CLOUD'
login.mockRejectedValueOnce()
await mod.start()
expect(login).toHaveBeenCalledTimes(2)
expect(login).toHaveBeenNthCalledWith(1)
expect(login).toHaveBeenNthCalledWith(2, true)
})
it('calls the fallback login method if login takes more than 10 seconds', async () => {
process.env.VUE_APP_BACKEND = 'CLOUD'
login.mockImplementationOnce(
() => new Promise(res => setTimeout(() => res('i was rejected'), 50000))
)
const startPromise = mod.start()
jest.runAllTimers()
await startPromise
expect(login).toHaveBeenCalledTimes(2)
expect(login).toHaveBeenNthCalledWith(1)
expect(login).toHaveBeenNthCalledWith(2, true)
})
it('calls the fallback login method if local storage item is set', async () => {
process.env.VUE_APP_BACKEND = 'CLOUD'
localStorage.setItem('prefect_fallback_auth', Date.now())
const startPromise = mod.start()
jest.runAllTimers()
await startPromise
expect(login).toHaveBeenCalledTimes(1)
expect(login).toHaveBeenNthCalledWith(1, true)
})
})
})
================================================
FILE: tests/unit/middleware/flowNavGuard.spec.js
================================================
jest.mock('@/main', () => {
return {
TokenWorker: {
postMessage: jest.fn()
}
}
})
import flowNavGuard from '@/middleware/flowNavGuard'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import store from '@/store'
const flows = [
{
id: 'flow_id_1',
flow_group_id: 'flow_group_id_1',
version: 1
}
]
//simple mock for gql api query
jest.mock('@/vue-apollo', () => {
return {
fallbackApolloClient: {
query: arg => {
if (arg.query == 'flow') {
if (arg.variables?.id == 'flow_id_2') {
return {
data: {
flow_by_pk: {
id: 'flow_id_2',
flow_group_id: 'flow_group_id_2',
version: 3
}
}
}
} else {
return { data: 'test-error' }
}
}
}
}
}
})
jest.mock('@/graphql/Middleware/flow-group.gql', () => 'flow group')
jest.mock('@/graphql/Middleware/flow.gql', () => 'flow')
jest.mock('@/graphql/Nav/flows.gql', () => 'flow')
const localVue = createLocalVue()
localVue.use(Vuex)
describe('flowNavGuard', () => {
afterEach(() => {
store.commit('data/unsetFlows')
})
test('if there is a flow group that matches the passed id, it returns next', async () => {
store.commit('data/setFlows', flows)
const next = jest.fn()
await flowNavGuard(
{ name: 'flow', params: { id: 'flow_group_id_1' } },
{},
next
)
expect(next).toBeCalledWith()
})
test('if there is no flow group that matches the passed id, it checks the flow id and returns next if it matches', async () => {
const next = jest.fn()
await flowNavGuard({ name: 'flow', params: { id: 'flow_id_2' } }, {}, next)
expect(next).toBeCalledWith({
name: 'flow',
params: { id: 'flow_group_id_2' },
query: { version: 3 }
})
})
test('if there is no flow or flow group that matches the passed id, it forwards to a 404', async () => {
const next = jest.fn()
await flowNavGuard(
{ name: 'flow', params: { id: 'flow_group_id_3' } },
{},
next
)
expect(next).toBeCalledWith({
name: 'not-found'
})
})
})
================================================
FILE: tests/unit/store/agent.spec.js
================================================
import agent from '@/store/agent'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
describe('Agent Vuex Module', () => {
const initialAgentState = () => {
return {
thresholds: {
// Time before an agent becomes stale
stale: 5, // minutes since last query
// Time before an agent becomes unhealthy
unhealthy: 720 // minutes since last query
},
agents: null,
sortedAgents: null
}
}
describe('initial state', () => {
it('should have a stale threshold and unhealthy threshold', () => {
const state = agent.state
expect(state.thresholds.stale).toBe(5)
expect(state.thresholds.unhealthy).toBe(720)
})
it('should have no agents', () => {
const state = agent.state
expect(state.agents).toBe(null)
})
it('should have no sorted agents', () => {
const state = agent.state
expect(state.sortedAgents).toBe(null)
})
})
describe('getters', () => {
let store = new Vuex.Store({
state: initialAgentState(),
getters: agent.getters
})
it('should return the stale threshold when the staleThreshold getter is called', () => {
expect(store.getters.staleThreshold).toBe(store.state.thresholds.stale)
})
it('should return the unhealthy threshold when the unhealthyThreshold getter is called', () => {
expect(store.getters.unhealthyThreshold).toBe(
store.state.thresholds.unhealthy
)
})
it('should return agents when the agents getters is called', () => {
expect(store.getters.agents).toBe(null)
})
it('should return sorted agents when the sorted agents getters is called', () => {
expect(store.getters.sortedAgents).toBe(null)
})
})
describe('mutations', () => {
let store = new Vuex.Store({
state: initialAgentState(),
getters: agent.getters,
mutations: agent.mutations
})
it('should add new agents, and update status, when the setSortedAgents mutation is called', () => {
expect(store.getters.agents).toBe(null)
const recentDate = new Date().toISOString()
store.commit('setSortedAgents', [
{ id: '12345', last_queried: recentDate },
{ id: '67890', last_queried: '2021-04-20T23:36:24.278841+00:00' },
{ id: '09876', last_queried: NaN }
])
expect(store.getters.agents[0].status).toEqual('healthy')
expect(store.getters.agents[1].status).toEqual('unhealthy')
expect(store.getters.agents[2].status).toEqual('unhealthy')
})
})
})
================================================
FILE: tests/unit/store/alert.spec.js
================================================
jest.mock('@/main', () => {
return {
TokenWorker: {
postMessage: jest.fn()
}
}
})
import uniqueId from 'lodash/uniqueId'
jest.mock('lodash/uniqueId')
import Vuex from 'vuex'
import alert from '@/store/alert'
import store from '@/store'
jest.useFakeTimers()
const initialState = { ...alert.state }
const getInitialState = () => {
return { ...initialState }
}
describe('Alert Vuex Module', () => {
describe('Global Alert', () => {
it('should initially have a show key that is false and other keys should be falsey', () => {
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: false,
alertMessage: '',
alertType: null,
alertLink: null,
linkText: '',
alertCopy: ''
})
})
describe('mutations', () => {
it('updates the state when setAl is called', () => {
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: false,
alertMessage: '',
alertType: null,
alertLink: null,
linkText: '',
alertCopy: ''
})
store.commit('alert/setAl', {
alertShow: true,
alertMessage: 'Testing testing 123',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: true,
alertMessage: 'Testing testing 123',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
})
it('empties the state when setEmpty is called', () => {
store.commit('alert/setAl', {
alertShow: true,
alertMessage: 'Testing testing 123',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: true,
alertMessage: 'Testing testing 123',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
store.commit('alert/setEmpty')
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: false,
alertMessage: '',
alertType: null,
alertLink: null,
linkText: '',
alertCopy: ''
})
})
})
describe('actions', () => {
test('setAlert sets the new alert state, calls setTimeout and then empties the alert state', async () => {
await store.dispatch('alert/setAlert', {
alertShow: true,
alertMessage: 'Testing testing 234',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
expect(store.getters['alert/getAlert']).toStrictEqual({
alertShow: true,
alertMessage: 'Testing testing 234',
alertType: 'error',
alertLink: null,
linkText: '',
alertCopy: ''
})
expect(setTimeout).toHaveBeenCalledTimes(1)
expect(setTimeout).toHaveBeenLastCalledWith(
expect.any(Function),
6000,
'setEmpty'
)
})
})
})
describe('Notifications', () => {
describe('getters', () => {
it('should return notifications', () => {
const notifications = ['foo', 'bar', 'batz']
const store = new Vuex.Store({
state: { ...getInitialState(), notifications: [...notifications] },
getters: alert.getters
})
expect(store.getters.notifications).toStrictEqual(notifications)
})
it('should return notificationTimeouts', () => {
const notificationTimeouts = { 0: 123, 1: 456 }
const store = new Vuex.Store({
state: {
...alert.state,
notificationTimeouts: Object.assign({}, notificationTimeouts)
},
getters: alert.getters
})
expect(store.getters.notificationTimeouts).toStrictEqual(
notificationTimeouts
)
})
})
describe('mutations', () => {
let store
beforeEach(() => {
clearTimeout.mockClear()
store = new Vuex.Store({
state: getInitialState(),
getters: alert.getters,
actions: alert.actions,
mutations: alert.mutations
})
})
it('setNotifications correctly stores notifications', () => {
const notifications = ['lorem', 'ipsum']
store.commit('setNotifications', notifications)
expect(store.getters.notifications).toStrictEqual(notifications)
})
it('setNotificationTimeout clears any existing timeout and stores a new timeout id', () => {
const id = 'foo-bar'
const timeoutId = 123
const timeoutId2 = 456
store.commit('setNotificationTimeout', { id, timeoutId })
expect(store.getters.notificationTimeouts).toStrictEqual({
[id]: timeoutId
})
store.commit('setNotificationTimeout', { id, timeoutId: timeoutId2 })
expect(clearTimeout).toHaveBeenCalledWith(timeoutId)
expect(store.getters.notificationTimeouts).toStrictEqual({
[id]: timeoutId2
})
})
})
// addNotification
// dismissNotification
// updateNotification
describe('actions', () => {
let store
const storeClear = () => {
store = new Vuex.Store({
state: getInitialState(),
getters: alert.getters,
actions: alert.actions,
mutations: alert.mutations
})
}
describe('addNotification', () => {
beforeEach(storeClear)
it('returns sequential ids for each call', async () => {
let id
uniqueId
.mockReturnValueOnce(1)
.mockReturnValueOnce(2)
.mockReturnValueOnce(3)
.mockReturnValueOnce(4)
id = await store.dispatch('addNotification', { text: 'foo' })
expect(id).toStrictEqual(1)
id = await store.dispatch('addNotification', { text: 'bar' })
expect(id).toStrictEqual(2)
id = await store.dispatch('addNotification', { text: 'batz' })
expect(id).toStrictEqual(3)
id = await store.dispatch('addNotification', { text: 'fiz' })
expect(id).toStrictEqual(4)
})
it('adds the passed notification to the store', async () => {
const notification = { text: 'fix' }
expect(store.getters.notifications).toStrictEqual([])
const id = await store.dispatch('addNotification', notification)
expect(store.getters.notifications).toStrictEqual([
{ id: id, ...notification }
])
})
// TODO: Add tests for timeout logic
})
describe('dismissNotification', () => {
beforeEach(storeClear)
it('removes the notification with the passed id from the store', async () => {
const notification = { text: 'sabe' }
uniqueId.mockReturnValueOnce(1)
const id = await store.dispatch('addNotification', notification)
expect(id).toStrictEqual(1)
expect(store.getters.notifications).toStrictEqual([
{ id, ...notification }
])
await store.dispatch('dismissNotification', { id: 1 })
expect(store.getters.notifications).toStrictEqual([])
})
})
describe('updateNotification', () => {
beforeEach(storeClear)
it('updates the notification with the passed id with new data', async () => {
const notification = { text: 'sabe' }
uniqueId.mockReturnValueOnce(1)
const id = await store.dispatch('addNotification', notification)
expect(store.getters.notifications).toStrictEqual([
{ id, ...notification }
])
await store.dispatch('updateNotification', {
id: 1,
notification: { text: 'ebas' }
})
expect(store.getters.notifications[0].text).toStrictEqual('ebas')
})
// TODO: Add tests for timeout logic
})
})
})
})
================================================
FILE: tests/unit/store/api.spec.js
================================================
import api from '@/store/api'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
jest.useFakeTimers()
const SERVER_KEY = `${process.env.VUE_APP_RELEASE_TIMESTAMP}_server_url`
//simple mock for gql api query
let mockerror = false
jest.mock('@/vue-apollo', () => {
return {
fallbackApolloClient: {
query: () => {
if (!mockerror) {
return {
data: {
api: {
release_timestamp: 'timestamp',
version: 2,
mode: 'maintenance'
}
}
}
} else {
return { data: 'error' }
}
}
}
}
})
const localVue = createLocalVue()
localVue.use(Vuex)
jest.mock('@/graphql/api.gql', () => 'api mutation string')
describe('API Vuex Module', () => {
let initialAPIState
let envVarAPIState
let localStoreAPIState
beforeEach(() => {
initialAPIState = () => {
delete process.env.VUE_APP_BACKEND
delete process.env.VUE_APP_CLOUD_URL
delete process.env.VUE_APP_SERVER_URL
localStorage.clear()
return {
backend:
localStorage.getItem('backend') ||
process.env.VUE_APP_BACKEND ||
'SERVER',
connected: true,
connectionMessage: null,
connectionTimeout: null,
apiMode: null,
releaseTimestamp: null,
cloudUrl: process.env.VUE_APP_CLOUD_URL,
retries: 0,
serverUrl:
localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL,
version: null
}
}
envVarAPIState = () => {
localStorage.clear()
process.env.VUE_APP_BACKEND = 'CLOUD'
process.env.VUE_APP_CLOUD_URL = 'https://api.prefect.io/graphql'
process.env.VUE_APP_SERVER_URL = 'http://localhost:4200/graphql'
return {
backend:
localStorage.getItem('backend') ||
process.env.VUE_APP_BACKEND ||
'SERVER',
connected: true,
connectionMessage: null,
connectionTimeout: 200,
releaseTimestamp: null,
apiMode: null,
cloudUrl: process.env.VUE_APP_CLOUD_URL,
retries: 0,
serverUrl:
localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL,
version: null
}
}
localStoreAPIState = () => {
localStorage.setItem('backend', 'foo')
localStorage.setItem(SERVER_KEY, 'http://0.0.0.0:4200/graphql')
process.env.VUE_APP_BACKEND = 'CLOUD'
process.env.VUE_APP_SERVER_URL = 'http://localhost:4200/graphql'
return {
backend:
localStorage.getItem('backend') ||
process.env.VUE_APP_BACKEND ||
'SERVER',
connected: true,
connectionMessage: 'connection message',
connectionTimeout: 300,
apiMode: null,
releaseTimestamp: 'xxxxxx',
cloudUrl: process.env.VUE_APP_CLOUD_URL,
retries: 5,
serverUrl:
localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL,
version: 8
}
}
})
describe('State', () => {
test('state returns correct values if no localStorage or environment variables are set', () => {
const state = initialAPIState()
expect(state.backend).toEqual('SERVER')
expect(state.connected).toBe(true)
expect(state.connectionMessage).toBe(null)
expect(state.connectionTimeout).toBe(null)
expect(state.cloudUrl).toBe(undefined)
expect(state.retries).toBe(0)
expect(state.apiMode).toBe(null)
expect(state.serverUrl).toBe(undefined)
expect(state.version).toBe(null)
})
test('state checks local storage before environment variables', () => {
const state = localStoreAPIState()
expect(localStorage.getItem).toBeCalledWith('backend')
expect(state.backend).toEqual('foo')
expect(state.serverUrl).toBe('http://0.0.0.0:4200/graphql')
})
test('state checks environment variables if no local storage', () => {
const state = envVarAPIState()
expect(localStorage.getItem('backend')).toBe(null)
expect(state.backend).toEqual('CLOUD')
expect(state.cloudUrl).toBe('https://api.prefect.io/graphql')
expect(state.serverUrl).toBe('http://localhost:4200/graphql')
})
})
describe('getters', () => {
let store
beforeEach(() => {
const state = initialAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations
})
})
it('should return the backend', () => {
expect(store.getters.backend).toBe('SERVER')
})
it('should return connected state', () => {
expect(store.getters.connected).toBe(true)
})
it('should return connecting state', () => {
expect(store.getters.connecting).toBe(false)
})
it('should return the connection message', () => {
expect(store.getters.connectionMessage).toBe(null)
})
it('should return the connectionTimeout', () => {
expect(store.getters.connectionTimeout).toBe(null)
})
it('should return the api mode', () => {
expect(store.getters.apiMode).toBe(null)
})
it('should return a boolean about whether the backend is Cloud', () => {
expect(store.getters.isCloud).toBe(false)
})
it('should return a boolean about whether the backend is Server', () => {
expect(store.getters.isServer).toBe(true)
})
it('should return the cloud url', () => {
expect(store.getters.cloudUrl).toBe(undefined)
})
it('should return retries', () => {
expect(store.getters.retries).toBe(0)
})
it('should return the server url', () => {
expect(store.getters.serverUrl).toBe(undefined)
})
it('should return the active url', () => {
expect(store.getters.url).toBe(undefined)
})
it('should return the version', () => {
expect(store.getters.version).toBe(null)
})
})
describe('Mutations', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialAPIState(),
getters: api.getters,
actions: api.actions,
mutations: api.mutations
})
})
describe('setBackend', () => {
it('should set backend', () => {
store.commit('setBackend', 'SERVER')
expect(store.getters['backend']).toBe('SERVER')
expect(store.getters['isCloud']).toBe(false)
store.commit('setBackend', 'CLOUD')
expect(store.getters['backend']).toBe('CLOUD')
expect(store.getters['isCloud']).toBe(true)
})
it('should throw an error if an invalid backend is used', () => {
expect(() => store.commit('setBackend', 'FOO')).toThrow(
'Invalid backend'
)
})
})
describe('unsetBackend', () => {
it('should set backend to null', () => {
store.commit('unsetBackend')
expect(store.getters['backend']).toEqual(null)
})
})
describe('setConnected', () => {
it('should update connected', () => {
expect(store.getters['connected']).toBe(true)
store.commit('setConnected', false)
expect(store.getters['connected']).toBe(false)
})
it('should throw an error if it tries to set connected to a non-boolean', () => {
expect(store.getters['connected']).toBe(true)
expect(() => store.commit('setConnected', 'tiger')).toThrow(
'Invalid connected state - connected should be a boolean'
)
})
})
describe('setConnectionMessage', () => {
it('should update the connection message', () => {
expect(store.getters['connectionMessage']).toBe(null)
store.commit('setConnectionMessage', 'hello')
expect(store.getters['connectionMessage']).toBe('hello')
})
})
describe('unsetConnectionMessage', () => {
it('should unset the connection message', () => {
store.commit('setConnectionMessage', 'hello')
expect(store.getters['connectionMessage']).toBe('hello')
store.commit('unsetConnectionMessage')
expect(store.getters['connectionMessage']).toBe(null)
})
})
describe('setConnectionTimeout', () => {
it('should set ConnectionTimeout', () => {
store.commit('setConnectionTimeout', 500)
expect(store.getters['connectionTimeout']).toBe(500)
})
})
describe('unsetConnectionTimeout', () => {
it('should unset ConnectionTimeout', () => {
store.commit('setConnectionTimeout', 500)
expect(store.getters['connectionTimeout']).toBe(500)
store.commit('unsetConnectionTimeout')
expect(store.getters['connectionTimeout']).toBe(null)
expect(clearTimeout).toHaveBeenCalled()
})
})
describe('setReleaseTimestamp', () => {
it('should set the release timestamp', () => {
store.commit('setReleaseTimestamp', 'a timestamp')
expect(store.getters['releaseTimestamp']).toBe('a timestamp')
})
})
describe('setApiMode', () => {
it('should set the api mode', () => {
store.commit('setApiMode', 'normal')
expect(store.getters['apiMode']).toBe('normal')
store.commit('setApiMode', 'maintenance')
expect(store.getters['apiMode']).toBe('maintenance')
})
it('should throw an error if we try to set an api model other than normal or maintenance', () => {
expect(() => store.commit('setApiMode', 'notnormal')).toThrow(
'Unexpected api mode'
)
})
})
describe('unsetReleaseTimestamp', () => {
it('should unset releaseTimestamp', () => {
store.commit('setReleaseTimestamp', 'a timestamp')
expect(store.getters['releaseTimestamp']).toBe('a timestamp')
store.commit('unsetReleaseTimetamp')
expect(store.getters['releaseTimestamp']).toBe(null)
})
})
describe('setRetries', () => {
it('should set retries', () => {
store.commit('setRetries', 5)
expect(store.getters['retries']).toBe(5)
})
})
describe('setServerUrl', () => {
it('should set the server url in state and local storage', () => {
store.commit('setServerUrl', 'http:localhost:4200')
expect(store.getters['serverUrl']).toEqual('http:localhost:4200')
expect(localStorage.setItem).toBeCalledWith(
SERVER_KEY,
'http:localhost:4200'
)
})
})
describe('unsetServerUrl', () => {
it('should unset the server url in state and local storage', () => {
store.commit('unsetServerUrl')
expect(store.getters['serverUrl']).toEqual(null)
expect(localStorage.removeItem).toBeCalledWith(SERVER_KEY)
})
})
describe('setVersion', () => {
it('should set the version', () => {
store.commit('setVersion', 2)
expect(store.getters['version']).toBe(2)
})
})
describe('unsetVersion', () => {
it('should unset the version', () => {
store.commit('setVersion', 2)
expect(store.getters['version']).toBe(2)
store.commit('unsetVersion')
expect(store.getters['version']).toBe(null)
})
})
})
describe('actions', () => {
let store
beforeEach(() => {
const state = initialAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
describe('getApi - no api error', () => {
beforeEach(() => {
mockerror = false
})
it('should set the version', async () => {
await store.dispatch('getApi')
expect(store.getters.version).toBe(2)
})
it('should set the release timestamp', async () => {
await store.dispatch('getApi')
expect(store.getters.releaseTimestamp).toBe('timestamp')
})
it('should set connected state', async () => {
await store.dispatch('getApi')
expect(store.getters.connected).toBe(true)
})
it('should set api mode', async () => {
await store.dispatch('getApi')
expect(store.getters.apiMode).toBe('maintenance')
})
})
describe('getApi - with api error', () => {
beforeEach(() => {
mockerror = true
const state = localStoreAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
it('should unset the version', async () => {
expect(store.getters.version).toBe(8)
await store.dispatch('getApi')
expect(store.getters.version).toBe(null)
})
it('should unset the release timestamp', async () => {
await store.dispatch('getApi')
expect(store.getters.releaseTimestamp).toBe(null)
})
it('should unset connected state', async () => {
await store.dispatch('getApi')
expect(store.getters.connected).toBe(false)
})
})
describe('monitorConnection - no query error', () => {
beforeEach(() => {
mockerror = false
const state = localStoreAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
it('should unset connection timeout', async () => {
await store.dispatch('monitorConnection')
expect(clearTimeout).toHaveBeenCalled()
})
it('should set the release timestamp', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.releaseTimestamp).toBe('timestamp')
})
it('should set connected state', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.connected).toBe(true)
})
it('should set the version', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.version).toBe(2)
})
it('should set the connection message', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.connectionMessage).toBe('Connected')
})
it('should set retries back to 0', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.retries).toBe(0)
})
})
describe('monitorConnection - query error', () => {
beforeEach(() => {
mockerror = true
const state = localStoreAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
it('should unset connection timeout', async () => {
await store.dispatch('monitorConnection')
expect(clearTimeout).toHaveBeenCalled()
})
it('should set connected state to false', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.connected).toBe(false)
})
it('should set the connection message', async () => {
await store.dispatch('monitorConnection')
expect(store.getters.connectionMessage).toBe(
"TypeError: Cannot read property 'release_timestamp' of undefined"
)
})
})
describe('setServerUrl', () => {
beforeEach(() => {
const state = localStoreAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
it('should set the server URL', async () => {
expect(store.getters.serverUrl).toBe('http://0.0.0.0:4200/graphql')
await store.dispatch('setServerUrl', 'new.url')
expect(store.getters.serverUrl).toBe('new.url')
})
})
describe('switchBackend', () => {
beforeEach(() => {
// Mock the mutations and actions from other stores
// that we don't want to
// test here
api.mutations['tenant/setTenant'] = jest.fn()
api.mutations['tenant/setDefaultTenant'] = jest.fn()
api.mutations['tenant/unsetTenants'] = jest.fn()
api.mutations['tenant/unsetTenant'] = jest.fn()
api.actions['tenant/getTenants'] = jest.fn()
api.actions['auth/authenticate'] = jest.fn()
api.actions['auth/authorize'] = jest.fn()
api.actions['user/getUser'] = jest.fn()
const state = localStoreAPIState()
store = new Vuex.Store({
state: state,
getters: api.getters,
mutations: api.mutations,
actions: api.actions
})
})
it('should call unsetTenant', async () => {
await store.dispatch('switchBackend', 'SERVER')
expect(api.mutations['tenant/unsetTenant']).toHaveBeenCalled()
})
it('should call unsetTenants', async () => {
await store.dispatch('switchBackend', 'SERVER')
expect(api.mutations['tenant/unsetTenants']).toHaveBeenCalled()
})
describe('switch backend to SERVER', () => {
it('should set the backend to SERVER', async () => {
expect(store.getters.backend).toBe('foo')
await store.dispatch('switchBackend', 'SERVER')
expect(store.getters.backend).toBe('SERVER')
})
it('should call unsetTenant', async () => {
await store.dispatch('switchBackend', 'SERVER')
expect(api.mutations['tenant/unsetTenant']).toHaveBeenCalled()
})
it('should call unsetTenants', async () => {
await store.dispatch('switchBackend', 'SERVER')
expect(api.mutations['tenant/unsetTenants']).toHaveBeenCalled()
})
it('should call setDefaultTenant', async () => {
await store.dispatch('switchBackend', 'SERVER')
expect(api.mutations['tenant/setDefaultTenant']).toHaveBeenCalled()
})
})
describe('switch backend to CLOUD', () => {
it('should set the backend to CLOUD', async () => {
expect(store.getters.backend).toBe('foo')
await store.dispatch('switchBackend', 'CLOUD')
expect(store.getters.backend).toBe('CLOUD')
})
it('should not call setDefaultTenant', async () => {
await store.dispatch('switchBackend', 'CLOUD')
expect(
api.mutations['tenant/setDefaultTenant']
).toHaveBeenCalledTimes(0)
})
it('should authenticate', async () => {
await store.dispatch('switchBackend', 'CLOUD')
expect(api.actions['auth/authenticate']).toHaveBeenCalled()
})
it('should authorize', async () => {
await store.dispatch('switchBackend', 'CLOUD')
expect(api.actions['auth/authorize']).toHaveBeenCalled()
})
it('should get the user details', async () => {
await store.dispatch('switchBackend', 'CLOUD')
expect(api.actions['user/getUser']).toHaveBeenCalled()
})
it('should get tenants', async () => {
await store.dispatch('switchBackend', 'CLOUD')
expect(api.actions['tenant/getTenants']).toHaveBeenCalled()
})
})
})
})
})
================================================
FILE: tests/unit/store/auth.spec.js
================================================
import auth_base from '@/store/auth'
const auth = { ...auth_base }
import {
MOCK_AUTHORIZATION_TOKEN,
MOCK_ID_TOKEN,
MOCK_REFRESH_TOKEN
} from './mockTokens'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
describe('auth Vuex Module', () => {
const loggedInState = () => {
return {
authorizationToken: MOCK_AUTHORIZATION_TOKEN,
authorizationTokenExpiry: new Date().getTime() + 10000,
idToken: MOCK_ID_TOKEN,
idTokenExpiry: new Date().getTime() + 10000,
isAuthenticated: true,
refreshToken: MOCK_REFRESH_TOKEN,
refreshTokenExpiry: new Date().getTime() + 10000,
user: {
sub: 'user',
name: 'user',
email: 'user@domain.com'
}
}
}
describe('State', () => {
it('should be initialized properly without tokens in localStorage ', () => {
const state = auth.state
expect(Object.keys(state).length).toBe(7)
expect(state.user).toBe(null)
expect(state.authorizationToken).toBe(null)
expect(state.authorizationTokenExpiry).toBe(null)
expect(state.idToken).toBe(null)
expect(state.idTokenExpiry).toBe(null)
expect(state.refreshToken).toBe(null)
expect(state.refreshTokenExpiry).toBe(null)
})
})
describe('Getters', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: loggedInState(),
getters: auth.getters,
actions: auth.actions,
mutations: auth.mutations
})
})
it('should return the user', () => {
expect(store.getters.user).toBe(store.state.user)
})
it('should return the idToken', () => {
expect(store.getters.idToken).toBe(store.state.idToken)
})
it('should return isAuthenticated', () => {
expect(store.getters.isAuthenticated).toBe(true)
})
it('should return isAuthorized', () => {
expect(store.getters.isAuthorized).toBe(true)
})
it('should return the authorizationToken', () => {
expect(store.getters.authorizationToken).toBe(
store.state.authorizationToken
)
})
it('should return the refreshToken', () => {
expect(store.getters.refreshToken).toBe(store.state.refreshToken)
})
it('should return the authorizationTokenExpiry', () => {
expect(store.getters.authorizationTokenExpiry).toBe(
store.state.authorizationTokenExpiry
)
})
it('should return the refreshTokenExpiry', () => {
expect(store.getters.refreshTokenExpiry).toBe(
store.state.refreshTokenExpiry
)
})
it('should return the idTokenExpiry', () => {
expect(store.getters.idTokenExpiry).toBe(store.state.idTokenExpiry)
})
})
describe('Mutations', () => {
describe('...correctly set their associated states', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: auth.state,
getters: auth.getters,
actions: auth.actions,
mutations: auth.mutations
})
})
it('should set the user', () => {
store.commit('user', loggedInState().user)
const user = loggedInState().user
expect(store.getters['user'].name).toBe(user.name)
expect(store.getters['user'].sub).toBe(user.sub)
expect(store.getters['user'].email).toBe(user.email)
})
it('should set the idToken', () => {
const idToken = loggedInState().idToken
store.commit('idToken', idToken)
expect(store.getters['idToken']).toBe(idToken)
})
it('should set the authorizationToken', () => {
store.commit('authorizationToken', loggedInState().authorizationToken)
expect(store.getters['authorizationToken']).toBe(
loggedInState().authorizationToken
)
})
it('should set the refreshToken', () => {
store.commit('refreshToken', loggedInState().refreshToken)
expect(store.getters['refreshToken']).toBe(loggedInState().refreshToken)
})
it('should set the authorizationTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().authorizationTokenExpiry
store.commit('authorizationTokenExpiry', loggedInStateExpiration)
expect(store.getters['authorizationTokenExpiry']).toBe(
loggedInStateExpiration
)
})
it('should set the refreshTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().refreshTokenExpiry
store.commit('refreshTokenExpiry', loggedInStateExpiration)
expect(store.getters['refreshTokenExpiry']).toBe(
loggedInStateExpiration
)
})
it('should set the idTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().idTokenExpiry
store.commit('idTokenExpiry', loggedInStateExpiration)
expect(store.getters['idTokenExpiry']).toBe(loggedInStateExpiration)
})
})
describe('... throw errors when invalid data are passed in', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: auth.state,
getters: auth.getters,
actions: auth.actions,
mutations: auth.mutations
})
localStorage.setItem.mockClear()
localStorage.getItem.mockClear()
localStorage.removeItem.mockClear()
})
it('user throws error on invalid state', () => {
expect(() => store.commit('user', null)).toThrow(TypeError)
expect(() => store.commit('user', false)).toThrow(TypeError)
expect(() => store.commit('user', undefined)).toThrow(TypeError)
expect(() => store.commit('user', 'test')).toThrow(TypeError)
expect(() => store.commit('user', 12345)).toThrow(TypeError)
})
it('idToken throws error on invalid state', () => {
expect(() => store.commit('idToken', null)).toThrow(TypeError)
expect(() => store.commit('idToken', false)).toThrow(TypeError)
expect(() => store.commit('idToken', undefined)).toThrow(TypeError)
expect(() => store.commit('idToken', 'test')).toThrow(TypeError)
expect(() => store.commit('idToken', 12345)).toThrow(TypeError)
})
it('authorizationToken throws error on invalid state', () => {
expect(() => store.commit('authorizationToken', null)).toThrow(
TypeError
)
expect(() => store.commit('authorizationToken', false)).toThrow(
TypeError
)
expect(() => store.commit('authorizationToken', undefined)).toThrow(
TypeError
)
expect(() => store.commit('authorizationToken', 'test')).toThrow(
TypeError
)
expect(() => store.commit('authorizationToken', 12345)).toThrow(
TypeError
)
})
it('refreshToken throws error on invalid state', () => {
expect(() => store.commit('refreshToken', null)).toThrow(TypeError)
expect(() => store.commit('refreshToken', false)).toThrow(TypeError)
expect(() => store.commit('refreshToken', undefined)).toThrow(TypeError)
expect(() => store.commit('refreshToken', 'test')).toThrow(TypeError)
expect(() => store.commit('refreshToken', 12345)).toThrow(TypeError)
})
it('authorizationTokenExpiry throws error on invalid state', () => {
expect(() => store.commit('authorizationTokenExpiry', null)).toThrow(
TypeError
)
expect(() => store.commit('authorizationTokenExpiry', false)).toThrow(
TypeError
)
expect(() =>
store.commit('authorizationTokenExpiry', undefined)
).toThrow(TypeError)
expect(() => store.commit('authorizationTokenExpiry', 'test')).toThrow(
TypeError
)
})
it('refreshTokenExpiry throws error on invalid state', () => {
expect(() => store.commit('refreshTokenExpiry', null)).toThrow(
TypeError
)
expect(() => store.commit('refreshTokenExpiry', false)).toThrow(
TypeError
)
expect(() => store.commit('refreshTokenExpiry', undefined)).toThrow(
TypeError
)
expect(() => store.commit('refreshTokenExpiry', 'test')).toThrow(
TypeError
)
})
it('idTokenExpiry throws error on invalid state', () => {
expect(() => store.commit('idTokenExpiry', null)).toThrow(TypeError)
expect(() => store.commit('idTokenExpiry', false)).toThrow(TypeError)
expect(() => store.commit('idTokenExpiry', undefined)).toThrow(
TypeError
)
expect(() => store.commit('idTokenExpiry', 'test')).toThrow(TypeError)
})
})
describe('... successfully resets stores with unset methods', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: auth.state,
getters: auth.getters,
actions: auth.actions,
mutations: auth.mutations
})
})
it('unsets user', () => {
store.commit('user', loggedInState().user)
expect(store.getters['user']).toEqual(loggedInState().user)
store.commit('unsetUser')
expect(store.getters['user']).toBe(null)
})
it('unsets idToken', () => {
const idToken = loggedInState().idToken
store.commit('idToken', idToken)
expect(store.getters['idToken']).toBe(idToken)
store.commit('unsetIdToken')
expect(store.getters['idToken']).toBe(null)
})
it('unsets refreshToken', () => {
store.commit('refreshToken', loggedInState().refreshToken)
expect(store.getters['refreshToken']).toBe(loggedInState().refreshToken)
store.commit('unsetRefreshToken')
expect(store.getters['refreshToken']).toBe(null)
})
it('unsets authorizationTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().authorizationTokenExpiry
store.commit('authorizationTokenExpiry', loggedInStateExpiration)
expect(store.getters['authorizationTokenExpiry']).toBe(
loggedInStateExpiration
)
store.commit('unsetAuthorizationTokenExpiry')
expect(store.getters['authorizationTokenExpiry']).toBe(null)
})
it('unsets refreshTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().refreshTokenExpiry
store.commit('refreshTokenExpiry', loggedInStateExpiration)
expect(store.getters['refreshTokenExpiry']).toBe(
loggedInStateExpiration
)
store.commit('unsetRefreshTokenExpiry')
expect(store.getters['refreshTokenExpiry']).toBe(null)
})
it('unsets idTokenExpiry', () => {
const loggedInStateExpiration = loggedInState().idTokenExpiry
store.commit('idTokenExpiry', loggedInStateExpiration)
expect(store.getters['idTokenExpiry']).toBe(loggedInStateExpiration)
store.commit('unsetIdTokenExpiry')
expect(store.getters['idTokenExpiry']).toBe(null)
})
})
})
})
================================================
FILE: tests/unit/store/data.spec.js
================================================
import data from '@/store/data'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
let mockError = false
jest.mock('@/vue-apollo', () => {
return {
fallbackApolloClient: {
query: () => {
if (!mockError) {
return {
data: {
flow: [
{
id: 'f-111',
flow_group_id: 'fg-111',
project_id: 'p-111',
name: 'Flow 111'
}
],
project: [
{
id: 'p-111',
name: 'Project 111'
}
],
task: [
{
id: 't-111',
flow_id: 'f-111',
name: 'Name 111'
}
]
}
}
} else {
return { data: 'error' }
}
}
}
}
})
jest.mock('@/graphql/Nav/flows.gql', () => 'flows query string')
jest.mock('@/graphql/Nav/flow.gql', () => 'flow query string')
jest.mock('@/graphql/Nav/projects.gql', () => 'projects query string')
jest.mock('@/graphql/Nav/task.gql', () => 'tasks query string')
const dataObjects = ['flow', 'project', 'task']
const generators = {
flow: (len = 5) => {
return Array.from({ length: len }, (v, i) => {
return {
id: 'f' + i,
flow_group_id: 'fg' + i,
name: 'Flow ' + i,
project_id: 'p' + Math.floor(Math.random() * 5) // Random project id between p0 and p5
}
})
},
project: (len = 5) => {
return Array.from({ length: len }, (v, i) => {
return {
id: 'p' + i,
name: 'Project ' + i
}
})
},
task: (len = 5) => {
return Array.from({ length: len }, (v, i) => {
return {
id: 't' + i,
name: 'Task ' + i,
flow_id: 'f' + Math.floor(Math.random() * 5) // Random flow id between f0 and f5
}
})
}
}
describe('data Vuex Module', () => {
const unsetState = () => {
return {
activeFlow: null,
activeProject: null,
activeTask: null,
flows: null,
projects: null,
tasks: null
}
}
const setState = () => {
const flows = generators.flow()
const projects = generators.project()
const tasks = generators.task()
const activeTask = tasks[Math.floor(Math.random() * 5)] // Random activeTask
const activeFlow = flows.find(f => f.id == activeTask.flow_id) // activeFlow based on activeTask
const activeProject = projects.find(p => p.id == activeFlow.project_id) // activeProject based on activeFlow
return {
activeFlow: activeFlow,
activeProject: activeProject,
activeTask: activeTask,
flows: flows,
projects: projects,
tasks: tasks
}
}
describe('State', () => {
it('should hold data', () => {
const state = data.state
expect(state.activeFlow).toBe(null)
expect(state.activeProject).toBe(null)
expect(state.activeTask).toBe(null)
expect(state.flows).toBe(null)
expect(state.projects).toBe(null)
expect(state.tasks).toBe(null)
})
})
describe('Getters', () => {
describe('while unset', () => {
let state, store
beforeEach(() => {
state = unsetState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
dataObjects.forEach(d => {
const active = 'active' + d.charAt(0).toUpperCase() + d.slice(1)
const plural = d + 's'
test(`${active} getter should return null`, () => {
expect(store.getters[active]).toEqual(null)
})
test(`${plural} getter should return null`, () => {
expect(store.getters[plural]).toEqual(null)
})
})
})
describe('while set', () => {
let state, store
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
dataObjects.forEach(d => {
const active = 'active' + d.charAt(0).toUpperCase() + d.slice(1)
const plural = d + 's'
const id = active + 'Id'
test(`${active} getter should return the state ${active} object`, () => {
expect(store.getters[active]).toEqual(state[active])
})
test(`${plural} getter should return a list of ${plural}`, () => {
expect(store.getters[plural]).toEqual(state[plural])
})
test(`${id} getter should return the id of ${active}`, () => {
expect(store.getters[id]).toEqual(state[active].id)
})
})
})
})
describe('Mutations', () => {
let state, store
beforeEach(() => {
state = unsetState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
const activeDataMutations = ['Flow', 'Project', 'Task']
activeDataMutations.forEach(d => {
describe(`setActive${d}`, () => {
const error = `passed invalid or empty ${d}; Expected Object, got: `
it(`should set the active${d}`, () => {
const generated = generators[d.toLowerCase()](1)[0] // Creates a new random object
store.commit(`setActive${d}`, generated)
expect(store.getters[`active${d}`]).toEqual(generated)
})
it(`should throw an error if passed an invalid ${d} data type`, () => {
const toPass = [1, 2, 3]
expect(() => store.commit(`setActive${d}`, toPass)).toThrow(
error + toPass
)
})
it(`should throw an error if passed no ${d}`, () => {
expect(() => store.commit(`setActive${d}`)).toThrow(
error + 'undefined'
)
})
it(`should throw an error if passed an empty ${d} object`, () => {
const toPass = {}
expect(() => store.commit(`setActive${d}`, toPass)).toThrow(
error + toPass
)
})
})
describe(`unsetActive${d}`, () => {
let state, store
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
it(`should unset the active${d}`, () => {
expect(store.getters[`active${d}`].id).toEqual(state[`active${d}`].id)
store.commit(`unsetActive${d}`)
expect(store.getters[`active${d}`]).toEqual(null)
})
})
})
describe('addTasks', () => {
it("should add passed tasks to the tasks array and should create it if it doesn't exist", () => {
expect(state.tasks).toEqual(null)
const tasks = generators.task(5)
store.commit('addTasks', tasks)
expect(state.tasks).toEqual(tasks)
expect(state.tasks.length).toEqual(5)
})
it('should update existing tasks in the store if matching ids are passed', () => {
expect(state.tasks).toEqual(null)
const tasks = generators.task(5)
const taskToChange = tasks[0]
store.commit('addTasks', tasks)
expect(state.tasks).toEqual(tasks)
expect(state.tasks.length).toEqual(5)
taskToChange.name = 'Some updated task name'
store.commit('addTasks', [taskToChange])
expect(state.tasks.length).toEqual(5)
const storedTasks = store.getters['tasks']
const changedTask = storedTasks.find(t => t.id == taskToChange.id)
expect(changedTask).toEqual(taskToChange)
expect(changedTask.name).toEqual(taskToChange.name)
})
it('should throw an error if passed an invalid data type', () => {
const toPass = { 1: 'foo', 2: 'bar' }
expect(() => store.commit('addTasks', toPass)).toThrow(
'passed null or invalid Tasks; Expected Array, got: ' + toPass
)
})
})
const dataMutations = ['Flows', 'Projects', 'Tasks']
dataMutations.forEach(d => {
const ref = d.toLowerCase()
const error = `passed invalid ${d}; Expected Array, got: `
describe(`set${d}`, () => {
it(`should set the ${d} array`, () => {
const generated = generators[
ref.substring(0, d.length - 1) // Uncapitalize and remove plural
](5) // Creates a new random array of objects
store.commit(`set${d}`, generated)
expect(store.getters[ref]).toEqual(generated)
expect(store.getters[ref].length).toEqual(5)
})
it(`should throw an error if passed an invalid ${d} data type`, () => {
const toPass = { 1: 'foo', 2: 'bar' }
expect(() => store.commit(`set${d}`, toPass)).toThrow(error + toPass)
})
it(`should throw an error if passed no ${d}`, () => {
expect(() => store.commit(`set${d}`)).toThrow(error + 'undefined')
})
})
describe(`unset${d}`, () => {
let state, store
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
it(`should unset the ${d} array`, () => {
expect(store.getters[ref][0].id).toEqual(state[ref][0].id)
store.commit(`unset${d}`)
expect(store.getters[ref]).toEqual(null)
})
})
})
})
describe('Actions', () => {
let state, store
beforeEach(() => {
state = unsetState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
describe('resetActiveData', () => {
it('removes all active* data', () => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id)
expect(store.getters['activeProject'].id).toEqual(
state['activeProject'].id
)
expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id)
store.dispatch('resetActiveData')
expect(store.getters['activeFlow']).toEqual(null)
expect(store.getters['activeProject']).toEqual(null)
expect(store.getters['activeTask']).toEqual(null)
})
})
describe('resetData', () => {
it('removes all data', () => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id)
expect(store.getters['activeProject'].id).toEqual(
state['activeProject'].id
)
expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id)
expect(store.getters['flows'].length).toEqual(5)
expect(store.getters['projects'].length).toEqual(5)
expect(store.getters['tasks'].length).toEqual(5)
expect(store.getters['flows'][0].id).toEqual(state['flows'][0].id)
expect(store.getters['projects'][0].id).toEqual(state['projects'][0].id)
expect(store.getters['tasks'][0].id).toEqual(state['tasks'][0].id)
store.dispatch('resetData')
expect(store.getters['activeFlow']).toEqual(null)
expect(store.getters['activeProject']).toEqual(null)
expect(store.getters['activeTask']).toEqual(null)
expect(store.getters['flows']).toEqual(null)
expect(store.getters['projects']).toEqual(null)
expect(store.getters['tasks']).toEqual(null)
})
})
describe('activating projects, flows, and tasks', () => {
let state, store
beforeEach(() => {
state = unsetState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
describe('activateFlow', () => {
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
it('sets the activeFlow from the store when the flow exists in the store', async () => {
expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id)
const id = store.getters['flows'].find(
f => f.id !== state['activeFlow'].id
).id // Find the first flow in the store that isn't the activeFlow
expect(store.getters['activeFlow'].id).not.toEqual(id)
await store.dispatch('activateFlow', id)
expect(store.getters['activeFlow'].id).toEqual(id)
})
it('sets the activeProject after setting the activeFlow', async () => {
state = unsetState()
const spy = jest.spyOn(data.actions, 'activateProject')
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
const flows = generators['flow'](5)
store.commit('setFlows', flows)
expect(store.getters['flows']).toEqual(flows)
expect(store.getters['activeFlow']).toEqual(null)
expect(store.getters['activeProject']).toEqual(null)
const id = 'f2'
const project_id = flows.find(f => f.id == id).project_id
store.commit('setProjects', [
{ id: project_id, name: 'Some Project Name' }
])
await store.dispatch('activateFlow', id)
await expect(data.actions['activateProject']).toHaveBeenCalledTimes(1)
expect(store.getters['activeFlow'].id).toEqual(id)
expect(store.getters['activeProject'].id).toEqual(project_id)
spy.mockRestore()
})
it('sets the activeFlow from a flow_group_id', async () => {
expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id)
const id = 'fg-111' // Known flow group id
await store.dispatch('activateFlow', id)
expect(store.getters['activeFlow'].id).toEqual('f-111')
})
it("re-fetches and sets both the flows and the activeFlow if the flow doesn't exist in the store", async () => {
expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id)
const id = 'f-111' // Known flow id
expect(state['activeFlow'].id).not.toEqual(id)
expect(store.getters['flows'].find(p => p.id == id)).toBeFalsy()
await store.dispatch('activateFlow', id)
expect(store.getters['activeFlow'].id).toEqual(id)
})
it("throws an error if the flow doesn't exist in the store and can't be fetched", async () => {
expect(store.getters['flows']).toEqual(state['flows'])
const id = 'f-222' // Unknown flow id
expect(store.getters['flows'].find(f => f.id == id)).toBeFalsy()
expect(store.dispatch('activateFlow', id)).rejects.toThrow(
"Couldn't retrieve flow."
)
})
})
describe('activateProject', () => {
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
it('sets the activeProject from the store when the project exists in the store', async () => {
expect(store.getters['activeProject'].id).toEqual(
state['activeProject'].id
)
const id = store.getters['projects'].find(
p => p.id !== state['activeProject'].id
).id // Find the first project in the store that isn't the activeProject
expect(store.getters['activeProject'].id).not.toEqual(id)
await store.dispatch('activateProject', id)
expect(store.getters['activeProject'].id).toEqual(id)
})
it("re-fetches and sets both the projects and the activeProject if the project doesn't exist in the store", async () => {
expect(store.getters['activeProject'].id).toEqual(
state['activeProject'].id
)
const id = 'p-111' // Known project id
expect(state['activeProject'].id).not.toEqual(id)
expect(store.getters['projects'].find(p => p.id == id)).toBeFalsy()
await store.dispatch('activateProject', id)
expect(store.getters['activeProject'].id).toEqual(id)
})
it("throws an error if the project doesn't exist in the store and can't be fetched", async () => {
expect(store.getters['projects']).toEqual(state['projects'])
const id = 'p-222' // Unknown project id
expect(store.getters['projects'].find(p => p.id == id)).toBeFalsy()
expect(store.dispatch('activateProject', id)).rejects.toThrow(
"Couldn't retrieve project."
)
})
})
describe('activateTask', () => {
beforeEach(() => {
state = setState()
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
})
it('sets the activeTask from the store when the task exists in the store', async () => {
expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id)
const id = store.getters['tasks'].find(
p => p.id !== state['activeTask'].id
).id // Find the first task in the store that isn't the activeTask
expect(store.getters['activeTask'].id).not.toEqual(id)
await store.dispatch('activateTask', id)
expect(store.getters['activeTask'].id).toEqual(id)
})
it('sets the activeFlow and activeProject after setting the activeTask', async () => {
state = unsetState()
const flowSpy = jest.spyOn(data.actions, 'activateFlow')
const projectSpy = jest.spyOn(data.actions, 'activateProject')
store = new Vuex.Store({
state: state,
getters: data.getters,
actions: data.actions,
mutations: data.mutations
})
const tasks = generators['task'](5)
store.commit('setTasks', tasks)
expect(store.getters['tasks']).toEqual(tasks)
expect(store.getters['activeTask']).toEqual(null)
expect(store.getters['activeFlow']).toEqual(null)
expect(store.getters['activeProject']).toEqual(null)
const id = 't2'
const flow_id = tasks.find(f => f.id == id).flow_id
const project_id = 'p-444'
store.commit('setFlows', [
{
id: flow_id,
flow_group_id: 'fg-444',
name: 'Some Flow Name',
project_id: project_id
}
])
store.commit('setProjects', [
{ id: project_id, name: 'Some Project Name' }
])
await store.dispatch('activateTask', id)
await expect(data.actions['activateFlow']).toHaveBeenCalledTimes(1)
await expect(data.actions['activateProject']).toHaveBeenCalledTimes(1)
expect(store.getters['activeTask'].id).toEqual(id)
expect(store.getters['activeFlow'].id).toEqual(flow_id)
expect(store.getters['activeProject'].id).toEqual(project_id)
flowSpy.mockRestore()
projectSpy.mockRestore()
})
it("re-fetches and sets both the tasks and the activeTask if the task doesn't exist in the store", async () => {
expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id)
const id = 't-111' // Known task id
expect(state['activeTask'].id).not.toEqual(id)
expect(store.getters['tasks'].find(p => p.id == id)).toBeFalsy()
await store.dispatch('activateTask', id)
expect(store.getters['activeTask'].id).toEqual(id)
})
it("throws an error if the task doesn't exist in the store and can't be fetched", async () => {
expect(store.getters['tasks']).toEqual(state['tasks'])
const id = 't-222' // Unknown task id
expect(store.getters['tasks'].find(p => p.id == id)).toBeFalsy()
expect(store.dispatch('activateTask', id)).rejects.toThrow(
"Couldn't retrieve task."
)
})
})
})
})
})
================================================
FILE: tests/unit/store/license.spec.js
================================================
process.env.VUE_APP_BACKEND = 'CLOUD'
import license from '@/store/license'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
//simple mock for gql query
let mockerror = false
jest.mock('logrocket', () => {
return {
captureException: jest.fn()
}
})
jest.mock('@/graphql/License/license.gql', () => 'license query string')
jest.mock('@/vue-apollo', () => {
return {
fallbackApolloClient: {
query: () => {
if (!mockerror) {
return {
data: {
auth_info: {
license: {},
permissions: {}
}
}
}
} else {
return 'error'
}
}
}
}
})
const localVue = createLocalVue()
localVue.use(Vuex)
describe('license Vuex Module', () => {
const initialLicenseState = () => {
return {
license: null,
permissions: null
}
}
const activePermissions = () => {
return ['read:flow', 'read:project']
}
const activeLicense = () => {
return {
id: 'bar',
key: 'foo',
active: true,
terms: {
plan: 'SELF_SERVE',
users: 1,
history_retention_days: 30,
flow_concurrency: 1,
permissions: ['tier:scheduler', 'plan:self-serve']
}
}
}
describe('License State', () => {
it('should initally be unset', () => {
const state = license.state
expect(state.license).toBe(null)
})
})
describe('Permissions State', () => {
it('should initially be unset', () => {
const state = license.state
expect(state.permissions).toBe(null)
})
})
describe('getters', () => {
describe('when no license is set', () => {
let store
beforeEach(() => {
process.env.VUE_APP_BACKEND = 'CLOUD'
const license = require('@/store/license').default
store = new Vuex.Store({
state: license.state,
getters: license.getters,
mutations: license.mutations
})
})
it('should return null when the license getter is called', () => {
expect(store.getters.license).toBe(null)
})
it('should return false if there is no license when the hasLicense getter is called', () => {
expect(store.getters.hasLicense).toBe(false)
})
it('should return null when the permissions getter is called', () => {
expect(store.getters.permissions).toBe(null)
})
it('should return undefined when the planType getter is called with no parameters', () => {
expect(store.getters.planType()).toBe(undefined)
})
it('should return undefined when the planType getter is called with parameters', () => {
expect(store.getters.planType('STARTER')).toBe(undefined)
})
it('should return undefined when the hasPermission getter is called with no parameters', () => {
expect(store.getters.hasPermission()).toBe(undefined)
})
it('should return undefined when the hasPermission getter is called with parameters', () => {
expect(store.getters.hasPermission('read', 'flow')).toBe(undefined)
})
})
describe('when licenses are set', () => {
// testing this works in both types of state
let store
beforeEach(() => {
process.env.VUE_APP_BACKEND = 'CLOUD'
const license = require('@/store/license').default
store = new Vuex.Store({
state: { license: activeLicense(), permissions: activePermissions() },
getters: license.getters,
mutations: license.mutations
})
})
it('should return the license when the license getter is called', () => {
expect(store.getters.license).toStrictEqual(activeLicense())
})
it('should return true if there is a license when the hasLicense getter is called', () => {
expect(store.getters.hasLicense).toBe(true)
})
it('should return permissions when the permissions getter is called', () => {
expect(store.getters.permissions).toStrictEqual(activePermissions())
})
it('should return the current planType when the planType getter is called with no parameters', () => {
expect(store.getters.planType()).toBe('SELF_SERVE')
})
it('should return true if the planType is equal to the parameter', () => {
expect(store.getters.planType('SELF_SERVE')).toBe(true)
})
it('should return false when the hasPermission getter is called with no parameters', () => {
expect(store.getters.hasPermission()).toBe(false)
})
it('should return true when the hasPermission getter is called with parameters', () => {
expect(store.getters.hasPermission('read', 'flow')).toBe(true)
})
})
describe('permissions in Server', () => {
let store
beforeEach(() => {
process.env.VUE_APP_BACKEND = 'SERVER'
const license = require('@/store/license').default
store = new Vuex.Store({
state: license.state,
getters: license.getters,
mutations: license.mutations
})
})
it('should return true when the hasPermission getter is called with any args', () => {
expect(process.env.VUE_APP_BACKEND).toBe('SERVER')
expect(store.getters.hasPermission('read', 'flow')).toBe(true)
expect(store.getters.hasPermission('foo', 'bar')).toBe(true)
})
})
})
describe('Mutations', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialLicenseState(),
getters: license.getters,
mutations: license.mutations
})
})
describe('setLicense', () => {
it('should set the license', () => {
expect(store.getters.hasLicense).toBe(false)
store.commit('setLicense', activeLicense())
expect(store.getters.hasLicense).toBe(true)
expect(store.getters.license).toStrictEqual(activeLicense())
})
})
describe('unsetLicense', () => {
it('should remove the current license', () => {
store.commit('setLicense', activeLicense())
expect(store.getters.hasLicense).toBe(true)
store.commit('unsetLicense')
expect(store.getters.hasLicense).toBe(false)
expect(store.getters.license).toEqual(initialLicenseState().license)
})
})
describe('setPermissions', () => {
it('should set permissions', () => {
expect(store.state.permissions).toBe(null)
store.commit('setPermissions', activePermissions())
expect(store.state.permissions).toStrictEqual(activePermissions())
})
})
describe('unsetPermissions', () => {
it('should remove the current permissions', () => {
store.commit('setPermissions', activePermissions())
expect(store.getters.permissions).toStrictEqual(activePermissions())
store.commit('unsetPermissions')
expect(store.getters.permissions).toEqual(null)
})
})
})
describe('actions', () => {
describe('getLicense - no query error', () => {
let store
beforeEach(() => {
mockerror = false
store = new Vuex.Store({
state: initialLicenseState(),
getters: license.getters,
mutations: license.mutations,
actions: license.actions
})
})
it('should set new license data', async () => {
await store.dispatch('getLicense')
expect(store.getters.hasLicense).toBe(true)
expect(store.getters.license).toEqual({})
})
it('should set permissions', async () => {
await store.dispatch('getLicense')
expect(store.getters.permissions).toEqual({})
})
})
describe('getLicense - with query error', () => {
let store
beforeEach(() => {
mockerror = true
store = new Vuex.Store({
state: initialLicenseState(),
getters: license.getters,
mutations: license.mutations,
actions: license.actions
})
})
it('should not set license data', async () => {
await store.dispatch('getLicense')
expect(store.getters.hasLicense).toBe(false)
expect(store.getters.license).toEqual(null)
})
it('should not set permissions', async () => {
await store.dispatch('getLicense')
expect(store.getters.permissions).toEqual(null)
})
// it('should call logRocket', async () => {
// await store.dispatch('getLicense')
// expect(LogRocket.captureException).toHaveBeenCalled()
// })
})
})
})
================================================
FILE: tests/unit/store/mockTokens.js
================================================
const MOCK_AUTHORIZATION_TOKEN =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiYXdkYXdkYWRhLTQ5NDItNDhhNS04YzY2LWFkYXdkYWRhZCIsInRlbmFudF9pZCI6ImF3ZGF3ZGFkLWQ1NzAtNGYwYy05MTFkLWRjYWFiNWNlYzNkMCIsInJvbGUiOiJURU5BTlRfQURNSU4iLCJpYXQiOjE1Njg4NDAyODQsImV4cCI6MTU2ODg0MDI5OSwianRpIjoiMThiNDRhMTgtNTU2Yy00M2YzLTkxOWEtZDAwOWIwNDIzOTA3IiwiaXNzIjoiUHJlZmVjdCBDbG91ZCIsImF1ZCI6IlByZWZlY3QgQ2xvdWQgQVBJIC0gREVWIn0.3rI7CM3lT_u-8PPuTmR78ZlPeRZd4zRxsuIT9GYtr3A'
const MOCK_ID_TOKEN =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuaWNrbmFtZSI6InVzZXIiLCJuYW1lIjoidXNlciIsInBpY3R1cmUiOm51bGwsInVwZGF0ZWRfYXQiOiIyMDE5LTA5LTE4VDIwOjU4OjAyLjQ4NFoiLCJlbWFpbCI6InVzZXJAc29tZS5kb21haW4iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly91bml2ZXJzYWwucHJlZmVjdC5pby8iLCJzdWIiOiJhdXRoMHw1ZDUxOWVhYmIyYTZlOTBkYWYwYTMyNDIiLCJhdWQiOiJZWk1SQWx1T3hWYzY5RE9nOXFkbk4tV18ydExnbGd5bSIsImlhdCI6MTU2ODg0MDI4NCwiZXhwIjoxOTMzOTU0MDk5LCJub25jZSI6IkctSVgxY0lvSlNwUXNUZnpCUnpRdzVTUGowUE5yeGxnSnpBSTFNWVlKeW0ifQ.zN_8BiuKrRttJ6sds-Gize9jr8oG6ck7bd0E97QF1wQ'
const MOCK_ID_TOKEN_2 =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuaWNrbmFtZSI6InVzZXIiLCJuYW1lIjoidXNlciIsInBpY3R1cmUiOiJodHRwczovL2p3dC5pby9pbWcvcGljX2xvZ28uc3ZnIiwidXBkYXRlZF9hdCI6IjIwMTktMDktMThUMjA6NTg6MDIuNDg0WiIsImVtYWlsIjoidXNlckBzb21lLmRvbWFpbiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpc3MiOiJodHRwczovL3VuaXZlcnNhbC5wcmVmZWN0LmlvLyIsInN1YiI6ImF1dGgwfDVkNTE5ZWFiYjJhNmU5MGRhZjBhMzI0MiIsImF1ZCI6IllaTVJBbHVPeFZjNjlET2c5cWRuTi1XXzJ0TGdsZ3ltIiwiaWF0IjoxNTY4ODQwMjg0LCJleHAiOjE5MzM5NTQwOTksIm5vbmNlIjoiRy1JWDFjSW9KU3BRc1RmekJSelF3NVNQajBQTnJ4bGdKekFJMU1ZWUp5bSJ9.dF8Vrje0Gkl0bxRlCU8qwQ9nUum-NY9hHWpSJ9yrWMI'
const MOCK_REFRESH_TOKEN =
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhY2Nlc3NfdG9rZW5faWQiOiIxOGI0NGExOC01NTZjLTQzZjMtOTE5YS1kMDA5YjA0MjM5MDciLCJyb2xlIjoiUkVGUkVTSCIsImlhdCI6MTU2ODg0MDI4NSwiZXhwIjoxNTY5NDQwMjg0LCJqdGkiOiJlY2JiZTQxMy01ZTc4LTRjNzMtYjk3Ni0xYmEyYTE0YTc2OTgiLCJpc3MiOiJQcmVmZWN0IENsb3VkIiwiYXVkIjoiUHJlZmVjdCBDbG91ZCBBUEkgLSBERVYifQ.lTttZvW0uPMIkkaFrsGqmd25NUkkJP69PLwY-_Oky5VMptSVonoijwQXp0iXuzIfiJK27fwwLjbRtjAhH0c4Ns4FrzowozrP4U3TJbK0gBPbxqLSHQe5QBXCvTW5Pu_MVZAjU27Vw5ePQkkfDkoNJvIQ_Boce-uwU_oXagYZtEvprUcmSbvyz1G8Nmd9URlPYqiwpoUiywR1_fJGL3E6X9sa6Jbl8mMbiaL6ybFW_N9IPCIE2KZFYxhyYXNha_UmPqk_zQWRM8Xt4Ze-e2ePzoHjKwIugHgjv0o7CWHJwJEGM5rDbBIX91klfBpmpFchW_tCH34nH-5BsyfgR9wtaQ'
const MOCK_PREFECT_AUTH_PAYLOAD = {
access_token: MOCK_AUTHORIZATION_TOKEN,
refresh_token: MOCK_REFRESH_TOKEN,
expires_at: '2019-11-28T05:52:27.377857+00:00'
}
export {
MOCK_AUTHORIZATION_TOKEN,
MOCK_ID_TOKEN,
MOCK_ID_TOKEN_2,
MOCK_REFRESH_TOKEN,
MOCK_PREFECT_AUTH_PAYLOAD
}
================================================
FILE: tests/unit/store/refresh.spec.js
================================================
import refresh from '@/store/refresh'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
describe('Refresh Vuex Module', () => {
const initialState = () => {
return {
componentKey: 0
}
}
describe('State', () => {
it('should be initally be set to 0', () => {
const state = refresh.state
expect(state.componentKey).toBe(0)
})
})
describe('getters', () => {
let store
store = new Vuex.Store({
state: initialState(),
getters: refresh.getters,
mutations: refresh.mutations
})
test('the componentKey getter returns 0 in intial state', () => {
expect(store.getters.componentKey).toBe(0)
})
})
describe('mutations', () => {
let store
store = new Vuex.Store({
state: initialState(),
getters: refresh.getters,
mutations: refresh.mutations
})
test('the add mutation increase the componentKey by 1', () => {
expect(store.getters.componentKey).toBe(0)
store.commit('add')
expect(store.getters.componentKey).toBe(1)
})
})
})
================================================
FILE: tests/unit/store/sidenav.spec.js
================================================
import sideNav from '@/store/sideNav'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
describe('sideNav Vuex Module', () => {
const initialState = () => {
return {
open: false
}
}
const openState = () => {
return {
open: true
}
}
describe('State', () => {
it('should be initally set to false', () => {
const state = sideNav.state
expect(state.open).toBe(false)
})
})
describe('getters', () => {
let store
store = new Vuex.Store({
state: initialState(),
getters: sideNav.getters,
mutations: sideNav.mutations
})
it('isOpen should return false in initialState', () => {
expect(store.getters.isOpen).toBe(store.state.open)
})
store = new Vuex.Store({
state: openState(),
getters: sideNav.getters,
mutations: sideNav.mutations
})
it('isOpen should return true in openState', () => {
expect(store.getters.isOpen).toBe(store.state.open)
})
})
describe('Mutations', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialState(),
getters: sideNav.getters,
actions: sideNav.actions,
mutations: sideNav.mutations
})
})
describe('open', () => {
it('should set open to true', () => {
//making sure isOpen is set to false before we call 'open'
store.commit('close')
expect(store.getters['isOpen']).toBe(false)
store.commit('open')
expect(store.getters['isOpen']).toBe(true)
})
it('leave open as true', () => {
//making sure isOpen is true to check calling 'open' doesn't change state
store.commit('open')
expect(store.getters['isOpen']).toBe(true)
store.commit('open')
expect(store.getters['isOpen']).toBe(true)
})
})
describe('close', () => {
it('should set open to false', () => {
//making sure isOpen is set to true before we call 'close'
store.commit('open')
expect(store.getters['isOpen']).toBe(true)
store.commit('close')
expect(store.getters['isOpen']).toBe(false)
})
it('should leave open as false', () => {
//making sure isOpen is false to check calling 'close' doesn't change state
store.commit('close')
expect(store.getters['isOpen']).toBe(false)
store.commit('close')
expect(store.getters['isOpen']).toBe(false)
})
})
describe('toggle', () => {
it('should switch to the opposite state', () => {
//making sure toggle changes state irrespective of what isOpen is initially set to
expect(store.getters['isOpen']).toBe(false)
store.commit('toggle')
expect(store.getters['isOpen']).toBe(true)
store.commit('toggle')
expect(store.getters['isOpen']).toBe(false)
})
})
})
})
================================================
FILE: tests/unit/store/tenant.spec.js
================================================
jest.mock('@/auth/index.js')
import tenant from '@/store/tenant'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
jest.mock('@/middleware/prefectAuth', () => {
return {
prefectTenants: jest.fn(),
prefectRefresh: jest.fn()
}
})
import { prefectTenants } from '@/middleware/prefectAuth'
jest.mock(
'@/graphql/Tenant/tenant-token.gql',
() => 'tenant token mutation string'
)
const mockUpdate = jest.fn()
jest.mock('@/vue-apollo', () => {
return {
fallbackApolloClient: {
mutate: settings => {
mockUpdate(settings.variables.settings)
return { data: { tenant: 1 } }
}
}
}
})
jest.mock(
'@/graphql/Tenant/membership.gql',
() => 'tenant membership query string'
)
jest.mock('@/graphql/Mutations/update-tenant-settings.gql', () => 'gql string')
describe('tenant Vuex Module', () => {
const initialTenantState = () => {
return {
defaultTenant: null,
tenant: {
id: null,
name: null,
info: null,
slug: null,
role: null,
settings: {},
prefectAdminSettings: {},
licenses: [],
stripe_customer: null
},
tenantIsSet: false,
tenants: []
}
}
const loggedinTenantState = () => {
return {
defaultTenant: { name: 'TestTenant', slug: 'test', id: 'XXXXXXXXXX' },
tenant: {
id: 'd38b31a7-d570-4f0c-911d-dcaab5cec3d0',
name: 'Test Technologies Inc.',
info: null,
slug: 'test',
role: 'TENANT_ADMIN',
settings: { teamNamed: true, agreedToLicense: false },
prefectAdminSettings: {},
licenses: [{ active: true, product: 'Prefect Cloud Platform' }]
},
tenantIsSet: true,
tenants: [
{ name: 'TestTenant', slug: 'test', id: 'XXXXXXXXXX' },
{ name: 'TestTenant2', slug: 'testy', id: 'YYYYYYYYY' },
{
id: 'd38b31a7-d570-4f0c-911d-dcaab5cec3d0',
name: 'Test Technologies Inc.',
info: null,
slug: 'test',
role: 'TENANT_ADMIN',
settings: { teamNamed: true, agreedToLicense: false },
prefectAdminSettings: {},
licenses: [{ active: true, product: 'Prefect Cloud Platform' }]
}
]
}
}
describe('State', () => {
it('should hold tenant info)', () => {
const state = tenant.state
expect(state.defaultTenant).toBe(null)
expect(state.tenant.id).toBe(null)
expect(state.tenant.name).toBe(null)
expect(state.tenant.info).toBe(null)
expect(state.tenant.slug).toBe(null)
expect(state.tenant.role).toBe(null)
expect(Object.keys(state.tenant.settings).length).toBe(0)
expect(state.tenant.licenses.length).toBe(0)
expect(state.tenantIsSet).toBe(false)
expect(state.tenants.length).toBe(0)
})
})
describe('getters', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: loggedinTenantState(),
getters: tenant.getters,
actions: tenant.actions,
mutations: tenant.mutations
})
})
test('tenant getter should return logged in tenant details', () => {
expect(store.getters.tenant).toEqual(loggedinTenantState().tenant)
})
test('tenantIsSet getter should return true if the tenant is set', () => {
expect(store.getters.tenantIsSet).toBe(true)
})
test('defaultTenant getter should return the defaultTenant', () => {
expect(store.getters.defaultTenant.slug).toEqual('test')
expect(store.getters.defaultTenant).toEqual(
loggedinTenantState().defaultTenant
)
})
test('role getter should return the role', () => {
expect(store.getters.role).toEqual('TENANT_ADMIN')
})
test('tenants getter should return an array of tenant objects', () => {
expect(store.getters.tenants[0].slug).toEqual('test')
expect(store.getters.tenants).toEqual(loggedinTenantState().tenants)
})
})
describe('Mutations', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialTenantState(),
getters: tenant.getters,
actions: tenant.actions,
mutations: tenant.mutations
})
})
describe('setDefaultTenant', () => {
it('should set the defaultTenant', () => {
const tenant = loggedinTenantState().tenant
store.commit('setDefaultTenant', tenant)
expect(store.getters['defaultTenant']).toEqual(
loggedinTenantState().tenant
)
})
it('should throw an error if passed an invalid tenant', () => {
expect(() => store.commit('setDefaultTenant', [1, 2, 3])).toThrow(
'passed invalid or empty tenant object'
)
})
it('should throw an error if passed no tenant', () => {
expect(() => store.commit('setDefaultTenant')).toThrow(
'passed invalid or empty tenant object'
)
})
it('should throw an error if passed an empty tenant', () => {
expect(() => store.commit('setDefaultTenant', {})).toThrow(
'passed invalid or empty tenant object'
)
})
})
describe('setTenant', () => {
it('should set tenantIsSet to true', () => {
store.commit('setTenant', loggedinTenantState().tenant)
expect(store.getters['tenantIsSet']).toBe(true)
expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant)
})
it('should throw an error if given no tenant', () => {
store.commit('unsetTenant')
expect(() => store.commit('setTenant')).toThrow(
'passed invalid or empty tenant object'
)
})
it('should throw an error if given an empty tenant', () => {
store.commit('unsetTenant')
expect(() => store.commit('setTenant', {})).toThrow(
'passed invalid or empty tenant object'
)
})
})
describe('setTenants', () => {
it('should set the tenants array', () => {
const tenants = loggedinTenantState().tenants
store.commit('setTenants', tenants)
expect(store.getters['tenants'][0]).toEqual(tenants[0])
})
it('should throw an error if given no tenants array', () => {
store.commit('unsetTenants')
expect(() => store.commit('setTenants')).toThrow(
'passed invalid or empty tenant array'
)
})
it('should throw an error if given an empty tenants array', () => {
store.commit('unsetTenants')
expect(() => store.commit('setTenants', [])).toThrow(
'passed invalid or empty tenant array'
)
})
})
describe('unsetTenant', () => {
it('should set tenantIsSet to false', () => {
//Make sure store is in logged in state
store.commit('setTenant', loggedinTenantState().tenant)
expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant)
store.commit('unsetTenant')
expect(store.getters['tenantIsSet']).toBe(false)
expect(store.getters['tenant']).toEqual(initialTenantState().tenant)
})
})
describe('unsetTenants', () => {
it('should set tenants to an empty array', () => {
//Make sure store is in logged in state
store.commit('setTenants', loggedinTenantState().tenants)
expect(store.getters['tenants']).toEqual(loggedinTenantState().tenants)
store.commit('unsetTenants')
expect(store.getters['tenants']).toEqual([])
})
})
describe('updateTenantSettings', () => {
it('should update the settings in the store and leave the rest of the tenant as is', () => {
//Make sure store is in logged in state
store.commit('setTenant', loggedinTenantState().tenant)
expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant)
expect(store.getters['tenant'].settings.agreedToLicense).toEqual(false)
expect(store.getters['tenantIsSet']).toEqual(
loggedinTenantState().tenantIsSet
)
store.commit('updateTenantSettings', { agreedToLicense: true })
expect(store.getters['tenant']).toEqual({
...loggedinTenantState().tenant,
settings: { agreedToLicense: true }
})
})
it('should throw an error message if no settings are passed', () => {
expect(() => store.commit('updateTenantSettings')).toThrow(
'passed invalid or empty settings object'
)
})
})
})
describe('actions', () => {
describe('getTenants - no query error', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialTenantState(),
getters: tenant.getters,
mutations: tenant.mutations,
actions: tenant.actions
})
})
it('should call the prefectTenants method', async () => {
await store.dispatch('getTenants')
expect(prefectTenants).toHaveBeenCalled()
})
it('should set tenants', async () => {
const tenantsArray = [{ name: 'boo', id: '12345' }]
prefectTenants.mockReturnValueOnce(tenantsArray)
await store.dispatch('getTenants')
expect(store.getters.tenants).toEqual(tenantsArray)
})
it('should return tenants', async () => {
const tenantsArray = [{ name: 'boo', id: '12345' }]
prefectTenants.mockReturnValueOnce(tenantsArray)
const returnedTenants = await store.dispatch('getTenants')
expect(returnedTenants).toEqual([{ name: 'boo', id: '12345' }])
})
})
describe('setCurrentTenant - Server', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialTenantState(),
getters: tenant.getters,
mutations: tenant.mutations,
actions: tenant.actions
})
})
it('should throw an error if no slug is provided', () => {
expect(store.dispatch('setCurrentTenant', false)).rejects.toThrow(
'No slug was provided when trying to set the current tenant'
)
})
it('should call getTenants if the passed tenant is not present in the store', async () => {
expect(store.getters.tenant.slug).toBe(null)
expect(store.getters.tenant.name).toBe(null)
expect(store.getters.tenant.id).toBe(null)
const tenantsArray = [
{ name: 'boo', id: '12345', slug: 'team2' },
{ name: 'anotherTenant', id: '45678' }
]
prefectTenants.mockReturnValueOnce(tenantsArray)
await store.dispatch('setCurrentTenant', 'team2')
expect(store.getters.tenant.slug).toEqual('team2')
expect(store.getters.tenant.name).toEqual('boo')
expect(store.getters.tenant.id).toEqual('12345')
})
it('should throw an error if the requested tenant does not exist', async () => {
expect(store.getters.tenant.slug).toBe(null)
const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }]
prefectTenants.mockReturnValueOnce(tenantsArray)
expect(store.dispatch('setCurrentTenant', 'team3')).rejects.toThrow(
"Error: Unable to set current tenant: tenant doesn't exist"
)
})
it('should set the tenant role to TENANT_ADMIN', async () => {
//All tenants need an admin - for tenants in server with only one member, that member's role should be admin
expect(store.getters.tenant.slug).toBe(null)
const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }]
prefectTenants.mockReturnValueOnce(tenantsArray)
await store.dispatch('setCurrentTenant', 'team2')
expect(store.getters.role).toEqual('TENANT_ADMIN')
})
it('should return the tenant', async () => {
const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }]
prefectTenants.mockReturnValueOnce(tenantsArray)
expect(await store.dispatch('setCurrentTenant', 'team2')).toEqual({
id: '12345',
name: 'boo',
role: 'TENANT_ADMIN',
slug: 'team2'
})
})
})
describe('setCurrentTenant - Cloud', () => {
let store
beforeEach(() => {
tenant.actions['auth/updateAuthorization'] = jest.fn()
tenant.actions['license/getLicense'] = jest.fn()
store = new Vuex.Store({
state: initialTenantState(),
getters: {
...tenant.getters,
'api/isCloud': () => true,
'user/memberships': () => [
{ tenant: { id: '12345' }, role_detail: { name: 'USER' } },
{
tenant: { id: '45678' },
role_detail: { name: 'TENANT_ADMIN' }
},
{
tenant: { id: '9101112' },
role_detail: { name: 'READ_ONLY_USER' }
}
]
},
mutations: tenant.mutations,
actions: tenant.actions
})
})
it('should set the tenant role according to user memberships - USER role', async () => {
expect(store.getters.tenant.slug).toBe(null)
const tenantsArray = [
{ name: 'boo', id: '12345', slug: 'team2' },
{ name: 'anotherTeam', id: '45678', slug: 'team3' }
]
prefectTenants.mockReturnValueOnce(tenantsArray)
await store.dispatch('setCurrentTenant', 'team2')
expect(store.getters.role).toEqual('USER')
})
it('should set the tenant role according to user memberships - TENANT_ADMIN role', async () => {
expect(store.getters.tenant.slug).toBe(null)
const tenantsArray = [
{ name: 'boo', id: '12345', slug: 'team2' },
{ name: 'anotherTeam', id: '45678', slug: 'team3' },
{ name: 'aReadOnlyTeam', id: '9101112', slug: 'team1' }
]
prefectTenants.mockReturnValueOnce(tenantsArray)
await store.dispatch('setCurrentTenant', 'team1')
expect(store.getters.role).toEqual('READ_ONLY_USER')
})
})
describe('updateTenantSettings', () => {
let store
beforeEach(() => {
tenant.actions.getTenants = jest.fn()
store = new Vuex.Store({
state: initialTenantState(),
getters: tenant.getters,
mutations: tenant.mutations,
actions: tenant.actions
})
})
it('should throw an error if no settings are given', async () => {
expect(store.dispatch('updateTenantSettings')).rejects.toThrow(
'Error: passed invalid or empty settings object'
)
})
it('should call the getTenants action when settings are given', async () => {
await store.dispatch('updateTenantSettings', { name: 'Tom' })
expect(tenant.actions.getTenants).toBeCalled()
})
it('should call the update tenant settings mutation when settings are given', async () => {
await store.dispatch('updateTenantSettings', { name: 'Tom' })
expect(mockUpdate).toBeCalledWith({ name: 'Tom' })
})
})
})
})
================================================
FILE: tests/unit/store/user.spec.js
================================================
import user from '@/store/user'
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
const localVue = createLocalVue()
localVue.use(Vuex)
jest.mock('@/middleware/prefectAuth', () => {
null
})
jest.mock('@/middleware/prefectAuth', () => {
return {
prefectUser: jest.fn()
}
})
import { prefectUser } from '@/middleware/prefectAuth'
describe('user Vuex Module', () => {
const initialState = () => {
return {
user: {
id: null,
email: null,
username: null,
default_membership_id: null,
memberships: null,
first_name: '',
last_name: '',
settings: {
timezone: ''
}
},
oktaUser: {
name: null,
email: null,
picture: null
},
userIsSet: false
}
}
const userState = () => {
return {
user: {
id: '12345',
email: 'test@test.com',
username: 'test123',
default_membership_id: '5678',
memberships: [
{
id: '1112131415',
role: 'USER',
tenant: { id: 'yyyyy', name: 'test2', slug: 'test2' }
},
{
id: '5678',
role: 'TENANT_ADMIN',
tenant: { id: 'xxx', name: 'test1', slug: 'test1' }
}
],
first_name: 'first',
last_name: 'last',
settings: {
timezone: 'utc',
isDark: false
}
},
oktaUser: {
name: 'testtest',
email: 'test@test.com',
picture: 'linktopicture'
},
userIsSet: true
}
}
describe('State', () => {
test('userIsSet should initally be set to false', () => {
const state = user.state
expect(state.userIsSet).toBe(false)
})
test('user details should initally be empty', () => {
const state = user.state
expect(state.user).toEqual({
id: null,
email: null,
username: null,
default_membership_id: null,
memberships: null,
first_name: '',
last_name: '',
settings: {
timezone: '',
isDark: false
}
})
})
test('oktaUser details should initally be empty', () => {
const state = user.state
expect(state.oktaUser).toEqual({
name: null,
email: null,
picture: null
})
})
})
describe('getters', () => {
let store
store = new Vuex.Store({
state: userState(),
getters: user.getters,
mutations: user.mutations
})
test('user should return user details', () => {
expect(store.getters.user).toBe(store.state.user)
})
test('userIsSet should initially return false', () => {
expect(store.getters.userIsSet).toBe(true)
})
test('defaultMembershipId should return membership id if user membership id is set', () => {
expect(store.getters.defaultMembershipId).toEqual('5678')
})
test('oktaUser should return oktaUser details', () => {
expect(store.getters.oktaUser).toEqual({
name: 'testtest',
email: 'test@test.com',
picture: 'linktopicture'
})
})
test('timezone should return user timezone', () => {
expect(store.getters.timezone).toEqual('utc')
})
test('settings should return user settings', () => {
expect(store.getters.settings).toEqual({
timezone: 'utc',
isDark: false
})
})
test('firstName should return user first name', () => {
expect(store.getters.firstName).toEqual('first')
})
test('lastName should return user last name', () => {
expect(store.getters.lastName).toEqual('last')
})
test('memberships should return memberships array', () => {
expect(store.getters.memberships).toEqual(userState().user.memberships)
})
})
describe('mutations', () => {
let store
beforeEach(() => {
store = new Vuex.Store({
state: initialState(),
getters: user.getters,
mutations: user.mutations
})
})
test('user mutation sets the user and updates user is set', () => {
expect(store.getters.user).toEqual(initialState().user)
expect(store.getters.userIsSet).toBe(false)
store.commit('user', userState().user)
expect(store.getters.user).toEqual(userState().user)
expect(store.getters.user.email).toEqual('test@test.com')
expect(store.getters.userIsSet).toBe(true)
})
test('setOktaUser mutation sets the okta user', () => {
expect(store.getters.oktaUser).toEqual(initialState().oktaUser)
store.commit('setOktaUser', userState().oktaUser)
expect(store.getters.oktaUser).toEqual(userState().oktaUser)
expect(store.getters.oktaUser.email).toEqual('test@test.com')
})
test('setUsetSettings mutation sets the user settings', () => {
expect(store.getters.user).toEqual(initialState().user)
store.commit('setUserSettings', userState().user.settings)
expect(store.getters.settings).toEqual(userState().user.settings)
expect(store.getters.timezone).toEqual('utc')
expect(store.getters.isDark).toEqual(false)
})
test('unsetUser mutation un-sets the user and updates user is set', () => {
store.commit('user', userState().user)
expect(store.getters.user).toEqual(userState().user)
expect(store.getters.user.email).toEqual('test@test.com')
expect(store.getters.userIsSet).toBe(true)
store.commit('unsetUser')
expect(store.getters.user).toEqual(initialState().user)
expect(store.getters.userIsSet).toBe(false)
})
test('unsetOktaUser mutation un-sets the okta user', () => {
store.commit('setOktaUser', userState().oktaUser)
expect(store.getters.oktaUser).toEqual(userState().oktaUser)
expect(store.getters.oktaUser.email).toEqual('test@test.com')
store.commit('unsetOktaUser')
expect(store.getters.oktaUser).toEqual(initialState().oktaUser)
expect(store.getters.oktaUser.email).toEqual(null)
})
test('setUserDefaultMembershipId mutation sets the default membership', () => {
expect(store.getters.defaultMembershipId).toEqual(null)
store.commit('setUserDefaultMembershipId', '5678')
expect(store.getters.defaultMembershipId).toEqual('5678')
})
})
describe('actions', () => {
describe('setDefaultTenant action', () => {
let store
beforeEach(() => {
// Mock the mutations and actions from other stores
// that we don't want to
// test here
user.mutations['tenant/setDefaultTenant'] = jest.fn()
store = new Vuex.Store({
state: userState(),
getters: {
...user.getters,
'tenant/tenants': () => [
{ id: '3333', name: 'test33', slug: 'test33' }
]
},
mutations: user.mutations,
actions: user.actions
})
})
it('sets the default tenant according to the default membership id if available', () => {
expect(store.getters.defaultMembershipId).toEqual('5678')
store.dispatch('setDefaultTenant')
expect(
//First argument passed is the user state object, second is the default tenant to set
user.mutations['tenant/setDefaultTenant'].mock.calls[0][1]
).toEqual({
id: 'xxx',
name: 'test1',
slug: 'test1'
})
})
it('sets the default tenant according to the first tenant in the memberships array if there is no tenant matching the default membership id', async () => {
expect(store.getters.defaultMembershipId).toEqual('5678')
store.commit('setUserDefaultMembershipId', '2222')
expect(store.getters.defaultMembershipId).toEqual('2222')
await store.dispatch('setDefaultTenant')
expect(
//First argument passed is the user state, second is the default tenant to set
user.mutations['tenant/setDefaultTenant'].mock.calls[0][1]
).toEqual({ id: 'yyyyy', name: 'test2', slug: 'test2' })
})
it('sets the default tenant according to the first tenant in the tenants store tenants array if there are no memberships', async () => {
store.commit('unsetUser')
expect(store.getters.memberships).toEqual(null)
await store.dispatch('setDefaultTenant')
expect(
//First argument passed is the user state, second is the default tenant to set
user.mutations['tenant/setDefaultTenant'].mock.calls[0][1]
).toEqual({ id: '3333', name: 'test33', slug: 'test33' })
})
})
describe('getUser action', () => {
let store
beforeEach(() => {
// Mock the mutations and actions from other stores
// that we don't want to
// test here
user.mutations['tenant/setDefaultTenant'] = jest.fn()
store = new Vuex.Store({
state: initialState(),
getters: user.getters,
mutations: user.mutations,
actions: user.actions
})
})
it('calls prefectUser', async () => {
await store.dispatch('getUser')
expect(prefectUser).toBeCalled()
})
it('set the user', async () => {
expect(store.getters.user).toEqual(initialState().user)
prefectUser.mockReturnValueOnce(userState().user)
await store.dispatch('getUser')
expect(store.getters.user).toEqual(userState().user)
})
it('calls setDefaultTenant', async () => {
await store.dispatch('getUser')
expect(user.mutations['tenant/setDefaultTenant']).toBeCalled()
})
it('returns the user', async () => {
prefectUser.mockReturnValueOnce(userState().user)
const returnedUser = await store.dispatch('getUser')
expect(returnedUser).toEqual(userState().user)
})
})
})
})
================================================
FILE: vue.config.js
================================================
const WorkerPlugin = require('worker-plugin')
const webpack = require('webpack')
module.exports = {
productionSourceMap: false,
chainWebpack: config => {
config.module
.rule('md')
.test(/\.md/)
.use('html-loader')
.loader('html-loader')
.tap(options => {
return { ...options, minimize: false }
})
.end()
config.resolve.symlinks(false)
config.output.globalObject('this')
config.module
.rule('flow')
.test(/\.flow$/)
.use('ignore-loader')
.loader('ignore-loader')
.end()
// This optimization comes from a long-standing bug with the terser webpack plugin
// documented here: https://github.com/webpack-contrib/terser-webpack-plugin/issues/143,
// and here: https://github.com/terser/terser/issues/571,
// and here: https://github.com/webpack-contrib/terser-webpack-plugin/issues/202
config.optimization.minimizer('terser').tap(args => {
args[0].terserOptions = {
terserOptions: {
parse: {
ecma: 8
},
compress: {
ecma: 5,
warnings: false,
comparisons: false,
inline: 2,
drop_console: true
},
mangle: {
safari10: true
},
output: {
ecma: 5,
comments: false,
ascii_only: true
}
},
parallel: 4, // This should be changed if we modify the resource class of the Circle jobs running the build step
cache: true,
sourceMap: false,
extractComments: false
}
return args
})
},
configureWebpack: {
optimization: {
splitChunks: {
chunks: 'all',
minSize: 30000,
maxSize: 1000000,
minChunks: 1,
maxAsyncRequests: 6,
maxInitialRequests: 4,
automaticNameDelimiter: '~',
cacheGroups: {
defaultVendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
}
},
plugins: [
new WorkerPlugin({ sharedWorker: true }),
new webpack.ContextReplacementPlugin(
/moment[/\\]locale$/,
/en-au|en-ca|en-us|en-mx/
)
]
},
pluginOptions: {
lintStyleOnBuild: true,
stylelint: {},
apollo: {
lintGQL: true
},
webpackBundleAnalyzer: {
analyzerMode: 'disabled'
// you can uncomment this line, run npm build, this will generate dist/stats.json which can be viewed here
// https://chrisbateman.github.io/webpack-visualizer/
//generateStatsFile: true
}
},
// Adding this package specically because
// the source has 2 nullish coalscent references
// that babel isn't transpiling correctly otherwise
transpileDependencies: [
'@d3fc/d3fc-axis',
'graphql-language-service-interface',
'graphql-language-service-parser',
'graphql-language-service'
]
}