diff --git a/.babelrc b/.babelrc index 6ba0e0da..3fb847ad 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,21 @@ { - "presets": ["react", "es2015", "es2016"], - "plugins": ["transform-class-properties", "transform-object-rest-spread", "transform-async-to-bluebird", "transform-runtime", "add-module-exports"] + "presets": [ + "react", + "es2015", + "es2016" + ], + "plugins": [ + [ + "transform-builtin-extend", + { + "globals": ["Error"] + } + ], + "transform-class-properties", + "transform-object-rest-spread", + "transform-async-to-bluebird", + "transform-runtime", + "add-module-exports", + "syntax-dynamic-import" + ] } diff --git a/.buildkite/pipeline.yaml b/.buildkite/pipeline.yaml new file mode 100644 index 00000000..46ec4edc --- /dev/null +++ b/.buildkite/pipeline.yaml @@ -0,0 +1,57 @@ +steps: + - label: ":eslint: Lint" + command: + - "yarn install" + - "yarn lint" + plugins: + - docker#v3.0.1: + image: "node:10" + + - label: ":karma: Tests" + agents: + # We use a medium sized instance instead of the normal small ones because + # webpack loves to gorge itself on resources. + queue: "medium" + command: + # Install chrome + - "echo '--- Installing Chrome'" + - "wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -" + - "sh -c 'echo \"deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main\" >> /etc/apt/sources.list.d/google.list'" + - "apt-get update" + - "apt-get install -y google-chrome-stable" + # Run tests + - "echo '--- Fetching Dependencies'" + - "./scripts/fetch-develop.deps.sh --depth 1" + - "yarn install" + - "echo '+++ Running Tests'" + - "yarn test" + env: + CHROME_BIN: "/usr/bin/google-chrome-stable" + plugins: + - docker#v3.0.1: + image: "node:10" + propagate-environment: true + + - label: ":hammer: Package" + command: + - "echo '--- Fetching Dependencies'" + - "./scripts/fetch-develop.deps.sh --depth 1" + - "yarn install" + - "echo '+++ Packaging'" + - "./scripts/ci_package.sh" + branches: "develop" + artifact_paths: "dist/riot-*.tar.gz" + plugins: + - docker#v3.0.1: + image: "node:10" + + - label: "🌐 i18n" + command: + - "echo '--- Fetching Dependencies'" + - "./scripts/fetch-develop.deps.sh --depth 1" + - "yarn install" + - "echo '+++ Testing i18n output'" + - "yarn diff-i18n" + plugins: + - docker#v3.0.1: + image: "node:10" \ No newline at end of file diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..d4eb9eeb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +# Exclude a bunch of stuff which can make the build context a larger than it needs to be +.git/ +test/ +webapp/ +lib/ +node_modules/ +electron_app/ +karma-reports/ +.idea/ +.tmp/ +config.json* diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..afc29f01 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +patreon: matrixdotorg +liberapay: matrixdotorg diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index ba4adf39..a2042975 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -43,4 +43,4 @@ For the web app: For the desktop app: - **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? -- **Version**: 0.x.y <!-- check the user settings panel if unsure --> +- **Version**: 1.x.y <!-- check the user settings panel if unsure --> diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..5f472303 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,56 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +<!-- Please report security issues by email to security@matrix.org --> + +<!-- This is a bug report template. By following the instructions below and +filling out the sections with your information, you will help the us to get all +the necessary data to fix your issue. + +You can also preview your report before submitting it. You may remove sections +that aren't relevant to your particular case. + +Text between <!-- and --> marks will be invisible in the report. +--> + +### Description + +Describe here the problem that you are experiencing, or the feature you are requesting. + +### Steps to reproduce + +- For bugs, list the steps +- that reproduce the bug +- using hyphens as bullet points + +Describe how what happens differs from what you expected. + +<!-- Please send us logs for your bug report. They're very important for bugs +which are hard to reproduce. To do this, create this issue then go to your +account settings and click 'Submit Debug Logs' from the Help & About tab --> +Logs being sent: yes/no + +<!-- Include screenshots if possible: you can drag and drop images below. --> + +### Version information + +<!-- IMPORTANT: please answer the following questions, to help us narrow down the problem --> + +- **Platform**: web (in-browser) or desktop? + +For the web app: + +- **Browser**: Chrome, Safari, Firefox? which version? +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **URL**: riot.im/develop / riot.im/app / somewhere else? If a private server, what version of riot-web? + +For the desktop app: + +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **Version**: 1.x.y <!-- check the user settings panel if unsure --> diff --git a/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md b/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md new file mode 100644 index 00000000..b27af8fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/suggestion-or-feature-request.md @@ -0,0 +1,20 @@ +--- +name: Suggestion or Feature request +about: Suggest an idea for this project +title: '' +labels: suggestion +assignees: '' + +--- + +**Is your suggestion related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md b/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md new file mode 100644 index 00000000..b3e68cce --- /dev/null +++ b/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md @@ -0,0 +1,58 @@ +--- +name: User Interface or Usability Bug report +about: Please include screenshots in UI/UX bug reports +title: '' +labels: bug, ui/ux +assignees: '' + +--- + +<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P --> + +<!-- Please report security issues by email to security@matrix.org --> + +<!-- This is a bug report template. By following the instructions below and +filling out the sections with your information, you will help the us to get all +the necessary data to fix your issue. + +You can also preview your report before submitting it. You may remove sections +that aren't relevant to your particular case. + +Text between <!-- and --> marks will be invisible in the report. +--> + +### Description + +Describe here the problem that you are experiencing, or the feature you are requesting. + +### Steps to reproduce + +- For bugs, list the steps +- that reproduce the bug +- using hyphens as bullet points + +Describe how what happens differs from what you expected. + +<!-- Please send us logs for your bug report. They're very important for bugs +which are hard to reproduce. To do this, create this issue then go to your +account settings and click 'Submit Debug Logs' from the Help & About tab --> +Logs being sent: yes/no + +<!-- Include screenshots if possible: you can drag and drop images below. --> + +### Version information + +<!-- IMPORTANT: please answer the following questions, to help us narrow down the problem --> + +- **Platform**: web (in-browser) or desktop? + +For the web app: + +- **Browser**: Chrome, Safari, Firefox? which version? +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **URL**: riot.im/develop / riot.im/app / somewhere else? If a private server, what version of riot-web? + +For the desktop app: + +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **Version**: 1.x.y <!-- check the user settings panel if unsure --> diff --git a/.gitignore b/.gitignore index 2ad05012..c1a04234 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,23 @@ /build /cert.pem /dist -/karma-reports /key.pem /lib /node_modules /electron_app/node_modules /electron_app/dist +/electron_app/pub /packages/ /webapp /.npmrc +/*.log +package-lock.json .DS_Store -npm-debug.log electron/dist electron/pub **/.idea /config.json +/config.json.* +/config.local*.json /src/component-index.js +/.tmp diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index bc3fce38..00000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -# we need trusty for the chrome addon -dist: trusty - -# we don't need sudo, so can run in a container, which makes startup much -# quicker. -# -# unfortunately we do temporarily require sudo as a workaround for -# https://github.com/travis-ci/travis-ci/issues/8836 -sudo: required - -language: node_js -node_js: - # make sure we work with a range of node versions. - # As of the time of writing: - # - 4.x is still in LTS (until April 2018), but some of our deps (notably - # extract-zip) don't work with it - # - 5.x has been EOLed for nearly a year. - # - 6.x is the active 'LTS' version - # - 7.x is no longer supported - # - 8.x is the current 'current' version (until October 2017) - # - # see: https://github.com/nodejs/LTS/ - # - # anything before 6.3 ships with npm 3.9 or earlier, which had problems - # with symlinks in node_modules (see - # https://github.com/npm/npm/releases/tag/v3.10.0 'FIXES AND REFACTORING'). - - 6.3 - - 6 - - 7 -addons: - chrome: stable -install: - # clone the deps with depth 1: we know we will only ever need that one - # commit. - - scripts/fetch-develop.deps.sh --depth 1 && npm install diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b66e37a..5a742a16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,1457 @@ +Changes in [1.5.0](https://github.com/vector-im/riot-web/releases/tag/v1.5.0) (2019-10-18) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.0-rc.1...v1.5.0) + + * Upgrade to JS SDK v2.4.2 and React SDK v1.7.0 + * Port Windows signing and macOS notarization to release + [\#11158](https://github.com/vector-im/riot-web/pull/11158) + * Sign main Windows executable + [\#11126](https://github.com/vector-im/riot-web/pull/11126) + * Notarise the macOS app + [\#11119](https://github.com/vector-im/riot-web/pull/11119) + +Changes in [1.5.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.0-rc.1) (2019-10-09) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.2...v1.5.0-rc.1) + + * Update from Weblate + [\#11104](https://github.com/vector-im/riot-web/pull/11104) + * Bump Olm to 3.1.4 for olm_session_describe + [\#11103](https://github.com/vector-im/riot-web/pull/11103) + * Enable Webpack production mode for start:js:prod + [\#11098](https://github.com/vector-im/riot-web/pull/11098) + * add settingDefaults to sample config + [\#9919](https://github.com/vector-im/riot-web/pull/9919) + * Add config.json copy instruction to 'Development' as well + [\#11062](https://github.com/vector-im/riot-web/pull/11062) + * Revert "Run yarn upgrade" + [\#11055](https://github.com/vector-im/riot-web/pull/11055) + * Run yarn upgrade + [\#11050](https://github.com/vector-im/riot-web/pull/11050) + * Request persistent storage on Electron + [\#11052](https://github.com/vector-im/riot-web/pull/11052) + * Remove docs for CIDER feature + [\#11047](https://github.com/vector-im/riot-web/pull/11047) + +Changes in [1.4.2](https://github.com/vector-im/riot-web/releases/tag/v1.4.2) (2019-10-04) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.2-rc.1...v1.4.2) + + * Document troubleshooting for memory leaks and getting profiles + [\#11031](https://github.com/vector-im/riot-web/pull/11031) + +Changes in [1.4.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.4.2-rc.1) (2019-10-02) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.1...v1.4.2-rc.1) + + * Custom themes MVP + [\#11017](https://github.com/vector-im/riot-web/pull/11017) + * Document permalinkPrefix setting + [\#11007](https://github.com/vector-im/riot-web/pull/11007) + +Changes in [1.4.1](https://github.com/vector-im/riot-web/releases/tag/v1.4.1) (2019-10-01) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.0...v1.4.1) + + * Upgrade to React SDK 1.6.1 to fix critical + [blank screen issue](https://github.com/vector-im/riot-web/issues/10983) + * Upgrade to JS SDK 2.4.1 to to ignore crypto events with empty content + * Update from Weblate + [\#11010](https://github.com/vector-im/riot-web/pull/11010) + * Update from Weblate + [\#11001](https://github.com/vector-im/riot-web/pull/11001) + * Upgrade deps + [\#10980](https://github.com/vector-im/riot-web/pull/10980) + +Changes in [1.4.0](https://github.com/vector-im/riot-web/releases/tag/v1.4.0) (2019-09-27) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.0-rc.2...v1.4.0) + +* Many improvements related to privacy and user control of identity services and integration managers +* Upgrade to React SDK 1.6.0 and JS SDK 2.4.0 + +Changes in [1.4.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.4.0-rc.2) (2019-09-26) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.4.0-rc.1...v1.4.0-rc.2) + + * Upgrade to React SDK 1.6.0-rc.2 + * Work around Yarn confusion with `react-gemini-scrollbar` package + +Changes in [1.4.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.4.0-rc.1) (2019-09-25) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.6...v1.4.0-rc.1) + + * Upgrade to React SDK 1.6.0-rc.1 and JS SDK 2.4.0-rc.1 + * Update from Weblate + [\#10961](https://github.com/vector-im/riot-web/pull/10961) + * Don't log query parameters as they may contain secrets + [\#10929](https://github.com/vector-im/riot-web/pull/10929) + * Document more shortcuts + [\#10906](https://github.com/vector-im/riot-web/pull/10906) + * Point to #develop and use the same gemini-scrollbar version as the react-sdk + [\#10893](https://github.com/vector-im/riot-web/pull/10893) + * Tweak lock file to pull in only one React version + [\#10874](https://github.com/vector-im/riot-web/pull/10874) + * document disable_custom_urls + [\#10844](https://github.com/vector-im/riot-web/pull/10844) + * Install guide tweaks + [\#10838](https://github.com/vector-im/riot-web/pull/10838) + * Switch to React 16 + [\#10480](https://github.com/vector-im/riot-web/pull/10480) + * Update install guide + [\#10810](https://github.com/vector-im/riot-web/pull/10810) + * Clarify that HTTPS is not just needed for VoIP + [\#6146](https://github.com/vector-im/riot-web/pull/6146) + * Bump eslint-utils from 1.4.0 to 1.4.2 + [\#10692](https://github.com/vector-im/riot-web/pull/10692) + * Add docs for tabbed integration managers labs flag + [\#10641](https://github.com/vector-im/riot-web/pull/10641) + * Change integrations_widgets_urls default configuration + [\#10656](https://github.com/vector-im/riot-web/pull/10656) + * Add docs for the CIDER composer flag + [\#10638](https://github.com/vector-im/riot-web/pull/10638) + * add cider composer labs flag + [\#10626](https://github.com/vector-im/riot-web/pull/10626) + * Upgrade to Electron 6.0.3 + [\#10601](https://github.com/vector-im/riot-web/pull/10601) + * Upgrade to Electron 6 + [\#10596](https://github.com/vector-im/riot-web/pull/10596) + * Update from Weblate + [\#10591](https://github.com/vector-im/riot-web/pull/10591) + * Upgrade electron-builder to 21.2.0 + [\#10579](https://github.com/vector-im/riot-web/pull/10579) + * Set SUID bit on chrome-sandbox for Debian + [\#10580](https://github.com/vector-im/riot-web/pull/10580) + * Load config.json before loading language so default can apply + [\#10551](https://github.com/vector-im/riot-web/pull/10551) + * Bump matrix-react-test-utils for React 16 compatibility + [\#10543](https://github.com/vector-im/riot-web/pull/10543) + * Add --help to electron app + [\#10530](https://github.com/vector-im/riot-web/pull/10530) + * Allow setting electron autoHideMenuBar and persist it + [\#10503](https://github.com/vector-im/riot-web/pull/10503) + * Upgrade dependencies + [\#10475](https://github.com/vector-im/riot-web/pull/10475) + +Changes in [1.3.6](https://github.com/vector-im/riot-web/releases/tag/v1.3.6) (2019-09-19) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.5...v1.3.6) + + * Fix origin migrator for SSO logins + [\#10920](https://github.com/vector-im/riot-web/pull/10920) + +Changes in [1.3.5](https://github.com/vector-im/riot-web/releases/tag/v1.3.5) (2019-09-16) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.5-rc.3...v1.3.5) + + * Updated js-sdk and react-sdk for some more minor bugfixes + +Changes in [1.3.5-rc.3](https://github.com/vector-im/riot-web/releases/tag/v1.3.5-rc.3) (2019-09-13) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.5-rc.2...v1.3.5-rc.3) + + * js-sdk rc.1 to include report API + +Changes in [1.3.5-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.3.5-rc.2) (2019-09-13) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.5-rc.1...v1.3.5-rc.2) + + * Pull in more fixes from react-sdk rc.2 + +Changes in [1.3.5-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.3.5-rc.1) (2019-09-12) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.4...v1.3.5-rc.1) + + * Cosmetic fixes from react-sdk rc.1 + +Changes in [1.3.4](https://github.com/vector-im/riot-web/releases/tag/v1.3.4) (2019-09-12) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.4-rc.1...v1.3.4) + + * Updated react-sdk and tweaks to mobile install guide + +Changes in [1.3.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.3.4-rc.1) (2019-09-11) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.3...v1.3.4-rc.1) + + * Update install guide + [\#10831](https://github.com/vector-im/riot-web/pull/10831) + +Changes in [1.3.3](https://github.com/vector-im/riot-web/releases/tag/v1.3.3) (2019-08-16) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.2...v1.3.3) + + * Linux-only release to fix sandboxing with Electron 5 on Debian + [\#10580](https://github.com/vector-im/riot-web/pull/10580) + +Changes in [1.3.2](https://github.com/vector-im/riot-web/releases/tag/v1.3.2) (2019-08-05) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.1...v1.3.2) + + * Updated react-sdk for deactivated account error message on login + +Changes in [1.3.1](https://github.com/vector-im/riot-web/releases/tag/v1.3.1) (2019-08-05) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.1-rc.1...v1.3.1) + + * Updated js-sdk for notifications fix and react-sdk for registration fix + +Changes in [1.3.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.3.1-rc.1) (2019-07-31) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.0...v1.3.1-rc.1) + + * Upgrade to JS SDK 2.3.0-rc.1 and React SDK 1.5.0-rc.1 + * Update from Weblate + [\#10436](https://github.com/vector-im/riot-web/pull/10436) + * Describe our existing features better in documentation + [\#10418](https://github.com/vector-im/riot-web/pull/10418) + * Upgrade to Electron 5 + [\#10392](https://github.com/vector-im/riot-web/pull/10392) + * Remove edits and reactions feature flags from docs and config + [\#10363](https://github.com/vector-im/riot-web/pull/10363) + * Cachebust config file requests + [\#10349](https://github.com/vector-im/riot-web/pull/10349) + * Convert install-app-deps to subcommand + [\#10334](https://github.com/vector-im/riot-web/pull/10334) + * Add riot.im configuration files + [\#10327](https://github.com/vector-im/riot-web/pull/10327) + * Require descriptions in mxSendRageshake and remove infinite loop in issue + templates + [\#10321](https://github.com/vector-im/riot-web/pull/10321) + * Remove unused disable_identity_server config flag + [\#10322](https://github.com/vector-im/riot-web/pull/10322) + * Verify i18n in CI + [\#10320](https://github.com/vector-im/riot-web/pull/10320) + +Changes in [1.3.0](https://github.com/vector-im/riot-web/releases/tag/v1.3.0) (2019-07-18) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.0-rc.3...v1.3.0) + + * Upgrade to React SDK 1.4.0 and JS SDK 2.2.0 + * Message editing and reactions features enabled + * Remove edits and reactions feature flags from docs and config + [\#10365](https://github.com/vector-im/riot-web/pull/10365) + +Changes in [1.3.0-rc.3](https://github.com/vector-im/riot-web/releases/tag/v1.3.0-rc.3) (2019-07-15) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.0-rc.2...v1.3.0-rc.3) + + * Update to react-sdk rc.3 to fix a bug where a room admin could generate a room + that would cause Riot to error, and some stuck notifications. + +Changes in [1.3.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.3.0-rc.2) (2019-07-12) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.3.0-rc.1...v1.3.0-rc.2) + + * Upgrade to React SDK 1.4.0-rc.2 and JS SDK 2.2.0-rc.2 + * Fix regression from Riot 1.3.0-rc.1 when listing devices in user settings + +Changes in [1.3.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.3.0-rc.1) (2019-07-12) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.4...v1.3.0-rc.1) + + * Upgrade to React SDK 1.4.0-rc.1 and JS SDK 2.2.0-rc.1 + * Update from Weblate + [\#10328](https://github.com/vector-im/riot-web/pull/10328) + * Upgrade dependencies + [\#10308](https://github.com/vector-im/riot-web/pull/10308) + * Upgrade dependencies + [\#10260](https://github.com/vector-im/riot-web/pull/10260) + +Changes in [1.2.4](https://github.com/vector-im/riot-web/releases/tag/v1.2.4) (2019-07-11) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.3...v1.2.4) + + * Upgrade to React SDK 1.3.1 and JS SDK 2.1.1 + * Upgrade lodash dependencies + * JS SDK 2.1.1 includes a fix for ephemeral event processing + * React SDK 1.3.1 includes a fix for account deactivation + +Changes in [1.2.3](https://github.com/vector-im/riot-web/releases/tag/v1.2.3) (2019-07-08) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.3-rc.1...v1.2.3) + + * Upgrade to React SDK 1.3.0 and JS SDK 2.1.0 + * JS SDK 2.1.0 includes a fix for an exception whilst syncing + +Changes in [1.2.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.3-rc.1) (2019-07-03) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2...v1.2.3-rc.1) + + * Change update URL to match new host + [\#10247](https://github.com/vector-im/riot-web/pull/10247) + * Update from Weblate + [\#10219](https://github.com/vector-im/riot-web/pull/10219) + * Extract configuration docs to separate file + [\#10195](https://github.com/vector-im/riot-web/pull/10195) + * Add e2e/warning.svg to preload + [\#10197](https://github.com/vector-im/riot-web/pull/10197) + * Fix Electron vector: links + [\#10196](https://github.com/vector-im/riot-web/pull/10196) + * Display a red box of anger for config syntax errors + [\#10193](https://github.com/vector-im/riot-web/pull/10193) + * Move config-getting to VectorBasePlatform + [\#10181](https://github.com/vector-im/riot-web/pull/10181) + * Update from Weblate + [\#10124](https://github.com/vector-im/riot-web/pull/10124) + * Fix default Electron window and tray icons + [\#10097](https://github.com/vector-im/riot-web/pull/10097) + +Changes in [1.2.2](https://github.com/vector-im/riot-web/releases/tag/v1.2.2) (2019-06-19) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2-rc.2...v1.2.2) + + No changes since rc.2 + +Changes in [1.2.2-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.2) (2019-06-18) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2-rc.1...v1.2.2-rc.2) + + * Update to react-sdk and js-sdk rc.2 for registration fixes, + redaction local echo fix and removing unnecessary calls + to the integration manager. + +Changes in [1.2.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.1) (2019-06-12) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.1...v1.2.2-rc.1) + + * Update from Weblate + [\#10012](https://github.com/vector-im/riot-web/pull/10012) + * Add funding details for GitHub sponsor button + [\#9982](https://github.com/vector-im/riot-web/pull/9982) + * Do not fail on server liveliness checks during startup + [\#9960](https://github.com/vector-im/riot-web/pull/9960) + * Hide guest functions on the welcome page if not logged in + [\#9957](https://github.com/vector-im/riot-web/pull/9957) + * Add Albanian and West Flemish languages + [\#9953](https://github.com/vector-im/riot-web/pull/9953) + * Update from Weblate + [\#9951](https://github.com/vector-im/riot-web/pull/9951) + * Add docs for defaultCountryCode + [\#9927](https://github.com/vector-im/riot-web/pull/9927) + * Use the user's pre-existing HS when config validation fails + [\#9892](https://github.com/vector-im/riot-web/pull/9892) + * Low bandwidth mode + [\#9909](https://github.com/vector-im/riot-web/pull/9909) + * Fix Twemoji loading on Windows dev machines + [\#9869](https://github.com/vector-im/riot-web/pull/9869) + * Base Docker image on nginx:alpine, not the larger nginx:latest + [\#9848](https://github.com/vector-im/riot-web/pull/9848) + * Validate homeserver configuration prior to loading the app + [\#9779](https://github.com/vector-im/riot-web/pull/9779) + * Show resolved homeserver configuration on the mobile guide + [\#9726](https://github.com/vector-im/riot-web/pull/9726) + * Flag the validated config as the default config + [\#9721](https://github.com/vector-im/riot-web/pull/9721) + * Clarify comment on is_url and hs_url handling + [\#9719](https://github.com/vector-im/riot-web/pull/9719) + * Validate default homeserver config before loading the app + [\#9496](https://github.com/vector-im/riot-web/pull/9496) + +Changes in [1.2.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.1) (2019-05-31) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.0...v1.2.1) + + * Upgrade JS SDK to 2.0.0 and React SDK to 1.2.1 to fix key backup and native emoji height + +Changes in [1.2.0](https://github.com/vector-im/riot-web/releases/tag/v1.2.0) (2019-05-29) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.0-rc.1...v1.2.0) + + * Upgrade to JS SDK v1.2.0 and React SDK v1.2.0 to fix some regressions + +Changes in [1.2.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.0-rc.1) (2019-05-23) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.2...v1.2.0-rc.1) + + * Update from Weblate + [\#9802](https://github.com/vector-im/riot-web/pull/9802) + * remove emojione + [\#9766](https://github.com/vector-im/riot-web/pull/9766) + * Make Dockerfile work for develop and other branches + [\#9736](https://github.com/vector-im/riot-web/pull/9736) + * add description of new labs feature for message editing + [\#9728](https://github.com/vector-im/riot-web/pull/9728) + * Remove karma junit output + [\#9628](https://github.com/vector-im/riot-web/pull/9628) + * yarn upgrade + [\#9626](https://github.com/vector-im/riot-web/pull/9626) + * Respond quickly to buildkite pokes + [\#9617](https://github.com/vector-im/riot-web/pull/9617) + * Delay creating the `Favico` instance + [\#9616](https://github.com/vector-im/riot-web/pull/9616) + * Add reactions feature to config sample + [\#9598](https://github.com/vector-im/riot-web/pull/9598) + +Changes in [1.1.2](https://github.com/vector-im/riot-web/releases/tag/v1.1.2) (2019-05-15) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.1...v1.1.2) + + * react-sdk v1.1.2 to fix single sign-on and GIF autoplaying + +Changes in [1.1.1](https://github.com/vector-im/riot-web/releases/tag/v1.1.1) (2019-05-14) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.0...v1.1.1) + + * react-sdk v1.1.1 to fix regressions with registration + +Changes in [1.1.0](https://github.com/vector-im/riot-web/releases/tag/v1.1.0) (2019-05-07) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.0-rc.1...v1.1.0) + + * Add Dockerfile + [\#9632](https://github.com/vector-im/riot-web/pull/9632) + * Add Dockerfile (part 2) + [\#9426](https://github.com/vector-im/riot-web/pull/9426) + * Add new scalar staging url + [\#9601](https://github.com/vector-im/riot-web/pull/9601) + +Changes in [1.1.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.1.0-rc.1) (2019-04-30) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.8...v1.1.0-rc.1) + + * Convert redeploy.py to buildkite + [\#9577](https://github.com/vector-im/riot-web/pull/9577) + * Add package step to buildkite pipeline + [\#9568](https://github.com/vector-im/riot-web/pull/9568) + * Don't fail if there's no local config to remove + [\#9571](https://github.com/vector-im/riot-web/pull/9571) + * Change jenkins script to package script + [\#9567](https://github.com/vector-im/riot-web/pull/9567) + * Remove config.json from package dir + [\#9555](https://github.com/vector-im/riot-web/pull/9555) + * use the release version of olm 3.1.0 + [\#9550](https://github.com/vector-im/riot-web/pull/9550) + * Fix default for --include arg + [\#9517](https://github.com/vector-im/riot-web/pull/9517) + * update installation instructions with new repo + [\#9500](https://github.com/vector-im/riot-web/pull/9500) + * Use packages.matrix.org for Olm + [\#9498](https://github.com/vector-im/riot-web/pull/9498) + * Add separate platform electron build commands + [\#9412](https://github.com/vector-im/riot-web/pull/9412) + * Add support for custom profile directory + [\#9408](https://github.com/vector-im/riot-web/pull/9408) + * Improved mobile install guide + [\#9410](https://github.com/vector-im/riot-web/pull/9410) + * Remove vector-electron-desktop from README + [\#9404](https://github.com/vector-im/riot-web/pull/9404) + * Update from Weblate + [\#9398](https://github.com/vector-im/riot-web/pull/9398) + * bump olm version to 3.1.0-pre3 + [\#9392](https://github.com/vector-im/riot-web/pull/9392) + * Add expiration to mobile guide cookie + [\#9383](https://github.com/vector-im/riot-web/pull/9383) + * Fix autolaunch setting appearing toggled off + [\#9368](https://github.com/vector-im/riot-web/pull/9368) + * Don't try to save files the user didn't want to save + [\#9352](https://github.com/vector-im/riot-web/pull/9352) + * Setup crypto store for restore session tests + [\#9325](https://github.com/vector-im/riot-web/pull/9325) + * Update from Weblate + [\#9333](https://github.com/vector-im/riot-web/pull/9333) + * Add "Save image as..." button to context menu on images + [\#9326](https://github.com/vector-im/riot-web/pull/9326) + * Configure auth footer links through Riot config + [\#9297](https://github.com/vector-im/riot-web/pull/9297) + +Changes in [1.0.8](https://github.com/vector-im/riot-web/releases/tag/v1.0.8) (2019-04-16) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.7...v1.0.8) + + * No changes in this release. This is the same code as v1.0.7 from our new clean-room + packaging and signing infrastructure. + +Changes in [1.0.7](https://github.com/vector-im/riot-web/releases/tag/v1.0.7) (2019-04-08) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.6...v1.0.7) + + * Hotfix: bump js-sdk to 1.0.4, see https://github.com/matrix-org/matrix-js-sdk/releases/tag/v1.0.4 + +Changes in [1.0.6](https://github.com/vector-im/riot-web/releases/tag/v1.0.6) (2019-04-01) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.6-rc.1...v1.0.6) + + * Add "Save image as..." button to context menu on images + [\#9327](https://github.com/vector-im/riot-web/pull/9327) + +Changes in [1.0.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.6-rc.1) (2019-03-27) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.5...v1.0.6-rc.1) + + * Use `on_logged_in` action in tests + [\#9279](https://github.com/vector-im/riot-web/pull/9279) + * Convert away from `Promise.defer` + [\#9278](https://github.com/vector-im/riot-web/pull/9278) + * update react-sdk version in yarn lockfile + [\#9233](https://github.com/vector-im/riot-web/pull/9233) + * "Render simple counters in room header" details + [\#9154](https://github.com/vector-im/riot-web/pull/9154) + * Use medium agents for the more resource intensive builds + [\#9238](https://github.com/vector-im/riot-web/pull/9238) + * Add log grouping to buildkite + [\#9223](https://github.com/vector-im/riot-web/pull/9223) + * Switch to `git` protocol for CI dependencies + [\#9222](https://github.com/vector-im/riot-web/pull/9222) + * Support CI for matching branches on forks + [\#9212](https://github.com/vector-im/riot-web/pull/9212) + * Update from Weblate + [\#9199](https://github.com/vector-im/riot-web/pull/9199) + * Declare the officially supported browsers in the README + [\#9177](https://github.com/vector-im/riot-web/pull/9177) + * Document some desktop app things + [\#9011](https://github.com/vector-im/riot-web/pull/9011) + * Use Buildkite for CI + [\#9165](https://github.com/vector-im/riot-web/pull/9165) + * Update version number in issue templates + [\#9170](https://github.com/vector-im/riot-web/pull/9170) + * Remove node 8.x from the build matrix + [\#9159](https://github.com/vector-im/riot-web/pull/9159) + * Update Electron help menu link + [\#9157](https://github.com/vector-im/riot-web/pull/9157) + +Changes in [1.0.5](https://github.com/vector-im/riot-web/releases/tag/v1.0.5) (2019-03-21) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.4...v1.0.5) + + * Hotfix for [\#9205](https://github.com/vector-im/riot-web/issues/9205) disabling jump prevention for typing notifications, while we're reworking this functionally to enable it again soon. + +Changes in [1.0.4](https://github.com/vector-im/riot-web/releases/tag/v1.0.4) (2019-03-18) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.4-rc.1...v1.0.4) + + * No changes since rc.1 + +Changes in [1.0.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.4-rc.1) (2019-03-13) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.3...v1.0.4-rc.1) + + * Update from Weblate + [\#9152](https://github.com/vector-im/riot-web/pull/9152) + * Use modern Yarn version on Travis CI + [\#9151](https://github.com/vector-im/riot-web/pull/9151) + * Switch to `yarn` for dependency management + [\#9132](https://github.com/vector-im/riot-web/pull/9132) + * Update from Weblate + [\#9104](https://github.com/vector-im/riot-web/pull/9104) + * Don't copy the 32 bit linux deb + [\#9075](https://github.com/vector-im/riot-web/pull/9075) + * Change olm dependency to normal dep + [\#9068](https://github.com/vector-im/riot-web/pull/9068) + * Add modular.im hosting link to electron app config + [\#9047](https://github.com/vector-im/riot-web/pull/9047) + * Nudge karma to 3.1.2 + [\#8991](https://github.com/vector-im/riot-web/pull/8991) + * Add support for localConfig at $appData/config.json. + [\#8983](https://github.com/vector-im/riot-web/pull/8983) + +Changes in [1.0.3](https://github.com/vector-im/riot-web/releases/tag/v1.0.3) (2019-03-06) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.2...v1.0.3) + + * react-sdk 1.0.3 to fix ctrl+k shortcut and room list bugs + +Changes in [1.0.2](https://github.com/vector-im/riot-web/releases/tag/v1.0.2) (2019-03-06) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.2-rc.3...v1.0.2) + + * New react-sdk for minor hosting link fixes + +Changes in [1.0.2-rc.3](https://github.com/vector-im/riot-web/releases/tag/v1.0.2-rc.3) (2019-03-05) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.2-rc.2...v1.0.2-rc.3) + + * Add modular.im hosting link to electron app config + [\#9051](https://github.com/vector-im/riot-web/pull/9051) + +Changes in [1.0.2-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.0.2-rc.2) (2019-03-01) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.2-rc.1...v1.0.2-rc.2) + + * Update to react-sdk rc.3 + +Changes in [1.0.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.2-rc.1) (2019-03-01) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.1...v1.0.2-rc.1) + + * Set a require alias for the webapp directory + [\#9014](https://github.com/vector-im/riot-web/pull/9014) + * Update from Weblate. + [\#8973](https://github.com/vector-im/riot-web/pull/8973) + * set chrome path for travis CI explicitly + [\#8987](https://github.com/vector-im/riot-web/pull/8987) + * Updated install spinner + [\#8984](https://github.com/vector-im/riot-web/pull/8984) + * Allow disabling update mechanism + [\#8911](https://github.com/vector-im/riot-web/pull/8911) + * Allow configuration of whether closing window closes or minimizes to tray + [\#8908](https://github.com/vector-im/riot-web/pull/8908) + * Fix language file path for Jenkins + [\#8854](https://github.com/vector-im/riot-web/pull/8854) + * Document and recommend `default_server_name` + [\#8832](https://github.com/vector-im/riot-web/pull/8832) + * Cache busting for icons & language files + [\#8710](https://github.com/vector-im/riot-web/pull/8710) + * Remove redesign issue template + [\#8722](https://github.com/vector-im/riot-web/pull/8722) + * Make scripts/make-icons.sh work on linux + [\#8550](https://github.com/vector-im/riot-web/pull/8550) + +Changes in [1.0.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.1) (2019-02-15) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.0...v1.0.1) + + +Changes in [1.0.0](https://github.com/vector-im/riot-web/releases/tag/v1.0.0) (2019-02-14) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.0-rc.2...v1.0.0) + + * Add snipping lines to welcome page without guests + [\#8634](https://github.com/vector-im/riot-web/pull/8634) + * Add home page to fix loading tests + [\#8625](https://github.com/vector-im/riot-web/pull/8625) + +Changes in [1.0.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.0.0-rc.2) (2019-02-14) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.0-rc.1...v1.0.0-rc.2) + + * Update from Weblate. + [\#8615](https://github.com/vector-im/riot-web/pull/8615) + * Replace favicon assets to ones with transparent backgrounds + [\#8600](https://github.com/vector-im/riot-web/pull/8600) + * Refreshed icons + [\#8594](https://github.com/vector-im/riot-web/pull/8594) + * Fix order of fetch-develop-deps / npm install + [\#8566](https://github.com/vector-im/riot-web/pull/8566) + * Revive building dark theme + [\#8540](https://github.com/vector-im/riot-web/pull/8540) + * Update from Weblate. + [\#8546](https://github.com/vector-im/riot-web/pull/8546) + * Repair app loading tests after welcome page + [\#8525](https://github.com/vector-im/riot-web/pull/8525) + * Support configurable welcome background and logo + [\#8528](https://github.com/vector-im/riot-web/pull/8528) + * Update from Weblate. + [\#8518](https://github.com/vector-im/riot-web/pull/8518) + * Document `embeddedPages` configuration + [\#8514](https://github.com/vector-im/riot-web/pull/8514) + * README.md : Syntax Coloring + [\#8502](https://github.com/vector-im/riot-web/pull/8502) + +Changes in [1.0.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.0-rc.1) (2019-02-08) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.9...v1.0.0-rc.1) + + * Update from Weblate. + [\#8475](https://github.com/vector-im/riot-web/pull/8475) + * Add configurable welcome page + [\#8466](https://github.com/vector-im/riot-web/pull/8466) + * fix app tests after force enabling lazy loading + removing feature flag + [\#8464](https://github.com/vector-im/riot-web/pull/8464) + * Allow Electron to zoom with CommandOrControl+= + [\#8381](https://github.com/vector-im/riot-web/pull/8381) + * Hide sign in / create account for logged in users + [\#8368](https://github.com/vector-im/riot-web/pull/8368) + * Fix home page link target + [\#8365](https://github.com/vector-im/riot-web/pull/8365) + * Add auth background image and update Riot logo + [\#8364](https://github.com/vector-im/riot-web/pull/8364) + * New homepage + [\#8363](https://github.com/vector-im/riot-web/pull/8363) + * Spell homeserver correctly + [\#8358](https://github.com/vector-im/riot-web/pull/8358) + * Merge redesign into develop + [\#8321](https://github.com/vector-im/riot-web/pull/8321) + * Disable room directory test because it doesn't work + [\#8318](https://github.com/vector-im/riot-web/pull/8318) + * Tweak auth overflow on Windows and Linux + [\#8307](https://github.com/vector-im/riot-web/pull/8307) + * Clean up Custom Server Help dialog + [\#8296](https://github.com/vector-im/riot-web/pull/8296) + * Cache-bust olm.wasm + [\#8283](https://github.com/vector-im/riot-web/pull/8283) + * Completely disable other themes for now (#8277) + [\#8280](https://github.com/vector-im/riot-web/pull/8280) + * Remove support for team servers + [\#8271](https://github.com/vector-im/riot-web/pull/8271) + * Add target="_blank" to footer links + [\#8248](https://github.com/vector-im/riot-web/pull/8248) + * Fix device names on desktop + [\#8241](https://github.com/vector-im/riot-web/pull/8241) + * Fix literal </> in notifications + [\#8238](https://github.com/vector-im/riot-web/pull/8238) + * Fix registration nextLink on desktop + [\#8239](https://github.com/vector-im/riot-web/pull/8239) + * Add returns to fetch-develop-deps + [\#8233](https://github.com/vector-im/riot-web/pull/8233) + * Update electron builder + [\#8231](https://github.com/vector-im/riot-web/pull/8231) + * Try fetching more branches for PRs + [\#8225](https://github.com/vector-im/riot-web/pull/8225) + * Use content hashing for font and image URLs + [\#8159](https://github.com/vector-im/riot-web/pull/8159) + * Develop->Experimental + [\#8156](https://github.com/vector-im/riot-web/pull/8156) + * Update from Weblate. + [\#8150](https://github.com/vector-im/riot-web/pull/8150) + * Correct the copying of e-mail addresses in the electron app + [\#8124](https://github.com/vector-im/riot-web/pull/8124) + * Start documenting keyboard shortcuts + [\#7165](https://github.com/vector-im/riot-web/pull/7165) + * Update issue templates + [\#7948](https://github.com/vector-im/riot-web/pull/7948) + * Added new colour var to all themes + [\#7927](https://github.com/vector-im/riot-web/pull/7927) + * Redesign: apply changes from dharma theme to status theme + [\#7541](https://github.com/vector-im/riot-web/pull/7541) + * Redesign: ignore setting and always show dharma theme for now + [\#7540](https://github.com/vector-im/riot-web/pull/7540) + +Changes in [0.17.9](https://github.com/vector-im/riot-web/releases/tag/v0.17.9) (2019-01-22) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.9-rc.1...v0.17.9) + + * Bugfix in react-sdk for setting DM rooms + +Changes in [0.17.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.9-rc.1) (2019-01-17) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.8...v0.17.9-rc.1) + + * Merge develop into experimental + [\#8003](https://github.com/vector-im/riot-web/pull/8003) + * Electron: Load app from custom protocol + [\#7943](https://github.com/vector-im/riot-web/pull/7943) + * Fix the IndexedDB worker + [\#7920](https://github.com/vector-im/riot-web/pull/7920) + * Make clear that the Debian package is for desktop + [\#7919](https://github.com/vector-im/riot-web/pull/7919) + * Run the Desktop app in a sandbox + [\#7907](https://github.com/vector-im/riot-web/pull/7907) + * Update to new electron single instance API + [\#7908](https://github.com/vector-im/riot-web/pull/7908) + * Update the tests to match https://github.com/matrix-org/matrix-react- + sdk/pull/2340 + [\#7834](https://github.com/vector-im/riot-web/pull/7834) + +Changes in [0.17.8](https://github.com/vector-im/riot-web/releases/tag/v0.17.8) (2018-12-10) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.8-rc.1...v0.17.8) + + * No changes since rc.1 + +Changes in [0.17.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.8-rc.1) (2018-12-06) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.7...v0.17.8-rc.1) + + * Update from Weblate. + [\#7784](https://github.com/vector-im/riot-web/pull/7784) + * Add a function to send a rageshake from the console + [\#7755](https://github.com/vector-im/riot-web/pull/7755) + * Re-apply "Run lint on travis builds and use modern node versions" + [\#7738](https://github.com/vector-im/riot-web/pull/7738) + * Revert "Run lint on travis builds and use modern node versions" + [\#7737](https://github.com/vector-im/riot-web/pull/7737) + * Run lint on travis builds and use modern node versions + [\#7490](https://github.com/vector-im/riot-web/pull/7490) + * Fix missing js-sdk logging + [\#7736](https://github.com/vector-im/riot-web/pull/7736) + * Add $accent-color-50pct as a CSS variable to the Status theme + [\#7710](https://github.com/vector-im/riot-web/pull/7710) + +Changes in [0.17.7](https://github.com/vector-im/riot-web/releases/tag/v0.17.7) (2018-11-22) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6...v0.17.7) + + * Warning when crypto DB is too new to use. + * Fix missing entries from js-sdk in rageshake logs + +Changes in [0.17.6](https://github.com/vector-im/riot-web/releases/tag/v0.17.6) (2018-11-19) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.2...v0.17.6) + + * No changes since rc.2 + +Changes in [0.17.6-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.2) (2018-11-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.1...v0.17.6-rc.2) + + * Update to js-sdk 0.14 and react-sdk rc.2. rc.1 was broken as it was built against + js-sdk 0.13 which does not use the new Olm 3.0 API. + +Changes in [0.17.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.1) (2018-11-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.5...v0.17.6-rc.1) + + * Update from Weblate. + [\#7708](https://github.com/vector-im/riot-web/pull/7708) + * Add Japanese (#7599) + [\#7673](https://github.com/vector-im/riot-web/pull/7673) + * Allow Webpack dev server to listen to all interfaces + [\#7674](https://github.com/vector-im/riot-web/pull/7674) + * Remove the request-only stuff we don't need anymore + [\#7637](https://github.com/vector-im/riot-web/pull/7637) + * Correct the author of the electron app + [\#7615](https://github.com/vector-im/riot-web/pull/7615) + * Mock fs, tls, and net to support request in the browser + [\#7552](https://github.com/vector-im/riot-web/pull/7552) + * Update chokidar to transitively get newer fsevents + [\#7598](https://github.com/vector-im/riot-web/pull/7598) + * Support WebAssembly version of Olm + [\#7385](https://github.com/vector-im/riot-web/pull/7385) + +Changes in [0.17.5](https://github.com/vector-im/riot-web/releases/tag/v0.17.5) (2018-11-13) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.4...v0.17.5) + + * Include change that was supposed to be included in orevious version + +Changes in [0.17.4](https://github.com/vector-im/riot-web/releases/tag/v0.17.4) (2018-11-13) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3...v0.17.4) + + * Add banner with login/register links for users who aren't logged in + +Changes in [0.17.3](https://github.com/vector-im/riot-web/releases/tag/v0.17.3) (2018-10-29) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3-rc.1...v0.17.3) + + * Fix for autocompleting text emoji from react-sdk v0.14.2 + +Changes in [0.17.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.3-rc.1) (2018-10-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.2...v0.17.3-rc.1) + + * Update from Weblate. + [\#7549](https://github.com/vector-im/riot-web/pull/7549) + * Don't set tags on notifications + [\#7518](https://github.com/vector-im/riot-web/pull/7518) + * Update to latest electron builder + [\#7498](https://github.com/vector-im/riot-web/pull/7498) + * Fix Tinter.setTheme to not fire using Firefox + [\#6831](https://github.com/vector-im/riot-web/pull/6831) + +Changes in [0.17.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.2) (2018-10-19) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.1...v0.17.2) + + * Update react-sdk version to "Apply the user's tint once the MatrixClientPeg is moderately ready" + * Electron: don't set tags on notifications + [\#7518](https://github.com/vector-im/riot-web/pull/7518) + +Changes in [0.17.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.1) (2018-10-18) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.0...v0.17.1) + + * Stop electron crashing + [\#7517](https://github.com/vector-im/riot-web/pull/7517) + +Changes in [0.17.0](https://github.com/vector-im/riot-web/releases/tag/v0.17.0) (2018-10-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.0-rc.1...v0.17.0) + + * Phased rollout of lazyloading + [\#7503](https://github.com/vector-im/riot-web/pull/7503) + * Update to latest electron builder + [\#7501](https://github.com/vector-im/riot-web/pull/7501) + +Changes in [0.17.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.0-rc.1) (2018-10-11) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5...v0.17.0-rc.1) + + * Revert "also commit the lock file when bumping version as it is now + committed to the repo" + [\#7483](https://github.com/vector-im/riot-web/pull/7483) + * Update from Weblate. + [\#7478](https://github.com/vector-im/riot-web/pull/7478) + * Fix riot-web Promise.defer warnings (#7409) + [\#7444](https://github.com/vector-im/riot-web/pull/7444) + * Use HTTPS cloning for riot-web too + [\#7459](https://github.com/vector-im/riot-web/pull/7459) + * Disable webpack-dev-server auto reload + [\#7463](https://github.com/vector-im/riot-web/pull/7463) + * Silence bluebird warnings + [\#7462](https://github.com/vector-im/riot-web/pull/7462) + * Fix reskindex on matrix-react-side not being called if using build script + [\#7443](https://github.com/vector-im/riot-web/pull/7443) + * Fix double-closed tags + [\#7454](https://github.com/vector-im/riot-web/pull/7454) + * Document how to turn off Piwik and bug reports (#6738) + [\#7435](https://github.com/vector-im/riot-web/pull/7435) + * also commit the lock file when bumping version as it is now committed to the + repo + [\#7429](https://github.com/vector-im/riot-web/pull/7429) + * Update a bunch of deps + [\#7393](https://github.com/vector-im/riot-web/pull/7393) + * Don't show mobile guide if deep linking + [\#7415](https://github.com/vector-im/riot-web/pull/7415) + * Don't show custom server bit on matrix.org + [\#7408](https://github.com/vector-im/riot-web/pull/7408) + * Update Webpack to version 4 + [\#6620](https://github.com/vector-im/riot-web/pull/6620) + * Webpack4 + [\#7387](https://github.com/vector-im/riot-web/pull/7387) + +Changes in [0.16.6](https://github.com/vector-im/riot-web/releases/tag/v0.16.6) (2018-10-08) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5...v0.16.6) + + * Update to matrix-react-sdk v0.13.6 + +Changes in [0.16.5](https://github.com/vector-im/riot-web/releases/tag/v0.16.5) (2018-10-01) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5-rc.1...v0.16.5) + + * Don't show mobile guide if deep linking + [\#7415](https://github.com/vector-im/riot-web/pull/7415) + * Don't show custom server bit on matrix.org + [\#7408](https://github.com/vector-im/riot-web/pull/7408) + +Changes in [0.16.5-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.5-rc.1) (2018-09-27) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.4...v0.16.5-rc.1) + + * Update from Weblate. + [\#7395](https://github.com/vector-im/riot-web/pull/7395) + * Reduce the number of terminals required to build riot-web to 1 + [\#7355](https://github.com/vector-im/riot-web/pull/7355) + * Small typo in release notes v0.16.3 + [\#7274](https://github.com/vector-im/riot-web/pull/7274) + +Changes in [0.16.4](https://github.com/vector-im/riot-web/releases/tag/v0.16.4) (2018-09-10) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.4-rc.1...v0.16.4) + + * No changes since rc.1 + +Changes in [0.16.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.4-rc.1) (2018-09-07) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3...v0.16.4-rc.1) + + * Update from Weblate. + [\#7296](https://github.com/vector-im/riot-web/pull/7296) + * Fix config not loading & mobileguide script being loaded in riot + [\#7288](https://github.com/vector-im/riot-web/pull/7288) + * Instructions for installing mobile apps + [\#7272](https://github.com/vector-im/riot-web/pull/7272) + * Tidy up index.js + [\#7265](https://github.com/vector-im/riot-web/pull/7265) + +Changes in [0.16.3](https://github.com/vector-im/riot-web/releases/tag/v0.16.3) (2018-09-03) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3-rc.2...v0.16.3) + + * SECURITY FIX: This version (and release candidates) pull in an upstream security + fix from electron to fix CVE-2018-15685. Electron users should update as soon as + possible. Riot-web run outside of Electron is unaffected. + +Changes in [0.16.3-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.3-rc.2) (2018-08-31) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3-rc.1...v0.16.3-rc.2) + + * Update js-sdk to fix an exception causing the room list to become unresponsive. + +Changes in [0.16.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.3-rc.1) (2018-08-30) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.2...v0.16.3-rc.1) + + * Update from Weblate. + [\#7245](https://github.com/vector-im/riot-web/pull/7245) + * Revert "Remove package-lock.json for now" + [\#7128](https://github.com/vector-im/riot-web/pull/7128) + * Remove package-lock.json for now + [\#7115](https://github.com/vector-im/riot-web/pull/7115) + +Changes in [0.16.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.2) (2018-08-23) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.1...v0.16.2) + + * Support new server notices format + +Changes in [0.16.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.1) (2018-08-20) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.1-rc.1...v0.16.1) + + * No changes since rc.1 + +Changes in [0.16.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.1-rc.1) (2018-08-16) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0...v0.16.1-rc.1) + + * Update from Weblate. + [\#7178](https://github.com/vector-im/riot-web/pull/7178) + * CSS for MAU warning bar + [\#7152](https://github.com/vector-im/riot-web/pull/7152) + * CSS for user limit error + [\#7139](https://github.com/vector-im/riot-web/pull/7139) + * Unpin sanitize-html + [\#7132](https://github.com/vector-im/riot-web/pull/7132) + * Pin sanitize-html to 0.18.2 + [\#7129](https://github.com/vector-im/riot-web/pull/7129) + +Changes in [0.16.0](https://github.com/vector-im/riot-web/releases/tag/v0.16.0) (2018-07-30) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0-rc.2...v0.16.0) + +* Update react-sdk version for bugfixes with Jitsi widgets and the new composer + +Changes in [0.16.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.0-rc.2) (2018-07-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0-rc.1...v0.16.0-rc.2) + + * Update to react-sdk rc.2 to remove Jitsi conference calling from labs + +Changes in [0.16.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.0-rc.1) (2018-07-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7...v0.16.0-rc.1) + + * Update from Weblate. + [\#7082](https://github.com/vector-im/riot-web/pull/7082) + * Sample config for jitsi integration URL + [\#7055](https://github.com/vector-im/riot-web/pull/7055) + +Changes in [0.15.7](https://github.com/vector-im/riot-web/releases/tag/v0.15.7) (2018-07-09) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7-rc.2...v0.15.7) + + * No changes since rc.2 + +Changes in [0.15.7-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.7-rc.2) (2018-07-06) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7-rc.1...v0.15.7-rc.2) + + * Update react-sdk and js-sdk + +Changes in [0.15.7-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.7-rc.1) (2018-07-04) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6...v0.15.7-rc.1) + + * add override for colour of room tile text within memberinfo (unreadable) + [\#6889](https://github.com/vector-im/riot-web/pull/6889) + +Changes in [0.15.6](https://github.com/vector-im/riot-web/releases/tag/v0.15.6) (2018-06-29) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6-rc.2...v0.15.6) + + * Pull in bug fixes from react-sdk + +Changes in [0.15.6-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.6-rc.2) (2018-06-22) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6-rc.1...v0.15.6-rc.2) + + * Update to react-sdk rc.2 for fix to slash commands + +Changes in [0.15.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.6-rc.1) (2018-06-21) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.5...v0.15.6-rc.1) + + * Update from Weblate. + [\#6915](https://github.com/vector-im/riot-web/pull/6915) + * [electron] Fix desktop app --hidden flag + [\#6805](https://github.com/vector-im/riot-web/pull/6805) + +Changes in [0.15.5](https://github.com/vector-im/riot-web/releases/tag/v0.15.5) (2018-06-12) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.5-rc.1...v0.15.5) + + * No changes since rc.1 + +Changes in [0.15.5-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.5-rc.1) (2018-06-06) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.4...v0.15.5-rc.1) + + * Update from Weblate. + [\#6846](https://github.com/vector-im/riot-web/pull/6846) + +Changes in [0.15.4](https://github.com/vector-im/riot-web/releases/tag/v0.15.4) (2018-05-25) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.4-rc.1...v0.15.4) + + * Add cookie policy link to desktop app config + +Changes in [0.15.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.4-rc.1) (2018-05-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.3...v0.15.4-rc.1) + + * Update from Weblate. + [\#6792](https://github.com/vector-im/riot-web/pull/6792) + * Hide URL options for e2e blob: URL images + [\#6765](https://github.com/vector-im/riot-web/pull/6765) + * Fix right click menu in electron + [\#6763](https://github.com/vector-im/riot-web/pull/6763) + * Update to electron 2.0.1 + [\#6764](https://github.com/vector-im/riot-web/pull/6764) + * Add instructions for changing translated strings + [\#6528](https://github.com/vector-im/riot-web/pull/6528) + +Changes in [0.15.3](https://github.com/vector-im/riot-web/releases/tag/v0.15.3) (2018-05-18) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.2...v0.15.3) + + * Fix right click menu in electron + [\#6763](https://github.com/vector-im/riot-web/pull/6763) + * Update to electron 2.0.1 + [\#6764](https://github.com/vector-im/riot-web/pull/6764) + * Hide URL options for e2e blob: URL images + [\#6765](https://github.com/vector-im/riot-web/pull/6765) + +Changes in [0.15.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.2) (2018-05-17) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.1...v0.15.2) + + * Update to matrix-react-sdk v0.12.5 to fix image size jumps + +Changes in [0.15.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.1) (2018-05-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0...v0.15.1) + + * Fix package-lock.json which was causing errors building the Electron app + * Update Electron version + +Changes in [0.15.0](https://github.com/vector-im/riot-web/releases/tag/v0.15.0) (2018-05-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.6...v0.15.0) + + * No changes since rc.6 + +Changes in [0.15.0-rc.6](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.6) (2018-05-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.5...v0.15.0-rc.6) + + * Update to matrix-react-sdk 0.12.4-rc.6 + +Changes in [0.15.0-rc.5](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.5) (2018-05-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.4...v0.15.0-rc.5) + + * Update to matrix-react-sdk 0.12.4-rc.5 + +Changes in [0.15.0-rc.4](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.4) (2018-05-14) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.3...v0.15.0-rc.4) + + * Update from Weblate. + [\#6726](https://github.com/vector-im/riot-web/pull/6726) + * Update to matrix-react-sdk 0.12.4-rc.4 + +Changes in [0.15.0-rc.3](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.3) (2018-05-11) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.2...v0.15.0-rc.3) + + * Update to matrix-react-sdk 0.12.4-rc.3 + +Changes in [0.15.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.2) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.1...v0.15.0-rc.2) + + * Update to matrix-react-sdk 0.12.4-rc.2 + +Changes in [0.15.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.1) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.3-rc.1...v0.15.0-rc.1) + + * No changes since 0.14.3-rc.1 + +Changes in [0.14.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.14.3-rc.1) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2...v0.14.3-rc.1) + + * Update from Weblate. + [\#6688](https://github.com/vector-im/riot-web/pull/6688) + * Don't show presence on matrix.org + [\#6638](https://github.com/vector-im/riot-web/pull/6638) + * Enforce loading babel-polyfill first + [\#6625](https://github.com/vector-im/riot-web/pull/6625) + * Update hoek + [\#6624](https://github.com/vector-im/riot-web/pull/6624) + * Fix args in the release wrapper script + [\#6614](https://github.com/vector-im/riot-web/pull/6614) + +Changes in [0.14.2](https://github.com/vector-im/riot-web/releases/tag/v0.14.2) (2018-04-30) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2-rc.3...v0.14.2) + + * No changes since rc.3 + +Changes in [0.14.2-rc.3](https://github.com/vector-im/riot-web/releases/tag/v0.14.2-rc.3) (2018-04-26) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2-rc.2...v0.14.2-rc.3) + + * Fix CSS dependency versions to be the same as those in react-sdk to fix + left panel header positions. + +Changes in [0.14.2-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.14.2-rc.2) (2018-04-26) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2-rc.1...v0.14.2-rc.2) + + * Fix Download of attachments in e2e encrypted rooms in Firefox + +Changes in [0.14.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.14.2-rc.1) (2018-04-25) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.1...v0.14.2-rc.1) + + * Update from Weblate. + [\#6602](https://github.com/vector-im/riot-web/pull/6602) + * Add readme bit on cross-origin renderer + [\#6600](https://github.com/vector-im/riot-web/pull/6600) + * Update from Weblate. + [\#6573](https://github.com/vector-im/riot-web/pull/6573) + * Copy media from react-sdk + [\#6588](https://github.com/vector-im/riot-web/pull/6588) + * Fix favicon + [\#6580](https://github.com/vector-im/riot-web/pull/6580) + * Update from Weblate. + [\#6569](https://github.com/vector-im/riot-web/pull/6569) + * move everything not explicitly riot (or status) branded into matrix-react- + sdk + [\#6500](https://github.com/vector-im/riot-web/pull/6500) + * Remove presence management + [\#5881](https://github.com/vector-im/riot-web/pull/5881) + * change vector-web repo to riot-web in changelog + [\#6480](https://github.com/vector-im/riot-web/pull/6480) + * Update from Weblate. + [\#6473](https://github.com/vector-im/riot-web/pull/6473) + * Bump source-map-loader version to avoid bug /w inline base64 maps + [\#6472](https://github.com/vector-im/riot-web/pull/6472) + * Add CSS for new group admin radio button + [\#6415](https://github.com/vector-im/riot-web/pull/6415) + * Rxl881/sticker picker styling + [\#6447](https://github.com/vector-im/riot-web/pull/6447) + * Stickerpacks + [\#6242](https://github.com/vector-im/riot-web/pull/6242) + * Force gemini on HomePage + [\#6368](https://github.com/vector-im/riot-web/pull/6368) + * Rename the Riot-Web Translations Room + [\#6348](https://github.com/vector-im/riot-web/pull/6348) + * Add disable-presence-by-hs option to sample config + [\#6350](https://github.com/vector-im/riot-web/pull/6350) + * Reword the BugReportDialog.js as per @lampholder + [\#6354](https://github.com/vector-im/riot-web/pull/6354) + +Changes in [0.14.1](https://github.com/vector-im/riot-web/releases/tag/v0.14.1) (2018-04-12) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0...v0.14.1) + + * Remove presence management feature from labs + * Fix an issue where Riot would fail to load at all if certain + extensions were installed on Firefox + * Fix an issue where e2e cryptography could be disabled due to + a migration error. + +Changes in [0.14.0](https://github.com/vector-im/riot-web/releases/tag/v0.14.0) (2018-04-11) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.6...v0.14.0) + + * Cosmetic changes for group UI + +Changes in [0.14.0-rc.6](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.6) (2018-04-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.5...v0.14.0-rc.6) + + * Bump react-sdk to [rc.6](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.12.0-rc.6) + +Changes in [0.14.0-rc.5](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.5) (2018-04-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.4...v0.14.0-rc.5) + +* Add CSS for new control to set group join policy + +Changes in [0.14.0-rc.4](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.4) (2018-03-22) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.3...v0.14.0-rc.4) + + * Fix tagging rooms as direct messages + +Changes in [0.14.0-rc.3](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.3) (2018-03-20) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.2...v0.14.0-rc.3) + + * Fix a bug where the badge on a room tile would not update + when a room was read from a different device. + +Changes in [0.14.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.2) (2018-03-19) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.0-rc.1...v0.14.0-rc.2) + + * Take TagPanel out of labs + [\#6347](https://github.com/vector-im/riot-web/pull/6347) + * Add languages (czech, galician and serbian) + [\#6343](https://github.com/vector-im/riot-web/pull/6343) + +Changes in [0.14.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.14.0-rc.1) (2018-03-19) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.13.5...v0.14.0-rc.1) + + * Force update RoomSubList after reading a room + [\#6342](https://github.com/vector-im/riot-web/pull/6342) + * Ensure entire LeftPanel is faded when settings open + [\#6340](https://github.com/vector-im/riot-web/pull/6340) + * Update from Weblate. + [\#6330](https://github.com/vector-im/riot-web/pull/6330) + * Implement a simple shouldComponentUpdate for DNDRoomTile + [\#6313](https://github.com/vector-im/riot-web/pull/6313) + * Remove og:image with status.im URL + [\#6317](https://github.com/vector-im/riot-web/pull/6317) + * Add change delay warning in GroupView settings + [\#6316](https://github.com/vector-im/riot-web/pull/6316) + * Correctly position mx_TagPanel_clearButton + [\#6289](https://github.com/vector-im/riot-web/pull/6289) + * Fix gap between avatar and border + [\#6290](https://github.com/vector-im/riot-web/pull/6290) + * Fix bug where cannot send group invite on GroupMemberInfo phase + [\#6303](https://github.com/vector-im/riot-web/pull/6303) + * Fix themeing bug with Firefox where "disabled" ignored + [\#6301](https://github.com/vector-im/riot-web/pull/6301) + * Changes for E2E "fudge-button" + [\#6288](https://github.com/vector-im/riot-web/pull/6288) + * Make sure mx_TagPanel_tagTileContainer occupies full height + [\#6286](https://github.com/vector-im/riot-web/pull/6286) + * Add transparent CSS class for RoomTile + [\#6281](https://github.com/vector-im/riot-web/pull/6281) + * Fix crash; fs event received /w langauge file empty + [\#6273](https://github.com/vector-im/riot-web/pull/6273) + * Add setting to disable TagPanel + [\#6269](https://github.com/vector-im/riot-web/pull/6269) + * CSS for my groups microcopy + [\#6257](https://github.com/vector-im/riot-web/pull/6257) + * Add Bulgarian to the list of languages + [\#6246](https://github.com/vector-im/riot-web/pull/6246) + * Make media dropdown wider + [\#6245](https://github.com/vector-im/riot-web/pull/6245) + * Make dropdowns with long options degrade more gracefully + [\#6244](https://github.com/vector-im/riot-web/pull/6244) + * Fix un-tinted "View Community" icon in TagTile context menu + [\#6223](https://github.com/vector-im/riot-web/pull/6223) + * Fix RoomDropTarget and emptySubListTip to have containers + [\#6160](https://github.com/vector-im/riot-web/pull/6160) + * Fix syntax error of wrong use of self-closing HTML tag + [\#6154](https://github.com/vector-im/riot-web/pull/6154) + * Use translucent black for RoomSubList bg to fix tinting + [\#6227](https://github.com/vector-im/riot-web/pull/6227) + * CSS for changing "R" to "X" for clearing group filter + [\#6216](https://github.com/vector-im/riot-web/pull/6216) + * CSS for new global TagPanel filter + [\#6187](https://github.com/vector-im/riot-web/pull/6187) + * Separate the middle panel from the room list + [\#6194](https://github.com/vector-im/riot-web/pull/6194) + * Only use DNDRoomTile for editable sub lists + [\#6176](https://github.com/vector-im/riot-web/pull/6176) + * Adjust CSS to prevent scrollbars on message panel spinner + [\#6131](https://github.com/vector-im/riot-web/pull/6131) + * Implement riot-web side of dragging GroupTile avatars to TagPanel + [\#6143](https://github.com/vector-im/riot-web/pull/6143) + * Fix LeftPanel size being incorrect when TagPanel disabled + [\#6140](https://github.com/vector-im/riot-web/pull/6140) + * Fix TagPanel from collapsing to < 60px when LP collapsed + [\#6134](https://github.com/vector-im/riot-web/pull/6134) + * Temporary hack to constrain LLP container size. + [\#6138](https://github.com/vector-im/riot-web/pull/6138) + * Fix typo + [\#6137](https://github.com/vector-im/riot-web/pull/6137) + * Add context menu to TagPanel + [\#6127](https://github.com/vector-im/riot-web/pull/6127) + * Make room tagging flux-y + [\#6096](https://github.com/vector-im/riot-web/pull/6096) + * Move groups button to TagPanel + [\#6130](https://github.com/vector-im/riot-web/pull/6130) + * Fix long group name pushing settings cog into void + [\#6106](https://github.com/vector-im/riot-web/pull/6106) + * Fix horizontal scrollbar under certain circumstances + [\#6103](https://github.com/vector-im/riot-web/pull/6103) + * Split MImageBody into MFileBody to match JS Classes. + [\#6067](https://github.com/vector-im/riot-web/pull/6067) + * Add Catalan + [\#6040](https://github.com/vector-im/riot-web/pull/6040) + * Update from Weblate. + [\#5777](https://github.com/vector-im/riot-web/pull/5777) + * make FilteredList controlled, such that it can externally persist filter + [\#5718](https://github.com/vector-im/riot-web/pull/5718) + * Linear Rich Quoting + [\#6017](https://github.com/vector-im/riot-web/pull/6017) + * Highlight ViewSource and Devtools ViewSource + [\#5995](https://github.com/vector-im/riot-web/pull/5995) + * default url, not domain + [\#6022](https://github.com/vector-im/riot-web/pull/6022) + * T3chguy/num members tooltip + [\#5929](https://github.com/vector-im/riot-web/pull/5929) + * Swap RoomList to react-beautiful-dnd + [\#6008](https://github.com/vector-im/riot-web/pull/6008) + * CSS required as part of moving TagPanel from react-dnd to react-beautiful- + dnd + [\#5992](https://github.com/vector-im/riot-web/pull/5992) + * fix&refactor DateSeparator and MessageTimestamp + [\#5984](https://github.com/vector-im/riot-web/pull/5984) + * Iterative fixes on Rich Quoting + [\#5978](https://github.com/vector-im/riot-web/pull/5978) + * move piwik whitelists to conf and add piwik config.json info to readme + [\#5653](https://github.com/vector-im/riot-web/pull/5653) + * Implement Rich Quoting/Replies + [\#5804](https://github.com/vector-im/riot-web/pull/5804) + * Change author + [\#5950](https://github.com/vector-im/riot-web/pull/5950) + * Revert "Add a after timestamp" + [\#5944](https://github.com/vector-im/riot-web/pull/5944) + * Add a after timestamp + [\#3046](https://github.com/vector-im/riot-web/pull/3046) + * Corrected language name + [\#5938](https://github.com/vector-im/riot-web/pull/5938) + * Hide Options button from copy to clipboard + [\#2892](https://github.com/vector-im/riot-web/pull/2892) + * Fix for `If riot is narrow enough, such that 'Send a message (unecrypted)' + wraps to a second line, the timeline doesn't fit the window.` + [\#5900](https://github.com/vector-im/riot-web/pull/5900) + * Screenshot UI + [\#5849](https://github.com/vector-im/riot-web/pull/5849) + * add missing config.json entry such that scalar-staging widgets work + [\#5855](https://github.com/vector-im/riot-web/pull/5855) + * add dark theme styling to devtools input box + [\#5610](https://github.com/vector-im/riot-web/pull/5610) + * Fixes #1953 by adding oivoodoo as author + [\#5851](https://github.com/vector-im/riot-web/pull/5851) + * Instructions on security issues + [\#5824](https://github.com/vector-im/riot-web/pull/5824) + * Move DND wrapper to top level component + [\#5790](https://github.com/vector-im/riot-web/pull/5790) + * Widget title bar max / min visual cues. + [\#5786](https://github.com/vector-im/riot-web/pull/5786) + * Implement renumeration of ordered tags upon collision + [\#5759](https://github.com/vector-im/riot-web/pull/5759) + * Update imports for accessing KeyCode + [\#5751](https://github.com/vector-im/riot-web/pull/5751) + * Set html lang attribute from language setting + [\#5685](https://github.com/vector-im/riot-web/pull/5685) + * CSS for new TagPanel + [\#5723](https://github.com/vector-im/riot-web/pull/5723) + * getGroupStore no longer needs a matrix client + [\#5707](https://github.com/vector-im/riot-web/pull/5707) + * CSS required for moving group publication toggles to UserSettings + [\#5702](https://github.com/vector-im/riot-web/pull/5702) + * Make sure the SettingsStore is ready to load the theme before loading it + [\#5630](https://github.com/vector-im/riot-web/pull/5630) + * Add some aria-labels to RightPanel + [\#5661](https://github.com/vector-im/riot-web/pull/5661) + * Use badge count format for member count in RightPanel + [\#5657](https://github.com/vector-im/riot-web/pull/5657) + * Exclude the default language on page load + [\#5640](https://github.com/vector-im/riot-web/pull/5640) + * Use SettingsStore to get the default theme + [\#5615](https://github.com/vector-im/riot-web/pull/5615) + * Refactor translations + [\#5613](https://github.com/vector-im/riot-web/pull/5613) + * TintableSvgButton styling + [\#5605](https://github.com/vector-im/riot-web/pull/5605) + * Granular settings + [\#5468](https://github.com/vector-im/riot-web/pull/5468) + * CSS/components for custom presence controls + [\#5286](https://github.com/vector-im/riot-web/pull/5286) + * Set widget tile background colour + [\#5574](https://github.com/vector-im/riot-web/pull/5574) + * Widget styling tweaks + [\#5573](https://github.com/vector-im/riot-web/pull/5573) + * Center mixed content warnings in panel. + [\#5567](https://github.com/vector-im/riot-web/pull/5567) + * Status.im theme + [\#5578](https://github.com/vector-im/riot-web/pull/5578) + Changes in [0.13.5](https://github.com/vector-im/riot-web/releases/tag/v0.13.5) (2018-02-09) ============================================================================================ [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.13.4...v0.13.5) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 2a9bab57..f084b474 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1,4 +1,4 @@ Contributing code to Riot ========================= -Riot follows the same pattern as https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.rst. +Riot follows the same pattern as https://github.com/matrix-org/matrix-js-sdk/blob/master/CONTRIBUTING.rst. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..50760c35 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +# Builder +FROM node:10-alpine as builder + +# Support custom branches of the react-sdk and js-sdk. This also helps us build +# images of riot-web develop. +ARG USE_CUSTOM_SDKS=false +ARG REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" +ARG REACT_SDK_BRANCH="master" +ARG JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" +ARG JS_SDK_BRANCH="master" + +RUN apk add --no-cache git dos2unix + +WORKDIR /src + +COPY . /src +RUN dos2unix /src/scripts/docker-link-repos.sh && sh /src/scripts/docker-link-repos.sh +RUN yarn --network-timeout=100000 install +RUN yarn build + +# Copy the config now so that we don't create another layer in the app image +RUN cp /src/config.sample.json /src/webapp/config.json + + +# App +FROM nginx:alpine + +COPY --from=builder /src/webapp /app + +RUN rm -rf /usr/share/nginx/html \ + && ln -s /app /usr/share/nginx/html diff --git a/README.md b/README.md index 708912cf..6cbaca3b 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,41 @@ Riot ==== -Riot (formerly known as Vector) is a Matrix web client built using the Matrix -React SDK (https://github.com/matrix-org/matrix-react-sdk). +Riot (formerly known as Vector) is a Matrix web client built using the [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk). + +Riot is officially supported on the web in modern versions of Chrome, Firefox, and Safari. Other browsers may work, however +official support is not provided. For accessing Riot on an Android or iOS device, check out [riot-android](https://github.com/vector-im/riot-android) +and [riot-ios](https://github.com/vector-im/riot-ios) - riot-web does not support mobile devices. Getting Started =============== -The easiest way to test Riot is to just use the hosted copy at -https://riot.im/app. The develop branch is continuously deployed by Jenkins at -https://riot.im/develop for those who like living dangerously. +The easiest way to test Riot is to just use the hosted copy at https://riot.im/app. +The `develop` branch is continuously deployed by Jenkins at https://riot.im/develop +for those who like living dangerously. To host your own copy of Riot, the quickest bet is to use a pre-built released version of Riot: 1. Download the latest version from https://github.com/vector-im/riot-web/releases 1. Untar the tarball on your web server -1. Move (or symlink) the riot-x.x.x directory to an appropriate name +1. Move (or symlink) the `riot-x.x.x` directory to an appropriate name 1. If desired, copy `config.sample.json` to `config.json` and edit it - as desired. See below for details. + as desired. See the [configuration docs](docs/config.md) for details. 1. Enter the URL into your browser and log into Riot! -Releases are signed by PGP, and can be checked against the public key -at https://riot.im/packages/keys/riot.asc +Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located +at https://packages.riot.im/riot-release-key.asc. -Note that Chrome does not allow microphone or webcam access for sites served -over http (except localhost), so for working VoIP you will need to serve Riot -over https. +Note that for the security of your chats will need to serve Riot +over HTTPS. Major browsers also do not allow you to use VoIP/video +chats over HTTP, as WebRTC is only usable over HTTPS. +There are some exceptions like when using localhost, which is +considered a [secure context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts) +and thus allowed. -### Installation Steps for Debian Stretch -1. Add the repository to your sources.list using either of the following two options: - - Directly to sources.list: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee -a /etc/apt/sources.list` - - As a separate entry in sources.list.d: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee /etc/apt/sources.list.d/riot.list` -2. Add the gpg signing key for the riot repository: `curl -s https://riot.im/packages/debian/repo-key.asc | sudo apt-key add -` -3. Update your package lists: `sudo apt-get update` -4. Install Riot: `sudo apt-get install riot-web` +To install Riot as a desktop application, see [Running as a desktop +app](#running-as-a-desktop-app) below. Important Security Note ======================= @@ -49,115 +50,81 @@ We have put some coarse mitigations into place to try to protect against this situation, but it's still not good practice to do it in the first place. See https://github.com/vector-im/riot-web/issues/1977 for more details. +The same applies for end-to-end encrypted content, but since this is decrypted +on the client, Riot needs a way to supply the decrypted content from a separate +origin to the one Riot is hosted on. This currently done with a 'cross origin +renderer' which is a small piece of javascript hosted on a different domain. +To avoid all Riot installs needing one of these to be set up, riot.im hosts +one on usercontent.riot.im which is used by default. +https://github.com/vector-im/riot-web/issues/6173 tracks progress on replacing +this with something better. + Building From Source ==================== -Riot is a modular webapp built with modern ES6 and requires a npm build system -to build. +Riot is a modular webapp built with modern ES6 and uses a Node.js build system. +Ensure you have the latest LTS version of Node.js installed. -1. Install or update `node.js` so that your `node` is at least v6.3.0 (and `npm` - is at least v3.10.x). +Using `yarn` instead of `npm` is recommended. Please see the Yarn [install +guide](https://yarnpkg.com/docs/install/) if you do not have it already. + +1. Install or update `node.js` so that your `node` is at least v10.x. +1. Install `yarn` if not present already. 1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`. 1. Switch to the riot-web directory: `cd riot-web`. -1. If you're using the `develop` branch, install the develop versions of the - dependencies, as the released ones will be too old: - ``` +1. Install the prerequisites: `yarn install`. +1. If you're using the `develop` branch then it is recommended to set up a proper + development environment ("Setting up a dev environment" below) however one can + install the develop versions of the dependencies instead: + ```bash scripts/fetch-develop.deps.sh ``` - Whenever you git pull on riot-web you will also probably need to force an update + Whenever you git pull on `riot-web` you will also probably need to force an update to these dependencies - the simplest way is to re-run the script, but you can also manually update and rebuild them: - ``` + ```bash cd matrix-js-sdk git pull - npm install # re-run to pull in any new dependencies - # Depending on your version of npm, npm run build may happen as part of - # the npm install above (https://docs.npmjs.com/misc/scripts#prepublish-and-prepare) - # If in doubt, run it anyway: - npm run build + yarn install # re-run to pull in any new dependencies cd ../matrix-react-sdk git pull - npm install - npm run build + yarn install ``` - However, we recommend setting up a proper development environment (see "Setting - up a dev environment" below) if you want to run your own copy of the - `develop` branch, as it makes it much easier to keep these dependencies - up-to-date. Or just use https://riot.im/develop - the continuous integration - release of the develop branch. - (Note that we don't reference the develop versions in git directly due to - https://github.com/npm/npm/issues/3055.) -1. Install the prerequisites: `npm install`. + Or just use https://riot.im/develop - the continuous integration release of the + develop branch. (Note that we don't reference the develop versions in git directly + due to https://github.com/npm/npm/issues/3055.) 1. Configure the app by copying `config.sample.json` to `config.json` and - modifying it (see below for details). -1. `npm run dist` to build a tarball to deploy. Untaring this file will give + modifying it. See the [configuration docs](docs/config.md) for details. +1. `yarn dist` to build a tarball to deploy. Untaring this file will give a version-specific directory containing all the files that need to go on your web server. -Note that `npm run dist` is not supported on Windows, so Windows users can run `npm -run build`, which will build all the necessary files into the `webapp` -directory. The version of Riot will not appear in Settings without -using the dist script. You can then mount the `webapp` directory on your -webserver to actually serve up the app, which is entirely static content. - -config.json -=========== - -You can configure the app by copying `config.sample.json` to -`config.json` and customising it: - -1. `default_hs_url` is the default home server url. -1. `default_is_url` is the default identity server url (this is the server used - for verifying third party identifiers like email addresses). If this is blank, - registering with an email address, adding an email address to your account, - or inviting users via email address will not work. Matrix identity servers are - very simple web services which map third party identifiers (currently only email - addresses) to matrix IDs: see http://matrix.org/docs/spec/identity_service/unstable.html - for more details. Currently the only public matrix identity servers are https://matrix.org - and https://vector.im. In future identity servers will be decentralised. -1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations - server is not Riot and normally not your Home Server either. The integration server settings - may be left blank to disable integrations. -1. `integrations_rest_url`: URL to the REST interface for the integrations server. -1. `roomDirectory`: config for the public room directory. This section is optional. -1. `roomDirectory.servers`: List of other Home Servers' directories to include in the drop - down list. Optional. -1. `update_base_url` (electron app only): HTTPS URL to a web server to download - updates from. This should be the path to the directory containing `macos` - and `win32` (for update packages, not installer packages). -1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display - encrypted file attachments. This MUST be hosted on a completely separate domain to - anything else since it is used to isolate the privileges of file attachments to this - domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from - https://github.com/matrix-org/usercontent/blob/master/v1.html -1. `piwik`: an object containing the following properties: - 1. `url`: The URL of the Piwik instance to use for collecting Analytics - 1. `whitelistedHSUrls`: a list of HS URLs to not redact from the Analytics - 1. `whitelistedISUrls`: a list of IS URLs to not redact from the Analytics - 1. `siteId`: The Piwik Site ID to use when sending Analytics to the Piwik server configured above +Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`, +which will build all the necessary files into the `webapp` directory. The version of Riot +will not appear in Settings without using the dist script. You can then mount the +`webapp` directory on your webserver to actually serve up the app, which is entirely static content. Running as a Desktop app ======================== -Riot can also be run as a desktop app, wrapped in electron. You can download a -pre-built version from https://riot.im/desktop.html or, if you prefer, -build it yourself. Requires Electron >=1.6.0 +Riot can also be run as a desktop app, wrapped in Electron. You can download a +pre-built version from https://riot.im/download/desktop/ or, if you prefer, +build it yourself. -To run as a desktop app: +To build it yourself, follow the instructions below. 1. Follow the instructions in 'Building From Source' above, but run - `npm run build` instead of `npm run dist` (since we don't need the tarball). -2. Install electron and run it: + `yarn build` instead of `yarn dist` (since we don't need the tarball). +2. Install Electron and run it: - ``` - npm install electron - npm run electron + ```bash + yarn electron ``` -To build packages, use electron-builder. This is configured to output: - * dmg + zip for macOS - * exe + nupkg for Windows - * deb for Linux +To build packages, use `electron-builder`. This is configured to output: + * `dmg` + `zip` for macOS + * `exe` + `nupkg` for Windows + * `deb` for Linux But this can be customised by editing the `build` section of package.json as per https://github.com/electron-userland/electron-builder/wiki/Options @@ -165,59 +132,99 @@ See https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Bu for dependencies required for building packages for various platforms. The only platform that can build packages for all three platforms is macOS: -``` -brew install wine --without-x11 +```bash brew install mono -brew install gnu-tar -npm install -npm run build:electron +yarn install +yarn build:electron ``` -For other packages, use electron-builder manually. For example, to build a package -for 64 bit Linux: +For other packages, use `electron-builder` manually. For example, to build a +package for 64 bit Linux: 1. Follow the instructions in 'Building From Source' above 2. `node_modules/.bin/build -l --x64` -All electron packages go into `electron/dist/` +All Electron packages go into `electron_app/dist/` -Many thanks to @aviraldg for the initial work on the electron integration. +Many thanks to @aviraldg for the initial work on the Electron integration. Other options for running as a desktop app: - * https://github.com/krisak/vector-electron-desktop * @asdf:matrix.org points out that you can use nativefier and it just works(tm) -``` -sudo npm install nativefier -g +```bash +yarn global add nativefier nativefier https://riot.im/app/ ``` +The [configuration docs](docs/config.md#desktop-app-configuration) show how to +override the desktop app's default settings if desired. + +Running from Docker +=================== + +The Docker image can be used to serve riot-web as a web server. The easiest way to use +it is to use the prebuilt image: +```bash +docker run -p 80:80 vectorim/riot-web +``` + +To supply your own custom `config.json`, map a volume to `/app/config.json`. For example, +if your custom config was located at `/etc/riot-web/config.json` then your Docker command +would be: +```bash +docker run -p 80:80 -v /etc/riot-web/config.json:/app/config.json vectorim/riot-web +``` + +To build the image yourself: +```bash +git clone https://github.com/vector-im/riot-web.git riot-web +cd riot-web +git checkout master +docker build -t vectorim/riot-web . +``` + +If you're building a custom branch, or want to use the develop branch, check out the appropriate +riot-web branch and then run: +```bash +docker build -t vectorim/riot-web:develop \ + --build-arg USE_CUSTOM_SDKS=true \ + --build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \ + --build-arg REACT_SDK_BRANCH="develop" \ + --build-arg JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" \ + --build-arg JS_SDK_BRANCH="develop" \ + . +``` + +config.json +=========== + +Riot supports a variety of settings to configure default servers, behaviour, themes, etc. +See the [configuration docs](docs/config.md) for more details. + +Labs Features +============= + +Some features of Riot may be enabled by flags in the `Labs` section of the settings. +Some of these features are described in [labs.md](https://github.com/vector-im/riot-web/blob/develop/docs/labs.md). + Development =========== -Before attempting to develop on Riot you **must** read the developer guide -for `matrix-react-sdk` at https://github.com/matrix-org/matrix-react-sdk, which +Before attempting to develop on Riot you **must** read the [developer guide +for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk), which also defines the design, architecture and style for Riot too. +You should also familiarise yourself with the ["Here be Dragons" guide +](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM) +to the tame & not-so-tame dragons (gotchas) which exist in the codebase. + The idea of Riot is to be a relatively lightweight "skin" of customisations on top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the higher and lower level React components useful for building Matrix communication apps using React. -After creating a new component you must run `npm run reskindex` to regenerate -the `component-index.js` for the app (used in future for skinning) - -**However, as of July 2016 this layering abstraction is broken due to rapid -development on Riot forcing `matrix-react-sdk` to move fast at the expense of -maintaining a clear abstraction between the two.** Hacking on Riot inevitably -means hacking equally on `matrix-react-sdk`, and there are bits of -`matrix-react-sdk` behaviour incorrectly residing in the `riot-web` project -(e.g. matrix-react-sdk specific CSS), and a bunch of Riot specific behaviour -in the `matrix-react-sdk` (grep for `vector` / `riot`). This separation problem will be -solved asap once development on Riot (and thus matrix-react-sdk) has -stabilised. Until then, the two projects should basically be considered as a -single unit. In particular, `matrix-react-sdk` issues are currently filed -against `riot-web` in github. +After creating a new component you must run `yarn reskindex` to regenerate +the `component-index.js` for the app (used in future for skinning). Please note that Riot is intended to run correctly without access to the public internet. So please don't depend on resources (JS libs, CSS, images, fonts) @@ -234,55 +241,67 @@ having to manually rebuild each time. First clone and build `matrix-js-sdk`: -1. `git clone git@github.com:matrix-org/matrix-js-sdk.git` -1. `pushd matrix-js-sdk` -1. `git checkout develop` -1. `npm install` -1. `npm install source-map-loader` # because webpack is made of fail (https://github.com/webpack/webpack/issues/1472) -1. `popd` +``` bash +git clone https://github.com/matrix-org/matrix-js-sdk.git +pushd matrix-js-sdk +git checkout develop +yarn link +yarn install +popd +``` Then similarly with `matrix-react-sdk`: -1. `git clone git@github.com:matrix-org/matrix-react-sdk.git` -1. `pushd matrix-react-sdk` -1. `git checkout develop` -1. `npm install` -1. `rm -r node_modules/matrix-js-sdk; ln -s ../../matrix-js-sdk node_modules/` -1. `popd` +```bash +git clone https://github.com/matrix-org/matrix-react-sdk.git +pushd matrix-react-sdk +git checkout develop +yarn link +yarn link matrix-js-sdk +yarn install +popd +``` Finally, build and start Riot itself: -1. `git clone git@github.com:vector-im/riot-web.git` -1. `cd riot-web` -1. `git checkout develop` -1. `npm install` -1. `rm -r node_modules/matrix-js-sdk; ln -s ../../matrix-js-sdk node_modules/` -1. `rm -r node_modules/matrix-react-sdk; ln -s ../../matrix-react-sdk node_modules/` -1. `npm start` -1. Wait a few seconds for the initial build to finish; you should see something like: - ``` - Hash: b0af76309dd56d7275c8 - Version: webpack 1.12.14 - Time: 14533ms - Asset Size Chunks Chunk Names - bundle.js 4.2 MB 0 [emitted] main - bundle.css 91.5 kB 0 [emitted] main - bundle.js.map 5.29 MB 0 [emitted] main - bundle.css.map 116 kB 0 [emitted] main - + 1013 hidden modules - ``` +```bash +git clone https://github.com/vector-im/riot-web.git +cd riot-web +git checkout develop +yarn link matrix-js-sdk +yarn link matrix-react-sdk +yarn install +yarn start +``` + +Wait a few seconds for the initial build to finish; you should see something like: +``` +Hash: b0af76309dd56d7275c8 +Version: webpack 1.12.14 +Time: 14533ms + Asset Size Chunks Chunk Names + bundle.js 4.2 MB 0 [emitted] main + bundle.css 91.5 kB 0 [emitted] main + bundle.js.map 5.29 MB 0 [emitted] main +bundle.css.map 116 kB 0 [emitted] main + + 1013 hidden modules +``` Remember, the command will not terminate since it runs the web server and rebuilds source files when they change. This development server also disables caching, so do NOT use it in production. -1. Open http://127.0.0.1:8080/ in your browser to see your newly built Riot. -When you make changes to `matrix-react-sdk` or `matrix-js-sdk`, you will need -to run `npm run build` in the relevant directory. You can do this automatically -by instead running `npm start` in the directory, to start a development builder -which will watch for changes to the files and rebuild automatically. +Configure the app by copying `config.sample.json` to `config.json` and +modifying it. See the [configuration docs](docs/config.md) for details. + +Open http://127.0.0.1:8080/ in your browser to see your newly built Riot. + +___ + +When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be +automatically picked up by webpack and built. If you add or remove any components from the Riot skin, you will need to rebuild -the skin's index by running, `npm run reskindex`. +the skin's index by running, `yarn reskindex`. If any of these steps error with, `file table overflow`, you are probably on a mac which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again. @@ -298,12 +317,12 @@ are designed to run in a browser instance under the control of * Make sure you have Chrome installed (a recent version, like 59) * Make sure you have `matrix-js-sdk` and `matrix-react-sdk` installed and built, as above -* `npm run test` +* `yarn test` The above will run the tests under Chrome in a `headless` mode. You can also tell karma to run the tests in a loop (every time the source -changes), in an instance of Chrome on your desktop, with `npm run +changes), in an instance of Chrome on your desktop, with `yarn test-multi`. This also gives you the option of running the tests in 'debug' mode, which is useful for stepping through the tests in the developer tools. diff --git a/config.sample.json b/config.sample.json index 6e83cec2..ade112e8 100644 --- a/config.sample.json +++ b/config.sample.json @@ -1,6 +1,13 @@ { - "default_hs_url": "https://matrix.org", - "default_is_url": "https://vector.im", + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.org", + "server_name": "matrix.org" + }, + "m.identity_server": { + "base_url": "https://vector.im" + } + }, "disable_custom_urls": false, "disable_guests": false, "disable_login_language_selector": false, @@ -8,13 +15,24 @@ "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_widgets_urls": [ + "https://scalar.vector.im/_matrix/integrations/v1", + "https://scalar.vector.im/api", + "https://scalar-staging.vector.im/_matrix/integrations/v1", + "https://scalar-staging.vector.im/api", + "https://scalar-staging.riot.im/scalar/api" + ], + "integrations_jitsi_widget_url": "https://scalar.vector.im/api/widgets/jitsi.html", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", + "defaultCountryCode": "GB", + "showLabsSettings": false, "features": { - "feature_groups": "labs", - "feature_pinning": "labs" + "feature_pinning": "labs", + "feature_custom_status": "labs", + "feature_custom_tags": "labs", + "feature_state_counters": "labs" }, "default_federate": true, - "welcomePageUrl": "home.html", "default_theme": "light", "roomDirectory": { "servers": [ @@ -27,5 +45,11 @@ "whitelistedHSUrls": ["https://matrix.org"], "whitelistedISUrls": ["https://vector.im", "https://matrix.org"], "siteId": 1 + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false + }, + "settingDefaults": { + "breadcrumbs": true } } diff --git a/docs/config.md b/docs/config.md new file mode 100644 index 00000000..821c4149 --- /dev/null +++ b/docs/config.md @@ -0,0 +1,119 @@ +Configuration +============= + +You can configure the app by copying `config.sample.json` to +`config.json` and customising it: + +For a good example, see https://riot.im/develop/config.json. + +1. `default_server_config` sets the default homeserver and identity server URL for + Riot to use. The object is the same as returned by [https://<server_name>/.well-known/matrix/client](https://matrix.org/docs/spec/client_server/latest.html#get-well-known-matrix-client), + with added support for a `server_name` under the `m.homeserver` section to display + a custom homeserver name. Alternatively, the config can contain a `default_server_name` + instead which is where Riot will go to get that same object, although this option is + deprecated - see the `.well-known` link above for more information on using this option. + Note that the `default_server_name` is used to get a complete server configuration + whereas the `server_name` in the `default_server_config` is for display purposes only. + * *Note*: The URLs can also be individually specified as `default_hs_url` and + `default_is_url`, however these are deprecated. They are maintained for backwards + compatibility with older configurations. `default_is_url` is respected only + if `default_hs_url` is used. + * The identity server is used for verifying third party identifiers like emails + and phone numbers. It is not used to store your password or account information. + If not provided, the identity server defaults to vector.im. Currently the only + two public identity servers are https://matrix.org and https://vector.im, however + in future identity servers will be decentralised. In the future it will be possible + to disable the identity server functionality. + * Riot will fail to load if a mix of `default_server_config`, `default_server_name`, or + `default_hs_url` is specified. When multiple sources are specified, it is unclear + which should take priority and therefore the application cannot continue. +1. `features`: Lookup of optional features that may be `enable`d, `disable`d, or exposed to the user + in the `labs` section of settings. The available optional experimental features vary from + release to release. The available features are described in [labs.md](labs.md). +1. `showLabsSettings`: Shows the "labs" tab of user settings even when no `features` are enabled + or present. Useful for getting at settings which may be otherwise hidden. +1. `brand`: String to pass to your homeserver when configuring email notifications, to let the + homeserver know what email template to use when talking to you. +1. `branding`: Configures various branding and logo details, such as: + 1. `welcomeBackgroundUrl`: An image to use as a wallpaper outside the app + during authentication flows + 1. `authHeaderLogoUrl`: An logo image that is shown in the header during + authentication flows + 1. `authFooterLinks`: a list of links to show in the authentication page footer: + `[{"text": "Link text", "url": "https://link.target"}, {"text": "Other link", ...}]` +1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations + server is not Riot and normally not your homeserver either. The integration server settings + may be left blank to disable integrations. +1. `integrations_rest_url`: URL to the REST interface for the integrations server. +1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server. +1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a + https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks + "Send Logs" within the application. Bug reports can be disabled by leaving the + `bug_report_endpoint_url` out of your config file. +1. `roomDirectory`: config for the public room directory. This section is optional. +1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop + down list. Optional. +1. `default_theme`: name of theme to use by default (e.g. 'light') +1. `update_base_url` (electron app only): HTTPS URL to a web server to download + updates from. This should be the path to the directory containing `macos` + and `win32` (for update packages, not installer packages). +1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display + encrypted file attachments. This MUST be hosted on a completely separate domain to + anything else since it is used to isolate the privileges of file attachments to this + domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from + https://github.com/matrix-org/usercontent/blob/master/v1.html +1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config + option out of your config file. If you want to enable analytics, set `piwik` to be an object + containing the following properties: + 1. `url`: The URL of the Piwik instance to use for collecting analytics + 1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics + 1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics + 1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above +1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour +1. `embeddedPages`: Configures the pages displayed in portions of Riot that + embed static files, such as: + 1. `welcomeUrl`: Initial content shown on the outside of the app when not + logged in. Defaults to `welcome.html` supplied with Riot. + 1. `homeUrl`: Content shown on the inside of the app when a specific room is + not selected. By default, no home page is configured. If one is set, a + button to access it will be shown in the top left menu. +1. `defaultCountryCode`: The ISO 3166 alpha2 country code to use when showing + country selectors, like the phone number input on the registration page. + Defaults to `GB` if the given code is unknown or not provided. +1. `settingDefaults`: Defaults for settings that support the `config` level, + as an object mapping setting name to value (note that the "theme" setting + is special cased to the `default_theme` in the config file). +1. `disable_custom_urls`: disallow the user to change the + default homeserver when signing up or logging in. +1. `permalinkPrefix`: Used to change the URL that Riot generates permalinks with. + By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks. + Set this to your Riot instance URL if you run an unfederated server (eg: + "https://riot.example.org"). + +Note that `index.html` also has an og:image meta tag that is set to an image +hosted on riot.im. This is the image used if links to your copy of Riot +appear in some websites like Facebook, and indeed Riot itself. This has to be +static in the HTML and an absolute URL (and HTTP rather than HTTPS), so it's +not possible for this to be an option in config.json. If you'd like to change +it, you can build Riot, but run +`RIOT_OG_IMAGE_URL="http://example.com/logo.png" yarn build`. +Alternatively, you can edit the `og:image` meta tag in `index.html` directly +each time you download a new version of Riot. + +Desktop app configuration +========================= + +To run multiple instances of the desktop app for different accounts, you can +launch the executable with the `--profile` argument followed by a unique +identifier, e.g `riot-web --profile Work` for it to run a separate profile and +not interfere with the default one. + +Alternatively, a custom location for the profile data can be specified using the +`--profile-dir` flag followed by the desired path. + ++ `%APPDATA%\$NAME\config.json` on Windows ++ `$XDG_CONFIG_HOME\$NAME\config.json` or `~/.config/$NAME/config.json` on Linux ++ `~Library/Application Support/$NAME/config.json` on macOS + +In the paths above, `$NAME` is typically `Riot`, unless you use `--profile +$PROFILE` in which case it becomes `Riot-$PROFILE`. diff --git a/docs/labs.md b/docs/labs.md new file mode 100644 index 00000000..ae2c72a4 --- /dev/null +++ b/docs/labs.md @@ -0,0 +1,51 @@ +# Labs features + +Some notes on the features you can enable by going to `Settings->Labs`. Not exhaustive, chat in +[#riot-web:matrix.org](https://matrix.to/#/#riot-web:matrix.org) for more information. + +**Be warned! Labs features are not finalised, they may be fragile, they may change, they may be +dropped. Ask in the room if you are unclear about any details here.** + +## Message pinning (`feature_pinning`) + +Allows you to pin messages in the room. To pin a message, use the 3 dots to the right of the message +and select "Pin". + +## Custom status (`feature_custom_status`) + +An experimental approach for supporting custom status messages across DMs. To set a status, click on +your avatar next to the message composer. + +## Custom tags (`feature_custom_tags`) + +An experimental approach for dealing with custom tags. Custom tags will appear in the bottom portion +of the community filter panel. + +Setting custom tags is not supported by Riot. + +## Render simple counters in room header (`feature_state_counters`) + +Allows rendering of labelled counters above the message list. + +Once enabled, send a custom state event to a room to set values: + +1. In a room, type `/devtools` to bring up the devtools interface +2. Click "Send Custom Event" +3. Toggle from "Event" to "State Event" +4. Set the event type to: `re.jki.counter` and give it a unique key +5. Specify the content in the following format: + +``` +{ + "link": "", + "severity": "normal", + "title": "my counter", + "value": 0 +} +``` + +That's it. Now should see your new counter under the header. + +## Multiple integration managers (`feature_many_integration_managers`) + +Exposes a way to access all the integration managers known to Riot. This is an implementation of [MSC1957](https://github.com/matrix-org/matrix-doc/pull/1957). diff --git a/docs/memory-profiles-and-leaks.md b/docs/memory-profiles-and-leaks.md new file mode 100644 index 00000000..3f8492d4 --- /dev/null +++ b/docs/memory-profiles-and-leaks.md @@ -0,0 +1,53 @@ +## Memory leaks + +Riot usually emits slow behaviour just before it is about to crash. Getting a +memory snapshot (below) just before that happens is ideal in figuring out what +is going wrong. + +Common symptoms are clicking on a room and it feels like the tab froze and scrolling +becoming jumpy/staggered. + +If you receive a white screen (electron) or the chrome crash page, it is likely +run out of memory and it is too late for a memory profile. Please do report when +this happens though so we can try and narrow down what might have gone wrong. + +## Memory profiles/snapshots + +When investigating memory leaks/problems it's usually important to compare snapshots +from different points in the Riot session lifecycle. Most importantly, a snapshot +to establish the baseline or "normal" memory usage is useful. Taking a snapshot +roughly 30-60 minutes after starting Riot is a good time to establish "normal" +memory usage for the app - anything after that is at risk of hiding the memory leak +and anything newer is still in the warmup stages of the app. + +**Memory profiles can contain sensitive information.** If you are submitting a memory +profile to us for debugging purposes, please pick the appropriate Riot developer and +send them over an encrypted private message. *Do not share your memory profile in +public channels or with people you do not trust.* + +### Taking a memory profile (Firefox) + +1. Press CTRL+SHIFT+I (I as in eye). +2. Click the Memory tab. +3. Press the camera icon in the top left of the pane. +4. Wait a bit (coffee is a good option). +5. When the save button appears on the left side of the panel, click it to save the + profile locally. +6. Compress the file (gzip or regular zip) to make the file smaller. +7. Send the compressed file to whoever asked for it (if you trust them). + +While the profile is in progress, the tab might be frozen or unresponsive. + +### Taking a memory profile (Chrome/Desktop) + +1. Press CTRL+SHIFT+I (I as in eye). +2. Click the Memory tab. +3. Select "Heap Snapshot" and the riot.im VM instance (not the indexeddb one). +4. Click "Take Snapshot". +5. Wait a bit (coffee is a good option). +6. When the save button appears on the left side of the panel, click it to save the + profile locally. +7. Compress the file (gzip or regular zip) to make the file smaller. +8. Send the compressed file to whoever asked for it (if you trust them). + +While the profile is in progress, the tab might be frozen or unresponsive. diff --git a/docs/shortcuts.md b/docs/shortcuts.md new file mode 100644 index 00000000..83e49447 --- /dev/null +++ b/docs/shortcuts.md @@ -0,0 +1,13 @@ +# Keyboard Shortcuts + +The modifier is <kbd>Ctrl</kbd> on Windows & Linux and <kbd>⌘</kbd> on Mac. + +- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>m</kbd> - toggle markdown +- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>d</kbd> - toggle mic mute +- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>e</kbd> - toggle video on/off +- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>k</kbd> - jump to named room +- <kbd>↑</kbd>/<kbd>↓</kbd> - navigate old messages to edit when the composer is in focus +- <kbd>↑</kbd>/<kbd>↓</kbd> - next/prev room when focus in room list +- <kbd>Alt</kbd>+<kbd>↑</kbd>/<kbd>↓</kbd> - resend previous messages when the composer is in focus +- <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down +- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to timeline start/end diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 3209f1e4..ae5735e8 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -3,6 +3,8 @@ ## Requirements - A working [Development Setup](../../#setting-up-a-dev-environment) + - Including up-to-date versions of matrix-react-sdk and matrix-js-sdk +- Latest LTS version of Node.js installed - Be able to understand English - Be able to understand the language you want to translate riot-web into @@ -30,9 +32,15 @@ function getColorName(hex) { 1. Check if the import ``import { _t } from 'matrix-react-sdk/lib/languageHandler';`` is present. If not add it to the other import statements. Also import `_td` if needed. 1. Add ``_t()`` to your string. (Don't forget curly braces when you assign an expression to JSX attributes in the render method). If the string is introduced at a point before the translation system has not yet been initialized, use `_td()` instead, and call `_t()` at the appropriate time. - 1. Run `npm run i18n` to update ``src/i18n/strings/en_EN.json`` (if it fails because it can't find the script, your dev environment predates the script, so reinstall/link react-sdk with `npm link ../matrix-react-sdk`). If it segfaults, you may be on Node 6, so try a newer version of node. + 1. Run `yarn i18n` to update ``src/i18n/strings/en_EN.json`` 1. If you added a string with a plural, you can add other English plural variants to ``src/i18n/strings/en_EN.json`` (remeber to edit the one in the same project as the source file containing your new translation). +## Editing existing strings + +1. Edit every occurrence of the string inside `_t()` and `_td()` in the JSX files. +1. Run `yarn i18n` to update `src/i18n/strings/en_EN.json`. (Be sure to run this in the same project as the JSX files you just edited.) +1. Run `yarn prunei18n` to remove the old string from `src/i18n/strings/*.json`. + ## Adding variables inside a string. 1. Extend your ``_t()`` call. Instead of ``_t(STRING)`` use ``_t(STRING, {})`` diff --git a/electron_app/build/icon.icns b/electron_app/build/icon.icns index d74e97e7..eba95ecf 100644 Binary files a/electron_app/build/icon.icns and b/electron_app/build/icon.icns differ diff --git a/electron_app/build/icon.ico b/electron_app/build/icon.ico index 8f8ff94e..1305b7dd 100644 Binary files a/electron_app/build/icon.ico and b/electron_app/build/icon.ico differ diff --git a/electron_app/build/icons/128x128.png b/electron_app/build/icons/128x128.png index 54149b1a..9c52d669 100644 Binary files a/electron_app/build/icons/128x128.png and b/electron_app/build/icons/128x128.png differ diff --git a/electron_app/build/icons/16x16.png b/electron_app/build/icons/16x16.png index def4ec5e..7435c1b5 100644 Binary files a/electron_app/build/icons/16x16.png and b/electron_app/build/icons/16x16.png differ diff --git a/electron_app/build/icons/24x24.png b/electron_app/build/icons/24x24.png index 6fe144ea..f484995e 100644 Binary files a/electron_app/build/icons/24x24.png and b/electron_app/build/icons/24x24.png differ diff --git a/electron_app/build/icons/256x256.png b/electron_app/build/icons/256x256.png index 563e6d5e..f52d02c8 100644 Binary files a/electron_app/build/icons/256x256.png and b/electron_app/build/icons/256x256.png differ diff --git a/electron_app/build/icons/48x48.png b/electron_app/build/icons/48x48.png index 9cd225d4..fcbcbc49 100644 Binary files a/electron_app/build/icons/48x48.png and b/electron_app/build/icons/48x48.png differ diff --git a/electron_app/build/icons/512x512.png b/electron_app/build/icons/512x512.png index 328a723c..801e1504 100644 Binary files a/electron_app/build/icons/512x512.png and b/electron_app/build/icons/512x512.png differ diff --git a/electron_app/build/icons/64x64.png b/electron_app/build/icons/64x64.png index 20a7a6cf..4a86e56e 100644 Binary files a/electron_app/build/icons/64x64.png and b/electron_app/build/icons/64x64.png differ diff --git a/electron_app/build/icons/96x96.png b/electron_app/build/icons/96x96.png index eb48c2c9..8a998989 100644 Binary files a/electron_app/build/icons/96x96.png and b/electron_app/build/icons/96x96.png differ diff --git a/electron_app/build/install-spinner.gif b/electron_app/build/install-spinner.gif index c4f832c3..4a685294 100644 Binary files a/electron_app/build/install-spinner.gif and b/electron_app/build/install-spinner.gif differ diff --git a/electron_app/build/linux/after-install.tpl b/electron_app/build/linux/after-install.tpl new file mode 100644 index 00000000..6ee772d2 --- /dev/null +++ b/electron_app/build/linux/after-install.tpl @@ -0,0 +1,14 @@ +#!/bin/bash + +# Link to the binary +ln -sf '/opt/${productFilename}/${executable}' '/usr/bin/${executable}' + +# SUID chrome-sandbox for Electron 5+ +# Remove this entire file (after-install.tpl) and remove the reference in +# package.json once this change has been upstreamed so we go back to the copy +# from upstream. +# https://github.com/electron-userland/electron-builder/pull/4163 +chmod 4755 '/opt/${productFilename}/chrome-sandbox' || true + +update-mime-database /usr/share/mime || true +update-desktop-database /usr/share/applications || true diff --git a/electron_app/img/riot.ico b/electron_app/img/riot.ico index 8f8ff94e..1305b7dd 100644 Binary files a/electron_app/img/riot.ico and b/electron_app/img/riot.ico differ diff --git a/electron_app/img/riot.png b/electron_app/img/riot.png index 85e9f8ca..f52d02c8 100644 Binary files a/electron_app/img/riot.png and b/electron_app/img/riot.png differ diff --git a/electron_app/package.json b/electron_app/package.json index 04741bec..30012970 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,11 +2,12 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "0.13.5", + "version": "1.5.0", "description": "A feature-rich client for Matrix.org", - "author": "Vector Creations Ltd.", + "author": "New Vector Ltd.", "dependencies": { "auto-launch": "^5.0.1", + "electron-store": "^2.0.0", "electron-window-state": "^4.1.0", "minimist": "^1.2.0", "png-to-ico": "^1.0.2" diff --git a/electron_app/riot.im/New Vector Ltd.pem b/electron_app/riot.im/New_Vector_Ltd.pem similarity index 100% rename from electron_app/riot.im/New Vector Ltd.pem rename to electron_app/riot.im/New_Vector_Ltd.pem diff --git a/electron_app/riot.im/README b/electron_app/riot.im/README index 09c21874..8e463c25 100644 --- a/electron_app/riot.im/README +++ b/electron_app/riot.im/README @@ -1,4 +1,6 @@ This directory contains the config file for the official riot.im distribution -of Riot Desktop. You probably do not want to build with this config unless -you're building the official riot.im distribution, or you'll find your builds -will replace themselves with the riot.im build. +of Riot Desktop. + +You probably do not want to build with this config unless you're building the +official riot.im distribution, or you'll find your builds will replace +themselves with the riot.im build. diff --git a/electron_app/riot.im/config.json b/electron_app/riot.im/config.json index 5b2fe37b..9887e025 100644 --- a/electron_app/riot.im/config.json +++ b/electron_app/riot.im/config.json @@ -1,14 +1,17 @@ { - "update_base_url": "https://riot.im/download/desktop/update/", - "default_hs_url": "https://matrix.org", - "default_is_url": "https://vector.im", + "update_base_url": "https://packages.riot.im/desktop/update/", + "default_server_name": "matrix.org", "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", "integrations_widgets_urls": [ - "https://scalar-staging.riot.im/scalar/api", - "https://scalar.vector.im/api" + "https://scalar.vector.im/_matrix/integrations/v1", + "https://scalar.vector.im/api", + "https://scalar-staging.vector.im/_matrix/integrations/v1", + "https://scalar-staging.vector.im/api", + "https://scalar-staging.riot.im/scalar/api" ], + "hosting_signup_link": "https://modular.im/?utm_source=riot-web&utm_medium=web", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "welcomeUserId": "@riot-bot:matrix.org", "roomDirectory": { @@ -18,6 +21,19 @@ }, "piwik": { "url": "https://piwik.riot.im/", - "siteId": 1 + "siteId": 1, + "policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy" + }, + "phasedRollOut": { + "feature_lazyloading": { + "offset": 1539684000000, + "period": 604800000 + } + }, + "features": { + "feature_lazyloading": "enable" + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false } } diff --git a/electron_app/riot.im/env.sh b/electron_app/riot.im/env.sh new file mode 100644 index 00000000..79cb6e4e --- /dev/null +++ b/electron_app/riot.im/env.sh @@ -0,0 +1 @@ +export OSSLSIGNCODE_SIGNARGS='-pkcs11module /Library/Frameworks/eToken.framework/Versions/Current/libeToken.dylib -pkcs11engine /usr/local/lib/engines/engine_pkcs11.so -certs electron_app/riot.im/New_Vector_Ltd.pem -key 0a3271cbc1ec0fd8afb37f6bbe0cd65ba08d3b4d -t http://timestamp.comodoca.com -h sha256 -verbose' diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index 4ffe2110..f061acd5 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -1,7 +1,8 @@ /* Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> +Copyright 2018, 2019 New Vector Ltd +Copyright 2017, 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -22,19 +23,45 @@ limitations under the License. const checkSquirrelHooks = require('./squirrelhooks'); if (checkSquirrelHooks()) return; -const argv = require('minimist')(process.argv); -const electron = require('electron'); +const argv = require('minimist')(process.argv, { + alias: {help: "h"}, +}); + +const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu, autoUpdater, protocol} = require('electron'); const AutoLaunch = require('auto-launch'); +const path = require('path'); const tray = require('./tray'); const vectorMenu = require('./vectormenu'); const webContentsHandler = require('./webcontents-handler'); const updater = require('./updater'); +const { migrateFromOldOrigin } = require('./originMigrator'); const windowStateKeeper = require('electron-window-state'); +const Store = require('electron-store'); -if (argv.profile) { - electron.app.setPath('userData', `${electron.app.getPath('userData')}-${argv.profile}`); +if (argv["help"]) { + console.log("Options:"); + console.log(" --profile-dir {path}: Path to where to store the profile."); + console.log(" --profile {name}: Name of alternate profile to use, allows for running multiple accounts."); + console.log(" --devtools: Install and use react-devtools and react-perf."); + console.log(" --no-update: Disable automatic updating."); + console.log(" --hidden: Start the application hidden in the system tray."); + console.log(" --help: Displays this help message."); + console.log("And more such as --proxy, see:" + + "https://github.com/electron/electron/blob/master/docs/api/chrome-command-line-switches.md"); + app.exit(); +} + +// boolean flag set whilst we are doing one-time origin migration +// We only serve the origin migration script while we're actually +// migrating to mitigate any risk of it being used maliciously. +let migratingOrigin = false; + +if (argv['profile-dir']) { + app.setPath('userData', argv['profile-dir']); +} else if (argv['profile']) { + app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`); } let vectorConfig = {}; @@ -47,8 +74,19 @@ try { // Continue with the defaults (ie. an empty config) } +try { + // Load local config and use it to override values from the one baked with the build + const localConfig = require(path.join(app.getPath('userData'), 'config.json')); + vectorConfig = Object.assign(vectorConfig, localConfig); +} catch (e) { + // Could not load local config, this is expected in most cases. +} + +const store = new Store({ name: "electron-config" }); + let mainWindow = null; global.appQuitting = false; +global.minimizeToTray = store.get('minimizeToTray', true); // handle uncaught errors otherwise it displays @@ -62,14 +100,14 @@ process.on('uncaughtException', function(error) { }); let focusHandlerAttached = false; -electron.ipcMain.on('setBadgeCount', function(ev, count) { - electron.app.setBadgeCount(count); - if (count === 0) { +ipcMain.on('setBadgeCount', function(ev, count) { + app.setBadgeCount(count); + if (count === 0 && mainWindow) { mainWindow.flashFrame(false); } }); -electron.ipcMain.on('loudNotification', function() { +ipcMain.on('loudNotification', function() { if (process.platform === 'win32' && mainWindow && !mainWindow.isFocused() && !focusHandlerAttached) { mainWindow.flashFrame(true); mainWindow.once('focus', () => { @@ -81,39 +119,108 @@ electron.ipcMain.on('loudNotification', function() { }); let powerSaveBlockerId; -electron.ipcMain.on('app_onAction', function(ev, payload) { +ipcMain.on('app_onAction', function(ev, payload) { switch (payload.action) { case 'call_state': - if (powerSaveBlockerId && electron.powerSaveBlocker.isStarted(powerSaveBlockerId)) { + if (powerSaveBlockerId && powerSaveBlocker.isStarted(powerSaveBlockerId)) { if (payload.state === 'ended') { - electron.powerSaveBlocker.stop(powerSaveBlockerId); + powerSaveBlocker.stop(powerSaveBlockerId); } } else { if (payload.state === 'connected') { - powerSaveBlockerId = electron.powerSaveBlocker.start('prevent-display-sleep'); + powerSaveBlockerId = powerSaveBlocker.start('prevent-display-sleep'); } } break; } }); - -electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); - -const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirectory) => { - // Someone tried to run a second instance, we should focus our window. - if (mainWindow) { - if (!mainWindow.isVisible()) mainWindow.show(); - if (mainWindow.isMinimized()) mainWindow.restore(); - mainWindow.focus(); - } +autoUpdater.on('update-downloaded', (ev, releaseNotes, releaseName, releaseDate, updateURL) => { + if (!mainWindow) return; + // forward to renderer + mainWindow.webContents.send('update-downloaded', { + releaseNotes, + releaseName, + releaseDate, + updateURL, + }); }); -if (shouldQuit) { - console.log('Other instance detected: exiting'); - electron.app.exit(); -} +ipcMain.on('ipcCall', async function(ev, payload) { + if (!mainWindow) return; + const args = payload.args || []; + let ret; + + switch (payload.name) { + case 'getUpdateFeedUrl': + ret = autoUpdater.getFeedURL(); + break; + case 'getAutoLaunchEnabled': + ret = await launcher.isEnabled(); + break; + case 'setAutoLaunchEnabled': + if (args[0]) { + launcher.enable(); + } else { + launcher.disable(); + } + break; + case 'getMinimizeToTrayEnabled': + ret = global.minimizeToTray; + break; + case 'setMinimizeToTrayEnabled': + store.set('minimizeToTray', global.minimizeToTray = args[0]); + break; + case 'getAutoHideMenuBarEnabled': + ret = global.mainWindow.isMenuBarAutoHide(); + break; + case 'setAutoHideMenuBarEnabled': + store.set('autoHideMenuBar', args[0]); + global.mainWindow.setAutoHideMenuBar(args[0]); + global.mainWindow.setMenuBarVisibility(!args[0]); + break; + case 'getAppVersion': + ret = app.getVersion(); + break; + case 'focusWindow': + if (mainWindow.isMinimized()) { + mainWindow.restore(); + } else if (!mainWindow.isVisible()) { + mainWindow.show(); + } else { + mainWindow.focus(); + } + break; + case 'origin_migrate': + migratingOrigin = true; + await migrateFromOldOrigin(); + migratingOrigin = false; + break; + case 'getConfig': + ret = vectorConfig; + break; + default: + mainWindow.webContents.send('ipcReply', { + id: payload.id, + error: "Unknown IPC Call: " + payload.name, + }); + return; + } + + mainWindow.webContents.send('ipcReply', { + id: payload.id, + reply: ret, + }); +}); + +app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); + +const gotLock = app.requestSingleInstanceLock(); +if (!gotLock) { + console.log('Other instance detected: exiting'); + app.exit(); +} const launcher = new AutoLaunch({ name: vectorConfig.brand || 'Riot', @@ -123,61 +230,109 @@ const launcher = new AutoLaunch({ }, }); -const settings = { - 'auto-launch': { - get: launcher.isEnabled, - set: function(bool) { - if (bool) { - return launcher.enable(); - } else { - return launcher.disable(); - } - }, +// Register the scheme the app is served from as 'standard' +// which allows things like relative URLs and IndexedDB to +// work. +// Also mark it as secure (ie. accessing resources from this +// protocol and HTTPS won't trigger mixed content warnings). +protocol.registerSchemesAsPrivileged([{ + scheme: 'vector', + privileges: { + standard: true, + secure: true, + supportFetchAPI: true, }, -}; +}]); -electron.ipcMain.on('settings_get', async function(ev) { - const data = {}; - - try { - await Promise.all(Object.keys(settings).map(async function (setting) { - data[setting] = await settings[setting].get(); - })); - - ev.sender.send('settings', data); - } catch(e) { console.error(e); } -}); - -electron.ipcMain.on('settings_set', function(ev, key, value) { - console.log(key, value); - if (settings[key] && settings[key].set) { - settings[key].set(value); - } -}); - -electron.app.on('ready', () => { - - if (argv.devtools) { +app.on('ready', () => { + if (argv['devtools']) { try { - const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer'); - installExtension(REACT_DEVELOPER_TOOLS) + const { default: installExt, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer'); + installExt(REACT_DEVELOPER_TOOLS) .then((name) => console.log(`Added Extension: ${name}`)) .catch((err) => console.log('An error occurred: ', err)); - installExtension(REACT_PERF) + installExt(REACT_PERF) .then((name) => console.log(`Added Extension: ${name}`)) .catch((err) => console.log('An error occurred: ', err)); - } catch(e) {console.log(e);} + } catch (e) { + console.log(e); + } } + protocol.registerFileProtocol('vector', (request, callback) => { + if (request.method !== 'GET') { + callback({error: -322}); // METHOD_NOT_SUPPORTED from chromium/src/net/base/net_error_list.h + return null; + } - if (vectorConfig.update_base_url) { - console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`); - updater.start(vectorConfig.update_base_url); + const parsedUrl = new URL(request.url); + if (parsedUrl.protocol !== 'vector:') { + callback({error: -302}); // UNKNOWN_URL_SCHEME + return; + } + if (parsedUrl.host !== 'vector') { + callback({error: -105}); // NAME_NOT_RESOLVED + return; + } + + const target = parsedUrl.pathname.split('/'); + + // path starts with a '/' + if (target[0] !== '') { + callback({error: -6}); // FILE_NOT_FOUND + return; + } + + if (target[target.length - 1] == '') { + target[target.length - 1] = 'index.html'; + } + + let baseDir; + // first part of the path determines where we serve from + if (migratingOrigin && target[1] === 'origin_migrator_dest') { + // the origin migrator destination page + // (only the destination script needs to come from the + // custom protocol: the source part is loaded from a + // file:// as that's the origin we're migrating from). + baseDir = __dirname + "/../../origin_migrator/dest"; + } else if (target[1] === 'webapp') { + baseDir = __dirname + "/../../webapp"; + } else { + callback({error: -6}); // FILE_NOT_FOUND + return; + } + + // Normalise the base dir and the target path separately, then make sure + // the target path isn't trying to back out beyond its root + baseDir = path.normalize(baseDir); + + const relTarget = path.normalize(path.join(...target.slice(2))); + if (relTarget.startsWith('..')) { + callback({error: -6}); // FILE_NOT_FOUND + return; + } + const absTarget = path.join(baseDir, relTarget); + + callback({ + path: absTarget, + }); + }, (error) => { + if (error) console.error('Failed to register protocol'); + }); + + if (argv['no-update']) { + console.log('Auto update disabled via command line flag "--no-update"'); + } else if (vectorConfig['update_base_url']) { + console.log(`Starting auto update with base URL: ${vectorConfig['update_base_url']}`); + updater.start(vectorConfig['update_base_url']); } else { console.log('No update_base_url is defined: auto update is disabled'); } - const iconPath = `${__dirname}/../img/riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + // It's important to call `path.join` so we don't end up with the packaged + // asar in the final path. + const iconFile = `riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + const iconPath = path.join(__dirname, "..", "..", "img", iconFile); // Load the previous window state with fallback to defaults const mainWindowState = windowStateKeeper({ @@ -185,18 +340,31 @@ electron.app.on('ready', () => { defaultHeight: 768, }); - mainWindow = global.mainWindow = new electron.BrowserWindow({ + const preloadScript = path.normalize(`${__dirname}/preload.js`); + mainWindow = global.mainWindow = new BrowserWindow({ icon: iconPath, show: false, - autoHideMenuBar: true, + autoHideMenuBar: store.get('autoHideMenuBar', true), x: mainWindowState.x, y: mainWindowState.y, width: mainWindowState.width, height: mainWindowState.height, + webPreferences: { + preload: preloadScript, + nodeIntegration: false, + sandbox: true, + enableRemoteModule: false, + // We don't use this: it's useful for the preload script to + // share a context with the main page so we can give select + // objects to the main page. The sandbox option isolates the + // main page from the background script. + contextIsolation: false, + webgl: false, + }, }); - mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); - electron.Menu.setApplicationMenu(vectorMenu); + mainWindow.loadURL('vector://vector/webapp/'); + Menu.setApplicationMenu(vectorMenu); // explicitly hide because setApplicationMenu on Linux otherwise shows... // https://github.com/electron/electron/issues/9621 @@ -208,17 +376,22 @@ electron.app.on('ready', () => { brand: vectorConfig.brand || 'Riot', }); - if (!argv.hidden) { - mainWindow.once('ready-to-show', () => { + mainWindow.once('ready-to-show', () => { + mainWindowState.manage(mainWindow); + + if (!argv['hidden']) { mainWindow.show(); - }); - } + } else { + // hide here explicitly because window manage above sometimes shows it + mainWindow.hide(); + } + }); mainWindow.on('closed', () => { mainWindow = global.mainWindow = null; }); mainWindow.on('close', (e) => { - if (!global.appQuitting && (tray.hasTray() || process.platform === 'darwin')) { + if (global.minimizeToTray && !global.appQuitting && (tray.hasTray() || process.platform === 'darwin')) { // On Mac, closing the window just hides it // (this is generally how single-window Mac apps // behave, eg. Mail.app) @@ -240,26 +413,37 @@ electron.app.on('ready', () => { } webContentsHandler(mainWindow.webContents); - mainWindowState.manage(mainWindow); }); -electron.app.on('window-all-closed', () => { - electron.app.quit(); +app.on('window-all-closed', () => { + app.quit(); }); -electron.app.on('activate', () => { +app.on('activate', () => { mainWindow.show(); }); -electron.app.on('before-quit', () => { +app.on('before-quit', () => { global.appQuitting = true; if (mainWindow) { mainWindow.webContents.send('before-quit'); } }); +app.on('second-instance', (ev, commandLine, workingDirectory) => { + // If other instance launched with --hidden then skip showing window + if (commandLine.includes('--hidden')) return; + + // Someone tried to run a second instance, we should focus our window. + if (mainWindow) { + if (!mainWindow.isVisible()) mainWindow.show(); + if (mainWindow.isMinimized()) mainWindow.restore(); + mainWindow.focus(); + } +}); + // Set the App User Model ID to match what the squirrel // installer uses for the shortcut icon. // This makes notifications work on windows 8.1 (and is // a noop on other platforms). -electron.app.setAppUserModelId('com.squirrel.riot-web.Riot'); +app.setAppUserModelId('com.squirrel.riot-web.Riot'); diff --git a/electron_app/src/originMigrator.js b/electron_app/src/originMigrator.js new file mode 100644 index 00000000..90a33de1 --- /dev/null +++ b/electron_app/src/originMigrator.js @@ -0,0 +1,72 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const { BrowserWindow, ipcMain } = require('electron'); +const path = require('path'); + +async function migrateFromOldOrigin() { + console.log("Attempting to migrate data between origins"); + + // We can use the same preload script: we just need ipcRenderer exposed + const preloadScript = path.normalize(`${__dirname}/preload.js`); + await new Promise(resolve => { + const migrateWindow = new BrowserWindow({ + show: false, + webPreferences: { + preload: preloadScript, + nodeIntegration: false, + sandbox: true, + enableRemoteModule: false, + webgl: false, + }, + }); + const onOriginMigrationComplete = (e, success, sentSummary, storedSummary) => { + // we use once but we'll only get one of these events, + // so remove the listener for the other one + ipcMain.removeListener('origin_migration_nodata', onOriginMigrationNoData); + + if (success) { + console.log("Origin migration completed successfully!"); + } else { + console.error("Origin migration failed!"); + } + console.error("Data sent", sentSummary); + console.error("Data stored", storedSummary); + migrateWindow.close(); + resolve(); + }; + const onOriginMigrationNoData = (e, success, sentSummary, storedSummary) => { + ipcMain.removeListener('origin_migration_complete', onOriginMigrationComplete); + + console.log("No session to migrate from old origin"); + migrateWindow.close(); + resolve(); + }; + + ipcMain.once('origin_migration_complete', onOriginMigrationComplete); + ipcMain.once('origin_migration_nodata', onOriginMigrationNoData); + + // Normalise the path because in the distribution, __dirname will be inside the + // electron asar. + const sourcePagePath = path.normalize(__dirname + '/../../origin_migrator/source.html'); + console.log("Loading path: " + sourcePagePath); + migrateWindow.loadURL('file://' + sourcePagePath); + }); +} + +module.exports = { + migrateFromOldOrigin, +}; diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MTextBody.scss b/electron_app/src/preload.js similarity index 76% rename from src/skins/vector/css/matrix-react-sdk/views/messages/_MTextBody.scss rename to electron_app/src/preload.js index fcf397fd..0862ec67 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MTextBody.scss +++ b/electron_app/src/preload.js @@ -1,5 +1,5 @@ /* -Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018, 2019 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,11 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_MTextBody { - white-space: pre-wrap; -} +const { ipcRenderer } = require('electron'); -.mx_MTextBody pre{ - overflow-y: auto; - max-height: 30vh; -} +// expose ipcRenderer to the renderer process +window.ipcRenderer = ipcRenderer; diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index bd07d7d4..61e05972 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -65,7 +65,7 @@ exports.create = function(config) { global.mainWindow.webContents.on('page-favicon-updated', async function(ev, favicons) { if (!favicons || favicons.length <= 0 || !favicons[0].startsWith('data:')) { if (lastFavicon !== null) { - win.setIcon(defaultIcon); + global.mainWindow.setIcon(defaultIcon); trayIcon.setImage(defaultIcon); lastFavicon = null; } diff --git a/electron_app/src/vectormenu.js b/electron_app/src/vectormenu.js index 14f91a52..a8f998be 100644 --- a/electron_app/src/vectormenu.js +++ b/electron_app/src/vectormenu.js @@ -37,7 +37,7 @@ const template = [ submenu: [ { type: 'separator' }, { role: 'resetzoom' }, - { role: 'zoomin' }, + { role: 'zoomin', accelerator: 'CommandOrControl+=' }, { role: 'zoomout' }, { type: 'separator' }, { role: 'togglefullscreen' }, @@ -57,8 +57,8 @@ const template = [ role: 'help', submenu: [ { - label: 'riot.im', - click() { shell.openExternal('https://riot.im/'); }, + label: 'Riot Help', + click() { shell.openExternal('https://about.riot.im/help'); }, }, ], }, diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js index 37416ebe..2880cf37 100644 --- a/electron_app/src/webcontents-handler.js +++ b/electron_app/src/webcontents-handler.js @@ -1,10 +1,14 @@ -const {clipboard, nativeImage, Menu, MenuItem, shell} = require('electron'); +const {clipboard, nativeImage, Menu, MenuItem, shell, dialog} = require('electron'); const url = require('url'); +const fs = require('fs'); +const request = require('request'); + +const MAILTO_PREFIX = "mailto:"; const PERMITTED_URL_SCHEMES = [ 'http:', 'https:', - 'mailto:', + MAILTO_PREFIX, ]; function safeOpenURL(target) { @@ -32,19 +36,27 @@ function onWindowOrNavigate(ev, target) { } function onLinkContextMenu(ev, params) { - const url = params.linkURL || params.srcURL; + let url = params.linkURL || params.srcURL; + + if (url.startsWith('vector://vector/webapp')) { + url = "https://riot.im/app/" + url.substring(23); + } const popupMenu = new Menu(); - popupMenu.append(new MenuItem({ - label: url, - click() { - safeOpenURL(url); - }, - })); + // No point trying to open blob: URLs in an external browser: it ain't gonna work. + if (!url.startsWith('blob:')) { + popupMenu.append(new MenuItem({ + label: url, + click() { + safeOpenURL(url); + }, + })); + } + let addSaveAs = false; if (params.mediaType && params.mediaType === 'image' && !url.startsWith('file://')) { popupMenu.append(new MenuItem({ - label: 'Copy Image', + label: 'Copy image', click() { if (url.startsWith('data:')) { clipboard.writeImage(nativeImage.createFromDataURL(url)); @@ -53,15 +65,63 @@ function onLinkContextMenu(ev, params) { } }, })); + + // We want the link to be ordered below the copy stuff, but don't want to duplicate + // the `if` statement, so use a flag. + addSaveAs = true; } - popupMenu.append(new MenuItem({ - label: 'Copy Link Address', - click() { - clipboard.writeText(url); - }, - })); - popupMenu.popup(); + // No point offering to copy a blob: URL either + if (!url.startsWith('blob:')) { + // Special-case e-mail URLs to strip the `mailto:` like modern browsers do + if (url.startsWith(MAILTO_PREFIX)) { + popupMenu.append(new MenuItem({ + label: 'Copy email address', + click() { + clipboard.writeText(url.substr(MAILTO_PREFIX.length)); + }, + })); + } else { + popupMenu.append(new MenuItem({ + label: 'Copy link address', + click() { + clipboard.writeText(url); + }, + })); + } + } + + if (addSaveAs) { + popupMenu.append(new MenuItem({ + label: 'Save image as...', + click() { + const targetFileName = params.titleText || "image.png"; + const filePath = dialog.showSaveDialog({ + defaultPath: targetFileName, + }); + + if (!filePath) return; // user cancelled dialog + + try { + if (url.startsWith("data:")) { + fs.writeFileSync(filePath, nativeImage.createFromDataURL(url)); + } else { + request.get(url).pipe(fs.createWriteStream(filePath)); + } + } catch (err) { + console.error(err); + dialog.showMessageBox({ + type: "error", + title: "Failed to save image", + message: "The image failed to save", + }); + } + }, + })); + } + + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } @@ -88,7 +148,8 @@ function onSelectedContextMenu(ev, params) { const items = _CutCopyPasteSelectContextMenus(params); const popupMenu = Menu.buildFromTemplate(items); - popupMenu.popup(); + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } @@ -101,13 +162,26 @@ function onEditableContextMenu(ev, params) { const popupMenu = Menu.buildFromTemplate(items); - popupMenu.popup(); + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } module.exports = (webContents) => { webContents.on('new-window', onWindowOrNavigate); + // XXX: The below now does absolutely nothing because of + // https://github.com/electron/electron/issues/8841 + // Whilst this isn't a security issue since without + // node integration and with the sandbox, it should be + // no worse than opening the site in Chrome, it obviously + // means the user has to restart Riot to make it usable + // again (often unintuitive because it minimises to the + // system tray). We therefore need to be vigilant about + // putting target="_blank" on links in Riot (although + // we should generally be doing this anyway since links + // navigating you away from Riot in the browser is + // also annoying). webContents.on('will-navigate', onWindowOrNavigate); webContents.on('context-menu', function(ev, params) { diff --git a/electron_app/yarn.lock b/electron_app/yarn.lock new file mode 100644 index 00000000..4723d3e8 --- /dev/null +++ b/electron_app/yarn.lock @@ -0,0 +1,837 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/node@^9.4.0": + version "9.6.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.45.tgz#a9e5cfd026a3abaaf17e3c0318a470da9f2f178e" + integrity sha512-9scD7xI1kpIoMs3gVFMOWsWDyRIQ1AOZwe56i1CQPE6N/P4POYkn9UtW5F66t8C2AIoPtVfOFycQ2r11t3pcyg== + +ajv@^6.5.5: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +applescript@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz#bb87af568cad034a4e48c4bdaf6067a3a2701317" + integrity sha1-u4evVoytA0pOSMS9r2Bno6JwExc= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +auto-launch@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/auto-launch/-/auto-launch-5.0.5.tgz#d14bd002b1ef642f85e991a6195ff5300c8ad3c0" + integrity sha512-ppdF4mihhYzMYLuCcx9H/c5TUOCev8uM7en53zWVQhyYAJrurd2bFZx3qQVeJKF2jrc7rsPRNN5cD+i23l6PdA== + dependencies: + applescript "^1.0.0" + mkdirp "^0.5.1" + path-is-absolute "^1.0.0" + untildify "^3.0.2" + winreg "1.2.4" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bignumber.js@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8" + integrity sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg= + +bmp-js@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz#64113e9c7cf1202b376ed607bf30626ebe57b18a" + integrity sha1-ZBE+nHzxICs3btYHvzBibr5XsYo= + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +conf@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-2.2.0.tgz#ee282efafc1450b61e205372041ad7d866802d9a" + integrity sha512-93Kz74FOMo6aWRVpAZsonOdl2I57jKtHrNmxhumehFQw4X8Sk37SohNY11PG7Q8Okta+UnrVaI006WLeyp8/XA== + dependencies: + dot-prop "^4.1.0" + env-paths "^1.0.0" + make-dir "^1.0.0" + pkg-up "^2.0.0" + write-file-atomic "^2.3.0" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-store@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-2.0.0.tgz#1035cca2a95409d1f54c7466606345852450d64a" + integrity sha512-1WCFYHsYvZBqDsoaS0Relnz0rd81ZkBAI0Fgx7Nq2UWU77rSNs1qxm4S6uH7TCZ0bV3LQpJFk7id/is/ZgoOPA== + dependencies: + conf "^2.0.0" + +electron-window-state@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-4.1.1.tgz#6b34fdc31b38514dfec8b7c8f7b5d4addb67632d" + integrity sha1-azT9wxs4UU3+yLfI97XUrdtnYy0= + dependencies: + deep-equal "^1.0.1" + jsonfile "^2.2.3" + mkdirp "^0.5.1" + +env-paths@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" + integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= + +es-abstract@^1.5.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^3.0.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + +exif-parser@^0.1.9: + version "0.1.12" + resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +file-type@^3.1.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.6: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +ip-regex@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + integrity sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0= + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-function@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jimp@^0.2.28: + version "0.2.28" + resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz#dd529a937190f42957a7937d1acc3a7762996ea2" + integrity sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI= + dependencies: + bignumber.js "^2.1.0" + bmp-js "0.0.3" + es6-promise "^3.0.2" + exif-parser "^0.1.9" + file-type "^3.1.0" + jpeg-js "^0.2.0" + load-bmfont "^1.2.3" + mime "^1.3.4" + mkdirp "0.5.1" + pixelmatch "^4.0.0" + pngjs "^3.0.0" + read-chunk "^1.0.1" + request "^2.65.0" + stream-to-buffer "^0.1.0" + tinycolor2 "^1.1.2" + url-regex "^3.0.0" + +jpeg-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" + integrity sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII= + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsonfile@^2.2.3: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +load-bmfont@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz#75f17070b14a8c785fe7f5bee2e6fd4f98093b6b" + integrity sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +mime-db@~1.38.0: + version "1.38.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" + integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.22" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" + integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== + dependencies: + mime-db "~1.38.0" + +mime@^1.3.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +mkdirp@0.5.1, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-keys@^1.0.12: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" + integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + +parse-headers@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz#9545e8a4c1ae5eaea7d24992bca890281ed26e34" + integrity sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg== + dependencies: + for-each "^0.3.3" + string.prototype.trim "^1.1.2" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pixelmatch@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= + dependencies: + pngjs "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +png-to-ico@^1.0.2: + version "1.0.7" + resolved "https://registry.yarnpkg.com/png-to-ico/-/png-to-ico-1.0.7.tgz#9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2" + integrity sha512-heHiZjPFhVgLiuSG4C4wwKN9YPGLpPJvOfXRyI+cEJf0vPutjJ4XDaeI2f/hzTFs+2juihDw3pP8R5JtTuQTGg== + dependencies: + "@types/node" "^9.4.0" + jimp "^0.2.28" + minimist "^1.2.0" + +pngjs@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + +psl@^1.1.24: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +read-chunk@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194" + integrity sha1-X2jKswfmY/GZk1J9m1icrORmEZQ= + +request@^2.65.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stream-to-buffer@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" + integrity sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk= + dependencies: + stream-to "~0.2.0" + +stream-to@~0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" + integrity sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0= + +string.prototype.trim@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +tinycolor2@^1.1.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +untildify@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" + integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +url-regex@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" + integrity sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ= + dependencies: + ip-regex "^1.0.1" + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +winreg@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b" + integrity sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs= + +write-file-atomic@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" + integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +xhr@^2.0.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" + integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= + +xml2js@^0.4.5: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= diff --git a/karma.conf.js b/karma.conf.js index 3b415b1a..5c05da4c 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -9,7 +9,7 @@ var webpack_config = require('./webpack.config'); * to build everything; however it's the easiest way to load our dependencies * from node_modules. * - * If you run karma in multi-run mode (with `npm run test-multi`), it will watch + * If you run karma in multi-run mode (with `yarn test-multi`), it will watch * the tests for changes, and webpack will rebuild using a cache. This is much quicker * than a clean rebuild. */ @@ -32,9 +32,12 @@ const olm_entry = webpack_config.entry['olm']; // 'preprocessors' config below) delete webpack_config['entry']; +// make sure we're flagged as development to avoid wasting time optimising +webpack_config.mode = 'development'; + // add ./test as a search path for js -webpack_config.module.loaders.unshift({ - test: /\.js$/, loader: "babel", +webpack_config.module.rules.unshift({ + test: /\.js$/, use: "babel-loader", include: [path.resolve('./src'), path.resolve('./test')], }); @@ -46,8 +49,9 @@ webpack_config.module.noParse.push(/sinon\/pkg\/sinon\.js$/); // ? webpack_config.resolve.alias['sinon'] = 'sinon/pkg/sinon.js'; -webpack_config.resolve.root = [ +webpack_config.resolve.modules = [ path.resolve('./test'), + "node_modules" ]; webpack_config.devtool = 'inline-source-map'; @@ -70,14 +74,21 @@ module.exports = function (config) { // This isn't required by any of the tests, but it stops karma // logging warnings when it serves a 404 for them. { - pattern: 'src/skins/vector/img/*', + pattern: 'node_modules/matrix-react-sdk/res/img/*', + watched: false, included: false, served: true, nocache: false, + }, + { + pattern: 'res/**', watched: false, included: false, served: true, nocache: false, }, ], proxies: { // redirect img links to the karma server. See above. - "/img/": "/base/src/skins/vector/img/", + "/img/": "/base/node_modules/matrix-react-sdk/res/img/", + "/themes/": "/base/res/themes/", + "/welcome.html": "/base/res/welcome.html", + "/welcome/": "/base/res/welcome/", }, // preprocess matching files before serving them to the browser @@ -89,7 +100,7 @@ module.exports = function (config) { // test results reporter to use // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['logcapture', 'spec', 'junit', 'summary'], + reporters: ['logcapture', 'spec', 'summary'], specReporter: { suppressErrorSummary: false, // do print error summary @@ -127,10 +138,10 @@ module.exports = function (config) { ], customLaunchers: { - 'ChromeHeadless': { + 'VectorChromeHeadless': { base: 'Chrome', flags: [ - // '--no-sandbox', + '--no-sandbox', // See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md '--headless', '--disable-gpu', @@ -148,10 +159,6 @@ module.exports = function (config) { // how many browser should be started simultaneous concurrency: Infinity, - junitReporter: { - outputDir: 'karma-reports', - }, - webpack: webpack_config, webpackMiddleware: { diff --git a/origin_migrator/dest/browser-matrix.min.js b/origin_migrator/dest/browser-matrix.min.js new file mode 100644 index 00000000..131dc4af --- /dev/null +++ b/origin_migrator/dest/browser-matrix.min.js @@ -0,0 +1,19 @@ +!function(){function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){return o(t[s][1][e]||e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}return e}()({1:[function(e,t,r){(function(r){var n=e("./lib/matrix");const o=e("browser-request"),i=e("qs");n.request(function(e,t){return e.qs=i.stringify(e.qs||{},e.qsStringifyOptions),o(e,t)});var s;try{s=r.indexedDB}catch(e){}s&&n.setCryptoStoreFactory(function(){return new n.IndexedDBCryptoStore(s,"matrix-js-sdk:crypto")}),t.exports=n,r.matrixcs=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/matrix":30,"browser-request":90,qs:239}],2:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var o=e("babel-runtime/core-js/get-iterator"),i=n(o),s=e("babel-runtime/helpers/classCallCheck"),a=n(s),u=e("babel-runtime/helpers/createClass"),c=n(u),l=function(){function e(t){(0,a.default)(this,e),this.target=t,this.boundHandlers={}}return(0,c.default)(e,[{key:"_handleEvent",value:function(e){for(var t,r=arguments.length,n=Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];(t=this.target).emit.apply(t,[e].concat(n))}},{key:"reEmit",value:function(e,t){var r=!0,n=!1,o=void 0;try{for(var s,a=(0,i.default)(t);!(r=(s=a.next()).done);r=!0){var u=s.value;void 0===this.boundHandlers[u]&&(this.boundHandlers[u]=this._handleEvent.bind(this,u));var c=this.boundHandlers[u];e.on(u,c)}}catch(e){n=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}}}]),e}();r.default=l},{"babel-runtime/core-js/get-iterator":58,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80}],3:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){l.checkObjectHasKeys(e,["baseUrl","request"]),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl;var t={baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,request:e.request,prefix:c.PREFIX_R0,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader};this._http=new c.MatrixHttpApi(this,t),this._txnCtr=0}var i=e("babel-runtime/helpers/typeof"),s=n(i),a=e("babel-runtime/core-js/object/keys"),u=n(a),c=e("./http-api"),l=e("./utils");o.prototype.getHomeserverUrl=function(){return this.baseUrl},o.prototype.getIdentityServerUrl=function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(this.idBaseUrl.startsWith("http://")||this.idBaseUrl.startsWith("https://"))?this.idBaseUrl.split("://")[1]:this.idBaseUrl},o.prototype.getAccessToken=function(){return this._http.opts.accessToken||null},o.prototype.isLoggedIn=function(){return void 0!==this._http.opts.accessToken},o.prototype.makeTxnId=function(){return"m"+(new Date).getTime()+"."+this._txnCtr++},o.prototype.isUsernameAvailable=function(e){return this._http.authedRequest(void 0,"GET","/register/available",{username:e}).then(function(e){return e.available})},o.prototype.register=function(e,t,r,n,o,i,s){!0===o?o={email:!0}:null!==o&&void 0!==o||(o={}),void 0!==n&&null!==n||(n={}),r&&(n.session=r);var a={auth:n};return void 0!==e&&null!==e&&(a.username=e),void 0!==t&&null!==t&&(a.password=t),o.email&&(a.bind_email=!0),o.msisdn&&(a.bind_msisdn=!0),void 0!==i&&null!==i&&(a.guest_access_token=i),void 0!==t&&null!==t&&(a.x_show_msisdn=!0),this.registerRequest(a,void 0,s)},o.prototype.registerGuest=function(e,t){return e=e||{},e.body=e.body||{},this.registerRequest(e.body,"guest",t)},o.prototype.registerRequest=function(e,t,r){var n={};return t&&(n.kind=t),this._http.request(r,"POST","/register",n,e)},o.prototype.loginFlows=function(e){return this._http.request(e,"GET","/login")},o.prototype.login=function(e,t,r){var n=this,o={type:e};return l.extend(o,t),this._http.authedRequest(function(t,o){"m.login.password"===e&&o&&o.access_token&&o.user_id&&(n._http.opts.accessToken=o.access_token,n.credentials={userId:o.user_id}),r&&r(t,o)},"POST","/login",void 0,o)},o.prototype.loginWithPassword=function(e,t,r){return this.login("m.login.password",{user:e,password:t},r)},o.prototype.loginWithSAML2=function(e,t){return this.login("m.login.saml2",{relay_state:e},t)},o.prototype.getCasLoginUrl=function(e){return this.getSsoLoginUrl(e,"cas")},o.prototype.getSsoLoginUrl=function(e,t){return void 0===t&&(t="sso"),this._http.getUrl("/login/"+t+"/redirect",{redirectUrl:e},c.PREFIX_R0)},o.prototype.loginWithToken=function(e,t){return this.login("m.login.token",{token:e},t)},o.prototype.logout=function(e){return this._http.authedRequest(e,"POST","/logout")},o.prototype.deactivateAccount=function(e,t){if("function"==typeof t)throw new Error("deactivateAccount no longer accepts a callback parameter");var r={};return e&&(r.auth=e),void 0!==t&&(r.erase=t),this._http.authedRequestWithPrefix(void 0,"POST","/account/deactivate",void 0,r,c.PREFIX_R0)},o.prototype.getFallbackAuthUrl=function(e,t){var r=l.encodeUri("/auth/$loginType/fallback/web",{$loginType:e});return this._http.getUrl(r,{session:t},c.PREFIX_R0)},o.prototype.createRoom=function(e,t){return this._http.authedRequest(t,"POST","/createRoom",void 0,e)},o.prototype.roomState=function(e,t){var r=l.encodeUri("/rooms/$roomId/state",{$roomId:e});return this._http.authedRequest(t,"GET",r)},o.prototype.fetchRoomEvent=function(e,t,r){var n=l.encodeUri("/rooms/$roomId/event/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(r,"GET",n)},o.prototype.members=function(e,t,r,n,o){var i={};t&&(i.membership=t),r&&(i.not_membership=r),n&&(i.at=n);var s=l.encodeParams(i),a=l.encodeUri("/rooms/$roomId/members?"+s,{$roomId:e});return this._http.authedRequest(o,"GET",a)},o.prototype.upgradeRoom=function(e,t){var r=l.encodeUri("/rooms/$roomId/upgrade",{$roomId:e});return this._http.authedRequest(void 0,"POST",r,void 0,{new_version:t})},o.prototype.getGroupSummary=function(e){var t=l.encodeUri("/groups/$groupId/summary",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.getGroupProfile=function(e){var t=l.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.setGroupProfile=function(e,t){var r=l.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"POST",r,void 0,t)},o.prototype.setGroupJoinPolicy=function(e,t){var r=l.encodeUri("/groups/$groupId/settings/m.join_policy",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,{"m.join_policy":t})},o.prototype.getGroupUsers=function(e){var t=l.encodeUri("/groups/$groupId/users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.getGroupInvitedUsers=function(e){var t=l.encodeUri("/groups/$groupId/invited_users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.getGroupRooms=function(e){var t=l.encodeUri("/groups/$groupId/rooms",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.inviteUserToGroup=function(e,t){var r=l.encodeUri("/groups/$groupId/admin/users/invite/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},o.prototype.removeUserFromGroup=function(e,t){var r=l.encodeUri("/groups/$groupId/admin/users/remove/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},o.prototype.addUserToGroupSummary=function(e,t,r){var n=l.encodeUri(r?"/groups/$groupId/summary/$roleId/users/$userId":"/groups/$groupId/summary/users/$userId",{$groupId:e,$roleId:r,$userId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},o.prototype.removeUserFromGroupSummary=function(e,t){var r=l.encodeUri("/groups/$groupId/summary/users/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},o.prototype.addRoomToGroupSummary=function(e,t,r){var n=l.encodeUri(r?"/groups/$groupId/summary/$categoryId/rooms/$roomId":"/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$categoryId:r,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},o.prototype.removeRoomFromGroupSummary=function(e,t){var r=l.encodeUri("/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},o.prototype.addRoomToGroup=function(e,t,r){void 0===r&&(r=!0);var n=l.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{"m.visibility":{type:r?"public":"private"}})},o.prototype.updateGroupRoomVisibility=function(e,t,r){var n=l.encodeUri("/groups/$groupId/admin/rooms/$roomId/config/m.visibility",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{type:r?"public":"private"})},o.prototype.removeRoomFromGroup=function(e,t){var r=l.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},o.prototype.acceptGroupInvite=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=l.encodeUri("/groups/$groupId/self/accept_invite",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,t||{})},o.prototype.joinGroup=function(e){var t=l.encodeUri("/groups/$groupId/self/join",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},o.prototype.leaveGroup=function(e){var t=l.encodeUri("/groups/$groupId/self/leave",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},o.prototype.getJoinedGroups=function(){var e=l.encodeUri("/joined_groups");return this._http.authedRequest(void 0,"GET",e)},o.prototype.createGroup=function(e){var t=l.encodeUri("/create_group");return this._http.authedRequest(void 0,"POST",t,void 0,e)},o.prototype.getPublicisedGroups=function(e){var t=l.encodeUri("/publicised_groups");return this._http.authedRequest(void 0,"POST",t,void 0,{user_ids:e})},o.prototype.setGroupPublicity=function(e,t){var r=l.encodeUri("/groups/$groupId/self/update_publicity",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,{publicise:t})},o.prototype.getStateEvent=function(e,t,r,n){var o={$roomId:e,$eventType:t,$stateKey:r},i=l.encodeUri("/rooms/$roomId/state/$eventType",o);return void 0!==r&&(i=l.encodeUri(i+"/$stateKey",o)),this._http.authedRequest(n,"GET",i)},o.prototype.sendStateEvent=function(e,t,r,n,o){var i={$roomId:e,$eventType:t,$stateKey:n},s=l.encodeUri("/rooms/$roomId/state/$eventType",i);return void 0!==n&&(s=l.encodeUri(s+"/$stateKey",i)),this._http.authedRequest(o,"PUT",s,void 0,r)},o.prototype.redactEvent=function(e,t,r){var n=l.encodeUri("/rooms/$roomId/redact/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(r,"POST",n,void 0,{})},o.prototype.roomInitialSync=function(e,t,r){l.isFunction(t)&&(r=t,t=void 0);var n=l.encodeUri("/rooms/$roomId/initialSync",{$roomId:e});return t||(t=30),this._http.authedRequest(r,"GET",n,{limit:t})},o.prototype.setRoomReadMarkersHttpRequest=function(e,t,r){var n=l.encodeUri("/rooms/$roomId/read_markers",{$roomId:e}),o={"m.fully_read":t,"m.read":r};return this._http.authedRequest(void 0,"POST",n,void 0,o)},o.prototype.getJoinedRooms=function(){var e=l.encodeUri("/joined_rooms");return this._http.authedRequest(void 0,"GET",e)},o.prototype.getJoinedRoomMembers=function(e){var t=l.encodeUri("/rooms/$roomId/joined_members",{$roomId:e});return this._http.authedRequest(void 0,"GET",t)},o.prototype.publicRooms=function(e,t){"function"==typeof e&&(t=e,e={}),void 0===e&&(e={});var r={};return e.server&&(r.server=e.server,delete e.server),0===(0,u.default)(e).length&&0===(0,u.default)(r).length?this._http.authedRequest(t,"GET","/publicRooms"):this._http.authedRequest(t,"POST","/publicRooms",r,e)},o.prototype.createAlias=function(e,t,r){var n=l.encodeUri("/directory/room/$alias",{$alias:e}),o={room_id:t};return this._http.authedRequest(r,"PUT",n,void 0,o)},o.prototype.deleteAlias=function(e,t){var r=l.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"DELETE",r,void 0,void 0)},o.prototype.getRoomIdForAlias=function(e,t){var r=l.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"GET",r)},o.prototype.resolveRoomAlias=function(e,t){var r=l.encodeUri("/directory/room/$alias",{$alias:e});return this._http.request(t,"GET",r)},o.prototype.getRoomDirectoryVisibility=function(e,t){var r=l.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(t,"GET",r)},o.prototype.setRoomDirectoryVisibility=function(e,t,r){var n=l.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(r,"PUT",n,void 0,{visibility:t})},o.prototype.setRoomDirectoryVisibilityAppService=function(e,t,r,n){var o=l.encodeUri("/directory/list/appservice/$networkId/$roomId",{$networkId:e,$roomId:t});return this._http.authedRequest(n,"PUT",o,void 0,{visibility:r})},o.prototype.searchUserDirectory=function(e){var t={search_term:e.term};return void 0!==e.limit&&(t.limit=e.limit),this._http.authedRequest(void 0,"POST","/user_directory/search",void 0,t)},o.prototype.uploadContent=function(e,t){return this._http.uploadContent(e,t)},o.prototype.cancelUpload=function(e){return this._http.cancelUpload(e)},o.prototype.getCurrentUploads=function(){return this._http.getCurrentUploads()},o.prototype.getProfileInfo=function(e,t,r){l.isFunction(t)&&(r=t,t=void 0);var n=t?l.encodeUri("/profile/$userId/$info",{$userId:e,$info:t}):l.encodeUri("/profile/$userId",{$userId:e});return this._http.authedRequest(r,"GET",n)},o.prototype.getThreePids=function(e){return this._http.authedRequest(e,"GET","/account/3pid",void 0,void 0)},o.prototype.addThreePid=function(e,t,r){var n={threePidCreds:e,bind:t};return this._http.authedRequest(r,"POST","/account/3pid",null,n)},o.prototype.deleteThreePid=function(e,t){var r={medium:e,address:t};return this._http.authedRequestWithPrefix(void 0,"POST","/account/3pid/delete",null,r,c.PREFIX_UNSTABLE)},o.prototype.setPassword=function(e,t,r){var n={auth:e,new_password:t};return this._http.authedRequest(r,"POST","/account/password",null,n)},o.prototype.getDevices=function(){return this._http.authedRequestWithPrefix(void 0,"GET","/devices",void 0,void 0,c.PREFIX_UNSTABLE)},o.prototype.setDeviceDetails=function(e,t){var r=l.encodeUri("/devices/$device_id",{$device_id:e});return this._http.authedRequestWithPrefix(void 0,"PUT",r,void 0,t,c.PREFIX_UNSTABLE)},o.prototype.deleteDevice=function(e,t){var r=l.encodeUri("/devices/$device_id",{$device_id:e}),n={};return t&&(n.auth=t),this._http.authedRequestWithPrefix(void 0,"DELETE",r,void 0,n,c.PREFIX_UNSTABLE)},o.prototype.deleteMultipleDevices=function(e,t){var r={devices:e};return t&&(r.auth=t),this._http.authedRequestWithPrefix(void 0,"POST","/delete_devices",void 0,r,c.PREFIX_UNSTABLE)},o.prototype.getPushers=function(e){return this._http.authedRequest(e,"GET","/pushers",void 0,void 0)},o.prototype.setPusher=function(e,t){return this._http.authedRequest(t,"POST","/pushers/set",null,e)},o.prototype.getPushRules=function(e){return this._http.authedRequest(e,"GET","/pushrules/")},o.prototype.addPushRule=function(e,t,r,n,o){var i=l.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this._http.authedRequest(o,"PUT",i,void 0,n)},o.prototype.deletePushRule=function(e,t,r,n){var o=l.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this._http.authedRequest(n,"DELETE",o)},o.prototype.setPushRuleEnabled=function(e,t,r,n,o){var i=l.encodeUri("/pushrules/"+e+"/$kind/$ruleId/enabled",{$kind:t,$ruleId:r});return this._http.authedRequest(o,"PUT",i,void 0,{enabled:n})},o.prototype.setPushRuleActions=function(e,t,r,n,o){var i=l.encodeUri("/pushrules/"+e+"/$kind/$ruleId/actions",{$kind:t,$ruleId:r});return this._http.authedRequest(o,"PUT",i,void 0,{actions:n})},o.prototype.search=function(e,t){var r={};return e.next_batch&&(r.next_batch=e.next_batch),this._http.authedRequest(t,"POST","/search",r,e.body)},o.prototype.uploadKeysRequest=function(e,t,r){t=t||{};var n=t.device_id,o=void 0;return o=n?l.encodeUri("/keys/upload/$deviceId",{$deviceId:n}):"/keys/upload",this._http.authedRequestWithPrefix(r,"POST",o,void 0,e,c.PREFIX_UNSTABLE)},o.prototype.downloadKeysForUsers=function(e,t){if(l.isFunction(t))throw new Error("downloadKeysForUsers no longer accepts a callback parameter");t=t||{};var r={device_keys:{}};return"token"in t&&(r.token=t.token),e.forEach(function(e){r.device_keys[e]={}}),this._http.authedRequestWithPrefix(void 0,"POST","/keys/query",void 0,r,c.PREFIX_UNSTABLE)},o.prototype.claimOneTimeKeys=function(e,t){var r={};void 0===t&&(t="signed_curve25519");for(var n=0;n<e.length;++n){var o=e[n][0],i=e[n][1],s=r[o]||{};r[o]=s,s[i]=t}var a={one_time_keys:r};return this._http.authedRequestWithPrefix(void 0,"POST","/keys/claim",void 0,a,c.PREFIX_UNSTABLE)},o.prototype.getKeyChanges=function(e,t){var r={from:e,to:t};return this._http.authedRequestWithPrefix(void 0,"GET","/keys/changes",r,void 0,c.PREFIX_UNSTABLE)},o.prototype.requestEmailToken=function(e,t,r,n,o){var i={client_secret:t,email:e,send_attempt:r,next_link:n};return this._http.idServerRequest(o,"POST","/validate/email/requestToken",i,c.PREFIX_IDENTITY_V1)},o.prototype.submitMsisdnToken=function(e,t,r){var n={sid:e,client_secret:t,token:r};return this._http.idServerRequest(void 0,"POST","/validate/msisdn/submitToken",n,c.PREFIX_IDENTITY_V1)},o.prototype.lookupThreePid=function(e,t,r){var n={medium:e,address:t};return this._http.idServerRequest(r,"GET","/lookup",n,c.PREFIX_IDENTITY_V1)},o.prototype.sendToDevice=function(e,t,r){var n=l.encodeUri("/sendToDevice/$eventType/$txnId",{$eventType:e,$txnId:r||this.makeTxnId()}),o={messages:t};return this._http.authedRequestWithPrefix(void 0,"PUT",n,void 0,o,c.PREFIX_UNSTABLE)},o.prototype.getThirdpartyProtocols=function(){return this._http.authedRequestWithPrefix(void 0,"GET","/thirdparty/protocols",void 0,void 0,c.PREFIX_UNSTABLE).then(function(e){if(!e||"object"!==(void 0===e?"undefined":(0,s.default)(e)))throw new Error("/thirdparty/protocols did not return an object: "+e);return e})},o.prototype.getThirdpartyLocation=function(e,t){var r=l.encodeUri("/thirdparty/location/$protocol",{$protocol:e});return this._http.authedRequestWithPrefix(void 0,"GET",r,t,void 0,c.PREFIX_UNSTABLE)},t.exports=o},{"./http-api":27,"./utils":55,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/typeof":85}],4:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){var n=[],o=!0,s=!1,a=void 0;try{for(var u,c=(0,N.default)((0,L.default)(e));!(o=(u=c.next()).done);o=!0){var l=(0,M.default)(u.value,2),d=l[0],f=l[1];try{var p=i(f,t);p.session_id=d,p.room_id=r,n.push(p)}catch(e){console.log("Failed to decrypt session from backup")}}}catch(e){s=!0,a=e}finally{try{!o&&c.return&&c.return()}finally{if(s)throw a}}return n}function i(e,t){return JSON.parse(t.decrypt(e.session_data.ephemeral,e.session_data.mac,e.session_data.ciphertext))}function s(e){e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.substr(0,e.baseUrl.length-1)),e.idBaseUrl&&e.idBaseUrl.endsWith("/")&&(e.idBaseUrl=e.idBaseUrl.substr(0,e.idBaseUrl.length-1)),ce.call(this,e),this.olmVersion=null,this.reEmitter=new B.default(this),this.store=e.store||new ne,this.deviceId=e.deviceId||null;var t=e.userId||null;if(this.credentials={userId:t},this.scheduler=e.scheduler,this.scheduler){var r=this;this.scheduler.setProcessFunction(function(e){var t=r.getRoom(e.getRoomId());return e.status!==ee.SENDING&&c(t,e,ee.SENDING),l(r,e)})}this.clientRunning=!1,this.callList={};var n=oe.createNewMatrixCall(this);this._supportsVoip=!1,n&&(h(this),this._supportsVoip=!0),this._syncingRetry=null,this._syncApi=null,this._peekSync=null,this._isGuest=!1,this._ongoingScrollbacks={},this.timelineSupport=Boolean(e.timelineSupport),this.urlPreviewCache={},this._notifTimelineSet=null,this._crypto=null,this._cryptoStore=e.cryptoStore,this._sessionStore=e.sessionStore,this._forceTURN=e.forceTURN||!1,this._roomList=new G.default(this._cryptoStore,this._sessionStore),this._pushProcessor=new Q(this),this._serverSupportsLazyLoading=null}function a(e,t,r,n){return j.default.resolve().then(function(){var n=u(e,r,t);return n?(c(t,r,ee.ENCRYPTING),n.then(function(){c(t,r,ee.SENDING)})):null}).then(function(){var n=void 0;return e.scheduler&&(n=e.scheduler.queueEvent(r))&&e.scheduler.getQueueForEvent(r).length>1&&c(t,r,ee.QUEUED),n||(n=l(e,r)),n}).then(function(e){return t&&t.updatePendingEvent(r,ee.SENT,e.event_id),n&&n(null,e),e},function(e){console.error("Error sending event",e.stack||e);try{r.error=e,c(t,r,ee.NOT_SENT),e.event=r,n&&n(e)}catch(t){console.error("Exception in error handler!",t.stack||e)}throw e})}function u(e,t,r){if(t.isEncrypted())return null;if(!e.isRoomEncrypted(t.getRoomId()))return null;if(!e._crypto)throw new Error("This room is configured to use encryption, but your client does not support encryption.");return e._crypto.encryptEvent(t,r)}function c(e,t,r){e?e.updatePendingEvent(t,r):t.status=r}function l(e,t){var r=t._txnId?t._txnId:e.makeTxnId(),n={$roomId:t.getRoomId(),$eventType:t.getWireType(),$stateKey:t.getStateKey(),$txnId:r},o=void 0;if(t.isState()){var i="/rooms/$roomId/state/$eventType";t.getStateKey()&&t.getStateKey().length>0&&(i="/rooms/$roomId/state/$eventType/$stateKey"),o=ie.encodeUri(i,n)}else o=ie.encodeUri("/rooms/$roomId/send/$eventType/$txnId",n);return e._http.authedRequest(void 0,"PUT",o,void 0,t.getWireContent()).then(function(e){return console.log("Event sent to "+t.getRoomId()+" with event id "+e.event_id),e})}function d(e,t,r,n,o,i){ie.isFunction(o)&&(i=o,o=void 0);var s=ie.encodeUri("/rooms/$roomId/state/m.room.member/$userId",{$roomId:t,$userId:r});return e._http.authedRequest(i,"PUT",s,void 0,{membership:n,reason:o})}function f(e,t,r,n,o,i){ie.isFunction(o)&&(i=o,o=void 0);var s=ie.encodeUri("/rooms/$room_id/$membership",{$room_id:t,$membership:n});return e._http.authedRequest(i,"POST",s,void 0,{user_id:r,reason:o})}function p(e,t,r,n){var o=ie.encodeUri("/presence/list/$userId",{$userId:t.credentials.userId});return t._http.authedRequest(e,n,o,void 0,r)}function h(e){function t(e){return 0!==e.getType().indexOf("m.call.")?void((e.isBeingDecrypted()||e.isDecryptionFailure())&&e.once("Event.decrypted",t)):i?void r(e):void o.push(e)}function r(t){var r=t.getContent(),o=r.call_id?e.callList[r.call_id]:void 0,i=void 0;if("m.call.invite"===t.getType()){if(t.getSender()===e.credentials.userId)return;if(t.getAge()>r.lifetime)return;if(o&&"ended"===o.state)return;if(o&&console.log("WARN: Already have a MatrixCall with id %s but got an invite. Clobbering.",r.call_id),!(o=oe.createNewMatrixCall(e,t.getRoomId(),{forceTURN:e._forceTURN})))return void console.log("Incoming call ID "+r.call_id+" but this client doesn't support WebRTC");if(o.callId=r.call_id,o._initWithInvite(t),e.callList[o.callId]=o,n[o.callId])for(i=0;i<n[o.callId].length;i++)o._gotRemoteIceCandidate(n[o.callId][i]);var s=void 0,a=ie.values(e.callList);for(i=0;i<a.length;++i){var u=a[i];if(o.roomId===u.roomId&&"outbound"===u.direction&&-1!==["wait_local_media","create_offer","invite_sent"].indexOf(u.state)){s=u;break}}s?"wait_local_media"===s.state||"create_offer"===s.state||s.callId>o.callId?(console.log("Glare detected: answering incoming call "+o.callId+" and canceling outgoing call "+s.callId),s._replacedBy(o),o.answer()):(console.log("Glare detected: rejecting incoming call "+o.callId+" and keeping outgoing call "+s.callId),o.hangup()):e.emit("Call.incoming",o)}else if("m.call.answer"===t.getType()){if(!o)return;t.getSender()===e.credentials.userId?"ringing"===o.state&&o._onAnsweredElsewhere(r):o._receivedAnswer(r)}else if("m.call.candidates"===t.getType()){if(t.getSender()===e.credentials.userId)return;if(o)for(i=0;i<r.candidates.length;i++)o._gotRemoteIceCandidate(r.candidates[i]);else n[r.call_id]||(n[r.call_id]=[]),n[r.call_id]=n[r.call_id].concat(r.candidates)}else"m.call.hangup"===t.getType()&&(o?"ended"!==o.state&&(o._onHangupReceived(r),delete e.callList[r.call_id]):(o=oe.createNewMatrixCall(e,t.getRoomId()))&&(o.callId=r.call_id,o._initWithHangup(t),e.callList[r.call_id]=o))}var n={},o=[],i=!1;e.on("sync",function(e){if("PREPARED"===e){i=!0;for(var t={},n=o.length-1;n>=0;n--){var s=o[n];"m.call.answer"!==s.getType()&&"m.call.hangup"!==s.getType()||(t[s.getContent().call_id]="yep")}o.forEach(function(e){t[e.getContent().call_id]||r(e)}),o=[]}}),e.on("event",t)}function v(e){e._supportsVoip&&(e.isGuest()||e.turnServer().done(function(t){if(t.uris){console.log("Got TURN URIs: "+t.uris+" refresh in "+t.ttl+" secs");var r={urls:t.uris,username:t.username,credential:t.password};e._turnServers=[r],e._checkTurnServersTimeoutID=setTimeout(function(){v(e)},1e3*(t.ttl||3600)*.9)}},function(t){console.error("Failed to get TURN URIs"),e._checkTurnServersTimeoutID=setTimeout(function(){v(e)},6e4)}))}function m(e,t,r){e&&e(r),t.reject(r)}function y(e,t,r){e&&e(null,r),t.resolve(r)}function _(e){function t(t){var r=new Z(t);return r.isEncrypted()&&(e.reEmitter.reEmit(r,["Event.decrypted"]),r.attemptDecryption(e._crypto)),r}return t}var g=e("babel-runtime/core-js/object/assign"),b=n(g),E=e("babel-runtime/core-js/json/stringify"),w=n(E),S=e("babel-runtime/core-js/set"),k=n(S),T=e("babel-runtime/core-js/object/keys"),x=n(T),R=e("babel-runtime/helpers/typeof"),I=n(R),C=e("bluebird"),j=n(C),O=e("babel-runtime/regenerator"),A=n(O),D=e("babel-runtime/helpers/slicedToArray"),M=n(D),P=e("babel-runtime/core-js/object/entries"),L=n(P),U=e("babel-runtime/core-js/get-iterator"),N=n(U),F=function(){var e=(0,C.coroutine)(A.default.mark(function e(t,r,n,o,i,s){var a;return A.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t._crypto){e.next=2;break}throw new Error("End-to-End encryption disabled");case 2:return e.next=4,(0,C.resolve)(t._crypto.setDeviceVerification(r,n,o,i,s));case 4:a=e.sent,t.emit("deviceVerificationChanged",r,n,a);case 6:case"end":return e.stop()}},e,this)}));return function(t,r,n,o,i,s){return e.apply(this,arguments)}}(),q=e("./ReEmitter"),B=n(q),K=e("./crypto/RoomList"),G=n(K),$=e("./crypto"),V=n($),W=e("./crypto/recoverykey"),H=e("./crypto/backup_password"),z=e("./randomstring"),Q=e("./pushprocessor"),J=e("events").EventEmitter,Y=e("url"),X=e("./http-api"),Z=e("./models/event").MatrixEvent,ee=e("./models/event").EventStatus,te=e("./models/event-timeline"),re=e("./models/search-result"),ne=e("./store/stub"),oe=e("./webrtc/call"),ie=e("./utils"),se=e("./content-repo"),ae=e("./filter"),ue=e("./sync"),ce=e("./base-apis"),le=X.MatrixError,de=e("./content-helpers"),fe=e("./crypto/olmlib");j.default.config({warnings:!1});var pe=(0,$.isCryptoAvailable)();ie.inherits(s,J),ie.extend(s.prototype,ce.prototype),s.prototype.clearStores=function(){if(this._clientRunning)throw new Error("Cannot clear stores while client is running");var e=[];return e.push(this.store.deleteAllData()),this._cryptoStore&&e.push(this._cryptoStore.deleteAllData()),j.default.all(e)},s.prototype.getUserId=function(){return this.credentials&&this.credentials.userId?this.credentials.userId:null},s.prototype.getDomain=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.replace(/^.*?:/,""):null},s.prototype.getUserIdLocalpart=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.split(":")[0].substring(1):null},s.prototype.getDeviceId=function(){return this.deviceId},s.prototype.supportsVoip=function(){return this._supportsVoip},s.prototype.setForceTURN=function(e){this._forceTURN=e},s.prototype.getSyncState=function(){return this._syncApi?this._syncApi.getSyncState():null},s.prototype.getSyncStateData=function(){return this._syncApi?this._syncApi.getSyncStateData():null},s.prototype.isGuest=function(){return this._isGuest},s.prototype.getScheduler=function(){return this.scheduler},s.prototype.setGuest=function(e){this._isGuest=e},s.prototype.retryImmediately=function(){return this._syncApi.retryImmediately()},s.prototype.getNotifTimelineSet=function(){return this._notifTimelineSet},s.prototype.setNotifTimelineSet=function(e){this._notifTimelineSet=e},s.prototype.initCrypto=(0,C.coroutine)(A.default.mark(function e(){var t,r;return A.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((0,$.isCryptoAvailable)()){e.next=2;break}throw new Error("End-to-end encryption not supported in this js-sdk build: did you remember to load the olm library?");case 2:if(!this._crypto){e.next=5;break}return console.warn("Attempt to re-initialise e2e encryption on MatrixClient"),e.abrupt("return");case 5:if(this._sessionStore){e.next=7;break}throw new Error("Cannot enable encryption: no sessionStore provided");case 7:if(this._cryptoStore){e.next=9;break}throw new Error("Cannot enable encryption: no cryptoStore provided");case 9:return e.next=11,(0,C.resolve)(this._roomList.init());case 11:if(null!==(t=this.getUserId())){e.next=14;break}throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");case 14:if(null!==this.deviceId){e.next=16;break}throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");case 16:return r=new V.default(this,this._sessionStore,t,this.deviceId,this.store,this._cryptoStore,this._roomList),this.reEmitter.reEmit(r,["crypto.roomKeyRequest","crypto.roomKeyRequestCancellation","crypto.warning"]),e.next=20,(0,C.resolve)(r.init());case 20:this.olmVersion=V.default.getOlmVersion(),r.registerEventHandlers(this),this._crypto=r;case 23:case"end":return e.stop()}},e,this)})),s.prototype.isCryptoEnabled=function(){return null!==this._crypto},s.prototype.getDeviceEd25519Key=function(){return this._crypto?this._crypto.getDeviceEd25519Key():null},s.prototype.uploadKeys=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.uploadDeviceKeys()},s.prototype.downloadKeys=function(e,t){return null===this._crypto?j.default.reject(new Error("End-to-end encryption disabled")):this._crypto.downloadKeys(e,t)},s.prototype.getStoredDevicesForUser=function(){var e=(0,C.method)(function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevicesForUser(e)||[]});return function(t){return e.apply(this,arguments)}}(),s.prototype.getStoredDevice=function(){var e=(0,C.method)(function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevice(e,t)||null});return function(t,r){return e.apply(this,arguments)}}(),s.prototype.setDeviceVerified=function(e,t,r){void 0===r&&(r=!0);var n=F(this,e,t,r,null);return e==this.credentials.userId&&this._crypto.checkKeyBackup(),n},s.prototype.setDeviceBlocked=function(e,t,r){return void 0===r&&(r=!0),F(this,e,t,null,r)},s.prototype.setDeviceKnown=function(e,t,r){return void 0===r&&(r=!0),F(this,e,t,null,null,r)},s.prototype.setGlobalBlacklistUnverifiedDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalBlacklistUnverifiedDevices(e)},s.prototype.getGlobalBlacklistUnverifiedDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalBlacklistUnverifiedDevices()},s.prototype.getEventSenderDeviceInfo=function(){var e=(0,C.method)(function(e){return this._crypto?this._crypto.getEventSenderDeviceInfo(e):null});return function(t){return e.apply(this,arguments)}}(),s.prototype.isEventSenderVerified=function(){var e=(0,C.coroutine)(A.default.mark(function e(t){var r;return A.default.wrap(function(e){ +for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,C.resolve)(this.getEventSenderDeviceInfo(t));case 2:if(r=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.abrupt("return",r.isVerified());case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),s.prototype.cancelAndResendEventRoomKeyRequest=function(e){e.cancelAndResendKeyRequest(this._crypto)},s.prototype.setRoomEncryption=function(e,t){if(!this._crypto)throw new Error("End-to-End encryption disabled");return this._crypto.setRoomEncryption(e,t)},s.prototype.isRoomEncrypted=function(e){var t=this.getRoom(e);return!!t&&(!!t.currentState.getStateEvents("m.room.encryption","")||this._roomList.isRoomEncrypted(e))},s.prototype.forceDiscardSession=function(e){if(!this._crypto)throw new Error("End-to-End encryption disabled");this._crypto.forceDiscardSession(e)},s.prototype.exportRoomKeys=function(){return this._crypto?this._crypto.exportRoomKeys():j.default.reject(new Error("End-to-end encryption disabled"))},s.prototype.importRoomKeys=function(e){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.importRoomKeys(e)},s.prototype.getKeyBackupVersion=function(){return this._http.authedRequest(void 0,"GET","/room_keys/version").then(function(e){if(e.algorithm!==fe.MEGOLM_BACKUP_ALGORITHM){var t="Unknown backup algorithm: "+e.algorithm;return j.default.reject(t)}if("object"===(0,I.default)(e.auth_data)&&e.auth_data.public_key)return e;return j.default.reject("Invalid backup data returned")}).catch(function(e){if("M_NOT_FOUND"===e.errcode)return null;throw e})},s.prototype.isKeyBackupTrusted=function(e){return this._crypto.isKeyBackupTrusted(e)},s.prototype.getKeyBackupEnabled=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return Boolean(this._crypto.backupKey)},s.prototype.enableKeyBackup=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo=e,this._crypto.backupKey&&this._crypto.backupKey.free(),this._crypto.backupKey=new r.Olm.PkEncryption,this._crypto.backupKey.set_recipient_key(e.auth_data.public_key),this.emit("crypto.keyBackupStatus",!0)},s.prototype.disableKeyBackup=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo=null,this._crypto.backupKey&&this._crypto.backupKey.free(),this._crypto.backupKey=null,this.emit("crypto.keyBackupStatus",!1)},s.prototype.prepareKeyBackupVersion=function(){var e=(0,C.coroutine)(A.default.mark(function e(t){var n,o,i,s;return A.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==this._crypto){e.next=2;break}throw new Error("End-to-end encryption disabled");case 2:if(n=new r.Olm.PkDecryption,e.prev=3,o=void 0,i={},!t){e.next=15;break}return e.next=9,(0,C.resolve)((0,H.keyForNewBackup)(t));case 9:s=e.sent,o=n.init_with_private_key(s.key),i.private_key_salt=s.salt,i.private_key_iterations=s.iterations,e.next=16;break;case 15:o=n.generate_key();case 16:return i.public_key=o,e.abrupt("return",{algorithm:fe.MEGOLM_BACKUP_ALGORITHM,auth_data:i,recovery_key:(0,W.encodeRecoveryKey)(n.get_private_key())});case 18:return e.prev=18,n.free(),e.finish(18);case 21:case"end":return e.stop()}},e,this,[[3,,18,21]])}));return function(t){return e.apply(this,arguments)}}(),s.prototype.createKeyBackupVersion=function(e){var t=this;if(null===this._crypto)throw new Error("End-to-end encryption disabled");var r={algorithm:e.algorithm,auth_data:e.auth_data};return this._crypto._signObject(r.auth_data).then(function(){return t._http.authedRequest(void 0,"POST","/room_keys/version",void 0,r)}).then(function(r){return t.enableKeyBackup({algorithm:e.algorithm,auth_data:e.auth_data,version:r.version}),r})},s.prototype.deleteKeyBackupVersion=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo&&this._crypto.backupInfo.version===e&&this.disableKeyBackup();var t=ie.encodeUri("/room_keys/version/$version",{$version:e});return this._http.authedRequest(void 0,"DELETE",t,void 0,void 0)},s.prototype._makeKeyBackupPath=function(e,t,r){var n=void 0;return n=void 0!==t?ie.encodeUri("/room_keys/keys/$roomId/$sessionId",{$roomId:e,$sessionId:t}):void 0!==e?ie.encodeUri("/room_keys/keys/$roomId",{$roomId:e}):"/room_keys/keys",{path:n,queryData:void 0===r?void 0:{version:r}}},s.prototype.sendKeyBackup=function(e,t,r,n){if(null===this._crypto)throw new Error("End-to-end encryption disabled");var o=this._makeKeyBackupPath(e,t,r);return this._http.authedRequest(void 0,"PUT",o.path,o.queryData,n)},s.prototype.backupAllGroupSessions=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.backupAllGroupSessions(e)},s.prototype.isValidRecoveryKey=function(e){try{return(0,W.decodeRecoveryKey)(e),!0}catch(e){return!1}},s.prototype.restoreKeyBackupWithPassword=function(){var e=(0,C.coroutine)(A.default.mark(function e(t,r,n,o){var i,s;return A.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,C.resolve)(this.getKeyBackupVersion());case 2:return i=e.sent,e.next=5,(0,C.resolve)((0,H.keyForExistingBackup)(i,t));case 5:return s=e.sent,e.abrupt("return",this._restoreKeyBackup(s,r,n,o));case 7:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),s.prototype.restoreKeyBackupWithRecoveryKey=function(e,t,r,n){var o=(0,W.decodeRecoveryKey)(e);return this._restoreKeyBackup(o,t,r,n)},s.prototype._restoreKeyBackup=function(e,t,n,s){var a=this;if(null===this._crypto)throw new Error("End-to-end encryption disabled");var u=0,c=[],l=this._makeKeyBackupPath(t,n,s),d=new r.Olm.PkDecryption;try{d.init_with_private_key(e)}catch(e){throw d.free(),e}return this._http.authedRequest(void 0,"GET",l.path,l.queryData).then(function(e){if(e.rooms){var r=!0,s=!1,l=void 0;try{for(var f,p=(0,N.default)((0,L.default)(e.rooms));!(r=(f=p.next()).done);r=!0){var h=(0,M.default)(f.value,2),v=h[0],m=h[1];if(m.sessions){u+=(0,x.default)(m.sessions).length;var y=o(m.sessions,d,v),_=!0,g=!1,b=void 0;try{for(var E,w=(0,N.default)(y);!(_=(E=w.next()).done);_=!0){var S=E.value;S.room_id=v,c.push(S)}}catch(e){g=!0,b=e}finally{try{!_&&w.return&&w.return()}finally{if(g)throw b}}}}}catch(e){s=!0,l=e}finally{try{!r&&p.return&&p.return()}finally{if(s)throw l}}}else if(e.sessions)u=(0,x.default)(e.sessions).length,c=o(e.sessions,d,t);else{u=1;try{var k=i(e,d);k.room_id=t,k.session_id=n,c.push(k)}catch(e){console.log("Failed to decrypt session from backup")}}return a.importRoomKeys(c)}).then(function(){return{total:u,imported:c.length}}).finally(function(){d.free()})},s.prototype.deleteKeysFromBackup=function(e,t,r){if(null===this._crypto)throw new Error("End-to-end encryption disabled");var n=this._makeKeyBackupPath(e,t,r);return this._http.authedRequest(void 0,"DELETE",n.path,n.queryData)},s.prototype.getGroup=function(e){return this.store.getGroup(e)},s.prototype.getGroups=function(){return this.store.getGroups()},s.prototype.getMediaConfig=function(e){return this._http.authedRequestWithPrefix(e,"GET","/config",void 0,void 0,X.PREFIX_MEDIA_R0)},s.prototype.getRoom=function(e){return this.store.getRoom(e)},s.prototype.getRooms=function(){return this.store.getRooms()},s.prototype.getVisibleRooms=function(){var e=this.store.getRooms(),t=new k.default,r=!0,n=!1,o=void 0;try{for(var i,s=(0,N.default)(e);!(r=(i=s.next()).done);r=!0){var a=i.value,u=a.currentState.getStateEvents("m.room.create","");if(u){var c=u.getContent().predecessor;c&&c.room_id&&t.add(c.room_id)}}}catch(e){n=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw o}}return e.filter(function(e){return!e.currentState.getStateEvents("m.room.tombstone","")||!t.has(e.roomId)})},s.prototype.getUser=function(e){return this.store.getUser(e)},s.prototype.getUsers=function(){return this.store.getUsers()},s.prototype.setAccountData=function(e,t,r){var n=ie.encodeUri("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this._http.authedRequest(r,"PUT",n,void 0,t)},s.prototype.getAccountData=function(e){return this.store.getAccountData(e)},s.prototype.getIgnoredUsers=function(){var e=this.getAccountData("m.ignored_user_list");return e&&e.getContent()&&e.getContent().ignored_users?(0,x.default)(e.getContent().ignored_users):[]},s.prototype.setIgnoredUsers=function(e,t){var r={ignored_users:{}};return e.map(function(e){return r.ignored_users[e]={}}),this.setAccountData("m.ignored_user_list",r,t)},s.prototype.isUserIgnored=function(e){return-1!==this.getIgnoredUsers().indexOf(e)},s.prototype.joinRoom=function(e,t,r){if(ie.isFunction(t))throw new Error("Expected 'opts' object, got function.");t=t||{},void 0===t.syncRoom&&(t.syncRoom=!0);var n=this.getRoom(e);if(n&&n.hasMembershipState(this.credentials.userId,"join"))return j.default.resolve(n);var o=j.default.resolve();t.inviteSignUrl&&(o=this._http.requestOtherUrl(void 0,"POST",t.inviteSignUrl,{mxid:this.credentials.userId}));var i={};t.viaServers&&(i.server_name=t.viaServers);var s={qsStringifyOptions:{arrayFormat:"repeat"}},a=j.default.defer(),u=this;return o.then(function(t){var r={};t&&(r.third_party_signed=t);var n=ie.encodeUri("/join/$roomid",{$roomid:e});return u._http.authedRequest(void 0,"POST",n,i,r,s)}).then(function(e){var r=e.room_id,n=new ue(u,u._clientOpts),o=n.createRoom(r);return t.syncRoom,j.default.resolve(o)}).done(function(e){y(r,a,e)},function(e){m(r,a,e)}),a.promise},s.prototype.resendEvent=function(e,t){return c(t,e,ee.SENDING),a(this,t,e)},s.prototype.cancelPendingEvent=function(e){if([ee.QUEUED,ee.NOT_SENT].indexOf(e.status)<0)throw new Error("cannot cancel an event with status "+e.status);this.scheduler&&this.scheduler.removeEventFromQueue(e),c(this.getRoom(e.getRoomId()),e,ee.CANCELLED)},s.prototype.setRoomName=function(e,t,r){return this.sendStateEvent(e,"m.room.name",{name:t},void 0,r)},s.prototype.setRoomTopic=function(e,t,r){return this.sendStateEvent(e,"m.room.topic",{topic:t},void 0,r)},s.prototype.getRoomTags=function(e,t){var r=ie.encodeUri("/user/$userId/rooms/$roomId/tags/",{$userId:this.credentials.userId,$roomId:e});return this._http.authedRequest(t,"GET",r,void 0)},s.prototype.setRoomTag=function(e,t,r,n){var o=ie.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(n,"PUT",o,void 0,r)},s.prototype.deleteRoomTag=function(e,t,r){var n=ie.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(r,"DELETE",n,void 0,void 0)},s.prototype.setRoomAccountData=function(e,t,r,n){var o=ie.encodeUri("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this._http.authedRequest(n,"PUT",o,void 0,r)},s.prototype.setPowerLevel=function(e,t,r,n,o){var i={users:{}};n&&"m.room.power_levels"===n.getType()&&(i=ie.deepCopy(n.getContent())),i.users[t]=r;var s=ie.encodeUri("/rooms/$roomId/state/m.room.power_levels",{$roomId:e});return this._http.authedRequest(o,"PUT",s,void 0,i)},s.prototype.sendEvent=function(e,t,r,n,o){ie.isFunction(n)&&(o=n,n=void 0),n||(n=this.makeTxnId()),console.log("sendEvent of type "+t+" in "+e+" with txnId "+n);var i=this.getRoom(e),s=new Z({event_id:"~"+e+":"+n,user_id:this.credentials.userId,room_id:e,type:t,origin_server_ts:(new Date).getTime(),content:r});return s._txnId=n,s.status=ee.SENDING,i&&i.addPendingEvent(s,n),s.status===ee.NOT_SENT?j.default.reject(new Error("Event blocked by other events not yet sent")):a(this,i,s,o)},s.prototype.sendMessage=function(e,t,r,n){return ie.isFunction(r)&&(n=r,r=void 0),this.sendEvent(e,"m.room.message",t,r,n)},s.prototype.sendTextMessage=function(e,t,r,n){var o=de.makeTextMessage(t);return this.sendMessage(e,o,r,n)},s.prototype.sendNotice=function(e,t,r,n){var o=de.makeNotice(t);return this.sendMessage(e,o,r,n)},s.prototype.sendEmoteMessage=function(e,t,r,n){var o=de.makeEmoteMessage(t);return this.sendMessage(e,o,r,n)},s.prototype.sendImageMessage=function(e,t,r,n,o){ie.isFunction(n)&&(o=n,n=void 0),n||(n="Image");var i={msgtype:"m.image",url:t,info:r,body:n};return this.sendMessage(e,i,o)},s.prototype.sendStickerMessage=function(e,t,r,n,o){ie.isFunction(n)&&(o=n,n=void 0),n||(n="Sticker");var i={url:t,info:r,body:n};return this.sendEvent(e,"m.sticker",i,o,void 0)},s.prototype.sendHtmlMessage=function(e,t,r,n){var o=de.makeHtmlMessage(t,r);return this.sendMessage(e,o,n)},s.prototype.sendHtmlNotice=function(e,t,r,n){var o=de.makeHtmlNotice(t,r);return this.sendMessage(e,o,n)},s.prototype.sendHtmlEmote=function(e,t,r,n){var o=de.makeHtmlEmote(t,r);return this.sendMessage(e,o,n)},s.prototype.sendReceipt=function(e,t,r){if(this.isGuest())return j.default.resolve({});var n=ie.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),o=this._http.authedRequest(r,"POST",n,void 0,{}),i=this.getRoom(e.getRoomId());return i&&i._addLocalEchoReceipt(this.credentials.userId,e,t),o},s.prototype.sendReadReceipt=function(e,t){return this.sendReceipt(e,"m.read",t)},s.prototype.setRoomReadMarkers=function(e,t,r){var n=t,o=void 0;if(r){o=r.getId();var i=this.getRoom(e);i&&i._addLocalEchoReceipt(this.credentials.userId,r,"m.read")}return this.setRoomReadMarkersHttpRequest(e,n,o)},s.prototype.getUrlPreview=function(e,t,r){var n=t+"_"+e,o=this.urlPreviewCache[n];if(o)return j.default.resolve(o);var i=this;return this._http.authedRequestWithPrefix(r,"GET","/preview_url",{url:e,ts:t},void 0,X.PREFIX_MEDIA_R0).then(function(e){return i.urlPreviewCache[n]=e,e})},s.prototype.sendTyping=function(e,t,r,n){if(this.isGuest())return j.default.resolve({});var o=ie.encodeUri("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.credentials.userId}),i={typing:t};return t&&(i.timeout=r||2e4),this._http.authedRequest(n,"PUT",o,void 0,i)},s.prototype.invite=function(e,t,r){return f(this,e,t,"invite",void 0,r)},s.prototype.inviteByEmail=function(e,t,r){return this.inviteByThreePid(e,"email",t,r)},s.prototype.inviteByThreePid=function(e,t,r,n){var o=ie.encodeUri("/rooms/$roomId/invite",{$roomId:e}),i=this.getIdentityServerUrl(!0);return i?this._http.authedRequest(n,"POST",o,void 0,{id_server:i,medium:t,address:r}):j.default.reject(new le({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"}))},s.prototype.leave=function(e,t){return f(this,e,void 0,"leave",void 0,t)},s.prototype.ban=function(e,t,r,n){return f(this,e,t,"ban",r,n)},s.prototype.forget=function(e,t,r){void 0===t&&(t=!0);var n=f(this,e,void 0,"forget",void 0,r);if(!t)return n;var o=this;return n.then(function(t){return o.store.removeRoom(e),o.emit("deleteRoom",e),t})},s.prototype.unban=function(e,t,r){var n=ie.encodeUri("/rooms/$roomId/unban",{$roomId:e}),o={user_id:t};return this._http.authedRequest(r,"POST",n,void 0,o)},s.prototype.kick=function(e,t,r,n){return d(this,e,t,"leave",r,n)},s.prototype.getPushActionsForEvent=function(e){return e.getPushActions()||e.setPushActions(this._pushProcessor.actionsForEvent(e)),e.getPushActions()},s.prototype.setProfileInfo=function(e,t,r){var n=ie.encodeUri("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this._http.authedRequest(r,"PUT",n,void 0,t)},s.prototype.setDisplayName=function(e,t){return this.setProfileInfo("displayname",{displayname:e},t)},s.prototype.setAvatarUrl=function(e,t){return this.setProfileInfo("avatar_url",{avatar_url:e},t)},s.prototype.mxcUrlToHttp=function(e,t,r,n,o){return se.getHttpUriForMxc(this.baseUrl,e,t,r,n,o)},s.prototype.setPresence=function(e,t){var r=ie.encodeUri("/presence/$userId/status",{$userId:this.credentials.userId});if("string"==typeof e&&(e={presence:e}),-1==["offline","online","unavailable"].indexOf(e.presence))throw new Error("Bad presence value: "+e.presence);return this._http.authedRequest(t,"PUT",r,void 0,e)},s.prototype.getPresenceList=function(e){return p(e,this,void 0,"GET")},s.prototype.inviteToPresenceList=function(e,t){return p(e,this,{invite:t},"POST")},s.prototype.dropFromPresenceList=function(e,t){return p(e,this,{drop:t},"POST")},s.prototype.scrollback=function(e,t,r){ie.isFunction(t)&&(r=t,t=void 0),t=t||30;var n=0,o=this._ongoingScrollbacks[e.roomId]||{};if(o.promise)return o.promise;if(o.errorTs){var i=Date.now()-o.errorTs;n=Math.max(3e3-i,0)}if(null===e.oldState.paginationToken)return j.default.resolve(e);var s=this.store.scrollback(e,t).length;if(s===t)return j.default.resolve(e);t-=s;var a=j.default.defer();o={promise:a.promise,errorTs:null};var u=this;return j.default.delay(n).then(function(){return u._createMessagesRequest(e.roomId,e.oldState.paginationToken,t,"b")}).done(function(t){var n=ie.map(t.chunk,_(u));if(t.state){var o=ie.map(t.state,_(u));e.currentState.setUnknownStateEvents(o)}e.addEventsToTimeline(n,!0,e.getLiveTimeline()),e.oldState.paginationToken=t.end,0===t.chunk.length&&(e.oldState.paginationToken=null),u.store.storeEvents(e,n,t.end,!0),u._ongoingScrollbacks[e.roomId]=null,y(r,a,e)},function(t){u._ongoingScrollbacks[e.roomId]={errorTs:Date.now()},m(r,a,t)}),this._ongoingScrollbacks[e.roomId]=o,a.promise},s.prototype.getEventTimeline=function(e,t){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(e.getTimelineForEvent(t))return j.default.resolve(e.getTimelineForEvent(t));var r=ie.encodeUri("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),n=void 0;this._clientOpts.lazyLoadMembers&&(n={filter:(0,w.default)(ae.LAZY_LOADING_MESSAGES_FILTER)});var o=this;return o._http.authedRequest(void 0,"GET",r,n).then(function(r){if(!r.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);r.events_after.reverse();var n=r.events_after.concat([r.event]).concat(r.events_before),i=ie.map(n,o.getEventMapper()),s=e.getTimelineForEvent(i[0].getId());if(s){var a=ie.map(r.state,o.getEventMapper());s.getState(te.BACKWARDS).setUnknownStateEvents(a)}else s=e.addTimeline(),s.initialiseState(ie.map(r.state,o.getEventMapper())),s.getState(te.FORWARDS).paginationToken=r.end;return e.addEventsToTimeline(i,!0,s,r.start),e.getTimelineForEvent(t)||s})},s.prototype._createMessagesRequest=function(e,t,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,i=ie.encodeUri("/rooms/$roomId/messages",{$roomId:e});void 0===r&&(r=30);var s={from:t,limit:r,dir:n},a=null;return this._clientOpts.lazyLoadMembers&&(a=(0,b.default)({},ae.LAZY_LOADING_MESSAGES_FILTER)),o&&(a=a||{},(0,b.default)(a,o.getRoomTimelineFilterComponent())),a&&(s.filter=(0,w.default)(a)),this._http.authedRequest(void 0,"GET",i,s)},s.prototype.paginateEventTimeline=function(e,t){var r=e.getTimelineSet()===this._notifTimelineSet;t=t||{};var n=t.backwards||!1;if(r&&!n)throw new Error("paginateNotifTimeline can only paginate backwards");var o=n?te.BACKWARDS:te.FORWARDS,i=e.getPaginationToken(o);if(!i)return j.default.resolve(!1);var s=e._paginationRequests[o];if(s)return s;var a=void 0,u=void 0,c=void 0,l=this;if(r)a="/notifications",u={limit:"limit"in t?t.limit:30,only:"highlight"},i&&"end"!==i&&(u.from=i),c=this._http.authedRequestWithPrefix(void 0,"GET",a,u,void 0,X.PREFIX_UNSTABLE).then(function(t){for(var r=t.next_token,i=[],s=0;s<t.notifications.length;s++){var a=t.notifications[s],u=l.getEventMapper()(a.event);u.setPushActions(Q.actionListToActionsObject(a.actions)),u.event.room_id=a.room_id,i[s]=u}return e.getTimelineSet().addEventsToTimeline(i,n,e,r),n&&!t.next_token&&e.setPaginationToken(null,o),!!t.next_token}).finally(function(){e._paginationRequests[o]=null}),e._paginationRequests[o]=c;else{if(!this.getRoom(e.getRoomId()))throw new Error("Unknown room "+e.getRoomId());c=this._createMessagesRequest(e.getRoomId(),i,t.limit,o,e.getFilter()),c.then(function(t){if(t.state){var r=e.getState(o),i=ie.map(t.state,l.getEventMapper());r.setUnknownStateEvents(i)}var s=t.end,a=ie.map(t.chunk,l.getEventMapper());return e.getTimelineSet().addEventsToTimeline(a,n,e,s),n&&t.end==t.start&&e.setPaginationToken(null,o),t.end!=t.start}).finally(function(){e._paginationRequests[o]=null}),e._paginationRequests[o]=c}return c},s.prototype.resetNotifTimelineSet=function(){this._notifTimelineSet&&this._notifTimelineSet.resetLiveTimeline("end",null)},s.prototype.peekInRoom=function(e){return this._peekSync&&this._peekSync.stopPeeking(),this._peekSync=new ue(this,this._clientOpts),this._peekSync.peek(e)},s.prototype.stopPeeking=function(){this._peekSync&&(this._peekSync.stopPeeking(),this._peekSync=null)},s.prototype.setGuestAccess=function(e,t){var r=this.sendStateEvent(e,"m.room.guest_access",{guest_access:t.allowJoin?"can_join":"forbidden"}),n=j.default.resolve();return t.allowRead&&(n=this.sendStateEvent(e,"m.room.history_visibility",{history_visibility:"world_readable"})),j.default.all([n,r])},s.prototype.requestRegisterEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/register/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},s.prototype.requestRegisterMsisdnToken=function(e,t,r,n,o){return this._requestTokenFromEndpoint("/register/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:o})},s.prototype.requestAdd3pidEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/account/3pid/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},s.prototype.requestAdd3pidMsisdnToken=function(e,t,r,n,o){return this._requestTokenFromEndpoint("/account/3pid/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:o})},s.prototype.requestPasswordEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/account/password/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},s.prototype.requestPasswordMsisdnToken=function(e,t,r,n,o){return this._requestTokenFromEndpoint("/account/password/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:o})},s.prototype._requestTokenFromEndpoint=function(e,t){var r=Y.parse(this.idBaseUrl);if(null===r.host)throw new Error("Invalid ID server URL: "+this.idBaseUrl);var n=(0,b.default)({},t,{id_server:r.host});return this._http.request(void 0,"POST",e,void 0,n)},s.prototype.getRoomPushRule=function(e,t){if(!this.pushRules)throw new Error("SyncApi.sync() must be done before accessing to push rules.");for(var r=0;r<this.pushRules[e].room.length;r++){var n=this.pushRules[e].room[r];if(n.rule_id===t)return n}},s.prototype.setRoomMutePushRule=function(e,t,r){var n=this,o=void 0,i=void 0,s=this.getRoomPushRule(e,t);if(s&&0<=s.actions.indexOf("dont_notify")&&(i=!0),r?s?i||(o=j.default.defer(),this.deletePushRule(e,"room",s.rule_id).done(function(){n.addPushRule(e,"room",t,{actions:["dont_notify"]}).done(function(){o.resolve()},function(e){o.reject(e)})},function(e){o.reject(e)}),o=o.promise):o=this.addPushRule(e,"room",t,{actions:["dont_notify"]}):i&&(o=this.deletePushRule(e,"room",s.rule_id)),o){var a=j.default.defer();return o.done(function(){n.getPushRules().done(function(e){n.pushRules=e,a.resolve()},function(e){a.reject(e)})},function(e){n.getPushRules().done(function(t){n.pushRules=t,a.reject(e)},function(t){a.reject(e)})}),a.promise}},s.prototype.searchMessageText=function(e,t){var r={search_term:e.query};return"keys"in e&&(r.keys=e.keys),this.search({body:{search_categories:{room_events:r}}},t)},s.prototype.searchRoomEvents=function(e){var t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:"recent",event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},r={_query:t,results:[],highlights:[]};return this.search({body:t}).then(this._processRoomEventsSearch.bind(this,r))},s.prototype.backPaginateRoomEventsSearch=function(e){if(!e.next_batch)return j.default.reject(new Error("Cannot backpaginate event search any further"));if(e.pendingRequest)return e.pendingRequest;var t={body:e._query,next_batch:e.next_batch},r=this.search(t).then(this._processRoomEventsSearch.bind(this,e)).finally(function(){e.pendingRequest=null});return e.pendingRequest=r,r},s.prototype._processRoomEventsSearch=function(e,t){var r=t.search_categories.room_events;e.count=r.count,e.next_batch=r.next_batch;var n={};r.highlights.forEach(function(e){n[e]=1}),e.highlights.forEach(function(e){n[e]=1}),e.highlights=(0,x.default)(n);for(var o=0;o<r.results.length;o++){var i=re.fromJson(r.results[o],this.getEventMapper());e.results.push(i)}return e},s.prototype.syncLeftRooms=function(){if(this._syncedLeftRooms)return j.default.resolve([]);if(this._syncLeftRoomsPromise)return this._syncLeftRoomsPromise;var e=this,t=new ue(this,this._clientOpts);return this._syncLeftRoomsPromise=t.syncLeftRooms(),this._syncLeftRoomsPromise.then(function(t){console.log("Marking success of sync left room request"),e._syncedLeftRooms=!0}).finally(function(){e._syncLeftRoomsPromise=null}),this._syncLeftRoomsPromise},s.prototype.createFilter=function(e){var t=this,r=ie.encodeUri("/user/$userId/filter",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",r,void 0,e).then(function(r){var n=ae.fromJson(t.credentials.userId,r.filter_id,e);return t.store.storeFilter(n),n})},s.prototype.getFilter=function(e,t,r){if(r){var n=this.store.getFilter(e,t);if(n)return j.default.resolve(n)}var o=this,i=ie.encodeUri("/user/$userId/filter/$filterId",{$userId:e,$filterId:t});return this._http.authedRequest(void 0,"GET",i,void 0,void 0).then(function(r){var n=ae.fromJson(e,t,r);return o.store.storeFilter(n),n})},s.prototype.getOrCreateFilter=function(e,t){var r=this.store.getFilterIdByName(e),n=j.default.resolve(),o=this;return r&&(n=o.getFilter(o.credentials.userId,r,!0).then(function(n){var i=n.getDefinition(),s=t.getDefinition();if(ie.deepCompare(i,s))return j.default.resolve(r);o.store.setFilterIdByName(e,void 0)},function(t){if(404!==t.httpStatus||"M_UNKNOWN"!==t.errcode&&"M_NOT_FOUND"!==t.errcode)throw t;return void o.store.setFilterIdByName(e,void 0)})),n.then(function(r){return r||o.createFilter(t.getDefinition()).then(function(t){return o.store.setFilterIdByName(e,t.filterId),t.filterId})})},s.prototype.getOpenIdToken=function(){var e=ie.encodeUri("/user/$userId/openid/request_token",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",e,void 0,{})},s.prototype.turnServer=function(e){return this._http.authedRequest(e,"GET","/voip/turnServer")},s.prototype.getTurnServers=function(){return this._turnServers||[]},s.prototype.startClient=function(){var e=(0,C.method)(function(e){var t=this;this.clientRunning||(this.clientRunning=!0,"number"==typeof e&&(e={initialSyncLimit:e}),this._crypto&&(this._crypto.uploadDeviceKeys().done(),this._crypto.start()),v(this),this._syncApi&&(console.error("Still have sync object whilst not running: stopping old one"),this._syncApi.stop()),e=(0,b.default)({},e),e.crypto=this._crypto,e.canResetEntireTimeline=function(e){return!!t._canResetTimelineCallback&&t._canResetTimelineCallback(e)},this._clientOpts=e,this._syncApi=new ue(this,e),this._syncApi.sync())});return function(t){return e.apply(this,arguments)}}(),s.prototype._storeClientOptions=function(){var e=["boolean","string","number"],t=(0,L.default)(this._clientOpts).filter(function(t){var r=(0,M.default)(t,2),n=(r[0],r[1]);return e.includes(void 0===n?"undefined":(0,I.default)(n))}).reduce(function(e,t){var r=(0,M.default)(t,2),n=r[0],o=r[1];return e[n]=o,e},{});return this.store.storeClientOptions(t)},s.prototype.stopClient=function(){console.log("stopping MatrixClient"),this.clientRunning=!1,this._syncApi&&(this._syncApi.stop(),this._syncApi=null),this._crypto&&this._crypto.stop(),this._peekSync&&this._peekSync.stopPeeking(),r.clearTimeout(this._checkTurnServersTimeoutID)},s.prototype.doesServerSupportLazyLoading=(0,C.coroutine)(A.default.mark(function e(){var t,r;return A.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==this._serverSupportsLazyLoading){e.next=6;break}return e.next=3,(0,C.resolve)(this._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:""}));case 3:t=e.sent,r=t.unstable_features,this._serverSupportsLazyLoading=r&&r["m.lazy_load_members"];case 6:return e.abrupt("return",this._serverSupportsLazyLoading);case 7:case"end":return e.stop()}},e,this)})),s.prototype.hasLazyLoadMembersEnabled=function(){return!!this._clientOpts.lazyLoadMembers},s.prototype.setCanResetTimelineCallback=function(e){this._canResetTimelineCallback=e},s.prototype.getCanResetTimelineCallback=function(){return this._canResetTimelineCallback},s.prototype.getEventMapper=function(){return _(this)},s.prototype.generateClientSecret=function(){return(0,z.randomString)(32)},t.exports.MatrixClient=s,t.exports.CRYPTO_ENABLED=pe}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./ReEmitter":2,"./base-apis":3,"./content-helpers":5,"./content-repo":6,"./crypto":17,"./crypto/RoomList":10,"./crypto/backup_password":15,"./crypto/olmlib":18,"./crypto/recoverykey":19,"./filter":26,"./http-api":27,"./models/event":34,"./models/event-timeline":33,"./models/search-result":40,"./pushprocessor":42,"./randomstring":43,"./store/stub":51,"./sync":53,"./utils":55,"./webrtc/call":56,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/assign":63,"babel-runtime/core-js/object/entries":66,"babel-runtime/core-js/object/keys":69,"babel-runtime/core-js/set":76,"babel-runtime/helpers/slicedToArray":84,"babel-runtime/helpers/typeof":85,"babel-runtime/regenerator":86,bluebird:89,events:234,url:250}],5:[function(e,t,r){"use strict";t.exports={makeHtmlMessage:function(e,t){return{msgtype:"m.text",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeHtmlNotice:function(e,t){return{msgtype:"m.notice",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeHtmlEmote:function(e,t){return{msgtype:"m.emote",format:"org.matrix.custom.html",body:e,formatted_body:t}},makeTextMessage:function(e){return{msgtype:"m.text",body:e}},makeNotice:function(e){return{msgtype:"m.notice",body:e}},makeEmoteMessage:function(e){return{msgtype:"m.emote",body:e}}}},{}],6:[function(e,t,r){"use strict";var n=e("./utils");t.exports={getHttpUriForMxc:function(e,t,r,o,i,s){if("string"!=typeof t||!t)return"";if(0!==t.indexOf("mxc://"))return s?t:"";var a=t.slice(6),u="/_matrix/media/v1/download/",c={};r&&(c.width=r),o&&(c.height=o),i&&(c.method=i),n.keys(c).length>0&&(u="/_matrix/media/v1/thumbnail/");var l=a.indexOf("#"),d="";return l>=0&&(d=a.substr(l),a=a.substr(0,l)),e+u+a+(0===n.keys(c).length?"":"?"+n.encodeParams(c))+d},getIdenticonUri:function(e,t,r,o){if(!t)return null;r||(r=96),o||(o=96);var i={width:r,height:o};return e+n.encodeUri("/_matrix/media/v1/identicon/$ident",{$ident:t})+(0===n.keys(i).length?"":"?"+n.encodeParams(i))}}},{"./utils":55}],7:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var o=e("babel-runtime/helpers/slicedToArray"),i=n(o),s=e("babel-runtime/core-js/object/entries"),a=n(s),u=e("bluebird"),c=n(u),l=e("babel-runtime/regenerator"),d=n(l),f=e("babel-runtime/core-js/object/keys"),p=n(f),h=e("babel-runtime/core-js/get-iterator"),v=n(h),m=e("babel-runtime/helpers/classCallCheck"),y=n(m),_=e("babel-runtime/helpers/createClass"),g=n(_),b=function(){var e=(0,u.coroutine)(d.default.mark(function e(t,r,n,o){var i,s,a,c;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=!1,e.t0=d.default.keys(n);case 2:if((e.t1=e.t0()).done){e.next=9;break}if(s=e.t1.value,n.hasOwnProperty(s)){e.next=6;break}return e.abrupt("continue",2);case 6: +s in o||(S.default.log("Device "+r+":"+s+" has been removed"),delete n[s],i=!0),e.next=2;break;case 9:e.t2=d.default.keys(o);case 10:if((e.t3=e.t2()).done){e.next=27;break}if(a=e.t3.value,o.hasOwnProperty(a)){e.next=14;break}return e.abrupt("continue",10);case 14:if(c=o[a],c.user_id===r){e.next=18;break}return S.default.warn("Mismatched user_id "+c.user_id+" in keys from "+r+":"+a),e.abrupt("continue",10);case 18:if(c.device_id===a){e.next=21;break}return S.default.warn("Mismatched device_id "+c.device_id+" in keys from "+r+":"+a),e.abrupt("continue",10);case 21:return e.next=23,(0,u.resolve)(E(t,n,c));case 23:if(!e.sent){e.next=25;break}i=!0;case 25:e.next=10;break;case 27:return e.abrupt("return",i);case 28:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),E=function(){var e=(0,u.coroutine)(d.default.mark(function e(t,r,n){var o,i,s,a,c,l;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n.keys){e.next=2;break}return e.abrupt("return",!1);case 2:if(o=n.device_id,i=n.user_id,s="ed25519:"+o,a=n.keys[s]){e.next=9;break}return S.default.warn("Device "+i+":"+o+" has no ed25519 key"),e.abrupt("return",!1);case 9:return c=n.unsigned||{},e.prev=10,e.next=13,(0,u.resolve)(R.default.verifySignature(t,n,i,o,a));case 13:e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(10),S.default.warn("Unable to verify signature on device "+i+":"+o+":"+e.t0),e.abrupt("return",!1);case 19:if(l=void 0,!(o in r)){e.next=27;break}if(l=r[o],l.getFingerprint()==a){e.next=25;break}return S.default.warn("Ed25519 key for device "+i+":"+o+" has changed"),e.abrupt("return",!1);case 25:e.next=28;break;case 27:r[o]=l=new T.default(o);case 28:return l.keys=n.keys||{},l.algorithms=n.algorithms||[],l.unsigned=c,e.abrupt("return",!0);case 32:case"end":return e.stop()}},e,this,[[10,15]])}));return function(t,r,n){return e.apply(this,arguments)}}(),w=e("../logger"),S=n(w),k=e("./deviceinfo"),T=n(k),x=e("./olmlib"),R=n(x),I=e("./store/indexeddb-crypto-store"),C=n(I),j=function(){function e(t,r,n,o){(0,y.default)(this,e),this._cryptoStore=r,this._sessionStore=n,this._devices={},this._userByIdentityKey={},this._deviceTrackingStatus={},this._syncToken=null,this._serialiser=new O(t,o,this),this._keyDownloadsInProgressByUser={},this._dirty=!1,this._savePromise=null,this._resolveSavePromise=null,this._savePromiseTime=null,this._saveTimer=null}return(0,g.default)(e,[{key:"load",value:function(){function e(){return t.apply(this,arguments)}var t=(0,u.coroutine)(d.default.mark(function e(){var t,r,n,o,i,s,a,c=this;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,u.resolve)(this._cryptoStore.doTxn("readwrite",[C.default.STORE_DEVICE_DATA],function(e){c._cryptoStore.getEndToEndDeviceData(e,function(r){null===r?(S.default.log("Migrating e2e device data..."),c._devices=c._sessionStore.getAllEndToEndDevices()||{},c._deviceTrackingStatus=c._sessionStore.getEndToEndDeviceTrackingStatus()||{},c._syncToken=c._sessionStore.getEndToEndDeviceSyncToken(),c._cryptoStore.storeEndToEndDeviceData({devices:c._devices,trackingStatus:c._deviceTrackingStatus,syncToken:c._syncToken},e),t=!0):(c._devices=r?r.devices:{},c._deviceTrackingStatus=r?r.trackingStatus:{},c._syncToken=r?r.syncToken:null),c._userByIdentityKey={};var n=!0,o=!1,i=void 0;try{for(var s,a=(0,v.default)((0,p.default)(c._devices));!(n=(s=a.next()).done);n=!0){var u=s.value,l=c._devices[u],d=!0,f=!1,h=void 0;try{for(var m,y=(0,v.default)((0,p.default)(l));!(d=(m=y.next()).done);d=!0){var _=m.value,g=l[_].keys["curve25519:"+_];void 0!==g&&(c._userByIdentityKey[g]=u)}}catch(e){f=!0,h=e}finally{try{!d&&y.return&&y.return()}finally{if(f)throw h}}}}catch(e){o=!0,i=e}finally{try{!n&&a.return&&a.return()}finally{if(o)throw i}}})}));case 3:for(t&&this._sessionStore.removeEndToEndDeviceData(),r=!0,n=!1,o=void 0,e.prev=7,i=(0,v.default)((0,p.default)(this._deviceTrackingStatus));!(r=(s=i.next()).done);r=!0)a=s.value,2==this._deviceTrackingStatus[a]&&(this._deviceTrackingStatus[a]=1);e.next=15;break;case 11:e.prev=11,e.t0=e.catch(7),n=!0,o=e.t0;case 15:e.prev=15,e.prev=16,!r&&i.return&&i.return();case 18:if(e.prev=18,!n){e.next=21;break}throw o;case 21:return e.finish(18);case 22:return e.finish(15);case 23:case"end":return e.stop()}},e,this,[[7,11,15,23],[16,,18,22]])}));return e}()},{key:"stop",value:function(){null!==this._saveTimer&&clearTimeout(this._saveTimer)}},{key:"saveIfDirty",value:function(){function e(e){return t.apply(this,arguments)}var t=(0,u.method)(function(e){var t=this;if(!this._dirty)return c.default.resolve(!1);void 0===e&&(e=500);var r=Date.now+e;this._savePromiseTime&&r<this._savePromiseTime&&(clearTimeout(this._saveTimer),this._saveTimer=null,this._savePromiseTime=null);var n=this._savePromise;if(null===n&&(n=new c.default(function(e,r){t._resolveSavePromise=e}),this._savePromise=n),null===this._saveTimer){var o=this._resolveSavePromise;this._savePromiseTime=r,this._saveTimer=setTimeout(function(){S.default.log("Saving device tracking data at token "+t._syncToken),t._savePromiseTime=null,t._saveTimer=null,t._savePromise=null,t._resolveSavePromise=null,t._dirty=!1,t._cryptoStore.doTxn("readwrite",[C.default.STORE_DEVICE_DATA],function(e){t._cryptoStore.storeEndToEndDeviceData({devices:t._devices,trackingStatus:t._deviceTrackingStatus,syncToken:t._syncToken},e)}).then(function(){o()})},e)}return n});return e}()},{key:"getSyncToken",value:function(){return this._syncToken}},{key:"setSyncToken",value:function(e){this._syncToken=e}},{key:"downloadKeys",value:function(e,t){var r=this,n=[],o=[];if(e.forEach(function(e){var i=r._deviceTrackingStatus[e];r._keyDownloadsInProgressByUser[e]?(S.default.log("downloadKeys: already have a download in progress for "+e+": awaiting its result"),o.push(r._keyDownloadsInProgressByUser[e])):(t||3!=i)&&n.push(e)}),0!=n.length){S.default.log("downloadKeys: downloading for",n);var i=this._doKeyDownload(n);o.push(i)}return 0===o.length&&S.default.log("downloadKeys: already have all necessary keys"),c.default.all(o).then(function(){return r._getDevicesFromStore(e)})}},{key:"_getDevicesFromStore",value:function(e){var t={},r=this;return e.map(function(e){t[e]={},(r.getStoredDevicesForUser(e)||[]).map(function(r){t[e][r.deviceId]=r})}),t}},{key:"getStoredDevicesForUser",value:function(e){var t=this._devices[e];if(!t)return null;var r=[];for(var n in t)t.hasOwnProperty(n)&&r.push(T.default.fromStorage(t[n],n));return r}},{key:"getRawStoredDevicesForUser",value:function(e){return this._devices[e]}},{key:"getStoredDevice",value:function(e,t){var r=this._devices[e];if(r&&r[t])return T.default.fromStorage(r[t],t)}},{key:"getDeviceByIdentityKey",value:function(e,t){var r=this._userByIdentityKey[t];if(!r)return null;if(e!==R.default.OLM_ALGORITHM&&e!==R.default.MEGOLM_ALGORITHM)return null;var n=this._devices[r];if(!n)return null;for(var o in n)if(n.hasOwnProperty(o)){var i=n[o];for(var s in i.keys)if(i.keys.hasOwnProperty(s)&&0===s.indexOf("curve25519:")){var a=i.keys[s];if(a==t)return T.default.fromStorage(i,o)}}return null}},{key:"storeDevicesForUser",value:function(e,t){if(void 0!==this._devices[e]){var r=!0,n=!1,o=void 0;try{for(var s,u=(0,v.default)((0,a.default)(this._devices[e]));!(r=(s=u.next()).done);r=!0){var c=(0,i.default)(s.value,2),l=c[0],d=c[1],f=d.keys["curve25519:"+l];delete this._userByIdentityKey[f]}}catch(e){n=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(n)throw o}}}this._devices[e]=t;var p=!0,h=!1,m=void 0;try{for(var y,_=(0,v.default)((0,a.default)(t));!(p=(y=_.next()).done);p=!0){var g=(0,i.default)(y.value,2),l=g[0],d=g[1],b=d.keys["curve25519:"+l];this._userByIdentityKey[b]=e}}catch(e){h=!0,m=e}finally{try{!p&&_.return&&_.return()}finally{if(h)throw m}}this._dirty=!0}},{key:"startTrackingDeviceList",value:function(e){if("string"!=typeof e)throw new Error("userId must be a string; was "+e);this._deviceTrackingStatus[e]||(S.default.log("Now tracking device list for "+e),this._deviceTrackingStatus[e]=1),this._dirty=!0}},{key:"stopTrackingDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(S.default.log("No longer tracking device list for "+e),this._deviceTrackingStatus[e]=0,this._dirty=!0)}},{key:"stopTrackingAllDeviceLists",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,o=(0,v.default)((0,p.default)(this._deviceTrackingStatus));!(e=(n=o.next()).done);e=!0){var i=n.value;this._deviceTrackingStatus[i]=0}}catch(e){t=!0,r=e}finally{try{!e&&o.return&&o.return()}finally{if(t)throw r}}this._dirty=!0}},{key:"invalidateUserDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(S.default.log("Marking device list outdated for",e),this._deviceTrackingStatus[e]=1,this._dirty=!0)}},{key:"refreshOutdatedDeviceLists",value:function(){this.saveIfDirty();var e=[],t=!0,r=!1,n=void 0;try{for(var o,i=(0,v.default)((0,p.default)(this._deviceTrackingStatus));!(t=(o=i.next()).done);t=!0){var s=o.value;1==this._deviceTrackingStatus[s]&&e.push(s)}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return this._doKeyDownload(e)}},{key:"_setRawStoredDevicesForUser",value:function(e,t){if(void 0!==this._devices[e]){var r=!0,n=!1,o=void 0;try{for(var s,u=(0,v.default)((0,a.default)(this._devices[e]));!(r=(s=u.next()).done);r=!0){var c=(0,i.default)(s.value,2),l=c[0],d=c[1],f=d.keys["curve25519:"+l];delete this._userByIdentityKey[f]}}catch(e){n=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(n)throw o}}}this._devices[e]=t;var p=!0,h=!1,m=void 0;try{for(var y,_=(0,v.default)((0,a.default)(t));!(p=(y=_.next()).done);p=!0){var g=(0,i.default)(y.value,2),l=g[0],d=g[1],b=d.keys["curve25519:"+l];this._userByIdentityKey[b]=e}}catch(e){h=!0,m=e}finally{try{!p&&_.return&&_.return()}finally{if(h)throw m}}}},{key:"_doKeyDownload",value:function(e){var t=this;if(0===e.length)return c.default.resolve();var r=this._serialiser.updateDevicesForUsers(e,this._syncToken).then(function(){n(!0)},function(t){throw S.default.error("Error downloading keys for "+e+":",t),n(!1),t});e.forEach(function(e){t._keyDownloadsInProgressByUser[e]=r,1==t._deviceTrackingStatus[e]&&(t._deviceTrackingStatus[e]=2)});var n=function(n){e.forEach(function(e){if(t._dirty=!0,t._keyDownloadsInProgressByUser[e]!==r)return void S.default.log("Another update in the queue for",e,"- not marking up-to-date");delete t._keyDownloadsInProgressByUser[e],2==t._deviceTrackingStatus[e]&&(n?(t._deviceTrackingStatus[e]=3,S.default.log("Device list for",e,"now up to date")):t._deviceTrackingStatus[e]=1)}),t.saveIfDirty()};return r}}]),e}();r.default=j;var O=function(){function e(t,r,n){(0,y.default)(this,e),this._baseApis=t,this._olmDevice=r,this._deviceList=n,this._downloadInProgress=!1,this._keyDownloadsQueuedByUser={},this._queuedQueryDeferred=null,this._syncToken=null}return(0,g.default)(e,[{key:"updateDevicesForUsers",value:function(e,t){var r=this;return e.forEach(function(e){r._keyDownloadsQueuedByUser[e]=!0}),this._queuedQueryDeferred||(this._queuedQueryDeferred=c.default.defer()),this._syncToken=t,this._downloadInProgress?(S.default.log("Queued key download for",e),this._queuedQueryDeferred.promise):this._doQueuedQueries()}},{key:"_doQueuedQueries",value:function(){var e=this;if(this._downloadInProgress)throw new Error("DeviceListUpdateSerialiser._doQueuedQueries called with request active");var t=(0,p.default)(this._keyDownloadsQueuedByUser);this._keyDownloadsQueuedByUser={};var r=this._queuedQueryDeferred;this._queuedQueryDeferred=null,S.default.log("Starting key download for",t),this._downloadInProgress=!0;var n={};return this._syncToken&&(n.token=this._syncToken),this._baseApis.downloadKeysForUsers(t,n).then(function(r){var n=r.device_keys||{},o=c.default.resolve(),i=!0,s=!1,a=void 0;try{for(var u,l=(0,v.default)(t);!(i=(u=l.next()).done);i=!0)!function(){var t=u.value;o=o.delay(5).then(function(){return e._processQueryResponseForUser(t,n[t])})}()}catch(e){s=!0,a=e}finally{try{!i&&l.return&&l.return()}finally{if(s)throw a}}return o}).done(function(){S.default.log("Completed key download for "+t),e._downloadInProgress=!1,r.resolve(),e._queuedQueryDeferred&&e._doQueuedQueries()},function(n){S.default.warn("Error downloading keys for "+t+":",n),e._downloadInProgress=!1,r.reject(n)}),r.promise}},{key:"_processQueryResponseForUser",value:function(){function e(e,r){return t.apply(this,arguments)}var t=(0,u.coroutine)(d.default.mark(function e(t,r){var n,o,i;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return S.default.log("got keys for "+t+":",r),n={},o=this._deviceList.getRawStoredDevicesForUser(t),o&&(0,p.default)(o).forEach(function(e){var t=T.default.fromStorage(o[e],e);n[e]=t}),e.next=6,(0,u.resolve)(b(this._olmDevice,t,n,r||{}));case 6:i={},(0,p.default)(n).forEach(function(e){i[e]=n[e].toStorage()}),this._deviceList._setRawStoredDevicesForUser(t,i);case 9:case"end":return e.stop()}},e,this)}));return e}()}]),e}()},{"../logger":29,"./deviceinfo":16,"./olmlib":18,"./store/indexeddb-crypto-store":21,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/entries":66,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,"babel-runtime/helpers/slicedToArray":84,"babel-runtime/regenerator":86,bluebird:89}],8:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){if(void 0===e)throw new Error("payloadString undefined");if(e.length>b)throw new Error("Message too long ("+e.length+" bytes). The maximum for an encrypted message is "+b+" bytes.")}function i(e,t){this._sessionStore=e,this._cryptoStore=t,this._pickleKey="DEFAULT_KEY",this.deviceCurve25519Key=null,this.deviceEd25519Key=null,this._maxOneTimeKeys=null,this._outboundGroupSessionStore={},this._inboundGroupSessionMessageIndexes={}}var s=e("babel-runtime/core-js/object/assign"),a=n(s),u=e("babel-runtime/core-js/get-iterator"),c=n(u),l=e("babel-runtime/core-js/object/keys"),d=n(l),f=e("babel-runtime/regenerator"),p=n(f),h=e("bluebird"),v=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n,o){return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(r.doTxn("readwrite",[g.default.STORE_ACCOUNT],function(e){r.getAccount(e,function(t){null!==t?o.unpickle(n,t):(o.create(),t=o.pickle(n),r.storeAccount(e,t))})}));case 2:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),m=e("../logger"),y=n(m),_=e("./store/indexeddb-crypto-store"),g=n(_),b=49152;i.prototype.init=(0,h.coroutine)(p.default.mark(function e(){var t,n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this._migrateFromSessionStore());case 2:return t=void 0,n=new r.Olm.Account,e.prev=4,e.next=7,(0,h.resolve)(v(this._sessionStore,this._cryptoStore,this._pickleKey,n));case 7:t=JSON.parse(n.identity_keys()),this._maxOneTimeKeys=n.max_number_of_one_time_keys();case 9:return e.prev=9,n.free(),e.finish(9);case 12:this.deviceCurve25519Key=t.curve25519,this.deviceEd25519Key=t.ed25519;case 14:case"end":return e.stop()}},e,this,[[4,,9,12]])})),i.getOlmVersion=function(){return r.Olm.get_library_version()},i.prototype._migrateFromSessionStore=(0,h.coroutine)(p.default.mark(function e(){var t,r,n,o=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_ACCOUNT],function(e){o._cryptoStore.getAccount(e,function(t){null===t&&null!==(t=o._sessionStore.getEndToEndAccount())&&(y.default.log("Migrating account from session store"),o._cryptoStore.storeAccount(e,t))})}));case 2:if(this._sessionStore.removeEndToEndAccount(),t=this._sessionStore.getAllEndToEndSessions(),!((0,d.default)(t).length>0)){e.next=8;break}return e.next=7,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_SESSIONS],function(e){o._cryptoStore.countEndToEndSessions(e,function(r){if(r)return void y.default.log("Crypto store already has sessions: not migrating");var n=0,i=!0,s=!1,a=void 0;try{for(var u,l=(0,c.default)((0,d.default)(t));!(i=(u=l.next()).done);i=!0){var f=u.value,p=!0,h=!1,v=void 0;try{for(var m,_=(0,c.default)((0,d.default)(t[f]));!(p=(m=_.next()).done);p=!0){var g=m.value;n++,o._cryptoStore.storeEndToEndSession(f,g,t[f][g],e)}}catch(e){h=!0,v=e}finally{try{!p&&_.return&&_.return()}finally{if(h)throw v}}}}catch(e){s=!0,a=e}finally{try{!i&&l.return&&l.return()}finally{if(s)throw a}}y.default.log("Migrating "+n+" sessions from session store")})}));case 7:this._sessionStore.removeAllEndToEndSessions();case 8:if(r=this._sessionStore.getAllEndToEndInboundGroupSessionKeys(),!((0,d.default)(r).length>0)){e.next=14;break}return n=0,e.next=13,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_INBOUND_GROUP_SESSIONS],function(e){var t=!0,i=!1,s=void 0;try{for(var a,u=(0,c.default)(r);!(t=(a=u.next()).done);t=!0){var l=a.value;try{o._cryptoStore.addEndToEndInboundGroupSession(l.senderKey,l.sessionId,JSON.parse(o._sessionStore.getEndToEndInboundGroupSession(l.senderKey,l.sessionId)),e)}catch(e){y.default.warn("Failed to migrate session "+l.senderKey+"/"+l.sessionId+": "+e.stack||e)}++n}}catch(e){i=!0,s=e}finally{try{!t&&u.return&&u.return()}finally{if(i)throw s}}y.default.log("Migrated "+n+" inbound group sessions from session store")}));case 13:this._sessionStore.removeAllEndToEndInboundGroupSessions();case 14:case"end":return e.stop()}},e,this)})),i.prototype._getAccount=function(e,t){var n=this;this._cryptoStore.getAccount(e,function(e){var o=new r.Olm.Account;try{o.unpickle(n._pickleKey,e),t(o)}finally{o.free()}})},i.prototype._storeAccount=function(e,t){this._cryptoStore.storeAccount(e,t.pickle(this._pickleKey))},i.prototype._getSession=function(e,t,r,n){var o=this;this._cryptoStore.getEndToEndSession(e,t,r,function(e){o._unpickleSession(e,n)})},i.prototype._unpickleSession=function(e,t){var n=new r.Olm.Session;try{n.unpickle(this._pickleKey,e.session);t((0,a.default)({},e,{session:n}))}finally{n.free()}},i.prototype._saveSession=function(e,t,r){var n=t.session.session_id(),o=(0,a.default)(t,{session:t.session.pickle(this._pickleKey)});this._cryptoStore.storeEndToEndSession(e,n,o,r)},i.prototype._getUtility=function(e){var t=new r.Olm.Utility;try{return e(t)}finally{t.free()}},i.prototype.sign=function(){var e=(0,h.coroutine)(p.default.mark(function e(t){var r,n=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_ACCOUNT],function(e){n._getAccount(e,function(e){r=e.sign(t)})}));case 3:return e.abrupt("return",r);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.getOneTimeKeys=(0,h.coroutine)(p.default.mark(function e(){var t,r=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_ACCOUNT],function(e){r._getAccount(e,function(e){t=JSON.parse(e.one_time_keys())})}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}},e,this)})),i.prototype.maxNumberOfOneTimeKeys=function(){return this._maxOneTimeKeys},i.prototype.markKeysAsPublished=(0,h.coroutine)(p.default.mark(function e(){var t=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_ACCOUNT],function(e){t._getAccount(e,function(r){r.mark_keys_as_published(),t._storeAccount(e,r)})}));case 2:case"end":return e.stop()}},e,this)})),i.prototype.generateOneTimeKeys=function(e){var t=this;return this._cryptoStore.doTxn("readwrite",[g.default.STORE_ACCOUNT],function(r){t._getAccount(r,function(n){n.generate_one_time_keys(e),t._storeAccount(r,n)})})},i.prototype.createOutboundSession=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,n){var o,i=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_ACCOUNT,g.default.STORE_SESSIONS],function(e){i._getAccount(e,function(s){var a=new r.Olm.Session;try{a.create_outbound(s,t,n),o=a.session_id(),i._storeAccount(e,s);var u={session:a,lastReceivedMessageTs:Date.now()};i._saveSession(t,u,e)}finally{a.free()}})}));case 3:return e.abrupt("return",o);case 4:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),i.prototype.createInboundSession=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,n,o){var i,s=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(0===n){e.next=2;break}throw new Error("Need messageType == 0 to create inbound session");case 2:return i=void 0,e.next=5,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_ACCOUNT,g.default.STORE_SESSIONS],function(e){s._getAccount(e,function(a){var u=new r.Olm.Session;try{u.create_inbound_from(a,t,o),a.remove_one_time_keys(u),s._storeAccount(e,a);var c=u.decrypt(n,o),l={session:u,lastReceivedMessageTs:Date.now()};s._saveSession(t,l,e),i={payload:c,session_id:u.session_id()}}finally{u.free()}})}));case 5:return e.abrupt("return",i);case 6:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),i.prototype.getSessionIdsForDevice=function(){var e=(0,h.coroutine)(p.default.mark(function e(t){var r,n=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_SESSIONS],function(e){n._cryptoStore.getEndToEndSessions(t,e,function(e){r=(0,d.default)(e)})}));case 3:return e.abrupt("return",r);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.getSessionIdForDevice=function(){var e=(0,h.coroutine)(p.default.mark(function e(t){var r,n,o,i,s,a,u;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this.getSessionInfoForDevice(t));case 2:if(r=e.sent,0!==r.length){e.next=5;break}return e.abrupt("return",null);case 5:for(n=0,o=1;o<r.length;o++)i=r[o],s=void 0===i.lastReceivedMessageTs?0:i.lastReceivedMessageTs,a=r[n],u=void 0===a.lastReceivedMessageTs?0:a.lastReceivedMessageTs,(s>u||s===u&&i.sessionId<a.sessionId)&&(n=o);return e.abrupt("return",r[n].sessionId);case 8:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.getSessionInfoForDevice=function(){var e=(0,h.coroutine)(p.default.mark(function e(t){var r,n=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=[],e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_SESSIONS],function(e){n._cryptoStore.getEndToEndSessions(t,e,function(e){var t=(0,d.default)(e).sort(),o=!0,i=!1,s=void 0;try{for(var a,u=(0,c.default)(t);!(o=(a=u.next()).done);o=!0)!function(){var t=a.value;n._unpickleSession(e[t],function(e){r.push({lastReceivedMessageTs:e.lastReceivedMessageTs,hasReceivedMessage:e.session.has_received_message(),sessionId:t})})}()}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}})}));case 3:return e.abrupt("return",r);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.encryptMessage=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n){var i,s=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o(n),i=void 0,e.next=4,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_SESSIONS],function(e){s._getSession(t,r,e,function(r){i=r.session.encrypt(n),s._saveSession(t,r,e)})}));case 4:return e.abrupt("return",i);case 5:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),i.prototype.decryptMessage=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n,o){var i,s=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_SESSIONS],function(e){s._getSession(t,r,e,function(r){i=r.session.decrypt(n,o),r.lastReceivedMessageTs=Date.now(),s._saveSession(t,r,e)})}));case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),i.prototype.matchesSession=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n,o){var i,s=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(0===n){e.next=2;break}return e.abrupt("return",!1);case 2:return i=void 0,e.next=5,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_SESSIONS],function(e){s._getSession(t,r,e,function(e){i=e.session.matches_inbound(o)})}));case 5:return e.abrupt("return",i);case 6:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),i.prototype._saveOutboundGroupSession=function(e){var t=e.pickle(this._pickleKey);this._outboundGroupSessionStore[e.session_id()]=t},i.prototype._getOutboundGroupSession=function(e,t){var n=this._outboundGroupSessionStore[e];if(void 0===n)throw new Error("Unknown outbound group session "+e);var o=new r.Olm.OutboundGroupSession;try{return o.unpickle(this._pickleKey,n),t(o)}finally{o.free()}},i.prototype.createOutboundGroupSession=function(){var e=new r.Olm.OutboundGroupSession;try{return e.create(),this._saveOutboundGroupSession(e),e.session_id()}finally{e.free()}},i.prototype.encryptGroupMessage=function(e,t){var r=this;return o(t),this._getOutboundGroupSession(e,function(e){var n=e.encrypt(t);return r._saveOutboundGroupSession(e),n})},i.prototype.getOutboundGroupSessionKey=function(e){return this._getOutboundGroupSession(e,function(e){return{chain_index:e.message_index(),key:e.session_key()}})},i.prototype._unpickleInboundGroupSession=function(e,t){var n=new r.Olm.InboundGroupSession;try{return n.unpickle(this._pickleKey,e.session),t(n)}finally{n.free()}},i.prototype._getInboundGroupSession=function(e,t,r,n,o){var i=this;this._cryptoStore.getEndToEndInboundGroupSession(t,r,n,function(t){if(null===t)return void o(null);if(null!==e&&e!==t.room_id)throw new Error("Mismatched room_id for inbound group session (expected "+t.room_id+", was "+e+")");i._unpickleInboundGroupSession(t,function(e){o(e,t)})})},i.prototype.addInboundGroupSession=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,n,o,i,s,a,u){var c=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_INBOUND_GROUP_SESSIONS],function(e){c._getInboundGroupSession(t,n,i,e,function(l,d){if(l)return void y.default.log("Update for megolm session "+n+"/"+i);var f=new r.Olm.InboundGroupSession;try{if(u?f.import_session(s):f.create(s),i!=f.session_id())throw new Error("Mismatched group session ID from senderKey: "+n);var p={room_id:t,session:f.pickle(c._pickleKey),keysClaimed:a,forwardingCurve25519KeyChain:o};c._cryptoStore.addEndToEndInboundGroupSession(n,i,p,e)}finally{f.free()}})}));case 2:case"end":return e.stop()}},e,this)}));return function(t,r,n,o,i,s,a){return e.apply(this,arguments)}}(),i.prototype.decryptGroupMessage=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n,o,i,s){var a,u=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readwrite",[g.default.STORE_INBOUND_GROUP_SESSIONS],function(e){u._getInboundGroupSession(t,r,n,e,function(t,c){if(null===t)return void(a=null);var l=t.decrypt(o),d=l.plaintext;if(void 0===d)d=l;else{var f=r+"|"+n+"|"+l.message_index;if(f in u._inboundGroupSessionMessageIndexes){var p=u._inboundGroupSessionMessageIndexes[f];if(p.id!==i||p.timestamp!==s)throw new Error("Duplicate message index, possible replay attack: "+f)}u._inboundGroupSessionMessageIndexes[f]={id:i,timestamp:s}}c.session=t.pickle(u._pickleKey),u._cryptoStore.storeEndToEndInboundGroupSession(r,n,c,e),a={result:d,keysClaimed:c.keysClaimed||{},senderKey:r,forwardingCurve25519KeyChain:c.forwardingCurve25519KeyChain||[]}})}));case 3:return e.abrupt("return",a);case 4:case"end":return e.stop()}},e,this)}));return function(t,r,n,o,i,s){return e.apply(this,arguments)}}(),i.prototype.hasInboundSessionKeys=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n){var o,i=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_INBOUND_GROUP_SESSIONS],function(e){i._cryptoStore.getEndToEndInboundGroupSession(r,n,e,function(e){if(null===e)return void(o=!1);t!==e.room_id?(y.default.warn("requested keys for inbound group session "+r+"|"+n+", with incorrect room_id (expected "+e.room_id+", was "+t+")"),o=!1):o=!0})}));case 3:return e.abrupt("return",o);case 4:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),i.prototype.getInboundGroupSessionKey=function(){var e=(0,h.coroutine)(p.default.mark(function e(t,r,n,o){var i,s=this;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=void 0,e.next=3,(0,h.resolve)(this._cryptoStore.doTxn("readonly",[g.default.STORE_INBOUND_GROUP_SESSIONS],function(e){s._getInboundGroupSession(t,r,n,e,function(e,t){if(null===e)return void(i=null);void 0===o&&(o=e.first_known_index());var r=e.export_session(o),n=t.keysClaimed||{},s=n.ed25519||null;i={chain_index:o,key:r,forwarding_curve25519_key_chain:t.forwardingCurve25519KeyChain||[],sender_claimed_ed25519_key:s}})}));case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),i.prototype.exportInboundGroupSession=function(e,t,r){return this._unpickleInboundGroupSession(r,function(n){var o=n.first_known_index();return{sender_key:e,sender_claimed_keys:r.keysClaimed,room_id:r.room_id,session_id:t,session_key:n.export_session(o),forwarding_curve25519_key_chain:n.forwardingCurve25519KeyChain||[],first_known_index:n.first_known_index()}})},i.prototype.verifySignature=function(e,t,r){this._getUtility(function(n){n.ed25519_verify(e,t,r)})},t.exports=i}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":29,"./store/indexeddb-crypto-store":21,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/assign":63,"babel-runtime/core-js/object/keys":69,"babel-runtime/regenerator":86,bluebird:89}],9:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){return e.room_id+" / "+e.session_id}function i(e){return"["+y.default.map(e,function(e){return e.userId+":"+e.deviceId}).join(",")+"]"}Object.defineProperty(r,"__esModule",{value:!0});var s=e("babel-runtime/core-js/get-iterator"),a=n(s),u=e("babel-runtime/helpers/classCallCheck"),c=n(u),l=e("babel-runtime/helpers/createClass"),d=n(l),f=e("bluebird"),p=n(f),h=e("../logger"),v=n(h),m=e("../utils"),y=n(m),_={UNSENT:0,SENT:1,CANCELLATION_PENDING:2,CANCELLATION_PENDING_AND_WILL_RESEND:3},g=function(){function e(t,r,n){(0,c.default)(this,e),this._baseApis=t,this._deviceId=r,this._cryptoStore=n,this._sendOutgoingRoomKeyRequestsTimer=null,this._sendOutgoingRoomKeyRequestsRunning=!1,this._clientRunning=!1}return(0,d.default)(e,[{key:"start",value:function(){this._clientRunning=!0,this._startTimer()}},{key:"stop",value:function(){v.default.log("stopping OutgoingRoomKeyRequestManager"),this._clientRunning=!1}},{key:"sendRoomKeyRequest",value:function(e,t){var r=this;return this._cryptoStore.getOrAddOutgoingRoomKeyRequest({requestBody:e,recipients:t,requestId:this._baseApis.makeTxnId(),state:_.UNSENT +}).then(function(e){e.state===_.UNSENT&&r._startTimer()})}},{key:"cancelRoomKeyRequest",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._cryptoStore.getOutgoingRoomKeyRequest(e).then(function(n){if(n)switch(n.state){case _.CANCELLATION_PENDING:case _.CANCELLATION_PENDING_AND_WILL_RESEND:return;case _.UNSENT:return v.default.log("deleting unnecessary room key request for "+o(e)),t._cryptoStore.deleteOutgoingRoomKeyRequest(n.requestId,_.UNSENT);case _.SENT:var i=r?_.CANCELLATION_PENDING_AND_WILL_RESEND:_.CANCELLATION_PENDING;return t._cryptoStore.updateOutgoingRoomKeyRequest(n.requestId,_.SENT,{state:i,cancellationTxnId:t._baseApis.makeTxnId()}).then(function(n){if(!n)return void v.default.log("Tried to cancel room key request for "+o(e)+" but it was already cancelled in another tab");t._sendOutgoingRoomKeyRequestCancellation(n,r).catch(function(e){v.default.error("Error sending room key request cancellation; will retry later.",e),t._startTimer()}).then(function(){r&&t._startTimer()})});default:throw new Error("unhandled state: "+n.state)}})}},{key:"getOutgoingSentRoomKeyRequest",value:function(e,t){return this._cryptoStore.getOutgoingRoomKeyRequestsByTarget(e,t,[_.SENT])}},{key:"_startTimer",value:function(){var e=this;if(!this._sendOutgoingRoomKeyRequestsTimer){var r=function(){if(e._sendOutgoingRoomKeyRequestsRunning)throw new Error("RoomKeyRequestSend already in progress!");e._sendOutgoingRoomKeyRequestsRunning=!0,e._sendOutgoingRoomKeyRequests().finally(function(){e._sendOutgoingRoomKeyRequestsRunning=!1}).catch(function(e){v.default.warn("error in OutgoingRoomKeyRequestManager: "+e)}).done()};this._sendOutgoingRoomKeyRequestsTimer=t.setTimeout(r,500)}}},{key:"_sendOutgoingRoomKeyRequests",value:function(){var e=this;return this._clientRunning?(v.default.log("Looking for queued outgoing room key requests"),this._cryptoStore.getOutgoingRoomKeyRequestByState([_.CANCELLATION_PENDING,_.CANCELLATION_PENDING_AND_WILL_RESEND,_.UNSENT]).then(function(t){if(!t)return v.default.log("No more outgoing room key requests"),void(e._sendOutgoingRoomKeyRequestsTimer=null);var r=void 0;switch(t.state){case _.UNSENT:r=e._sendOutgoingRoomKeyRequest(t);break;case _.CANCELLATION_PENDING:r=e._sendOutgoingRoomKeyRequestCancellation(t);break;case _.CANCELLATION_PENDING_AND_WILL_RESEND:r=e._sendOutgoingRoomKeyRequestCancellation(t,!0)}return r.then(function(){return e._sendOutgoingRoomKeyRequests()}).catch(function(t){v.default.error("Error sending room key request; will retry later.",t),e._sendOutgoingRoomKeyRequestsTimer=null,e._startTimer()}).done()})):(this._sendOutgoingRoomKeyRequestsTimer=null,p.default.resolve())}},{key:"_sendOutgoingRoomKeyRequest",value:function(e){var t=this;v.default.log("Requesting keys for "+o(e.requestBody)+" from "+i(e.recipients)+"(id "+e.requestId+")");var r={action:"request",requesting_device_id:this._deviceId,request_id:e.requestId,body:e.requestBody};return this._sendMessageToDevices(r,e.recipients,e.requestId).then(function(){return t._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,_.UNSENT,{state:_.SENT})})}},{key:"_sendOutgoingRoomKeyRequestCancellation",value:function(e,t){var r=this;v.default.log("Sending cancellation for key request for "+o(e.requestBody)+" to "+i(e.recipients)+" (cancellation id "+e.cancellationTxnId+")");var n={action:"request_cancellation",requesting_device_id:this._deviceId,request_id:e.requestId};return this._sendMessageToDevices(n,e.recipients,e.cancellationTxnId).then(function(){return t?r._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,_.CANCELLATION_PENDING_AND_WILL_RESEND,{state:_.UNSENT}):r._cryptoStore.deleteOutgoingRoomKeyRequest(e.requestId,_.CANCELLATION_PENDING)})}},{key:"_sendMessageToDevices",value:function(e,t,r){var n={},o=!0,i=!1,s=void 0;try{for(var u,c=(0,a.default)(t);!(o=(u=c.next()).done);o=!0){var l=u.value;n[l.userId]||(n[l.userId]={}),n[l.userId][l.deviceId]=e}}catch(e){i=!0,s=e}finally{try{!o&&c.return&&c.return()}finally{if(i)throw s}}return this._baseApis.sendToDevice("m.room_key_request",n,r)}}]),e}();r.default=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":29,"../utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,bluebird:89}],10:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var o=e("babel-runtime/regenerator"),i=n(o),s=e("babel-runtime/core-js/get-iterator"),a=n(s),u=e("babel-runtime/core-js/object/keys"),c=n(u),l=e("bluebird"),d=e("babel-runtime/helpers/classCallCheck"),f=n(d),p=e("babel-runtime/helpers/createClass"),h=n(p),v=e("./store/indexeddb-crypto-store"),m=n(v),y=function(){function e(t,r){(0,f.default)(this,e),this._cryptoStore=t,this._sessionStore=r,this._roomEncryption={}}return(0,h.default)(e,[{key:"init",value:function(){function e(){return t.apply(this,arguments)}var t=(0,l.coroutine)(i.default.mark(function e(){var t,r=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,l.resolve)(this._cryptoStore.doTxn("readwrite",[m.default.STORE_ROOMS],function(e){r._cryptoStore.getEndToEndRooms(e,function(n){if(null===n||0===(0,c.default)(n).length){var o=r._sessionStore.getAllEndToEndRooms();if(null!==o){var i=!0,s=!1,u=void 0;try{for(var l,d=(0,a.default)((0,c.default)(o));!(i=(l=d.next()).done);i=!0){var f=l.value;r._cryptoStore.storeEndToEndRoom(f,o[f],e)}}catch(e){s=!0,u=e}finally{try{!i&&d.return&&d.return()}finally{if(s)throw u}}}r._roomEncryption=o,t=!0}else r._roomEncryption=n})}));case 3:t&&this._sessionStore.removeAllEndToEndRooms();case 4:case"end":return e.stop()}},e,this)}));return e}()},{key:"getRoomEncryption",value:function(e){return this._roomEncryption[e]||null}},{key:"isRoomEncrypted",value:function(e){return Boolean(this.getRoomEncryption(e))}},{key:"setRoomEncryption",value:function(){function e(e,r){return t.apply(this,arguments)}var t=(0,l.coroutine)(i.default.mark(function e(t,r){var n=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._roomEncryption[t]=r,e.next=3,(0,l.resolve)(this._cryptoStore.doTxn("readwrite",[m.default.STORE_ROOMS],function(e){n._cryptoStore.storeEndToEndRoom(t,r,e)}));case 3:case"end":return e.stop()}},e,this)}));return e}()}]),e}();r.default=y},{"./store/indexeddb-crypto-store":21,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,"babel-runtime/regenerator":86,bluebird:89}],11:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=e.name+"[msg: "+e.message;return t&&(r+=", "+(0,a.default)(t).map(function(e){return e+": "+t[e]}).join(", ")),r+="]"}function i(e,t,r){b[e]=t,E[e]=r}Object.defineProperty(r,"__esModule",{value:!0}),r.UnknownDeviceError=r.DecryptionError=r.DecryptionAlgorithm=r.EncryptionAlgorithm=r.DECRYPTION_CLASSES=r.ENCRYPTION_CLASSES=void 0;var s=e("babel-runtime/core-js/object/keys"),a=n(s),u=e("babel-runtime/core-js/object/get-prototype-of"),c=n(u),l=e("babel-runtime/helpers/possibleConstructorReturn"),d=n(l),f=e("babel-runtime/helpers/inherits"),p=n(f),h=e("babel-runtime/helpers/classCallCheck"),v=n(h),m=e("babel-runtime/helpers/createClass"),y=n(m);r.registerAlgorithm=i;var _=e("bluebird"),g=n(_),b=r.ENCRYPTION_CLASSES={},E=r.DECRYPTION_CLASSES={},w=function(){function e(t){(0,v.default)(this,e),this._userId=t.userId,this._deviceId=t.deviceId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}return(0,y.default)(e,[{key:"onRoomMembership",value:function(e,t,r){}}]),e}();r.EncryptionAlgorithm=w;var S=function(){function e(t){(0,v.default)(this,e),this._userId=t.userId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}return(0,y.default)(e,[{key:"onRoomKeyEvent",value:function(e){}},{key:"importRoomKey",value:function(e){}},{key:"hasKeysForKeyRequest",value:function(e){return g.default.resolve(!1)}},{key:"shareKeysWithDevice",value:function(e){throw new Error("shareKeysWithDevice not supported for this DecryptionAlgorithm")}}]),e}();r.DecryptionAlgorithm=S;var k=function(e){function t(e,r,n){(0,v.default)(this,t);var i=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,r));return i.code=e,i.name="DecryptionError",i.detailedString=o(i,n),i}return(0,p.default)(t,e),t}(Error);r.DecryptionError=k;r.UnknownDeviceError=function(e){function t(e,r){(0,v.default)(this,t);var n=(0,d.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e));return n.name="UnknownDeviceError",n.devices=r,n}return(0,p.default)(t,e),t}(Error)},{"babel-runtime/core-js/object/get-prototype-of":68,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,"babel-runtime/helpers/inherits":82,"babel-runtime/helpers/possibleConstructorReturn":83,bluebird:89}],12:[function(e,t,r){"use strict";var n=e("./base");e("./olm"),e("./megolm"),t.exports.ENCRYPTION_CLASSES=n.ENCRYPTION_CLASSES,t.exports.DECRYPTION_CLASSES=n.DECRYPTION_CLASSES,t.exports.DecryptionError=n.DecryptionError},{"./base":11,"./megolm":13,"./olm":14}],13:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){this.sessionId=e,this.useCount=0,this.creationTime=(new Date).getTime(),this.sharedWithDevices={}}function i(e){k.EncryptionAlgorithm.call(this,e),this._setupPromise=b.default.resolve(),this._outboundSessions={},this._sessionRotationPeriodMsgs=100,this._sessionRotationPeriodMs=6048e5,void 0!==e.config.rotation_period_ms&&(this._sessionRotationPeriodMs=e.config.rotation_period_ms),void 0!==e.config.rotation_period_msgs&&(this._sessionRotationPeriodMsgs=e.config.rotation_period_msgs)}function s(e){k.DecryptionAlgorithm.call(this,e),this._pendingEvents={},this.olmlib=S}var a=e("babel-runtime/core-js/set"),u=n(a),c=e("babel-runtime/core-js/json/stringify"),l=n(c),d=e("babel-runtime/helpers/defineProperty"),f=n(d),p=e("babel-runtime/core-js/object/keys"),h=n(p),v=e("babel-runtime/core-js/get-iterator"),m=n(v),y=e("babel-runtime/regenerator"),_=n(y),g=e("bluebird"),b=n(g),E=e("../../logger"),w=e("../../utils"),S=e("../olmlib"),k=e("./base");o.prototype.needsRotation=function(e,t){var r=(new Date).getTime()-this.creationTime;return(this.useCount>=e||r>=t)&&(E.log("Rotating megolm session after "+this.useCount+" messages, "+r+"ms"),!0)},o.prototype.markSharedWithDevice=function(e,t,r){this.sharedWithDevices[e]||(this.sharedWithDevices[e]={}),this.sharedWithDevices[e][t]=r},o.prototype.sharedWithTooManyDevices=function(e){for(var t in this.sharedWithDevices)if(this.sharedWithDevices.hasOwnProperty(t)){if(!e.hasOwnProperty(t))return E.log("Starting new session because we shared with "+t),!0;for(var r in this.sharedWithDevices[t])if(this.sharedWithDevices[t].hasOwnProperty(r)&&!e[t].hasOwnProperty(r))return E.log("Starting new session because we shared with "+t+":"+r),!0}},w.inherits(i,k.EncryptionAlgorithm),i.prototype._ensureOutboundSession=function(e){function t(){return o}var r=function(){var t=(0,g.coroutine)(_.default.mark(function t(r){var i,s,a,u,c,l;return _.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(o=r,o&&o.needsRotation(n._sessionRotationPeriodMsgs,n._sessionRotationPeriodMs)&&(E.log("Starting new megolm session because we need to rotate."),o=null),o&&o.sharedWithTooManyDevices(e)&&(o=null),o){t.next=9;break}return E.log("Starting new megolm session for room "+n._roomId),t.next=7,(0,g.resolve)(n._prepareNewSession());case 7:o=t.sent,n._outboundSessions[o.sessionId]=o;case 9:i={},t.t0=_.default.keys(e);case 11:if((t.t1=t.t0()).done){t.next=30;break}if(s=t.t1.value,e.hasOwnProperty(s)){t.next=15;break}return t.abrupt("continue",11);case 15:a=e[s],t.t2=_.default.keys(a);case 17:if((t.t3=t.t2()).done){t.next=28;break}if(u=t.t3.value,a.hasOwnProperty(u)){t.next=21;break}return t.abrupt("continue",17);case 21:if(c=a[u],(l=c.getIdentityKey())!=n._olmDevice.deviceCurve25519Key){t.next=25;break}return t.abrupt("continue",17);case 25:o.sharedWithDevices[s]&&void 0!==o.sharedWithDevices[s][u]||(i[s]=i[s]||[],i[s].push(c)),t.next=17;break;case 28:t.next=11;break;case 30:return t.abrupt("return",n._shareKeyWithDevices(o,i));case 31:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),n=this,o=void 0,i=this._setupPromise.then(r);return this._setupPromise=i.then(t,t),i.then(t)},i.prototype._prepareNewSession=(0,g.coroutine)(_.default.mark(function e(){var t,r;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._olmDevice.createOutboundGroupSession(),r=this._olmDevice.getOutboundGroupSessionKey(t),e.next=4,(0,g.resolve)(this._olmDevice.addInboundGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,r.key,{ed25519:this._olmDevice.deviceEd25519Key}));case 4:return this._crypto.backupInfo&&this._crypto.backupGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,r.key).catch(function(e){console.log("Failed to back up group session",e)}),e.abrupt("return",new o(t));case 6:case"end":return e.stop()}},e,this)})),i.prototype._splitUserDeviceMap=function(e,t,r,n){var o=[],i=0,s=0,a=!0,u=!1,c=void 0;try{for(var l,d=(0,m.default)((0,h.default)(n));!(a=(l=d.next()).done);a=!0)for(var f=l.value,p=n[f],v=r[f],y=0;y<p.length;y++){var _=p[y],g=_.deviceId,b=v[g];b.sessionId?(E.log("share keys with device "+f+":"+g),s>20&&(s=0,i++),o[i]||(o[i]=[]),o[i].push({userId:f,deviceInfo:_}),s++):e.markSharedWithDevice(f,g,t)}}catch(e){u=!0,c=e}finally{try{!a&&d.return&&d.return()}finally{if(u)throw c}}return o},i.prototype._encryptAndSendKeysToDevices=function(e,t,r,n){for(var o=this,i={algorithm:S.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},s={},a=[],u=0;u<r.length;u++){var c=r[u],l=c.userId,d=c.deviceInfo,f=d.deviceId;s[l]||(s[l]={}),s[l][f]=i,a.push(S.encryptMessageForDevice(i.ciphertext,this._userId,this._deviceId,this._olmDevice,l,d,n))}return b.default.all(a).then(function(){return o._baseApis.sendToDevice("m.room.encrypted",s).then(function(){var r=!0,n=!1,o=void 0;try{for(var i,a=(0,m.default)((0,h.default)(s));!(r=(i=a.next()).done);r=!0){var u=i.value,c=!0,l=!1,d=void 0;try{for(var f,p=(0,m.default)((0,h.default)(s[u]));!(c=(f=p.next()).done);c=!0){var v=f.value;e.markSharedWithDevice(u,v,t)}}catch(e){l=!0,d=e}finally{try{!c&&p.return&&p.return()}finally{if(l)throw d}}}}catch(e){n=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}})})},i.prototype.reshareKeyWithDevice=function(){var e=(0,g.coroutine)(_.default.mark(function e(t,r,n,o){var i,s,a,u,c;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this._outboundSessions[r]){e.next=4;break}return E.debug("Session ID "+r+" not found: not re-sharing keys"),e.abrupt("return");case 4:if(void 0!==i.sharedWithDevices[n]){e.next=7;break}return E.debug("Session ID "+r+" never shared with user "+n),e.abrupt("return");case 7:if(void 0!==(s=i.sharedWithDevices[n][o.deviceId])){e.next=11;break}return E.debug("Session ID "+r+" never shared with device "+n+":"+o.deviceId),e.abrupt("return");case 11:return e.next=13,(0,g.resolve)(this._olmDevice.getInboundGroupSessionKey(this._roomId,t,r,s));case 13:if(a=e.sent){e.next=17;break}return E.warn("No outbound session key found for "+r+": not re-sharing keys"),e.abrupt("return");case 17:return e.next=19,(0,g.resolve)(S.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,f.default)({},n,(0,f.default)({},o.deviceId,o))));case 19:return u={type:"m.forwarded_room_key",content:{algorithm:S.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:r,session_key:a.key,chain_index:a.chain_index,sender_key:t,sender_claimed_ed25519_key:a.sender_claimed_ed25519_key,forwarding_curve25519_key_chain:a.forwarding_curve25519_key_chain}},c={algorithm:S.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=23,(0,g.resolve)(S.encryptMessageForDevice(c.ciphertext,this._userId,this._deviceId,this._olmDevice,n,o,u));case 23:return e.next=25,(0,g.resolve)(this._baseApis.sendToDevice("m.room.encrypted",(0,f.default)({},n,(0,f.default)({},o.deviceId,c))));case 25:E.debug("Re-shared key for session "+r+" with "+n+":"+o.deviceId);case 26:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}(),i.prototype._shareKeyWithDevices=function(){var e=(0,g.coroutine)(_.default.mark(function e(t,r){var n,o,i,s,a;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this._olmDevice.getOutboundGroupSessionKey(t.sessionId),o={type:"m.room_key",content:{algorithm:S.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:t.sessionId,session_key:n.key,chain_index:n.chain_index}},e.next=4,(0,g.resolve)(S.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,r));case 4:i=e.sent,s=this._splitUserDeviceMap(t,n.chain_index,i,r),a=0;case 7:if(!(a<s.length)){e.next=21;break}return e.prev=8,e.next=11,(0,g.resolve)(this._encryptAndSendKeysToDevices(t,n.chain_index,s[a],o));case 11:E.log("Completed megolm keyshare in "+this._roomId+" (slice "+(a+1)+"/"+s.length+")"),e.next=18;break;case 14:throw e.prev=14,e.t0=e.catch(8),E.log("megolm keyshare in "+this._roomId+" (slice "+(a+1)+"/"+s.length+") failed"),e.t0;case 18:a++,e.next=7;break;case 21:case"end":return e.stop()}},e,this,[[8,14]])}));return function(t,r){return e.apply(this,arguments)}}(),i.prototype.encryptMessage=function(e,t,r){var n=this;return E.log("Starting to encrypt event for "+this._roomId),this._getDevicesInRoom(e).then(function(e){return n._checkForUnknownDevices(e),n._ensureOutboundSession(e)}).then(function(e){var o={room_id:n._roomId,type:t,content:r},i=n._olmDevice.encryptGroupMessage(e.sessionId,(0,l.default)(o)),s={algorithm:S.MEGOLM_ALGORITHM,sender_key:n._olmDevice.deviceCurve25519Key,ciphertext:i,session_id:e.sessionId,device_id:n._deviceId};return e.useCount++,s})},i.prototype.forceDiscardSession=function(){this._setupPromise=this._setupPromise.then(function(){return null})},i.prototype._checkForUnknownDevices=function(e){var t={};if((0,h.default)(e).forEach(function(r){(0,h.default)(e[r]).forEach(function(n){var o=e[r][n];o.isUnverified()&&!o.isKnown()&&(t[r]||(t[r]={}),t[r][n]=o)})}),(0,h.default)(t).length)throw new k.UnknownDeviceError("This room contains unknown devices which have not been verified. We strongly recommend you verify them before continuing.",t)},i.prototype._getDevicesInRoom=function(){var e=(0,g.coroutine)(_.default.mark(function e(t){var r,n,o,i,s,a,u;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.resolve)(t.getEncryptionTargetMembers());case 2:return r=e.sent,n=w.map(r,function(e){return e.userId}),o=this._crypto.getGlobalBlacklistUnverifiedDevices(),"boolean"==typeof t.getBlacklistUnverifiedDevices()&&(o=t.getBlacklistUnverifiedDevices()),e.next=8,(0,g.resolve)(this._crypto.downloadKeys(n,!1));case 8:i=e.sent,e.t0=_.default.keys(i);case 10:if((e.t1=e.t0()).done){e.next=25;break}if(s=e.t1.value,i.hasOwnProperty(s)){e.next=14;break}return e.abrupt("continue",10);case 14:a=i[s],e.t2=_.default.keys(a);case 16:if((e.t3=e.t2()).done){e.next=23;break}if(u=e.t3.value,a.hasOwnProperty(u)){e.next=20;break}return e.abrupt("continue",16);case 20:(a[u].isBlocked()||a[u].isUnverified()&&o)&&delete a[u],e.next=16;break;case 23:e.next=10;break;case 25:return e.abrupt("return",i);case 26:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),w.inherits(s,k.DecryptionAlgorithm),s.prototype.decryptEvent=function(){var e=(0,g.coroutine)(_.default.mark(function e(t){var r,n,o,i;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getWireContent(),r.sender_key&&r.session_id&&r.ciphertext){e.next=3;break}throw new k.DecryptionError("MEGOLM_MISSING_FIELDS","Missing fields in input");case 3:return this._addEventToPendingList(t),n=void 0,e.prev=5,e.next=8,(0,g.resolve)(this._olmDevice.decryptGroupMessage(t.getRoomId(),r.sender_key,r.session_id,r.ciphertext,t.getId(),t.getTs()));case 8:n=e.sent,e.next=16;break;case 11:throw e.prev=11,e.t0=e.catch(5),o="OLM_DECRYPT_GROUP_MESSAGE_ERROR","OLM.UNKNOWN_MESSAGE_INDEX"===e.t0.message&&(this._requestKeysForEvent(t),o="OLM_UNKNOWN_MESSAGE_INDEX"),new k.DecryptionError(o,e.t0.toString(),{session:r.sender_key+"|"+r.session_id});case 16:if(null!==n){e.next=19;break}throw this._requestKeysForEvent(t),new k.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID","The sender's device has not sent us the keys for this message.",{session:r.sender_key+"|"+r.session_id});case 19:if(this._removeEventFromPendingList(t),i=JSON.parse(n.result),i.room_id===t.getRoomId()){e.next=23;break}throw new k.DecryptionError("MEGOLM_BAD_ROOM","Message intended for room "+i.room_id);case 23:return e.abrupt("return",{clearEvent:i,senderCurve25519Key:n.senderKey,claimedEd25519Key:n.keysClaimed.ed25519,forwardingCurve25519KeyChain:n.forwardingCurve25519KeyChain});case 24:case"end":return e.stop()}},e,this,[[5,11]])}));return function(t){return e.apply(this,arguments)}}(),s.prototype._requestKeysForEvent=function(e){var t=e.getSender(),r=e.getWireContent(),n=[{userId:this._userId,deviceId:"*"}];t!=this._userId&&n.push({userId:t,deviceId:r.device_id}),this._crypto.requestRoomKey({room_id:e.getRoomId(),algorithm:r.algorithm,sender_key:r.sender_key,session_id:r.session_id},n)},s.prototype._addEventToPendingList=function(e){var t=e.getWireContent(),r=t.sender_key+"|"+t.session_id;this._pendingEvents[r]||(this._pendingEvents[r]=new u.default),this._pendingEvents[r].add(e)},s.prototype._removeEventFromPendingList=function(e){var t=e.getWireContent(),r=t.sender_key+"|"+t.session_id;this._pendingEvents[r]&&(this._pendingEvents[r].delete(e),0===this._pendingEvents[r].size&&delete this._pendingEvents[r])},s.prototype.onRoomKeyEvent=function(e){var t=this,r=e.getContent(),n=r.session_id,o=e.getSenderKey(),i=[],s=!1,a=void 0;if(!r.room_id||!n||!r.session_key)return void E.error("key event is missing fields");if(!o)return void E.error("key event has no sender key (not encrypted?)");if("m.forwarded_room_key"==e.getType()){if(s=!0,i=r.forwarding_curve25519_key_chain,w.isArray(i)||(i=[]),i=i.slice(),i.push(o),!(o=r.sender_key))return void E.error("forwarded_room_key event is missing sender_key field");var u=r.sender_claimed_ed25519_key;if(!u)return void E.error("forwarded_room_key_event is missing sender_claimed_ed25519_key field");a={ed25519:u}}else a=e.getKeysClaimed();return E.log("Adding key for megolm session "+o+"|"+n),this._olmDevice.addInboundGroupSession(r.room_id,o,i,n,r.session_key,a,s).then(function(){t._crypto.cancelRoomKeyRequest({algorithm:r.algorithm,room_id:r.room_id,session_id:r.session_id,sender_key:o}),t._retryDecryption(o,n)}).then(function(){t._crypto.backupInfo&&t._crypto.backupGroupSession(r.room_id,o,i,r.session_id,r.session_key,a,s).catch(function(e){console.log("Failed to back up group session",e)})}).catch(function(e){E.error("Error handling m.room_key_event: "+e)})},s.prototype.hasKeysForKeyRequest=function(e){var t=e.requestBody;return this._olmDevice.hasInboundSessionKeys(t.room_id,t.sender_key,t.session_id)},s.prototype.shareKeysWithDevice=function(e){var t=this,r=e.userId,n=e.deviceId,o=this._crypto.getStoredDevice(r,n),i=e.requestBody;this.olmlib.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,f.default)({},r,[o])).then(function(e){return e[r][n].sessionId?(E.log("sharing keys for session "+i.sender_key+"|"+i.session_id+" with device "+r+":"+n),t._buildKeyForwardingMessage(i.room_id,i.sender_key,i.session_id)):null}).then(function(e){var i={algorithm:S.OLM_ALGORITHM,sender_key:t._olmDevice.deviceCurve25519Key,ciphertext:{}};return t.olmlib.encryptMessageForDevice(i.ciphertext,t._userId,t._deviceId,t._olmDevice,r,o,e).then(function(){var e=(0,f.default)({},r,(0,f.default)({},n,i));return t._baseApis.sendToDevice("m.room.encrypted",e)})}).done()},s.prototype._buildKeyForwardingMessage=function(){var e=(0,g.coroutine)(_.default.mark(function e(t,r,n){var o;return _.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.resolve)(this._olmDevice.getInboundGroupSessionKey(t,r,n));case 2:return o=e.sent,e.abrupt("return",{type:"m.forwarded_room_key",content:{algorithm:S.MEGOLM_ALGORITHM,room_id:t,sender_key:r,sender_claimed_ed25519_key:o.sender_claimed_ed25519_key,session_id:n,session_key:o.key,chain_index:o.chain_index,forwarding_curve25519_key_chain:o.forwarding_curve25519_key_chain}});case 4:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),s.prototype.importRoomKey=function(e){var t=this;return this._olmDevice.addInboundGroupSession(e.room_id,e.sender_key,e.forwarding_curve25519_key_chain,e.session_id,e.session_key,e.sender_claimed_keys,!0).then(function(){t._crypto.backupInfo&&t._crypto.backupGroupSession(e.room_id,e.sender_key,e.forwarding_curve25519_key_chain,e.session_id,e.session_key,e.sender_claimed_keys,!0).catch(function(e){console.log("Failed to back up group session",e)}),t._retryDecryption(e.sender_key,e.session_id)})},s.prototype._retryDecryption=function(e,t){var r=e+"|"+t,n=this._pendingEvents[r];if(n){delete this._pendingEvents[r];var o=!0,i=!1,s=void 0;try{for(var a,u=(0,m.default)(n);!(o=(a=u.next()).done);o=!0){a.value.attemptDecryption(this._crypto)}}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}}},k.registerAlgorithm(S.MEGOLM_ALGORITHM,i,s)},{"../../logger":29,"../../utils":55,"../olmlib":18,"./base":11,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/keys":69,"babel-runtime/core-js/set":76,"babel-runtime/helpers/defineProperty":81,"babel-runtime/regenerator":86,bluebird:89}],14:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){y.EncryptionAlgorithm.call(this,e),this._sessionPrepared=!1,this._prepPromise=null}function i(e){y.DecryptionAlgorithm.call(this,e)}var s=e("babel-runtime/core-js/json/stringify"),a=n(s),u=e("babel-runtime/regenerator"),c=n(u),l=e("bluebird"),d=n(l),f=e("../../logger"),p=e("../../utils"),h=e("../olmlib"),v=e("../deviceinfo"),m=v.DeviceVerification,y=e("./base");p.inherits(o,y.EncryptionAlgorithm),o.prototype._ensureSession=function(e){if(this._prepPromise)return this._prepPromise;if(this._sessionPrepared)return d.default.resolve();var t=this;return this._prepPromise=t._crypto.downloadKeys(e).then(function(r){return t._crypto.ensureOlmSessionsForUsers(e)}).then(function(){t._sessionPrepared=!0}).finally(function(){t._prepPromise=null}),this._prepPromise},o.prototype.encryptMessage=function(){var e=(0,l.coroutine)(c.default.mark(function e(t,r,n){var o,i,s,a,u,f,v,y,_,g,b,E;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,l.resolve)(t.getEncryptionTargetMembers());case 2:return o=e.sent,i=p.map(o,function(e){return e.userId}),s=this,e.next=7,(0,l.resolve)(this._ensureSession(i));case 7:a={room_id:t.roomId,type:r,content:n},u={algorithm:h.OLM_ALGORITHM,sender_key:s._olmDevice.deviceCurve25519Key,ciphertext:{}},f=[],v=0;case 11:if(!(v<i.length)){e.next=29;break}y=i[v],_=s._crypto.getStoredDevicesForUser(y),g=0;case 15:if(!(g<_.length)){e.next=26;break}if(b=_[g],(E=b.getIdentityKey())!=s._olmDevice.deviceCurve25519Key){e.next=20;break}return e.abrupt("continue",23);case 20:if(b.verified!=m.BLOCKED){e.next=22;break}return e.abrupt("continue",23);case 22:f.push(h.encryptMessageForDevice(u.ciphertext,s._userId,s._deviceId,s._olmDevice,y,b,a));case 23:++g,e.next=15;break;case 26:++v,e.next=11;break;case 29:return e.next=31,(0,l.resolve)(d.default.all(f).return(u));case 31:return e.abrupt("return",e.sent);case 32:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),p.inherits(i,y.DecryptionAlgorithm),i.prototype.decryptEvent=function(){var e=(0,l.coroutine)(c.default.mark(function e(t){var r,n,o,i,s,a,u;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getWireContent(),n=r.sender_key,o=r.ciphertext){e.next=5;break}throw new y.DecryptionError("OLM_MISSING_CIPHERTEXT","Missing ciphertext");case 5:if(this._olmDevice.deviceCurve25519Key in o){e.next=7;break}throw new y.DecryptionError("OLM_NOT_INCLUDED_IN_RECIPIENTS","Not included in recipients");case 7:return i=o[this._olmDevice.deviceCurve25519Key],s=void 0,e.prev=9,e.next=12,(0,l.resolve)(this._decryptMessage(n,i));case 12:s=e.sent,e.next=18;break;case 15:throw e.prev=15,e.t0=e.catch(9),new y.DecryptionError("OLM_BAD_ENCRYPTED_MESSAGE","Bad Encrypted Message",{sender:n,err:e.t0});case 18:if(a=JSON.parse(s),a.recipient==this._userId){e.next=21;break}throw new y.DecryptionError("OLM_BAD_RECIPIENT","Message was intented for "+a.recipient);case 21:if(a.recipient_keys.ed25519==this._olmDevice.deviceEd25519Key){e.next=23;break}throw new y.DecryptionError("OLM_BAD_RECIPIENT_KEY","Message not intended for this device",{intended:a.recipient_keys.ed25519,our_key:this._olmDevice.deviceEd25519Key});case 23:if(a.sender==t.getSender()){e.next=25;break}throw new y.DecryptionError("OLM_FORWARDED_MESSAGE","Message forwarded from "+a.sender,{reported_sender:t.getSender()});case 25:if(a.room_id===t.getRoomId()){e.next=27;break}throw new y.DecryptionError("OLM_BAD_ROOM","Message intended for room "+a.room_id,{reported_room:t.room_id});case 27:return u=a.keys||{},e.abrupt("return",{clearEvent:a,senderCurve25519Key:n,claimedEd25519Key:u.ed25519||null});case 29:case"end":return e.stop()}},e,this,[[9,15]])}));return function(t){return e.apply(this,arguments)}}(),i.prototype._decryptMessage=function(){var e=(0,l.coroutine)(c.default.mark(function e(t,r){var n,o,i,s,u,d,p;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,l.resolve)(this._olmDevice.getSessionIdsForDevice(t));case 2:n=e.sent,o={},i=0;case 5:if(!(i<n.length)){e.next=26;break}return s=n[i],e.prev=7,e.next=10,(0,l.resolve)(this._olmDevice.decryptMessage(t,s,r.type,r.body));case 10:return u=e.sent,f.log("Decrypted Olm message from "+t+" with session "+s),e.abrupt("return",u);case 15:return e.prev=15,e.t0=e.catch(7),e.next=19,(0,l.resolve)(this._olmDevice.matchesSession(t,s,r.type,r.body));case 19:if(!(d=e.sent)){e.next=22;break}throw new Error("Error decrypting prekey message with existing session id "+s+": "+e.t0.message);case 22:o[s]=e.t0.message;case 23:i++,e.next=5;break;case 26:if(0===r.type){e.next=30;break}if(0!==n.length){e.next=29;break}throw new Error("No existing sessions");case 29:throw new Error("Error decrypting non-prekey message with existing sessions: "+(0,a.default)(o));case 30:return p=void 0,e.prev=31,e.next=34,(0,l.resolve)(this._olmDevice.createInboundSession(t,r.type,r.body));case 34:p=e.sent,e.next=41;break;case 37:throw e.prev=37,e.t1=e.catch(31),o["(new)"]=e.t1.message,new Error("Error decrypting prekey message: "+(0,a.default)(o));case 41:return f.log("created new inbound Olm session ID "+p.session_id+" with "+t),e.abrupt("return",p.payload);case 43:case"end":return e.stop()}},e,this,[[7,15],[31,37]])}));return function(t,r){return e.apply(this,arguments)}}(),y.registerAlgorithm(h.OLM_ALGORITHM,o,i)},{"../../logger":29,"../../utils":55,"../deviceinfo":16,"../olmlib":18,"./base":11,"babel-runtime/core-js/json/stringify":60,"babel-runtime/regenerator":86,bluebird:89}],15:[function(e,t,r){(function(t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.keyForNewBackup=r.keyForExistingBackup=void 0;var n=e("babel-runtime/regenerator"),o=function(e){return e&&e.__esModule?e:{default:e}}(n),i=e("bluebird"),s=(r.keyForExistingBackup=function(){var e=(0, +i.coroutine)(o.default.mark(function e(r,n){var a;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.Olm){e.next=2;break}throw new Error("Olm is not available");case 2:if(a=r.auth_data,a.private_key_salt&&a.private_key_iterations){e.next=5;break}throw new Error("Salt and/or iterations not found: this backup cannot be restored with a passphrase");case 5:return e.next=7,(0,i.resolve)(s(n,r.auth_data.private_key_salt,r.auth_data.private_key_iterations));case 7:return e.abrupt("return",e.sent);case 8:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),r.keyForNewBackup=function(){var e=(0,i.coroutine)(o.default.mark(function e(r){var n,c;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.Olm){e.next=2;break}throw new Error("Olm is not available");case 2:return n=(0,a.randomString)(32),e.next=5,(0,i.resolve)(s(r,n,u));case 5:return c=e.sent,e.abrupt("return",{key:c,salt:n,iterations:u});case 7:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),function(){var e=(0,i.coroutine)(o.default.mark(function e(r,n,s){var a,u,c,l;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.crypto.subtle,u=t.TextEncoder,a&&u){e.next=4;break}throw new Error("Password-based backup is not avaiable on this platform");case 4:return e.next=6,(0,i.resolve)(a.importKey("raw",(new u).encode(r),{name:"PBKDF2"},!1,["deriveBits"]));case 6:return c=e.sent,e.next=9,(0,i.resolve)(a.deriveBits({name:"PBKDF2",salt:(new u).encode(n),iterations:s,hash:"SHA-512"},c,8*t.Olm.PRIVATE_KEY_LENGTH));case 9:return l=e.sent,e.abrupt("return",new Uint8Array(l));case 11:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()),a=e("../randomstring"),u=5e5}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../randomstring":43,"babel-runtime/regenerator":86,bluebird:89}],16:[function(e,t,r){"use strict";function n(e){Object.defineProperty(this,"deviceId",{enumerable:!0,value:e}),this.algorithms=[],this.keys={},this.verified=o.UNVERIFIED,this.known=!1,this.unsigned={}}n.fromStorage=function(e,t){var r=new n(t);for(var o in e)e.hasOwnProperty(o)&&(r[o]=e[o]);return r},n.prototype.toStorage=function(){return{algorithms:this.algorithms,keys:this.keys,verified:this.verified,known:this.known,unsigned:this.unsigned}},n.prototype.getFingerprint=function(){return this.keys["ed25519:"+this.deviceId]},n.prototype.getIdentityKey=function(){return this.keys["curve25519:"+this.deviceId]},n.prototype.getDisplayName=function(){return this.unsigned.device_display_name||null},n.prototype.isBlocked=function(){return this.verified==o.BLOCKED},n.prototype.isVerified=function(){return this.verified==o.VERIFIED},n.prototype.isUnverified=function(){return this.verified==o.UNVERIFIED},n.prototype.isKnown=function(){return 1==this.known},n.DeviceVerification={VERIFIED:1,UNVERIFIED:0,BLOCKED:-1};var o=n.DeviceVerification;t.exports=n},{}],17:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(){return Boolean(t.Olm)}function i(e,t,r,n,o,i,s){this._baseApis=e,this._sessionStore=t,this._userId=r,this._deviceId=n,this._clientStore=o,this._cryptoStore=i,this._roomList=s,this.backupInfo=null,this.backupKey=null,this._checkedForBackup=!1,this._sendingBackups=!1,this._olmDevice=new L(t,i),this._deviceList=new B(e,i,t,this._olmDevice),this._lastOneTimeKeyCheck=null,this._oneTimeKeyCheckInProgress=!1,this._roomEncryptors={},this._roomDecryptors={},this._supportedAlgorithms=P.keys(N.DECRYPTION_CLASSES),this._deviceKeys={},this._globalBlacklistUnverifiedDevices=!1,this._outgoingRoomKeyRequestManager=new j.default(e,this._deviceId,this._cryptoStore),this._receivedRoomKeyRequests=[],this._receivedRoomKeyRequestCancellations=[],this._processingRoomKeyRequests=!1,this._lazyLoadMembers=!1,this._roomDeviceTrackingState={},this._lastNewSessionForced={}}function s(e){function t(n){if(i<=n)return b.default.resolve();var o=Math.min(i-n,r);return e._olmDevice.generateOneTimeKeys(o).then(function(){return R(e)}).then(function(e){if(e.one_time_key_counts&&e.one_time_key_counts.signed_curve25519)return t(e.one_time_key_counts.signed_curve25519);throw new Error("response for uploading keys does not contain one_time_key_counts.signed_curve25519")})}var r=5;if(!e._oneTimeKeyCheckInProgress){var n=Date.now();if(!(null!==e._lastOneTimeKeyCheck&&n-e._lastOneTimeKeyCheck<6e4)){e._lastOneTimeKeyCheck=n;var o=e._olmDevice.maxNumberOfOneTimeKeys(),i=Math.floor(o/2);e._oneTimeKeyCheckInProgress=!0,b.default.resolve().then(function(){return void 0!==e._oneTimeKeyCount?b.default.resolve(e._oneTimeKeyCount):e._baseApis.uploadKeysRequest({},{device_id:e._deviceId}).then(function(e){return e.one_time_key_counts.signed_curve25519||0})}).then(function(e){return t(e)}).catch(function(e){M.error("Error uploading one-time keys",e.stack||e)}).finally(function(){e._oneTimeKeyCount=void 0,e._oneTimeKeyCheckInProgress=!1}).done()}}}Object.defineProperty(r,"__esModule",{value:!0});var a=e("babel-runtime/helpers/classCallCheck"),u=n(a),c=e("babel-runtime/helpers/defineProperty"),l=n(c),d=e("babel-runtime/core-js/set"),f=n(d),p=e("babel-runtime/core-js/object/assign"),h=n(p),v=e("babel-runtime/helpers/typeof"),m=n(v),y=e("babel-runtime/core-js/json/stringify"),_=n(y),g=e("bluebird"),b=n(g),E=e("babel-runtime/core-js/object/keys"),w=n(E),S=e("babel-runtime/core-js/get-iterator"),k=n(S),T=e("babel-runtime/regenerator"),x=n(T),R=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n,o,i,s,a;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.resolve)(t._olmDevice.getOneTimeKeys());case 2:r=e.sent,n={},o=[];for(i in r.curve25519)r.curve25519.hasOwnProperty(i)&&(s={key:r.curve25519[i]},n["signed_curve25519:"+i]=s,o.push(t._signObject(s)));return e.next=8,(0,g.resolve)(b.default.all(o));case 8:return e.next=10,(0,g.resolve)(t._baseApis.uploadKeysRequest({one_time_keys:n},{device_id:t._deviceId}));case 10:return a=e.sent,e.next=13,(0,g.resolve)(t._olmDevice.markKeysAsPublished());case 13:return e.abrupt("return",a);case 14:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();r.isCryptoAvailable=o,r.default=i;var I=e("events"),C=e("./OutgoingRoomKeyRequestManager"),j=n(C),O=e("./store/indexeddb-crypto-store"),A=n(O),D=e("another-json"),M=e("../logger"),P=e("../utils"),L=e("./OlmDevice"),U=e("./olmlib"),N=e("./algorithms"),F=e("./deviceinfo"),q=F.DeviceVerification,B=e("./DeviceList").default;P.inherits(i,I.EventEmitter),i.prototype.init=(0,g.coroutine)(x.default.mark(function e(){var r,n,o,i,s=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.resolve)(t.Olm.init());case 2:return r=Boolean(this._sessionStore.getEndToEndAccount()),n=void 0,e.next=6,(0,g.resolve)(this._cryptoStore.doTxn("readonly",[A.default.STORE_ACCOUNT],function(e){s._cryptoStore.getAccount(e,function(e){n=Boolean(e)})}));case 6:return r&&!n?this.emit("crypto.warning","CRYPTO_WARNING_ACCOUNT_MIGRATED"):r&&n&&this.emit("crypto.warning","CRYPTO_WARNING_OLD_VERSION_DETECTED"),e.next=9,(0,g.resolve)(this._olmDevice.init());case 9:return e.next=11,(0,g.resolve)(this._deviceList.load());case 11:this._deviceKeys["ed25519:"+this._deviceId]=this._olmDevice.deviceEd25519Key,this._deviceKeys["curve25519:"+this._deviceId]=this._olmDevice.deviceCurve25519Key,o=this._deviceList.getRawStoredDevicesForUser(this._userId),o||(o={}),o[this._deviceId]||(i={keys:this._deviceKeys,algorithms:this._supportedAlgorithms,verified:q.VERIFIED,known:!0},o[this._deviceId]=i,this._deviceList.storeDevicesForUser(this._userId,o),this._deviceList.saveIfDirty()),this._checkAndStartKeyBackup();case 17:case"end":return e.stop()}},e,this)})),i.prototype._checkAndStartKeyBackup=(0,g.coroutine)(x.default.mark(function e(){var t,r;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Checking key backup status..."),t=void 0,e.prev=2,e.next=5,(0,g.resolve)(this._baseApis.getKeyBackupVersion());case 5:t=e.sent,e.next=13;break;case 8:return e.prev=8,e.t0=e.catch(2),console.log("Error checking for active key backup",e.t0),e.t0.httpStatus/100==4&&(this._checkedForBackup=!0),e.abrupt("return");case 13:return this._checkedForBackup=!0,e.next=16,(0,g.resolve)(this.isKeyBackupTrusted(t));case 16:r=e.sent,r.usable&&!this.backupInfo?(console.log("Found usable key backup: enabling key backups"),this._baseApis.enableKeyBackup(t)):!r.usable&&this.backupInfo?(console.log("No usable key backup: disabling key backup"),this._baseApis.disableKeyBackup()):r.usable||this.backupInfo||console.log("No usable key backup: not enabling key backup");case 18:case"end":return e.stop()}},e,this,[[2,8]])})),i.prototype.checkKeyBackup=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._checkedForBackup=!1,e.next=3,(0,g.resolve)(this._checkAndStartKeyBackup());case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.isKeyBackupTrusted=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n,o,i,s,a,u,c,l,d;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r={usable:!1,sigs:[]},t&&t.algorithm&&t.auth_data&&t.auth_data.public_key&&t.auth_data.signatures){e.next=4;break}return console.log("Key backup is absent or missing required data"),e.abrupt("return",r);case 4:if((n=t.auth_data.signatures[this._userId])&&0!==n.length){e.next=8;break}return console.log("Ignoring key backup because it lacks any signatures from this user"),e.abrupt("return",r);case 8:o=!0,i=!1,s=void 0,e.prev=11,a=(0,k.default)((0,w.default)(n));case 13:if(o=(u=a.next()).done){e.next=34;break}if(c=u.value,l=this._deviceList.getStoredDevice(this._userId,c.split(":")[1])){e.next=19;break}return console.log("Ignoring signature from unknown key "+c),e.abrupt("continue",31);case 19:return d={device:l},e.prev=20,e.next=23,(0,g.resolve)(U.verifySignature(this._olmDevice,t.auth_data,this._userId,l.deviceId,l.getFingerprint()));case 23:d.valid=!0,e.next=30;break;case 26:e.prev=26,e.t0=e.catch(20),console.log("Bad signature from device "+l.deviceId,e.t0),d.valid=!1;case 30:r.sigs.push(d);case 31:o=!0,e.next=13;break;case 34:e.next=40;break;case 36:e.prev=36,e.t1=e.catch(11),i=!0,s=e.t1;case 40:e.prev=40,e.prev=41,!o&&a.return&&a.return();case 43:if(e.prev=43,!i){e.next=46;break}throw s;case 46:return e.finish(43);case 47:return e.finish(40);case 48:return r.usable=r.sigs.some(function(e){return e.valid&&e.device.isVerified()}),e.abrupt("return",r);case 50:case"end":return e.stop()}},e,this,[[11,36,40,48],[20,26],[41,,43,47]])}));return function(t){return e.apply(this,arguments)}}(),i.prototype.enableLazyLoading=function(){this._lazyLoadMembers=!0},i.prototype.registerEventHandlers=function(e){var t=this;e.on("RoomMember.membership",function(e,r,n){try{t._onRoomMembership(e,r,n)}catch(e){M.error("Error handling membership change:",e)}}),e.on("toDeviceEvent",function(e){t._onToDeviceEvent(e)})},i.prototype.start=function(){this._outgoingRoomKeyRequestManager.start()},i.prototype.stop=function(){this._outgoingRoomKeyRequestManager.stop(),this._deviceList.stop()},i.getOlmVersion=function(){return L.getOlmVersion()},i.prototype.getDeviceEd25519Key=function(){return this._olmDevice.deviceEd25519Key},i.prototype.setGlobalBlacklistUnverifiedDevices=function(e){this._globalBlacklistUnverifiedDevices=e},i.prototype.getGlobalBlacklistUnverifiedDevices=function(){return this._globalBlacklistUnverifiedDevices},i.prototype.uploadDeviceKeys=function(){var e=this,t=e._userId,r=e._deviceId,n={algorithms:e._supportedAlgorithms,device_id:r,keys:e._deviceKeys,user_id:t};return e._signObject(n).then(function(){e._baseApis.uploadKeysRequest({device_keys:n},{device_id:r})})},i.prototype.updateOneTimeKeyCount=function(e){if(!isFinite(e))throw new TypeError("Parameter for updateOneTimeKeyCount has to be a number");this._oneTimeKeyCount=e},i.prototype.downloadKeys=function(e,t){return this._deviceList.downloadKeys(e,t)},i.prototype.getStoredDevicesForUser=function(e){return this._deviceList.getStoredDevicesForUser(e)},i.prototype.getStoredDevice=function(e,t){return this._deviceList.getStoredDevice(e,t)},i.prototype.saveDeviceList=function(e){return this._deviceList.saveIfDirty(e)},i.prototype.setDeviceVerification=function(){var e=(0,g.method)(function(e,t,r,n,o){var i=this._deviceList.getRawStoredDevicesForUser(e);if(!i||!i[t])throw new Error("Unknown device "+e+":"+t);var s=i[t],a=s.verified;r?a=q.VERIFIED:null!==r&&a==q.VERIFIED&&(a=q.UNVERIFIED),n?a=q.BLOCKED:null!==n&&a==q.BLOCKED&&(a=q.UNVERIFIED);var u=s.known;return null!==o&&void 0!==o&&(u=o),s.verified===a&&s.known===u||(s.verified=a,s.known=u,this._deviceList.storeDevicesForUser(e,i),this._deviceList.saveIfDirty()),F.fromStorage(s,t)});return function(t,r,n,o,i){return e.apply(this,arguments)}}(),i.prototype.getOlmSessionsForUser=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n,o,i,s,a;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=this.getStoredDevicesForUser(t)||[],n={},o=0;case 3:if(!(o<r.length)){e.next=13;break}return i=r[o],s=i.getIdentityKey(),e.next=8,(0,g.resolve)(this._olmDevice.getSessionInfoForDevice(s));case 8:a=e.sent,n[i.deviceId]={deviceIdKey:s,sessions:a};case 10:++o,e.next=3;break;case 13:return e.abrupt("return",n);case 14:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.getEventSenderDeviceInfo=function(e){var t=e.getSenderKey(),r=e.getWireContent().algorithm;if(!t||!r)return null;if(e.getForwardingCurve25519KeyChain().length>0)return null;var n=this._deviceList.getDeviceByIdentityKey(r,t);if(null===n)return null;var o=e.getClaimedEd25519Key();return o?o!==n.getFingerprint()?(M.warn("Event "+e.getId()+" claims ed25519 key "+o+"but sender device has key "+n.getFingerprint()),null):n:(M.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),null)},i.prototype.forceDiscardSession=function(e){var t=this._roomEncryptors[e];if(void 0===t)throw new Error("Room not encrypted");if(void 0===t.forceDiscardSession)throw new Error("Room encryption algorithm doesn't support session discarding");t.forceDiscardSession()},i.prototype.setRoomEncryption=function(){var e=(0,g.coroutine)(x.default.mark(function e(t,r,n){var o,i,s,a,u;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(o=this._roomList.getRoomEncryption(t))){e.next=5;break}if((0,_.default)(o)==(0,_.default)(r)){e.next=5;break}return M.error("Ignoring m.room.encryption event which requests a change of config in "+t),e.abrupt("return");case 5:if(!(i=this._roomEncryptors[t])){e.next=8;break}return e.abrupt("return");case 8:if(s=null,o||(s=this._roomList.setRoomEncryption(t,r)),a=N.ENCRYPTION_CLASSES[r.algorithm]){e.next=13;break}throw new Error("Unable to encrypt with "+r.algorithm);case 13:if(u=new a({userId:this._userId,deviceId:this._deviceId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:t,config:r}),this._roomEncryptors[t]=u,!s){e.next=18;break}return e.next=18,(0,g.resolve)(s);case 18:if(this._lazyLoadMembers){e.next=25;break}return M.log("Enabling encryption in "+t+"; starting to track device lists for all users therein"),e.next=22,(0,g.resolve)(this.trackRoomDevices(t));case 22:this.inhibitDeviceQuery||this._deviceList.refreshOutdatedDeviceLists(),e.next=26;break;case 25:M.log("Enabling encryption in "+t);case 26:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}(),i.prototype.trackRoomDevices=function(e){var t=this,r=function(){var r=(0,g.coroutine)(x.default.mark(function r(){var n,o;return x.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t._roomEncryptors[e]){r.next=2;break}return r.abrupt("return");case 2:if(n=t._clientStore.getRoom(e)){r.next=5;break}throw new Error("Unable to start tracking devices in unknown room "+e);case 5:return M.log("Starting to track devices for room "+e+" ..."),r.next=8,(0,g.resolve)(n.getEncryptionTargetMembers());case 8:o=r.sent,o.forEach(function(e){t._deviceList.startTrackingDeviceList(e.userId)});case 10:case"end":return r.stop()}},r,t)}));return function(){return r.apply(this,arguments)}}(),n=this._roomDeviceTrackingState[e];return n||(n=r(),this._roomDeviceTrackingState[e]=n),n},i.prototype.ensureOlmSessionsForUsers=function(e){for(var t={},r=0;r<e.length;++r){var n=e[r];t[n]=[];for(var o=this.getStoredDevicesForUser(n)||[],i=0;i<o.length;++i){var s=o[i];s.getIdentityKey()!=this._olmDevice.deviceCurve25519Key&&(s.verified!=q.BLOCKED&&t[n].push(s))}}return U.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,t)},i.prototype.exportRoomKeys=(0,g.coroutine)(x.default.mark(function e(){var t,r=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],e.next=3,(0,g.resolve)(this._cryptoStore.doTxn("readonly",[A.default.STORE_INBOUND_GROUP_SESSIONS],function(e){r._cryptoStore.getAllEndToEndInboundGroupSessions(e,function(e){if(null!==e){var n=r._olmDevice.exportInboundGroupSession(e.senderKey,e.sessionId,e.sessionData);delete n.first_known_index,n.algorithm=U.MEGOLM_ALGORITHM,t.push(n)}})}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}},e,this)})),i.prototype.importRoomKeys=function(e){var t=this;return b.default.map(e,function(e){return e.room_id&&e.algorithm?t._getRoomDecryptor(e.room_id,e.algorithm).importRoomKey(e):(M.warn("ignoring room key entry with missing fields",e),null)})},i.prototype._maybeSendKeyBackup=function(){var e=(0,g.coroutine)(x.default.mark(function e(t,r){var n,o=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===r&&(r=!0),this._sendingBackups){e.next=11;break}return this._sendingBackups=!0,e.prev=3,e.delegateYield(x.default.mark(function e(){var n,i,s,a,u,c,l,d,f,p,h,v,m,y,E;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===t&&(t=1e4*Math.random()),e.next=3,(0,g.resolve)(b.default.delay(t));case 3:n=0;case 4:if(o.backupKey){e.next=7;break}return e.abrupt("return",{v:void 0});case 7:return e.next=9,(0,g.resolve)(o._cryptoStore.getSessionsNeedingBackup(10));case 9:if(i=e.sent,i.length){e.next=12;break}return e.abrupt("return",{v:void 0});case 12:s={},a=!0,u=!1,c=void 0,e.prev=16,l=(0,k.default)(i);case 18:if(a=(d=l.next()).done){e.next=37;break}return f=d.value,p=f.sessionData.room_id,void 0===s[p]&&(s[p]={sessions:{}}),e.next=24,(0,g.resolve)(o._olmDevice.exportInboundGroupSession(f.senderKey,f.sessionId,f.sessionData));case 24:h=e.sent,h.algorithm=U.MEGOLM_ALGORITHM,delete h.session_id,delete h.room_id,v=h.first_known_index,delete h.first_known_index,m=o.backupKey.encrypt((0,_.default)(h)),y=(h.forwarding_curve25519_key_chain||[]).length,E=o._deviceList.getDeviceByIdentityKey(U.MEGOLM_ALGORITHM,f.senderKey),s[p].sessions[f.sessionId]={first_message_index:v,forwarded_count:y,is_verified:!(!E||!E.isVerified()),session_data:m};case 34:a=!0,e.next=18;break;case 37:e.next=43;break;case 39:e.prev=39,e.t0=e.catch(16),u=!0,c=e.t0;case 43:e.prev=43,e.prev=44,!a&&l.return&&l.return();case 46:if(e.prev=46,!u){e.next=49;break}throw c;case 49:return e.finish(46);case 50:return e.finish(43);case 51:return e.prev=51,e.next=54,(0,g.resolve)(o._baseApis.sendKeyBackup(void 0,void 0,o.backupInfo.version,{rooms:s}));case 54:return n=0,e.next=57,(0,g.resolve)(o._cryptoStore.unmarkSessionsNeedingBackup(i));case 57:e.next=65;break;case 59:if(e.prev=59,e.t1=e.catch(51),n++,console.log("send failed",e.t1),400!==e.t1.httpStatus&&403!==e.t1.httpStatus&&401!==e.t1.httpStatus&&r){e.next=65;break}throw e.t1;case 65:if(!n){e.next=68;break}return e.next=68,(0,g.resolve)(new b.default(function(e,t){setTimeout(e,1e3*Math.pow(2,Math.min(n-1,4)))}));case 68:e.next=4;break;case 70:case"end":return e.stop()}},e,o,[[16,39,43,51],[44,,46,50],[51,59]])})(),"t0",5);case 5:if(n=e.t0,"object"!==(void 0===n?"undefined":(0,m.default)(n))){e.next=8;break}return e.abrupt("return",n.v);case 8:return e.prev=8,this._sendingBackups=!1,e.finish(8);case 11:case"end":return e.stop()}},e,this,[[3,,8,11]])}));return function(t,r){return e.apply(this,arguments)}}(),i.prototype.backupGroupSession=function(){var e=(0,g.coroutine)(x.default.mark(function e(t,r,n,o,i,s,a){return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.backupInfo){e.next=2;break}throw new Error("Key backups are not enabled");case 2:return e.next=4,(0,g.resolve)(this._cryptoStore.markSessionsNeedingBackup([{senderKey:r,sessionId:o}]));case 4:return e.next=6,(0,g.resolve)(this._maybeSendKeyBackup());case 6:case"end":return e.stop()}},e,this)}));return function(t,r,n,o,i,s,a){return e.apply(this,arguments)}}(),i.prototype.backupAllGroupSessions=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.resolve)(this._cryptoStore.doTxn("readwrite",[A.default.STORE_INBOUND_GROUP_SESSIONS,A.default.STORE_BACKUP],function(e){r._cryptoStore.getAllEndToEndInboundGroupSessions(e,function(t){null!==t&&r._cryptoStore.markSessionsNeedingBackup([t],e)})}));case 2:return e.next=4,(0,g.resolve)(this._maybeSendKeyBackup(0,!1));case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.encryptEvent=function(){var e=(0,g.coroutine)(x.default.mark(function e(t,r){var n,o,i,s,a;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r){e.next=2;break}throw new Error("Cannot send encrypted messages in unknown rooms");case 2:if(n=t.getRoomId(),o=this._roomEncryptors[n]){e.next=6;break}throw new Error("Room was previously configured to use encryption, but is no longer. Perhaps the homeserver is hiding the configuration event.");case 6:return this._roomDeviceTrackingState[n]||this.trackRoomDevices(n),e.next=9,(0,g.resolve)(this._roomDeviceTrackingState[n]);case 9:return i=t.getContent(),s=i["m.relates_to"],s&&(i=(0,h.default)({},i),delete i["m.relates_to"]),e.next=14,(0,g.resolve)(o.encryptMessage(r,t.getType(),i));case 14:a=e.sent,s&&(a["m.relates_to"]=s),t.makeEncrypted("m.room.encrypted",a,this._olmDevice.deviceCurve25519Key,this._olmDevice.deviceEd25519Key);case 17:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),i.prototype.decryptEvent=function(e){if(e.isRedacted())return b.default.resolve({clearEvent:{room_id:e.getRoomId(),type:"m.room.message",content:{}}});var t=e.getWireContent();return this._getRoomDecryptor(e.getRoomId(),t.algorithm).decryptEvent(e)},i.prototype.handleDeviceListChanges=function(){var e=(0,g.coroutine)(x.default.mark(function e(t,r){return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.oldSyncToken){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,g.resolve)(this._evalDeviceListChanges(r));case 4:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),i.prototype.requestRoomKey=function(e,t){this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(e,t).catch(function(e){M.error("Error requesting key for event",e)}).done()},i.prototype.cancelRoomKeyRequest=function(e,t){this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(e,t).catch(function(e){M.warn("Error clearing pending room key requests",e)}).done()},i.prototype.onCryptoEvent=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.getRoomId(),n=t.getContent(),e.prev=2,e.next=5,(0,g.resolve)(this.setRoomEncryption(r,n,!0));case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),M.error("Error configuring encryption in room "+r+":",e.t0);case 10:case"end":return e.stop()}},e,this,[[2,7]])}));return function(t){return e.apply(this,arguments)}}(),i.prototype.onSyncWillProcess=function(){var e=(0,g.method)(function(e){e.oldSyncToken||(M.log("Initial sync performed - resetting device tracking state"),this._deviceList.stopTrackingAllDeviceLists(),this._roomDeviceTrackingState={})});return function(t){return e.apply(this,arguments)}}(),i.prototype.onSyncCompleted=function(){var e=(0,g.method)(function(e){var t=e.nextSyncToken;this._deviceList.setSyncToken(e.nextSyncToken),this._deviceList.saveIfDirty(),this._deviceList.lastKnownSyncToken=t,this._deviceList.refreshOutdatedDeviceLists(),e.catchingUp||(s(this),this._processReceivedRoomKeyRequests())});return function(t){return e.apply(this,arguments)}}(),i.prototype._evalDeviceListChanges=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.changed&&Array.isArray(t.changed)&&t.changed.forEach(function(e){n._deviceList.invalidateUserDeviceList(e)}),!(t.left&&Array.isArray(t.left)&&t.left.length)){e.next=8;break}return e.t0=f.default,e.next=5,(0,g.resolve)(this._getTrackedE2eUsers());case 5:e.t1=e.sent,r=new e.t0(e.t1),t.left.forEach(function(e){r.has(e)||n._deviceList.stopTrackingDeviceList(e)});case 8:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype._getTrackedE2eUsers=(0,g.coroutine)(x.default.mark(function e(){var t,r,n,o,i,s,a,u,c,l,d,f,p,h;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=[],r=!0,n=!1,o=void 0,e.prev=4,i=(0,k.default)(this._getTrackedE2eRooms());case 6:if(r=(s=i.next()).done){e.next=33;break}return a=s.value,e.next=10,(0,g.resolve)(a.getEncryptionTargetMembers());case 10:for(u=e.sent,c=!0,l=!1,d=void 0,e.prev=14,f=(0,k.default)(u);!(c=(p=f.next()).done);c=!0)h=p.value,t.push(h.userId);e.next=22;break;case 18:e.prev=18,e.t0=e.catch(14),l=!0,d=e.t0;case 22:e.prev=22,e.prev=23,!c&&f.return&&f.return();case 25:if(e.prev=25,!l){e.next=28;break}throw d;case 28:return e.finish(25);case 29:return e.finish(22);case 30:r=!0,e.next=6;break;case 33:e.next=39;break;case 35:e.prev=35,e.t1=e.catch(4),n=!0,o=e.t1;case 39:e.prev=39,e.prev=40,!r&&i.return&&i.return();case 42:if(e.prev=42,!n){e.next=45;break}throw o;case 45:return e.finish(42);case 46:return e.finish(39);case 47:return e.abrupt("return",t);case 48:case"end":return e.stop()}},e,this,[[4,35,39,47],[14,18,22,30],[23,,25,29],[40,,42,46]])})),i.prototype._getTrackedE2eRooms=function(){var e=this;return this._clientStore.getRooms().filter(function(t){if(!e._roomEncryptors[t.roomId])return!1;if(!e._roomDeviceTrackingState[t.roomId])return!1;var r=t.getMyMembership();return"join"===r||"invite"===r})},i.prototype._onToDeviceEvent=function(e){var t=this;try{"m.room_key"==e.getType()||"m.forwarded_room_key"==e.getType()?this._onRoomKeyEvent(e):"m.room_key_request"==e.getType()?this._onRoomKeyRequestEvent(e):"m.bad.encrypted"===e.getContent().msgtype?this._onToDeviceBadEncrypted(e):e.isBeingDecrypted()&&e.once("Event.decrypted",function(e){t._onToDeviceEvent(e)})}catch(e){M.error("Error handling toDeviceEvent:",e)}},i.prototype._onRoomKeyEvent=function(e){var t=e.getContent();if(!t.room_id||!t.algorithm)return void M.error("key event is missing fields");this._checkedForBackup||this._checkAndStartKeyBackup(),this._getRoomDecryptor(t.room_id,t.algorithm).onRoomKeyEvent(e)},i.prototype._onToDeviceBadEncrypted=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n,o,i,s,a,u,c,d,f,p,h,v,m,y;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getWireContent(),n=t.getSender(),o=r.algorithm,i=r.sender_key,void 0!==n&&void 0!==i&&void 0!==i){e.next=6;break}return e.abrupt("return");case 6:if(this._lastNewSessionForced[n]=this._lastNewSessionForced[n]||{},!((s=this._lastNewSessionForced[n][i]||0)+36e5>Date.now())){e.next=11;break}return M.debug("New session already forced with device "+n+":"+i+" at "+s+": not forcing another"),e.abrupt("return");case 11:if(a=this._deviceList.getDeviceByIdentityKey(o,i)){e.next=15;break}return M.info("Couldn't find device for identity key "+i+": not re-establishing session"),e.abrupt("return");case 15:return u={},u[n]=[a],e.next=19,(0,g.resolve)(U.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,u,!0));case 19:return this._lastNewSessionForced[n][i]=Date.now(),c={algorithm:U.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=23,(0,g.resolve)(U.encryptMessageForDevice(c.ciphertext,this._userId,this._deviceId,this._olmDevice,n,a,{type:"m.dummy"}));case 23:return e.next=25,(0,g.resolve)(this._baseApis.sendToDevice("m.room.encrypted",(0,l.default)({},n,(0,l.default)({},a.deviceId,c))));case 25:return e.next=27,(0,g.resolve)(this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(n,a.deviceId));case 27:for(d=e.sent,f=!0,p=!1,h=void 0,e.prev=31,v=(0,k.default)(d);!(f=(m=v.next()).done);f=!0)y=m.value,this.cancelRoomKeyRequest(y.requestBody,!0);e.next=39;break;case 35:e.prev=35,e.t0=e.catch(31),p=!0,h=e.t0;case 39:e.prev=39,e.prev=40,!f&&v.return&&v.return();case 42:if(e.prev=42,!p){e.next=45;break}throw h;case 45:return e.finish(42);case 46:return e.finish(39);case 47:case"end":return e.stop()}},e,this,[[31,35,39,47],[40,,42,46]])}));return function(t){return e.apply(this,arguments)}}(),i.prototype._onRoomMembership=function(e,t,r){var n=t.roomId,o=this._roomEncryptors[n];o&&(this._roomDeviceTrackingState[n]&&("join"==t.membership?(M.log("Join event for "+t.userId+" in "+n),this._deviceList.startTrackingDeviceList(t.userId)):"invite"==t.membership&&this._clientStore.getRoom(n).shouldEncryptForInvitedMembers()&&(M.log("Invite event for "+t.userId+" in "+n),this._deviceList.startTrackingDeviceList(t.userId))),o.onRoomMembership(e,t,r))},i.prototype._onRoomKeyRequestEvent=function(e){var t=e.getContent();if("request"===t.action){var r=new K(e);this._receivedRoomKeyRequests.push(r)}else if("request_cancellation"===t.action){var n=new G(e);this._receivedRoomKeyRequestCancellations.push(n)}},i.prototype._processReceivedRoomKeyRequests=(0,g.coroutine)(x.default.mark(function e(){var t,r,n=this;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._processingRoomKeyRequests){e.next=2;break}return e.abrupt("return");case 2:return this._processingRoomKeyRequests=!0,e.prev=3,t=this._receivedRoomKeyRequests,this._receivedRoomKeyRequests=[],r=this._receivedRoomKeyRequestCancellations,this._receivedRoomKeyRequestCancellations=[],e.next=10,(0,g.resolve)(b.default.map(t,function(e){return n._processReceivedRoomKeyRequest(e)}));case 10:return e.next=12,(0,g.resolve)(b.default.map(r,function(e){return n._processReceivedRoomKeyRequestCancellation(e)}));case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(3),M.error("Error processing room key requsts: "+e.t0);case 17:return e.prev=17,this._processingRoomKeyRequests=!1,e.finish(17);case 20:case"end":return e.stop()}},e,this,[[3,14,17,20]])})),i.prototype._processReceivedRoomKeyRequest=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r,n,o,i,s,a,u,c,l;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.userId,n=t.deviceId,o=t.requestBody,i=o.room_id,s=o.algorithm,M.log("m.room_key_request from "+r+":"+n+" for "+i+" / "+o.session_id+" (id "+t.requestId+")"),r===this._userId){e.next=24;break}if(this._roomEncryptors[i]){e.next=10;break}return M.debug("room key request for unencrypted room "+i),e.abrupt("return");case 10:if(a=this._roomEncryptors[i],u=this._deviceList.getStoredDevice(r,n)){e.next=15;break}return M.debug("Ignoring keyshare for unknown device "+r+":"+n),e.abrupt("return");case 15:return e.prev=15,e.next=18,(0,g.resolve)(a.reshareKeyWithDevice(o.sender_key,o.session_id,r,u));case 18:e.next=23;break;case 20:e.prev=20, +e.t0=e.catch(15),M.warn("Failed to re-share keys for session "+o.session_id+" with device "+r+":"+u.deviceId,e.t0);case 23:return e.abrupt("return");case 24:if(this._roomDecryptors[i]){e.next=27;break}return M.log("room key request for unencrypted room "+i),e.abrupt("return");case 27:if(c=this._roomDecryptors[i][s]){e.next=31;break}return M.log("room key request for unknown alg "+s+" in room "+i),e.abrupt("return");case 31:return e.next=33,(0,g.resolve)(c.hasKeysForKeyRequest(t));case 33:if(e.sent){e.next=36;break}return M.log("room key request for unknown session "+i+" / "+o.session_id),e.abrupt("return");case 36:if(t.share=function(){c.shareKeysWithDevice(t)},!(l=this._deviceList.getStoredDevice(r,n))||!l.isVerified()){e.next=42;break}return M.log("device is already verified: sharing keys"),t.share(),e.abrupt("return");case 42:this.emit("crypto.roomKeyRequest",t);case 43:case"end":return e.stop()}},e,this,[[15,20]])}));return function(t){return e.apply(this,arguments)}}(),i.prototype._processReceivedRoomKeyRequestCancellation=function(){var e=(0,g.method)(function(e){M.log("m.room_key_request cancellation for "+e.userId+":"+e.deviceId+" (id "+e.requestId+")"),this.emit("crypto.roomKeyRequestCancellation",e)});return function(t){return e.apply(this,arguments)}}(),i.prototype._getRoomDecryptor=function(e,t){var r=void 0,n=void 0;if((e=e||null)&&(r=this._roomDecryptors[e],r||(this._roomDecryptors[e]=r={}),n=r[t]))return n;var o=N.DECRYPTION_CLASSES[t];if(!o)throw new N.DecryptionError("UNKNOWN_ENCRYPTION_ALGORITHM",'Unknown encryption algorithm "'+t+'".');return n=new o({userId:this._userId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e}),r&&(r[t]=n),n},i.prototype._signObject=function(){var e=(0,g.coroutine)(x.default.mark(function e(t){var r;return x.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r={},r[this._userId]={},e.next=4,(0,g.resolve)(this._olmDevice.sign(D.stringify(t)));case 4:r[this._userId]["ed25519:"+this._deviceId]=e.sent,t.signatures=r;case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();var K=function e(t){(0,u.default)(this,e);var r=t.getContent();this.userId=t.getSender(),this.deviceId=r.requesting_device_id,this.requestId=r.request_id,this.requestBody=r.body||{},this.share=function(){throw new Error("don't know how to share keys for this request yet")}},G=function e(t){(0,u.default)(this,e);var r=t.getContent();this.userId=t.getSender(),this.deviceId=r.requesting_device_id,this.requestId=r.request_id}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":29,"../utils":55,"./DeviceList":7,"./OlmDevice":8,"./OutgoingRoomKeyRequestManager":9,"./algorithms":12,"./deviceinfo":16,"./olmlib":18,"./store/indexeddb-crypto-store":21,"another-json":57,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/assign":63,"babel-runtime/core-js/object/keys":69,"babel-runtime/core-js/set":76,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/defineProperty":81,"babel-runtime/helpers/typeof":85,"babel-runtime/regenerator":86,bluebird:89,events:234}],18:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var o=e("bluebird"),i=n(o),s=e("babel-runtime/regenerator"),a=n(s),u=e("babel-runtime/core-js/json/stringify"),c=n(u),l=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,n,i){var s,u;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=i.deviceId,e.prev=1,e.next=4,(0,o.resolve)(h(t,r,n,s,i.getFingerprint()));case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),f.error("Unable to verify signature on one-time key for device "+n+":"+s+":",e.t0),e.abrupt("return",null);case 10:return u=void 0,e.prev=11,e.next=14,(0,o.resolve)(t.createOutboundSession(i.getIdentityKey(),r.key));case 14:u=e.sent,e.next=21;break;case 17:return e.prev=17,e.t1=e.catch(11),f.error("Error starting session with device "+n+":"+s+": "+e.t1),e.abrupt("return",null);case 21:return f.log("Started new sessionid "+u+" for device "+n+":"+s),e.abrupt("return",u);case 23:case"end":return e.stop()}},e,this,[[1,6],[11,17]])}));return function(t,r,n,o){return e.apply(this,arguments)}}(),d=e("another-json"),f=e("../logger"),p=e("../utils");t.exports.OLM_ALGORITHM="m.olm.v1.curve25519-aes-sha2",t.exports.MEGOLM_ALGORITHM="m.megolm.v1.aes-sha2",t.exports.MEGOLM_BACKUP_ALGORITHM="m.megolm_backup.v1.curve25519-aes-sha2",t.exports.encryptMessageForDevice=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,n,i,s,u,l){var d,h,v;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return d=u.getIdentityKey(),e.next=3,(0,o.resolve)(i.getSessionIdForDevice(d));case 3:if(null!==(h=e.sent)){e.next=6;break}return e.abrupt("return");case 6:return f.log("Using sessionid "+h+" for device "+s+":"+u.deviceId),v={sender:r,sender_device:n,keys:{ed25519:i.deviceEd25519Key},recipient:s,recipient_keys:{ed25519:u.getFingerprint()}},p.extend(v,l),e.next=11,(0,o.resolve)(i.encryptMessage(d,h,(0,c.default)(v)));case 11:t[d]=e.sent;case 12:case"end":return e.stop()}},e,this)}));return function(t,r,n,o,i,s,a){return e.apply(this,arguments)}}(),t.exports.ensureOlmSessionsForDevices=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,n,s){var u,c,d,p,h,v,m,y,_,g,b,E,w,S,k,T;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:u=[],c={},e.t0=a.default.keys(n);case 3:if((e.t1=e.t0()).done){e.next=24;break}if(d=e.t1.value,n.hasOwnProperty(d)){e.next=7;break}return e.abrupt("continue",3);case 7:c[d]={},p=n[d],h=0;case 10:if(!(h<p.length)){e.next=22;break}return v=p[h],m=v.deviceId,y=v.getIdentityKey(),e.next=16,(0,o.resolve)(t.getSessionIdForDevice(y));case 16:_=e.sent,(null===_||s)&&u.push([d,m]),c[d][m]={device:v,sessionId:_};case 19:h++,e.next=10;break;case 22:e.next=3;break;case 24:if(0!==u.length){e.next=26;break}return e.abrupt("return",c);case 26:return g="signed_curve25519",e.next=29,(0,o.resolve)(r.claimOneTimeKeys(u,g));case 29:b=e.sent,E=b.one_time_keys||{},w=[],S=function(e){if(!n.hasOwnProperty(e))return"continue";for(var r=E[e]||{},o=n[e],i=0;i<o.length;i++){(function(n){var i=o[n],a=i.deviceId;if(c[e][a].sessionId&&!s)return"continue";var u=r[a]||{},d=null;for(var p in u)0===p.indexOf(g+":")&&(d=u[p]);if(!d)return f.warn("No one-time keys (alg="+g+") for device "+e+":"+a),"continue";w.push(l(t,d,e,i).then(function(t){c[e][a].sessionId=t}))})(i)}},e.t2=a.default.keys(n);case 34:if((e.t3=e.t2()).done){e.next=41;break}if(k=e.t3.value,"continue"!==(T=S(k))){e.next=39;break}return e.abrupt("continue",34);case 39:e.next=34;break;case 41:return e.next=43,(0,o.resolve)(i.default.all(w));case 43:return e.abrupt("return",c);case 44:case"end":return e.stop()}},e,this)}));return function(t,r,n,o){return e.apply(this,arguments)}}();var h=t.exports.verifySignature=function(){var e=(0,o.method)(function(e,t,r,n,o){var i="ed25519:"+n,s=t.signatures||{},a=s[r]||{},u=a[i];if(!u)throw Error("No signature");delete t.unsigned,delete t.signatures;var c=d.stringify(t);e.verifySignature(o,c,u)});return function(t,r,n,o,i){return e.apply(this,arguments)}}()},{"../logger":29,"../utils":55,"another-json":57,"babel-runtime/core-js/json/stringify":60,"babel-runtime/regenerator":86,bluebird:89}],19:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=new Uint8Array(l.length+e.length+1);t.set(l,0),t.set(e,l.length);for(var r=0,n=0;n<t.length-1;++n)r^=t[n];return t[t.length-1]=r,c.default.encode(t).match(/.{1,4}/g).join(" ")}function i(e){var r=c.default.decode(e.replace(/ /g,"")),n=0,o=!0,i=!1,s=void 0;try{for(var u,d=(0,a.default)(r);!(o=(u=d.next()).done);o=!0){n^=u.value}}catch(e){i=!0,s=e}finally{try{!o&&d.return&&d.return()}finally{if(i)throw s}}if(0!==n)throw new Error("Incorrect parity");for(var f=0;f<l.length;++f)if(r[f]!==l[f])throw new Error("Incorrect prefix");if(r.length!==l.length+t.Olm.PRIVATE_KEY_LENGTH+1)throw new Error("Incorrect length");return r.slice(l.length,l.length+t.Olm.PRIVATE_KEY_LENGTH)}Object.defineProperty(r,"__esModule",{value:!0});var s=e("babel-runtime/core-js/get-iterator"),a=n(s);r.encodeRecoveryKey=o,r.decodeRecoveryKey=i;var u=e("bs58"),c=n(u),l=[139,1]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/get-iterator":58,bs58:92}],20:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(y.default.log("Upgrading IndexedDBCryptoStore from version "+t+" to "+b),t<1&&i(e),t<2&&e.createObjectStore("account"),t<3){e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]}).createIndex("deviceKey","deviceKey")}t<4&&e.createObjectStore("inbound_group_sessions",{keyPath:["senderCurve25519Key","sessionId"]}),t<5&&e.createObjectStore("device_data"),t<6&&e.createObjectStore("rooms"),t<7&&e.createObjectStore("sessions_needing_backup",{keyPath:["senderCurve25519Key","sessionId"]})}function i(e){var t=e.createObjectStore("outgoingRoomKeyRequests",{keyPath:"requestId"});t.createIndex("session",["requestBody.room_id","requestBody.session_id"]),t.createIndex("state","state")}function s(e,t){e._mx_abortexception=t;try{e.abort()}catch(t){}}function a(e){return new v.default(function(t,r){e.oncomplete=function(){void 0!==e._mx_abortexception&&r(e._mx_abortexception),t()},e.onerror=function(){void 0!==e._mx_abortexception&&r(e._mx_abortexception),r()},e.onabort=function(){return r(e._mx_abortexception)}})}Object.defineProperty(r,"__esModule",{value:!0}),r.Backend=r.VERSION=void 0;var u=e("babel-runtime/core-js/object/assign"),c=n(u),l=e("babel-runtime/helpers/classCallCheck"),d=n(l),f=e("babel-runtime/helpers/createClass"),p=n(f);r.upgradeDatabase=o;var h=e("bluebird"),v=n(h),m=e("../../logger"),y=n(m),_=e("../../utils"),g=n(_),b=r.VERSION=7;r.Backend=function(){function e(t){var r=this;(0,d.default)(this,e),this._db=t,t.onversionchange=function(e){y.default.log("versionchange for indexeddb "+r._dbName+": closing"),t.close()}}return(0,p.default)(e,[{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=e.requestBody,r=v.default.defer(),n=this._db.transaction("outgoingRoomKeyRequests","readwrite");return n.onerror=r.reject,this._getOutgoingRoomKeyRequest(n,t,function(o){if(o)return y.default.log("already have key request outstanding for "+t.room_id+" / "+t.session_id+": not sending another"),void r.resolve(o);y.default.log("enqueueing key request for "+t.room_id+" / "+t.session_id),n.oncomplete=function(){r.resolve(e)},n.objectStore("outgoingRoomKeyRequests").add(e)}),r.promise}},{key:"getOutgoingRoomKeyRequest",value:function(e){var t=v.default.defer(),r=this._db.transaction("outgoingRoomKeyRequests","readonly");return r.onerror=t.reject,this._getOutgoingRoomKeyRequest(r,e,function(e){t.resolve(e)}),t.promise}},{key:"_getOutgoingRoomKeyRequest",value:function(e,t,r){e.objectStore("outgoingRoomKeyRequests").index("session").openCursor([t.room_id,t.session_id]).onsuccess=function(e){var n=e.target.result;if(!n)return void r(null);var o=n.value;if(g.default.deepCompare(o.requestBody,t))return void r(o);n.continue()}}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){function t(o){var i=o.target.result;if(i)return void(n=i.value);if(!(++r>=e.length)){var s=e[r];o.target.source.openCursor(s).onsuccess=t}}if(0===e.length)return v.default.resolve(null);var r=0,n=void 0,o=this._db.transaction("outgoingRoomKeyRequests","readonly"),i=o.objectStore("outgoingRoomKeyRequests"),s=e[r];return i.index("state").openCursor(s).onsuccess=t,a(o).then(function(){return n})}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){function n(s){var a=s.target.result;if(a){var u=a.value;u.recipients.includes({userId:e,deviceId:t})&&i.push(u),a.continue()}else{if(++o>=r.length)return;var c=r[o];s.target.source.openCursor(c).onsuccess=n}}var o=0,i=[],s=this._db.transaction("outgoingRoomKeyRequests","readonly"),u=s.objectStore("outgoingRoomKeyRequests"),c=r[o];return u.index("state").openCursor(c).onsuccess=n,a(s).then(function(){return i})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){function n(e){var n=e.target.result;if(n){var i=n.value;if(i.state!=t)return void y.default.warn("Cannot update room key request from "+t+" as it was already updated to "+i.state);(0,c.default)(i,r),n.update(i),o=i}}var o=null,i=this._db.transaction("outgoingRoomKeyRequests","readwrite");return i.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=n,a(i).then(function(){return o})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){var r=this._db.transaction("outgoingRoomKeyRequests","readwrite");return r.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var r=e.target.result;if(r){var n=r.value;if(n.state!=t)return void y.default.warn("Cannot delete room key request in state "+n.state+" (expected "+t+")");r.delete()}},a(r)}},{key:"getAccount",value:function(e,t){var r=e.objectStore("account"),n=r.get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){s(e,t)}}}},{key:"storeAccount",value:function(e,t){e.objectStore("account").put(t,"-")}},{key:"countEndToEndSessions",value:function(e,t){var r=e.objectStore("sessions"),n=r.count();n.onsuccess=function(){t(n.result)}}},{key:"getEndToEndSessions",value:function(e,t,r){var n=t.objectStore("sessions"),o=n.index("deviceKey"),i=o.openCursor(e),a={};i.onsuccess=function(){var e=i.result;if(e)a[e.value.sessionId]={session:e.value.session,lastReceivedMessageTs:e.value.lastReceivedMessageTs},e.continue();else try{r(a)}catch(e){s(t,e)}}}},{key:"getEndToEndSession",value:function(e,t,r,n){var o=r.objectStore("sessions"),i=o.get([e,t]);i.onsuccess=function(){try{n(i.result?{session:i.result.session,lastReceivedMessageTs:i.result.lastReceivedMessageTs}:null)}catch(e){s(r,e)}}}},{key:"getAllEndToEndSessions",value:function(e,t){var r=e.objectStore("sessions"),n=r.openCursor();n.onsuccess=function(){var r=n.result;if(r)t(r.value),r.continue();else try{t(null)}catch(t){s(e,t)}}}},{key:"storeEndToEndSession",value:function(e,t,r,n){n.objectStore("sessions").put({deviceKey:e,sessionId:t,session:r.session,lastReceivedMessageTs:r.lastReceivedMessageTs})}},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){var o=r.objectStore("inbound_group_sessions"),i=o.get([e,t]);i.onsuccess=function(){try{n(i.result?i.result.session:null)}catch(e){s(r,e)}}}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){var r=e.objectStore("inbound_group_sessions"),n=r.openCursor();n.onsuccess=function(){var r=n.result;if(r){try{t({senderKey:r.value.senderCurve25519Key,sessionId:r.value.sessionId,sessionData:r.value.session})}catch(t){s(e,t)}r.continue()}else try{t(null)}catch(t){s(e,t)}}}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){var o=n.objectStore("inbound_group_sessions"),i=o.add({senderCurve25519Key:e,sessionId:t,session:r});i.onerror=function(r){"ConstraintError"===i.error.name?(r.stopPropagation(),r.preventDefault(),y.default.log("Ignoring duplicate inbound group session: "+e+" / "+t)):s(n,new Error("Failed to add inbound group session: "+i.error))}}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){n.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:t,session:r})}},{key:"getEndToEndDeviceData",value:function(e,t){var r=e.objectStore("device_data"),n=r.get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){s(e,t)}}}},{key:"storeEndToEndDeviceData",value:function(e,t){t.objectStore("device_data").put(e,"-")}},{key:"storeEndToEndRoom",value:function(e,t,r){r.objectStore("rooms").put(t,e)}},{key:"getEndToEndRooms",value:function(e,t){var r={},n=e.objectStore("rooms"),o=n.openCursor();o.onsuccess=function(){var n=o.result;if(n)r[n.key]=n.value,n.continue();else try{t(r)}catch(t){s(e,t)}}}},{key:"getSessionsNeedingBackup",value:function(e){var t=this;return new v.default(function(r,n){var o=[],i=t._db.transaction(["sessions_needing_backup","inbound_group_sessions"],"readonly");i.onerror=n,i.oncomplete=function(){r(o)};var s=i.objectStore("sessions_needing_backup"),a=i.objectStore("inbound_group_sessions"),u=s.openCursor();u.onsuccess=function(){var t=u.result;if(t){var r=a.get(t.key);r.onsuccess=function(){o.push({senderKey:r.result.senderCurve25519Key,sessionId:r.result.sessionId,sessionData:r.result.session})},(!e||o.length<e)&&t.continue()}}})}},{key:"unmarkSessionsNeedingBackup",value:function(e){var t=this._db.transaction("sessions_needing_backup","readwrite"),r=t.objectStore("sessions_needing_backup");return v.default.all(e.map(function(e){return new v.default(function(t,n){var o=r.delete([e.senderKey,e.sessionId]);o.onsuccess=t,o.onerror=n})}))}},{key:"markSessionsNeedingBackup",value:function(e,t){t||(t=this._db.transaction("sessions_needing_backup","readwrite"));var r=t.objectStore("sessions_needing_backup");return v.default.all(e.map(function(e){return new v.default(function(t,n){var o=r.put({senderCurve25519Key:e.senderKey,sessionId:e.sessionId});o.onsuccess=t,o.onerror=n})}))}},{key:"doTxn",value:function(e,t,r){var n=this._db.transaction(t,e),o=a(n),i=r(n);return o.then(function(){return i})}}]),e}()},{"../../logger":29,"../../utils":55,"babel-runtime/core-js/object/assign":63,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,bluebird:89}],21:[function(e,t,r){(function(t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var o=e("babel-runtime/helpers/classCallCheck"),i=n(o),s=e("babel-runtime/helpers/createClass"),a=n(s),u=e("bluebird"),c=n(u),l=e("../../logger"),d=n(l),f=e("./localStorage-crypto-store"),p=n(f),h=e("./memory-crypto-store"),v=n(h),m=e("./indexeddb-crypto-store-backend"),y=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(m),_=e("../../errors"),g=function(){function e(t,r){(0,i.default)(this,e),this._indexedDB=t,this._dbName=r,this._backendPromise=null}return(0,a.default)(e,[{key:"_connect",value:function(){var r=this;return this._backendPromise?this._backendPromise:(this._backendPromise=new c.default(function(e,t){if(!r._indexedDB)return void t(new Error("no indexeddb support available"));d.default.log("connecting to indexeddb "+r._dbName);var n=r._indexedDB.open(r._dbName,y.VERSION);n.onupgradeneeded=function(e){var t=e.target.result,r=e.oldVersion;y.upgradeDatabase(t,r)},n.onblocked=function(){d.default.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},n.onerror=function(e){t(e.target.error)},n.onsuccess=function(t){var n=t.target.result;d.default.log("connected to indexeddb "+r._dbName),e(new y.Backend(n))}}).then(function(t){return t.doTxn("readonly",[e.STORE_INBOUND_GROUP_SESSIONS],function(e){t.getEndToEndInboundGroupSession("","",e,function(){})}).then(function(){return t})}).catch(function(e){if("VersionError"===e.name)throw d.default.warn("Crypto DB is too new for us to use!",e),new _.InvalidCryptoStoreError(_.InvalidCryptoStoreError.TOO_NEW);d.default.warn("unable to connect to indexeddb "+r._dbName+": falling back to localStorage store: "+e);try{return new p.default(t.localStorage)}catch(e){return d.default.warn("unable to open localStorage: falling back to in-memory store: "+e),new v.default}}),this._backendPromise)}},{key:"deleteAllData",value:function(){var e=this;return new c.default(function(t,r){if(!e._indexedDB)return void r(new Error("no indexeddb support available"));d.default.log("Removing indexeddb instance: "+e._dbName);var n=e._indexedDB.deleteDatabase(e._dbName);n.onblocked=function(){d.default.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},n.onerror=function(e){r(e.target.error)},n.onsuccess=function(){d.default.log("Removed indexeddb instance: "+e._dbName),t()}}).catch(function(e){d.default.warn("unable to delete IndexedDBCryptoStore: "+e)})}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOrAddOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequestByState(e)})}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){return this._connect().then(function(n){return n.getOutgoingRoomKeyRequestsByTarget(e,t,r)})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){return this._connect().then(function(n){return n.updateOutgoingRoomKeyRequest(e,t,r)})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){return this._connect().then(function(r){return r.deleteOutgoingRoomKeyRequest(e,t)})}},{key:"getAccount",value:function(e,t){this._backendPromise.value().getAccount(e,t)}},{key:"storeAccount",value:function(e,t){this._backendPromise.value().storeAccount(e,t)}},{key:"countEndToEndSessions",value:function(e,t){this._backendPromise.value().countEndToEndSessions(e,t)}},{key:"getEndToEndSession",value:function(e,t,r,n){this._backendPromise.value().getEndToEndSession(e,t,r,n)}},{key:"getEndToEndSessions",value:function(e,t,r){this._backendPromise.value().getEndToEndSessions(e,t,r)}},{key:"getAllEndToEndSessions",value:function(e,t){this._backendPromise.value().getAllEndToEndSessions(e,t)}},{key:"storeEndToEndSession",value:function(e,t,r,n){this._backendPromise.value().storeEndToEndSession(e,t,r,n)}},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){this._backendPromise.value().getEndToEndInboundGroupSession(e,t,r,n)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){this._backendPromise.value().getAllEndToEndInboundGroupSessions(e,t)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){this._backendPromise.value().addEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){this._backendPromise.value().storeEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._backendPromise.value().storeEndToEndDeviceData(e,t)}},{key:"getEndToEndDeviceData",value:function(e,t){this._backendPromise.value().getEndToEndDeviceData(e,t)}},{key:"storeEndToEndRoom",value:function(e,t,r){this._backendPromise.value().storeEndToEndRoom(e,t,r)}},{key:"getEndToEndRooms",value:function(e,t){this._backendPromise.value().getEndToEndRooms(e,t)}},{key:"getSessionsNeedingBackup",value:function(e){return this._connect().then(function(t){return t.getSessionsNeedingBackup(e)})}},{key:"unmarkSessionsNeedingBackup",value:function(e){return this._connect().then(function(t){return t.unmarkSessionsNeedingBackup(e)})}},{key:"markSessionsNeedingBackup",value:function(e,t){return this._connect().then(function(r){return r.markSessionsNeedingBackup(e,t)})}},{key:"doTxn",value:function(e,t,r){return this._connect().then(function(n){return n.doTxn(e,t,r)})}}]),e}();r.default=g,g.STORE_ACCOUNT="account",g.STORE_SESSIONS="sessions",g.STORE_INBOUND_GROUP_SESSIONS="inbound_group_sessions",g.STORE_DEVICE_DATA="device_data",g.STORE_ROOMS="rooms",g.STORE_BACKUP="sessions_needing_backup"}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../errors":24,"../../logger":29,"./indexeddb-crypto-store-backend":20,"./localStorage-crypto-store":22,"./memory-crypto-store":23,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,bluebird:89}],22:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){return D+"sessions/"+e}function i(e,t){return L+e+"/"+t}function s(e){return U+e}function a(e,t){try{return JSON.parse(e.getItem(t))}catch(e){j.default.log("Error: Failed to get key %s: %s",t,e.stack||e),j.default.log(e.stack)}return null}function u(e,t,r){e.setItem(t,(0,l.default)(r))}Object.defineProperty(r,"__esModule",{value:!0});var c=e("babel-runtime/core-js/json/stringify"),l=n(c),d=e("babel-runtime/helpers/slicedToArray"),f=n(d),p=e("babel-runtime/core-js/object/entries"),h=n(p),v=e("babel-runtime/core-js/get-iterator"),m=n(v),y=e("babel-runtime/core-js/object/get-prototype-of"),_=n(y),g=e("babel-runtime/helpers/classCallCheck"),b=n(g),E=e("babel-runtime/helpers/createClass"),w=n(E),S=e("babel-runtime/helpers/possibleConstructorReturn"),k=n(S),T=e("babel-runtime/helpers/inherits"),x=n(T),R=e("bluebird"),I=n(R),C=e("../../logger"),j=n(C),O=e("./memory-crypto-store.js"),A=n(O),D="crypto.",M=D+"account",P=D+"device_data",L=D+"inboundgroupsessions/",U=D+"rooms/",N=D+"sessionsneedingbackup",F=function(e){function t(e){(0,b.default)(this,t);var r=(0,k.default)(this,(t.__proto__||(0,_.default)(t)).call(this));return r.store=e,r}return(0,x.default)(t,e),(0,w.default)(t,[{key:"countEndToEndSessions",value:function(e,t){for(var r=0,n=0;n<this.store.length;++n)this.store.key(n).startsWith(o(""))&&++r;t(r)}},{key:"_getEndToEndSessions",value:function(e,t,r){var n=a(this.store,o(e)),i={},s=!0,u=!1,c=void 0;try{for(var l,d=(0,m.default)((0,h.default)(n||{}));!(s=(l=d.next()).done);s=!0){var p=(0,f.default)(l.value,2),v=p[0],y=p[1];i[v]="string"==typeof y?{session:y}:y}}catch(e){u=!0,c=e}finally{try{!s&&d.return&&d.return()}finally{if(u)throw c}}return i}},{key:"getEndToEndSession",value:function(e,t,r,n){n(this._getEndToEndSessions(e)[t]||{})}},{key:"getEndToEndSessions",value:function(e,t,r){r(this._getEndToEndSessions(e)||{})}},{key:"storeEndToEndSession",value:function(e,t,r,n){var i=this._getEndToEndSessions(e)||{};i[t]=r,u(this.store,o(e),i)}},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){n(a(this.store,i(e,t)))}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){for(var r=0;r<this.store.length;++r){var n=this.store.key(r);n.startsWith(L)&&t({senderKey:n.substr(L.length,43),sessionId:n.substr(L.length+44),sessionData:a(this.store,n)})}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){a(this.store,i(e,t))||this.storeEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){u(this.store,i(e,t),r)}},{key:"getEndToEndDeviceData",value:function(e,t){t(a(this.store,P))}},{key:"storeEndToEndDeviceData",value:function(e,t){u(this.store,P,e)}},{key:"storeEndToEndRoom",value:function(e,t,r){u(this.store,s(e),t)}},{key:"getEndToEndRooms",value:function(e,t){for(var r={},n=s(""),o=0;o<this.store.length;++o){var i=this.store.key(o);if(i.startsWith(n)){r[i.substr(n.length)]=a(this.store,i)}}t(r)}},{key:"getSessionsNeedingBackup",value:function(e){var t=this,r=a(this.store,N)||{},n=[];for(var o in r)if(Object.prototype.hasOwnProperty.call(r,o)){var i=function(){var r=o.substr(0,43),i=o.substr(44);if(t.getEndToEndInboundGroupSession(r,i,null,function(e){n.push({senderKey:r,sessionId:i,sessionData:e})}),e&&o.length>=e)return"break"}();if("break"===i)break}return I.default.resolve(n)}},{key:"unmarkSessionsNeedingBackup",value:function(e){var t=a(this.store,N)||{},r=!0,n=!1,o=void 0;try{for(var i,s=(0,m.default)(e);!(r=(i=s.next()).done);r=!0){var c=i.value;delete t[c.senderKey+"/"+c.sessionId]}}catch(e){n=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw o}}return u(this.store,N,t),I.default.resolve()}},{key:"markSessionsNeedingBackup",value:function(e){var t=a(this.store,N)||{},r=!0,n=!1,o=void 0;try{for(var i,s=(0,m.default)(e);!(r=(i=s.next()).done);r=!0){var c=i.value;t[c.senderKey+"/"+c.sessionId]=!0}}catch(e){n=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw o}}return u(this.store,N,t),I.default.resolve()}},{key:"deleteAllData",value:function(){return this.store.removeItem(M),I.default.resolve()}},{key:"getAccount",value:function(e,t){t(a(this.store,M))}},{key:"storeAccount",value:function(e,t){u(this.store,M,t)}},{key:"doTxn",value:function(e,t,r){return I.default.resolve(r(null))}}]),t}(A.default);r.default=F},{"../../logger":29,"./memory-crypto-store.js":23,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/entries":66,"babel-runtime/core-js/object/get-prototype-of":68,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,"babel-runtime/helpers/inherits":82,"babel-runtime/helpers/possibleConstructorReturn":83,"babel-runtime/helpers/slicedToArray":84,bluebird:89}],23:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var o=e("babel-runtime/core-js/object/keys"),i=n(o),s=e("babel-runtime/core-js/object/assign"),a=n(s),u=e("babel-runtime/core-js/get-iterator"),c=n(u),l=e("babel-runtime/helpers/classCallCheck"),d=n(l),f=e("babel-runtime/helpers/createClass"),p=n(f),h=e("bluebird"),v=n(h),m=e("../../logger"),y=n(m),_=e("../../utils"),g=n(_),b=function(){function e(){(0,d.default)(this,e),this._outgoingRoomKeyRequests=[],this._account=null,this._sessions={},this._inboundGroupSessions={},this._deviceData=null,this._rooms={},this._sessionsNeedingBackup={}}return(0,p.default)(e,[{key:"deleteAllData",value:function(){return v.default.resolve()}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=this,r=e.requestBody;return v.default.try(function(){var n=t._getOutgoingRoomKeyRequest(r);return n?(y.default.log("already have key request outstanding for "+r.room_id+" / "+r.session_id+": not sending another"),n):(y.default.log("enqueueing key request for "+r.room_id+" / "+r.session_id),t._outgoingRoomKeyRequests.push(e),e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return v.default.resolve(this._getOutgoingRoomKeyRequest(e))}},{key:"_getOutgoingRoomKeyRequest",value:function(e){var t=!0,r=!1,n=void 0;try{for(var o,i=(0,c.default)(this._outgoingRoomKeyRequests);!(t=(o=i.next()).done);t=!0){var s=o.value;if(g.default.deepCompare(s.requestBody,e))return s}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return null}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){var t=!0,r=!1,n=void 0;try{for(var o,i=(0,c.default)(this._outgoingRoomKeyRequests);!(t=(o=i.next()).done);t=!0){var s=o.value,a=!0,u=!1,l=void 0;try{for(var d,f=(0,c.default)(e);!(a=(d=f.next()).done);a=!0){var p=d.value;if(s.state===p)return v.default.resolve(s)}}catch(e){u=!0,l=e}finally{try{!a&&f.return&&f.return()}finally{if(u)throw l}}}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return v.default.resolve(null)}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){var n=[],o=!0,i=!1,s=void 0;try{for(var a,u=(0,c.default)(this._outgoingRoomKeyRequests);!(o=(a=u.next()).done);o=!0){var l=a.value,d=!0,f=!1,p=void 0;try{for(var h,m=(0,c.default)(r);!(d=(h=m.next()).done);d=!0){var y=h.value;l.state===y&&l.recipients.includes({userId:e,deviceId:t})&&n.push(l)}}catch(e){f=!0,p=e}finally{try{!d&&m.return&&m.return()}finally{if(f)throw p}}}}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}return v.default.resolve(n)}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){var n=!0,o=!1,i=void 0;try{for(var s,u=(0,c.default)(this._outgoingRoomKeyRequests);!(n=(s=u.next()).done);n=!0){var l=s.value;if(l.requestId===e)return l.state!=t?(y.default.warn("Cannot update room key request from "+t+" as it was already updated to "+l.state),v.default.resolve(null)):((0,a.default)(l,r),v.default.resolve(l))}}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return v.default.resolve(null)}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){for(var r=0;r<this._outgoingRoomKeyRequests.length;r++){var n=this._outgoingRoomKeyRequests[r] +;if(n.requestId===e)return n.state!=t?(y.default.warn("Cannot delete room key request in state "+n.state+" (expected "+t+")"),v.default.resolve(null)):(this._outgoingRoomKeyRequests.splice(r,1),v.default.resolve(n))}return v.default.resolve(null)}},{key:"getAccount",value:function(e,t){t(this._account)}},{key:"storeAccount",value:function(e,t){this._account=t}},{key:"countEndToEndSessions",value:function(e,t){return(0,i.default)(this._sessions).length}},{key:"getEndToEndSession",value:function(e,t,r,n){n((this._sessions[e]||{})[t]||null)}},{key:"getEndToEndSessions",value:function(e,t,r){r(this._sessions[e]||{})}},{key:"storeEndToEndSession",value:function(e,t,r,n){var o=this._sessions[e];void 0===o&&(o={},this._sessions[e]=o),o[t]=r}},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){n(this._inboundGroupSessions[e+"/"+t]||null)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){var r=!0,n=!1,o=void 0;try{for(var s,a=(0,c.default)((0,i.default)(this._inboundGroupSessions));!(r=(s=a.next()).done);r=!0){var u=s.value;t({senderKey:u.substr(0,43),sessionId:u.substr(44),sessionData:this._inboundGroupSessions[u]})}}catch(e){n=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){var o=e+"/"+t;void 0===this._inboundGroupSessions[o]&&(this._inboundGroupSessions[o]=r)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){this._inboundGroupSessions[e+"/"+t]=r}},{key:"getEndToEndDeviceData",value:function(e,t){t(this._deviceData)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._deviceData=e}},{key:"storeEndToEndRoom",value:function(e,t,r){this._rooms[e]=t}},{key:"getEndToEndRooms",value:function(e,t){t(this._rooms)}},{key:"getSessionsNeedingBackup",value:function(e){var t=[];for(var r in this._sessionsNeedingBackup)if(this._inboundGroupSessions[r]&&(t.push({senderKey:r.substr(0,43),sessionId:r.substr(44),sessionData:this._inboundGroupSessions[r]}),e&&r.length>=e))break;return v.default.resolve(t)}},{key:"unmarkSessionsNeedingBackup",value:function(e){var t=!0,r=!1,n=void 0;try{for(var o,i=(0,c.default)(e);!(t=(o=i.next()).done);t=!0){var s=o.value,a=s.senderKey+"/"+s.sessionId;delete this._sessionsNeedingBackup[a]}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return v.default.resolve()}},{key:"markSessionsNeedingBackup",value:function(e){var t=!0,r=!1,n=void 0;try{for(var o,i=(0,c.default)(e);!(t=(o=i.next()).done);t=!0){var s=o.value,a=s.senderKey+"/"+s.sessionId;this._sessionsNeedingBackup[a]=!0}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}return v.default.resolve()}},{key:"doTxn",value:function(e,t,r){return v.default.resolve(r(null))}}]),e}();r.default=b},{"../../logger":29,"../../utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/assign":63,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80,bluebird:89}],24:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r="Store is invalid because "+e+", please stop the client, delete all data and start the client again",n=(0,p.default)(Error,[r]);return(0,d.default)(n,(0,c.default)(this)),n.reason=e,n.value=t,n}function i(e){var t="Crypto store is invalid because "+e+", please stop the client, delete all data and start the client again",r=(0,p.default)(Error,[t]);return(0,d.default)(r,(0,c.default)(this)),r.reason=e,r.name="InvalidCryptoStoreError",r}Object.defineProperty(r,"__esModule",{value:!0});var s=e("babel-runtime/core-js/object/create"),a=n(s),u=e("babel-runtime/core-js/reflect/get-prototype-of"),c=n(u),l=e("babel-runtime/core-js/reflect/set-prototype-of"),d=n(l),f=e("babel-runtime/core-js/reflect/construct"),p=n(f);r.InvalidStoreError=o,r.InvalidCryptoStoreError=i,o.TOGGLED_LAZY_LOADING="TOGGLED_LAZY_LOADING",o.prototype=(0,a.default)(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),(0,d.default)(o,Error),i.TOO_NEW="TOO_NEW",i.prototype=(0,a.default)(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),(0,d.default)(i,Error)},{"babel-runtime/core-js/object/create":64,"babel-runtime/core-js/reflect/construct":73,"babel-runtime/core-js/reflect/get-prototype-of":74,"babel-runtime/core-js/reflect/set-prototype-of":75}],25:[function(e,t,r){"use strict";function n(e,t){if(t.endsWith("*")){var r=t.slice(0,-1);return e.substr(0,r.length)===r}return e===t}function o(e){this.filter_json=e,this.types=e.types||null,this.not_types=e.not_types||[],this.rooms=e.rooms||null,this.not_rooms=e.not_rooms||[],this.senders=e.senders||null,this.not_senders=e.not_senders||[],this.contains_url=e.contains_url||null}var i=e("babel-runtime/core-js/object/keys"),s=function(e){return e&&e.__esModule?e:{default:e}}(i);o.prototype.check=function(e){return this._checkFields(e.getRoomId(),e.getSender(),e.getType(),!!e.getContent()&&void 0!==e.getContent().url)},o.prototype._checkFields=function(e,t,r,o){for(var i={rooms:function(t){return e===t},senders:function(e){return t===e},types:function(e){return n(r,e)}},a=this,u=0;u<(0,s.default)(i).length;u++){var c=(0,s.default)(i)[u],l=i[c];if(a["not_"+c].filter(l).length>0)return!1;var d=a[c];if(d&&!d.map(l))return!1}var f=this.filter_json.contains_url;return void 0===f||f===o},o.prototype.filter=function(e){return e.filter(this.check,this)},o.prototype.limit=function(){return void 0!==this.filter_json.limit?this.filter_json.limit:10},t.exports=o},{"babel-runtime/core-js/object/keys":69}],26:[function(e,t,r){"use strict";function n(e,t,r){for(var n=t.split("."),o=e,i=0;i<n.length-1;i++)o[n[i]]||(o[n[i]]={}),o=o[n[i]];o[n[n.length-1]]=r}function o(e,t){this.userId=e,this.filterId=t,this.definition={}}var i=e("./filter-component");o.LAZY_LOADING_MESSAGES_FILTER={lazy_load_members:!0},o.LAZY_LOADING_SYNC_FILTER={room:{state:o.LAZY_LOADING_MESSAGES_FILTER}},o.prototype.getFilterId=function(){return this.filterId},o.prototype.getDefinition=function(){return this.definition},o.prototype.setDefinition=function(e){this.definition=e;var t=e.room,r={};t&&(t.rooms&&(r.rooms=t.rooms),t.rooms&&(r.not_rooms=t.not_rooms),this._include_leave=t.include_leave||!1),this._room_filter=new i(r),this._room_timeline_filter=new i(t?t.timeline||{}:{})},o.prototype.getRoomTimelineFilterComponent=function(){return this._room_timeline_filter},o.prototype.filterRoomTimeline=function(e){return this._room_timeline_filter.filter(this._room_filter.filter(e))},o.prototype.setTimelineLimit=function(e){n(this.definition,"room.timeline.limit",e)},o.prototype.setIncludeLeaveRooms=function(e){n(this.definition,"room.include_leave",e)},o.fromJson=function(e,t,r){var n=new o(e,t);return n.setDefinition(r),n},t.exports=o},{"./filter-component":25}],27:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,r){var n=e.statusCode,o=i(e),s=void 0;return o&&("application/json"===o.type?s=new t.exports.MatrixError(JSON.parse(r)):"text/plain"===o.type&&(s=new Error("Server returned "+n+" error: "+r))),s||(s=new Error("Server returned "+n+" error")),s.httpStatus=n,s}function i(e){var t=void 0;if(e.getResponseHeader?t=e.getResponseHeader("Content-Type"):e.headers&&(t=e.headers["content-type"]||null),!t)return null;try{return h(t)}catch(e){throw new Error("Error parsing Content-Type '"+t+"': "+e)}}var s=e("babel-runtime/core-js/object/create"),a=n(s),u=e("babel-runtime/core-js/json/stringify"),c=n(u),l=e("babel-runtime/helpers/typeof"),d=n(l),f=e("bluebird"),p=n(f),h=e("content-type").parse,v=e("./utils"),m=e("./realtime-callbacks");t.exports.PREFIX_R0="/_matrix/client/r0",t.exports.PREFIX_UNSTABLE="/_matrix/client/unstable",t.exports.PREFIX_IDENTITY_V1="/_matrix/identity/api/v1",t.exports.PREFIX_MEDIA_R0="/_matrix/media/r0",t.exports.MatrixHttpApi=function(e,t){v.checkObjectHasKeys(t,["baseUrl","request","prefix"]),t.onlyData=t.onlyData||!1,this.event_emitter=e,this.opts=t,this.useAuthorizationHeader=Boolean(t.useAuthorizationHeader),this.uploads=[]},t.exports.MatrixHttpApi.prototype={getContentUri:function(){var e={access_token:this.opts.accessToken};return{base:this.opts.baseUrl,path:"/_matrix/media/v1/upload",params:e}},uploadContent:function(e,t){v.isFunction(t)?t={callback:t}:void 0===t&&(t={});var n=!1!==t.includeFilename,o=t.type||e.type||"application/octet-stream",i=t.name||e.name,s=e.stream?e.stream:e,a=t.rawResponse;void 0===a&&(r.XMLHttpRequest?a=!1:(console.warn("Returning the raw JSON from uploadContent(). Future versions of the js-sdk will change this default, to return the parsed object. Set opts.rawResponse=false to change this behaviour now."),a=!0));var u=t.onlyContentUri;a||void 0!==u||(r.XMLHttpRequest?(console.warn("Returning only the content-uri from uploadContent(). Future versions of the js-sdk will change this default, to return the whole response object. Set opts.onlyContentUri=false to change this behaviour now."),u=!0):u=!1);var c={loaded:0,total:0},l=void 0,d=null;if(a||(d=function(e){var t=JSON.parse(e);if(u&&void 0===(t=t.content_uri))throw Error("Bad response");return t}),r.XMLHttpRequest){var f=p.default.defer(),h=new r.XMLHttpRequest;c.xhr=h;var _=y(f,t.callback,this.opts.onlyData),g=function(){h.abort(),_(new Error("Timeout"))};h.timeout_timer=m.setTimeout(g,3e4),h.onreadystatechange=function(){switch(h.readyState){case r.XMLHttpRequest.DONE:m.clearTimeout(h.timeout_timer);var e;try{if(!h.responseText)throw new Error("No response body.");e=h.responseText,d&&(e=d(e))}catch(e){return e.http_status=h.status,void _(e)}_(void 0,h,e)}},h.upload.addEventListener("progress",function(e){m.clearTimeout(h.timeout_timer),c.loaded=e.loaded,c.total=e.total,h.timeout_timer=m.setTimeout(g,3e4),t.progressHandler&&t.progressHandler({loaded:e.loaded,total:e.total})});var b=this.opts.baseUrl+"/_matrix/media/v1/upload",E=[];n&&i&&E.push("filename="+encodeURIComponent(i)),this.useAuthorizationHeader||E.push("access_token="+encodeURIComponent(this.opts.accessToken)),E.length>0&&(b+="?"+E.join("&")),h.open("POST",b),this.useAuthorizationHeader&&h.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),h.setRequestHeader("Content-Type",o),h.send(s),l=f.promise,l.abort=h.abort.bind(h)}else{var w={};n&&i&&(w.filename=i),l=this.authedRequest(t.callback,"POST","/upload",w,s,{prefix:"/_matrix/media/v1",headers:{"Content-Type":o},json:!1,bodyParser:d})}var S=this,k=l.finally(function(){for(var e=0;e<S.uploads.length;++e)if(S.uploads[e]===c)return void S.uploads.splice(e,1)});return k.abort=l.abort,c.promise=k,this.uploads.push(c),k},cancelUpload:function(e){return!!e.abort&&(e.abort(),!0)},getCurrentUploads:function(){return this.uploads},idServerRequest:function(e,t,r,n,o){var i=this.opts.idBaseUrl+o+r;if(void 0!==e&&!v.isFunction(e))throw Error("Expected callback to be a function but got "+(void 0===e?"undefined":(0,d.default)(e)));var s={uri:i,method:t,withCredentials:!1,json:!1,_matrix_opts:this.opts};"GET"==t?s.qs=n:s.form=n;var a=p.default.defer();return this.opts.request(s,y(a,e,this.opts.onlyData)),a.promise.then(function(e){return JSON.parse(e)})},authedRequest:function(e,t,r,n,o,i){n||(n={}),this.useAuthorizationHeader?(isFinite(i)&&(i={localTimeoutMs:i}),i||(i={}),i.headers||(i.headers={}),i.headers.Authorization||(i.headers.Authorization="Bearer "+this.opts.accessToken),n.access_token&&delete n.access_token):n.access_token||(n.access_token=this.opts.accessToken);var s=this.request(e,t,r,n,o,i),a=this;return s.catch(function(e){"M_UNKNOWN_TOKEN"==e.errcode?a.event_emitter.emit("Session.logged_out"):"M_CONSENT_NOT_GIVEN"==e.errcode&&a.event_emitter.emit("no_consent",e.message,e.data.consent_uri)}),s},request:function(e,t,r,n,o,i){i=i||{};var s=void 0!==i.prefix?i.prefix:this.opts.prefix,a=this.opts.baseUrl+s+r;return this.requestOtherUrl(e,t,a,n,o,i)},authedRequestWithPrefix:function(e,t,r,n,o,i,s){return this.authedRequest(e,t,r,n,o,{localTimeoutMs:s,prefix:i})},requestWithPrefix:function(e,t,r,n,o,i,s){return this.request(e,t,r,n,o,{localTimeoutMs:s,prefix:i})},requestOtherUrl:function(e,t,r,n,o,i){return void 0===i||null===i?i={}:isFinite(i)&&(i={localTimeoutMs:i}),this._request(e,t,r,n,o,i)},getUrl:function(e,t,r){var n="";return t&&(n="?"+v.encodeParams(t)),this.opts.baseUrl+r+e+n},_request:function(e,r,n,o,i,s){if(void 0!==e&&!v.isFunction(e))throw Error("Expected callback to be a function but got "+(void 0===e?"undefined":(0,d.default)(e)));s=s||{};var a=this;if(this.opts.extraParams)for(var u in this.opts.extraParams)this.opts.extraParams.hasOwnProperty(u)&&(o[u]=this.opts.extraParams[u]);var l=v.extend({},s.headers||{}),f=void 0===s.json||s.json,h=s.bodyParser;f&&(i&&(i=(0,c.default)(i),l["content-type"]="application/json"),l.accept||(l.accept="application/json"),void 0===h&&(h=function(e){return JSON.parse(e)}));var _=p.default.defer(),g=void 0,b=!1,E=void 0,w=s.localTimeoutMs||this.opts.localTimeoutMs,S=function(){w&&(g&&m.clearTimeout(g),g=m.setTimeout(function(){b=!0,E&&E.abort&&E.abort(),_.reject(new t.exports.MatrixError({error:"Locally timed out waiting for a response",errcode:"ORG.MATRIX.JSSDK_TIMEOUT",timeout:w}))},w))};S();var k=_.promise;try{E=this.opts.request({uri:n,method:r,withCredentials:!1,qs:o,qsStringifyOptions:s.qsStringifyOptions,useQuerystring:!0,body:i,json:!1,timeout:w,headers:l||{},_matrix_opts:this.opts},function(t,r,n){if(!w||(m.clearTimeout(g),!b)){y(_,e,a.opts.onlyData,h)(t,r,n)}}),E&&("onprogress"in E&&(E.onprogress=function(e){S()}),E.abort&&(k.abort=E.abort.bind(E)))}catch(t){_.reject(t),e&&e(t)}return k}};var y=function(e,t,r,n){return t=t||function(){},function(i,s,a){if(!i)try{s.statusCode>=400?i=o(s,a):n&&(a=n(a))}catch(e){i=new Error("Error parsing server response: "+e)}if(i)e.reject(i),t(i);else{var u={code:s.statusCode,headers:s.headers,data:a};e.resolve(r?a:u),t(null,r?a:u)}}};t.exports.MatrixError=function(e){e=e||{},this.errcode=e.errcode,this.name=e.errcode||"Unknown error code",this.message=e.error||"Unknown message",this.data=e},t.exports.MatrixError.prototype=(0,a.default)(Error.prototype),t.exports.MatrixError.prototype.constructor=t.exports.MatrixError}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./realtime-callbacks":44,"./utils":55,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/create":64,"babel-runtime/helpers/typeof":85,bluebird:89,"content-type":94}],28:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){this._matrixClient=e.matrixClient,this._data=e.authData||{},this._requestCallback=e.doRequest,this._stateUpdatedCallback=e.stateUpdated||e.startAuthStage,this._completionDeferred=null,this._inputs=e.inputs||{},e.sessionId&&(this._data.session=e.sessionId),this._clientSecret=e.clientSecret||this._matrixClient.generateClientSecret(),this._emailSid=e.emailSid,void 0===this._emailSid&&(this._emailSid=null),this._currentStage=null}var i=e("babel-runtime/core-js/get-iterator"),s=n(i),a=e("babel-runtime/core-js/json/stringify"),u=n(a),c=e("bluebird"),l=n(c),d=e("url"),f=e("./utils");o.prototype={attemptAuth:function(){var e=this;return this._completionDeferred=l.default.defer(),l.default.resolve().then(function(){return e._data.flows?e._startNextAuthStage():e._doRequest(e._data),e._completionDeferred.promise})},poll:function(){if(this._data.session){var e={};if("m.login.email.identity"==this._currentStage&&this._emailSid){var t=d.parse(this._matrixClient.getIdentityServerUrl());e={type:"m.login.email.identity",threepid_creds:{sid:this._emailSid,client_secret:this._clientSecret,id_server:t.host}}}this.submitAuthDict(e,!0)}},getSessionId:function(){return this._data?this._data.session:void 0},getClientSecret:function(){return this._clientSecret},getStageParams:function(e){var t={};return this._data&&this._data.params&&(t=this._data.params),t[e]},submitAuthDict:function(e,t){if(!this._completionDeferred)throw new Error("submitAuthDict() called before attemptAuth()");var r={session:this._data.session};f.extend(r,e),this._doRequest(r,t)},getEmailSid:function(){return this._emailSid},setEmailSid:function(e){this._emailSid=e},_doRequest:function(e,t){var r=this,n=this,o=void 0;try{o=this._requestCallback(e,t)}catch(e){o=l.default.reject(e)}o=o.then(function(e){console.log("result from request: ",e),n._completionDeferred.resolve(e)},function(e){var t=e.data?e.data.flows:null,r=Boolean(n._data.flows)||Boolean(t);if(401!==e.httpStatus||!e.data||!r)throw e;e.data.flows||e.data.completed||e.data.session||(e.data.flows=n._data.flows,e.data.completed=n._data.completed,e.data.session=n._data.session),n._data=e.data,n._startNextAuthStage()}),o=t?o.catch(function(e){console.log("Ignoring error from UI auth: "+e)}):o.catch(function(e){r._completionDeferred.reject(e)}),o.done()},_startNextAuthStage:function(){var e=this._chooseStage();if(!e)throw new Error("No incomplete flows from the server");if(this._currentStage=e,"m.login.dummy"==e)return void this.submitAuthDict({type:"m.login.dummy"});if(this._data.errcode||this._data.error)return void this._stateUpdatedCallback(e,{errcode:this._data.errcode||"",error:this._data.error||""});var t={};"m.login.email.identity"==e&&(t.emailSid=this._emailSid),this._stateUpdatedCallback(e,t)},_chooseStage:function(){var e=this._chooseFlow();console.log("Active flow => %s",(0,u.default)(e));var t=this._firstUncompletedStage(e);return console.log("Next stage: %s",t),t},_chooseFlow:function(){var e=this._data.flows||[],t=Boolean(this._inputs.emailAddress)||Boolean(this._emailSid),r=Boolean(this._inputs.phoneCountry)&&Boolean(this._inputs.phoneNumber),n=!0,o=!1,i=void 0;try{for(var a,u=(0,s.default)(e);!(n=(a=u.next()).done);n=!0){var c=a.value,l=!1,d=!1,f=!0,p=!1,h=void 0;try{for(var v,m=(0,s.default)(c.stages);!(f=(v=m.next()).done);f=!0){var y=v.value;"m.login.email.identity"===y?l=!0:"m.login.msisdn"==y&&(d=!0)}}catch(_){p=!0,h=_}finally{try{!f&&m.return&&m.return()}finally{if(p)throw h}}if(l==t&&d==r)return c}}catch(_){o=!0,i=_}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}var _=new Error("No appropriate authentication flow found");throw _.name="NoAuthFlowFoundError",_.required_stages=[],t&&_.required_stages.push("m.login.email.identity"),r&&_.required_stages.push("m.login.msisdn"),_.available_flows=e,_},_firstUncompletedStage:function(e){for(var t=(this._data||{}).completed||[],r=0;r<e.stages.length;++r){var n=e.stages[r];if(-1===t.indexOf(n))return n}}},t.exports=o},{"./utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,bluebird:89,url:250}],29:[function(e,t,r){"use strict";var n=e("loglevel"),o=n.getLogger("matrix");o.setLevel(n.levels.DEBUG),t.exports=o},{loglevel:236}],30:[function(e,t,r){(function(r){"use strict";t.exports.ContentHelpers=e("./content-helpers"),t.exports.MatrixEvent=e("./models/event").MatrixEvent,t.exports.EventStatus=e("./models/event").EventStatus,t.exports.MatrixInMemoryStore=e("./store/memory").MatrixInMemoryStore,t.exports.IndexedDBStore=e("./store/indexeddb").IndexedDBStore,t.exports.IndexedDBStoreBackend=e("./store/indexeddb").IndexedDBStoreBackend,t.exports.SyncAccumulator=e("./sync-accumulator"),t.exports.MatrixHttpApi=e("./http-api").MatrixHttpApi,t.exports.MatrixError=e("./http-api").MatrixError,t.exports.InvalidStoreError=e("./errors").InvalidStoreError,t.exports.MatrixClient=e("./client").MatrixClient,t.exports.Room=e("./models/room"),t.exports.Group=e("./models/group"),t.exports.EventTimeline=e("./models/event-timeline"),t.exports.EventTimelineSet=e("./models/event-timeline-set"),t.exports.RoomMember=e("./models/room-member"),t.exports.RoomState=e("./models/room-state"),t.exports.User=e("./models/user"),t.exports.MatrixScheduler=e("./scheduler"),t.exports.WebStorageSessionStore=e("./store/session/webstorage"),t.exports.CRYPTO_ENABLED=e("./client").CRYPTO_ENABLED,t.exports.ContentRepo=e("./content-repo"),t.exports.Filter=e("./filter"),t.exports.TimelineWindow=e("./timeline-window").TimelineWindow,t.exports.InteractiveAuth=e("./interactive-auth"),t.exports.MemoryCryptoStore=e("./crypto/store/memory-crypto-store").default,t.exports.IndexedDBCryptoStore=e("./crypto/store/indexeddb-crypto-store").default,t.exports.createNewMatrixCall=e("./webrtc/call").createNewMatrixCall,t.exports.setMatrixCallAudioOutput=e("./webrtc/call").setAudioOutput,t.exports.setMatrixCallAudioInput=e("./webrtc/call").setAudioInput,t.exports.setMatrixCallVideoInput=e("./webrtc/call").setVideoInput;var n=void 0;t.exports.request=function(e){n=e},t.exports.getRequest=function(){return n},t.exports.wrapRequest=function(e){var t=n;n=function(r,n){return e(t,r,n)}};var o=function(){return new t.exports.MemoryCryptoStore};t.exports.setCryptoStoreFactory=function(e){o=e},t.exports.createClient=function(e){return"string"==typeof e&&(e={baseUrl:e}),e.request=e.request||n,e.store=e.store||new t.exports.MatrixInMemoryStore({localStorage:r.localStorage}),e.scheduler=e.scheduler||new t.exports.MatrixScheduler,e.cryptoStore=e.cryptoStore||o(),new t.exports.MatrixClient(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./client":4,"./content-helpers":5,"./content-repo":6,"./crypto/store/indexeddb-crypto-store":21,"./crypto/store/memory-crypto-store":23,"./errors":24,"./filter":26,"./http-api":27,"./interactive-auth":28,"./models/event":34,"./models/event-timeline":33,"./models/event-timeline-set":32,"./models/group":35,"./models/room":39,"./models/room-member":36,"./models/room-state":37,"./models/user":41,"./scheduler":45,"./store/indexeddb":48,"./store/memory":49,"./store/session/webstorage":50,"./sync-accumulator":52,"./timeline-window":54,"./webrtc/call":56}],31:[function(e,t,r){"use strict";function n(e){this._timeline=[e],this._ourEventIndex=0,this._paginateTokens={b:null,f:null},this._paginateRequests={b:null,f:null}}n.prototype.getEvent=function(){return this._timeline[this._ourEventIndex]},n.prototype.getTimeline=function(){return this._timeline},n.prototype.getOurEventIndex=function(){return this._ourEventIndex},n.prototype.getPaginateToken=function(e){return this._paginateTokens[e?"b":"f"]},n.prototype.setPaginateToken=function(e,t){this._paginateTokens[t?"b":"f"]=e},n.prototype.addEvents=function(e,t){t?(this._timeline=e.concat(this._timeline),this._ourEventIndex+=e.length):this._timeline=this._timeline.concat(e)},t.exports=n},{}],32:[function(e,t,r){"use strict";function n(e,t){this.room=e,this._timelineSupport=Boolean(t.timelineSupport),this._liveTimeline=new s(this),this._timelines=[this._liveTimeline],this._eventIdToTimeline={},this._filter=t.filter||null}var o=e("events").EventEmitter,i=e("../utils"),s=e("./event-timeline"),a=void 0;a=console.log.bind(console),i.inherits(n,o),n.prototype.getFilter=function(){return this._filter},n.prototype.setFilter=function(e){this._filter=e},n.prototype.getPendingEvents=function(){return this.room?this._filter?this._filter.filterRoomTimeline(this.room.getPendingEvents()):this.room.getPendingEvents():[]},n.prototype.getLiveTimeline=function(){return this._liveTimeline},n.prototype.eventIdToTimeline=function(e){return this._eventIdToTimeline[e]},n.prototype.replaceEventId=function(e,t){var r=this._eventIdToTimeline[e];r&&(delete this._eventIdToTimeline[e],this._eventIdToTimeline[t]=r)},n.prototype.resetLiveTimeline=function(e,t){var r=!this._timelineSupport||!t,n=this._liveTimeline,o=r?n.forkLive(s.FORWARDS):n.fork(s.FORWARDS);r?(this._timelines=[o],this._eventIdToTimeline={}):this._timelines.push(o),t&&n.setPaginationToken(t,s.FORWARDS),o.setPaginationToken(e,s.BACKWARDS),this._liveTimeline=o,this.emit("Room.timelineReset",this.room,this,r)},n.prototype.getTimelineForEvent=function(e){var t=this._eventIdToTimeline[e];return void 0===t?null:t},n.prototype.findEventById=function(e){var t=this.getTimelineForEvent(e);if(t)return i.findElement(t.getEvents(),function(t){return t.getId()==e})},n.prototype.addTimeline=function(){if(!this._timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");var e=new s(this);return this._timelines.push(e),e},n.prototype.addEventsToTimeline=function(e,t,r,n){if(!r)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&r==this._liveTimeline)throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead");if(!this._filter||(e=this._filter.filterRoomTimeline(e),e.length)){for(var o=t?s.BACKWARDS:s.FORWARDS,i=t?s.FORWARDS:s.BACKWARDS,u=!1,c=!1,l=0;l<e.length;l++){var d=e[l],f=d.getId(),p=this._eventIdToTimeline[f];if(p)if(c=!1,p!=r){var h=r.getNeighbouringTimeline(o);h?(a(p==h?"Event "+f+" in neighbouring timeline - switching to "+p:"Event "+f+" already in a different timeline "+p),r=p):(console.info("Already have timeline for "+f+" - joining timeline "+r+" to "+p),r.setNeighbouringTimeline(p,o),p.setNeighbouringTimeline(r,i),r=p,u=!0)}else a("Event "+f+" already in timeline "+r);else this.addEventToTimeline(d,r,t),c=!0,u=!0}!c&&u||r.setPaginationToken(n,o)}},n.prototype.addLiveEvent=function(e,t){if(this._filter){if(!this._filter.filterRoomTimeline([e]).length)return}var r=this._eventIdToTimeline[e.getId()];if(r)if("replace"===t){a("EventTimelineSet.addLiveEvent: replacing duplicate event "+e.getId());for(var n=r.getEvents(),o=0;o<n.length;o++)if(n[o].getId()===e.getId()){s.setEventMetadata(e,r.getState(s.FORWARDS),!1),n[o].encryptedType||(n[o]=e);break}}else a("EventTimelineSet.addLiveEvent: ignoring duplicate event "+e.getId());else this.addEventToTimeline(e,this._liveTimeline,!1)},n.prototype.addEventToTimeline=function(e,t,r){var n=e.getId();t.addEvent(e,r),this._eventIdToTimeline[n]=t;var o={timeline:t,liveEvent:!r&&t==this._liveTimeline};this.emit("Room.timeline",e,this.room,Boolean(r),!1,o)},n.prototype.handleRemoteEcho=function(e,t,r){var n=this._eventIdToTimeline[t];n?(delete this._eventIdToTimeline[t],this._eventIdToTimeline[r]=n):this._filter?this._filter.filterRoomTimeline([e]).length&&this.addEventToTimeline(e,this._liveTimeline,!1):this.addEventToTimeline(e,this._liveTimeline,!1)},n.prototype.removeEvent=function(e){var t=this._eventIdToTimeline[e];if(!t)return null;var r=t.removeEvent(e);if(r){delete this._eventIdToTimeline[e];var n={timeline:t};this.emit("Room.timeline",r,this.room,void 0,!0,n)}return r},n.prototype.compareEventOrdering=function(e,t){if(e==t)return 0;var r=this._eventIdToTimeline[e],n=this._eventIdToTimeline[t];if(void 0===r)return null;if(void 0===n)return null;if(r===n){for(var o=void 0,i=void 0,a=r.getEvents(),u=0;u<a.length&&(void 0===o||void 0===i);u++){var c=a[u].getId();c==e&&(o=u),c==t&&(i=u)}return o-i}for(var l=r;l;){if(l===n)return-1;l=l.getNeighbouringTimeline(s.FORWARDS)}for(l=r;l;){if(l===n)return 1;l=l.getNeighbouringTimeline(s.BACKWARDS)}return null},t.exports=n},{"../utils":55,"./event-timeline":33,events:234}],33:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){this._eventTimelineSet=e,this._roomId=e.room?e.room.roomId:null,this._events=[],this._baseIndex=0,this._startState=new c(this._roomId),this._startState.paginationToken=null,this._endState=new c(this._roomId),this._endState.paginationToken=null,this._prevTimeline=null,this._nextTimeline=null,this._paginationRequests={b:null,f:null},this._name=this._roomId+":"+(new Date).toISOString()}var i=e("babel-runtime/core-js/object/freeze"),s=n(i),a=e("babel-runtime/core-js/get-iterator"),u=n(a),c=e("./room-state");o.BACKWARDS="b",o.FORWARDS="f",o.prototype.initialiseState=function(e){if(this._events.length>0)throw new Error("Cannot initialise state after events are added");var t=!0,r=!1,n=void 0;try{for(var o,i=(0,u.default)(e);!(t=(o=i.next()).done);t=!0){var a=o.value;(0,s.default)(a)}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}this._startState.setStateEvents(e),this._endState.setStateEvents(e)},o.prototype.forkLive=function(e){var t=this.getState(e),r=new o(this._eventTimelineSet);return r._startState=t.clone(),r._endState=t,this._endState=t.clone(),r},o.prototype.fork=function(e){var t=this.getState(e),r=new o(this._eventTimelineSet);return r._startState=t.clone(),r._endState=t.clone(),r},o.prototype.getRoomId=function(){return this._roomId},o.prototype.getFilter=function(){return this._eventTimelineSet.getFilter()},o.prototype.getTimelineSet=function(){return this._eventTimelineSet},o.prototype.getBaseIndex=function(){return this._baseIndex},o.prototype.getEvents=function(){return this._events},o.prototype.getState=function(e){if(e==o.BACKWARDS)return this._startState;if(e==o.FORWARDS)return this._endState;throw new Error("Invalid direction '"+e+"'")},o.prototype.getPaginationToken=function(e){return this.getState(e).paginationToken},o.prototype.setPaginationToken=function(e,t){this.getState(t).paginationToken=e},o.prototype.getNeighbouringTimeline=function(e){if(e==o.BACKWARDS)return this._prevTimeline;if(e==o.FORWARDS)return this._nextTimeline;throw new Error("Invalid direction '"+e+"'")},o.prototype.setNeighbouringTimeline=function(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour");if(t==o.BACKWARDS)this._prevTimeline=e;else{if(t!=o.FORWARDS)throw new Error("Invalid direction '"+t+"'");this._nextTimeline=e}this.setPaginationToken(null,t)},o.prototype.addEvent=function(e,t){var r=t?this._startState:this._endState,n=this.getTimelineSet();n.room&&n.room.getUnfilteredTimelineSet()===n&&(o.setEventMetadata(e,r,t),e.isState()&&(r.setStateEvents([e]),e.sender&&("m.room.member"!==e.getType()||t)||o.setEventMetadata(e,r,t)));var i=void 0;i=t?0:this._events.length,this._events.splice(i,0,e),t&&this._baseIndex++},o.setEventMetadata=function(e,t,r){e.sender=t.getSentinelMember(e.getSender()),"m.room.member"===e.getType()&&(e.target=t.getSentinelMember(e.getStateKey())),e.isState()&&r&&(e.forwardLooking=!1)},o.prototype.removeEvent=function(e){for(var t=this._events.length-1;t>=0;t--){var r=this._events[t];if(r.getId()==e)return this._events.splice(t,1),t<this._baseIndex&&this._baseIndex--,r}return null},o.prototype.toString=function(){return this._name},t.exports=o},{"./room-state":37,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/freeze":67}],34:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var o=e("babel-runtime/regenerator"),i=n(o),s=e("bluebird"),a=n(s),u=e("events"),c=e("../utils.js"),l=n(c);t.exports.EventStatus={NOT_SENT:"not_sent",ENCRYPTING:"encrypting",SENDING:"sending",QUEUED:"queued",SENT:"sent",CANCELLED:"cancelled"};var d={};t.exports.MatrixEvent=function(e){["state_key","type","sender","room_id","membership"].forEach(function(t){e[t]&&(d[e[t]]||(d[e[t]]=e[t]),e[t]=d[e[t]])}),["membership","avatar_url","displayname"].forEach(function(t){e.content&&e.content[t]&&(d[e.content[t]]||(d[e.content[t]]=e.content[t]),e.content[t]=d[e.content[t]])}),this.event=e||{},this.sender=null,this.target=null,this.status=null,this.error=null,this.forwardLooking=!0,this._pushActions=null,this._clearEvent={},this._senderCurve25519Key=null,this._claimedEd25519Key=null,this._forwardingCurve25519KeyChain=[],this._decryptionPromise=null,this._retryDecryption=!1},l.default.inherits(t.exports.MatrixEvent,u.EventEmitter),l.default.extend(t.exports.MatrixEvent.prototype,{getId:function(){return this.event.event_id},getSender:function(){return this.event.sender||this.event.user_id},getType:function(){return this._clearEvent.type||this.event.type},getWireType:function(){return this.event.type},getRoomId:function(){return this.event.room_id},getTs:function(){return this.event.origin_server_ts}, +getDate:function(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null},getContent:function(){return this._clearEvent.content||this.event.content||{}},getWireContent:function(){return this.event.content||{}},getPrevContent:function(){return this.getUnsigned().prev_content||this.event.prev_content||{}},getDirectionalContent:function(){return this.forwardLooking?this.getContent():this.getPrevContent()},getAge:function(){return this.getUnsigned().age||this.event.age},getStateKey:function(){return this.event.state_key},isState:function(){return void 0!==this.event.state_key},makeEncrypted:function(e,t,r,n){this._clearEvent={type:this.event.type,content:this.event.content},this.event.type=e,this.event.content=t,this._senderCurve25519Key=r,this._claimedEd25519Key=n},isBeingDecrypted:function(){return null!=this._decryptionPromise},isDecryptionFailure:function(){return this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"===this._clearEvent.content.msgtype},attemptDecryption:function(){function e(e){return t.apply(this,arguments)}var t=(0,s.method)(function(e){if(!this.isEncrypted())throw new Error("Attempt to decrypt event which isn't encrypted");if(this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"!==this._clearEvent.content.msgtype)throw new Error("Attempt to decrypt event which has already been encrypted");return this._decryptionPromise?(console.log("Event "+this.getId()+" already being decrypted; queueing a retry"),this._retryDecryption=!0,this._decryptionPromise):(this._decryptionPromise=this._decryptionLoop(e),this._decryptionPromise)});return e}(),cancelAndResendKeyRequest:function(e){var t=this.getWireContent();e.cancelRoomKeyRequest({algorithm:t.algorithm,room_id:this.getRoomId(),session_id:t.session_id,sender_key:t.sender_key},!0)},_decryptionLoop:function(){function e(e){return t.apply(this,arguments)}var t=(0,s.coroutine)(i.default.mark(function e(t){var r,n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,s.resolve)(a.default.resolve());case 2:if(this._retryDecryption=!1,r=void 0,n=void 0,e.prev=6,t){e.next=11;break}r=this._badEncryptedMessage("Encryption not enabled"),e.next=14;break;case 11:return e.next=13,(0,s.resolve)(t.decryptEvent(this));case 13:r=e.sent;case 14:e.next=29;break;case 16:if(e.prev=16,e.t0=e.catch(6),"DecryptionError"===e.t0.name){e.next=23;break}return console.error("Error decrypting event (id="+this.getId()+"): "+(e.t0.stack||e.t0)),this._decryptionPromise=null,this._retryDecryption=!1,e.abrupt("return");case 23:if(n=e.t0,!this._retryDecryption){e.next=27;break}return console.log("Got error decrypting event (id="+this.getId()+": "+e.t0+"), but retrying"),e.abrupt("continue",2);case 27:console.warn("Error decrypting event (id="+this.getId()+"): "+e.t0.detailedString),r=this._badEncryptedMessage(e.t0.message);case 29:return this._decryptionPromise=null,this._retryDecryption=!1,this._setClearData(r),this.emit("Event.decrypted",this,n),e.abrupt("return");case 36:case"end":return e.stop()}},e,this,[[6,16]])}));return e}(),_badEncryptedMessage:function(e){return{clearEvent:{type:"m.room.message",content:{msgtype:"m.bad.encrypted",body:"** Unable to decrypt: "+e+" **"}}}},_setClearData:function(e){this._clearEvent=e.clearEvent,this._senderCurve25519Key=e.senderCurve25519Key||null,this._claimedEd25519Key=e.claimedEd25519Key||null,this._forwardingCurve25519KeyChain=e.forwardingCurve25519KeyChain||[]},isEncrypted:function(){return"m.room.encrypted"===this.event.type},getSenderKey:function(){return this._senderCurve25519Key},getKeysClaimed:function(){return{ed25519:this._claimedEd25519Key}},getClaimedEd25519Key:function(){return this._claimedEd25519Key},getForwardingCurve25519KeyChain:function(){return this._forwardingCurve25519KeyChain},getUnsigned:function(){return this.event.unsigned||{}},makeRedacted:function(e){if(!e.event)throw new Error("invalid redaction_event in makeRedacted");this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event;var t=void 0;for(t in this.event)this.event.hasOwnProperty(t)&&(f[t]||delete this.event[t]);var r=p[this.getType()]||{},n=this.getContent();for(t in n)n.hasOwnProperty(t)&&(r[t]||delete n[t])},isRedacted:function(){return Boolean(this.getUnsigned().redacted_because)},getPushActions:function(){return this._pushActions},setPushActions:function(e){this._pushActions=e},handleRemoteEcho:function(e){this.event=e,this.status=null}});var f=["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"].reduce(function(e,t){return e[t]=1,e},{}),p={"m.room.member":{membership:1},"m.room.create":{creator:1},"m.room.join_rules":{join_rule:1},"m.room.power_levels":{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1},"m.room.aliases":{aliases:1}}},{"../utils.js":55,"babel-runtime/regenerator":86,bluebird:89,events:234}],35:[function(e,t,r){"use strict";function n(e){this.groupId=e,this.name=null,this.avatarUrl=null,this.myMembership=null,this.inviter=null}var o=e("events").EventEmitter;e("../utils").inherits(n,o),n.prototype.setProfile=function(e,t){this.name===e&&this.avatarUrl===t||(this.name=e||this.groupId,this.avatarUrl=t,this.emit("Group.profile",this))},n.prototype.setMyMembership=function(e){this.myMembership!==e&&(this.myMembership=e,this.emit("Group.myMembership",this))},n.prototype.setInviter=function(e){this.inviter=e},t.exports=n},{"../utils":55,events:234}],36:[function(e,t,r){"use strict";function n(e,t){this.roomId=e,this.userId=t,this.typing=!1,this.name=t,this.rawDisplayName=t,this.powerLevel=0,this.powerLevelNorm=0,this.user=null,this.membership=null,this.events={member:null},this._isOutOfBand=!1,this._updateModifiedTime()}function o(e,t,r){if(!t||t===e)return e;if(!r)return t;var n=a.removeHiddenChars(t);if(!n)return e;var o=/@.+:.+/.test(t);if(!o){o=r.getUserIdsWithDisplayName(n).some(function(t){return t!==e})}return o?t+" ("+e+")":t}var i=e("events").EventEmitter,s=e("../content-repo"),a=e("../utils");a.inherits(n,i),n.prototype.markOutOfBand=function(){this._isOutOfBand=!0},n.prototype.isOutOfBand=function(){return this._isOutOfBand},n.prototype.setMembershipEvent=function(e,t){if("m.room.member"===e.getType()){this._isOutOfBand=!1,this.events.member=e;var r=this.membership;this.membership=e.getDirectionalContent().membership;var n=this.name;this.name=o(this.userId,e.getDirectionalContent().displayname,t),this.rawDisplayName=e.getDirectionalContent().displayname||this.userId,r!==this.membership&&(this._updateModifiedTime(),this.emit("RoomMember.membership",e,this,r)),n!==this.name&&(this._updateModifiedTime(),this.emit("RoomMember.name",e,this,n))}},n.prototype.setPowerLevelEvent=function(e){if("m.room.power_levels"===e.getType()){var t=e.getDirectionalContent(),r=t.users_default||0;a.forEach(a.values(t.users),function(e){r=Math.max(r,e)});var n=this.powerLevel,o=this.powerLevelNorm;t.users&&void 0!==t.users[this.userId]?this.powerLevel=t.users[this.userId]:void 0!==t.users_default?this.powerLevel=t.users_default:this.powerLevel=0,this.powerLevelNorm=0,r>0&&(this.powerLevelNorm=100*this.powerLevel/r),n===this.powerLevel&&o===this.powerLevelNorm||(this._updateModifiedTime(),this.emit("RoomMember.powerLevel",e,this))}},n.prototype.setTypingEvent=function(e){if("m.typing"===e.getType()){var t=this.typing;this.typing=!1;var r=e.getContent().user_ids;a.isArray(r)&&(-1!==r.indexOf(this.userId)&&(this.typing=!0),t!==this.typing&&(this._updateModifiedTime(),this.emit("RoomMember.typing",e,this)))}},n.prototype._updateModifiedTime=function(){this._modified=Date.now()},n.prototype.getLastModifiedTime=function(){return this._modified},n.prototype.isKicked=function(){return"leave"===this.membership&&this.events.member.getSender()!==this.events.member.getStateKey()},n.prototype.getDMInviter=function(){if(this.events.member){var e=this.events.member,t=e.getContent(),r=e.getSender();if("join"===t.membership&&(t=e.getPrevContent(),r=e.getUnsigned().prev_sender),"invite"===t.membership&&t.is_direct)return r}},n.prototype.getAvatarUrl=function(e,t,r,n,o,i){void 0===o&&(o=!0);var a=this.getMxcAvatarUrl();if(!a&&!o)return null;var u=s.getHttpUriForMxc(e,a,t,r,n,i);return u||(o?s.getIdenticonUri(e,this.userId,t,r):null)},n.prototype.getMxcAvatarUrl=function(){return this.events.member?this.events.member.getDirectionalContent().avatar_url:this.user?this.user.avatarUrl:null},t.exports=n},{"../content-repo":6,"../utils":55,events:234}],37:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;this.roomId=e,this.members={},this.events={},this.paginationToken=null,this._sentinels={},this._updateModifiedTime(),this._displayNameToUserIds={},this._userIdsToDisplayNames={},this._tokenToInvite={},this._joinedMemberCount=null,this._summaryJoinedMemberCount=null,this._invitedMemberCount=null,this._summaryInvitedMemberCount=null,t||(t={status:m}),this._oobMemberFlags=t}function i(e,t){if(t.getContent().third_party_invite){var r=(t.getContent().third_party_invite.signed||{}).token;if(r){e.getStateEvents("m.room.third_party_invite",r)&&(e._tokenToInvite[r]=t)}}}function s(e,t,r){var n=e._userIdsToDisplayNames[t];if(delete e._userIdsToDisplayNames[t],n){var o=h.removeHiddenChars(n),i=e._displayNameToUserIds[o];if(i){var s=i.filter(function(e){return e!==t});e._displayNameToUserIds[o]=s}}e._userIdsToDisplayNames[t]=r;var a=r&&h.removeHiddenChars(r);a&&(e._displayNameToUserIds[a]||(e._displayNameToUserIds[a]=[]),e._displayNameToUserIds[a].push(t))}var a=e("babel-runtime/core-js/number/is-finite"),u=n(a),c=e("babel-runtime/core-js/object/keys"),l=n(c),d=e("babel-runtime/core-js/object/values"),f=n(d),p=e("events").EventEmitter,h=e("../utils"),v=e("./room-member"),m=1;h.inherits(o,p),o.prototype.getJoinedMemberCount=function(){return null!==this._summaryJoinedMemberCount?this._summaryJoinedMemberCount:(null===this._joinedMemberCount&&(this._joinedMemberCount=this.getMembers().reduce(function(e,t){return"join"===t.membership?e+1:e},0)),this._joinedMemberCount)},o.prototype.setJoinedMemberCount=function(e){this._summaryJoinedMemberCount=e},o.prototype.getInvitedMemberCount=function(){return null!==this._summaryInvitedMemberCount?this._summaryInvitedMemberCount:(null===this._invitedMemberCount&&(this._invitedMemberCount=this.getMembers().reduce(function(e,t){return"invite"===t.membership?e+1:e},0)),this._invitedMemberCount)},o.prototype.setInvitedMemberCount=function(e){this._summaryInvitedMemberCount=e},o.prototype.getMembers=function(){return h.values(this.members)},o.prototype.getMember=function(e){return this.members[e]||null},o.prototype.getSentinelMember=function(e){if(!e)return null;var t=this._sentinels[e];if(void 0===t){t=new v(this.roomId,e);var r=this.members[e];r&&t.setMembershipEvent(r.events.member,this),this._sentinels[e]=t}return t},o.prototype.getStateEvents=function(e,t){if(!this.events[e])return void 0===t?[]:null;if(void 0===t)return h.values(this.events[e]);var r=this.events[e][t];return r||null},o.prototype.clone=function(){var e=new o(this.roomId,this._oobMemberFlags),t=this._oobMemberFlags.status;return this._oobMemberFlags.status=m,(0,f.default)(this.events).forEach(function(t){var r=(0,f.default)(t);e.setStateEvents(r)}),this._oobMemberFlags.status=t,null!==this._summaryInvitedMemberCount&&e.setInvitedMemberCount(this.getInvitedMemberCount()),null!==this._summaryJoinedMemberCount&&e.setJoinedMemberCount(this.getJoinedMemberCount()),3==this._oobMemberFlags.status&&this.getMembers().forEach(function(t){if(t.isOutOfBand()){e.getMember(t.userId).markOutOfBand()}}),e},o.prototype.setUnknownStateEvents=function(e){var t=this,r=e.filter(function(e){return void 0===t.events[e.getType()]||void 0===t.events[e.getType()][e.getStateKey()]});this.setStateEvents(r)},o.prototype.setStateEvents=function(e){var t=this;this._updateModifiedTime(),h.forEach(e,function(e){e.getRoomId()===t.roomId&&e.isState()&&(t._setStateEvent(e),"m.room.member"===e.getType()&&(s(t,e.getStateKey(),e.getContent().displayname),i(t,e)),t.emit("RoomState.events",e,t))}),h.forEach(e,function(e){if(e.getRoomId()===t.roomId&&e.isState())if("m.room.member"===e.getType()){var r=e.getStateKey();"leave"!==e.getContent().membership&&"ban"!==e.getContent().membership||(e.getContent().avatar_url=e.getContent().avatar_url||e.getPrevContent().avatar_url,e.getContent().displayname=e.getContent().displayname||e.getPrevContent().displayname);var n=t._getOrCreateMember(r,e);n.setMembershipEvent(e,t),t._updateMember(n),t.emit("RoomState.members",e,t,n)}else if("m.room.power_levels"===e.getType()){var o=h.values(t.members);h.forEach(o,function(r){r.setPowerLevelEvent(e),t.emit("RoomState.members",e,t,r)}),t._sentinels={}}})},o.prototype._getOrCreateMember=function(e,t){var r=this.members[e];return r||(r=new v(this.roomId,e),this.members[e]=r,this.emit("RoomState.newMember",t,this,r)),r},o.prototype._setStateEvent=function(e){void 0===this.events[e.getType()]&&(this.events[e.getType()]={}),this.events[e.getType()][e.getStateKey()]=e},o.prototype._updateMember=function(e){var t=this.getStateEvents("m.room.power_levels","");t&&e.setPowerLevelEvent(t),delete this._sentinels[e.userId],this.members[e.userId]=e,this._joinedMemberCount=null,this._invitedMemberCount=null},o.prototype.needsOutOfBandMembers=function(){return this._oobMemberFlags.status===m},o.prototype.markOutOfBandMembersStarted=function(){this._oobMemberFlags.status===m&&(this._oobMemberFlags.status=2)},o.prototype.markOutOfBandMembersFailed=function(){2===this._oobMemberFlags.status&&(this._oobMemberFlags.status=m)},o.prototype.clearOutOfBandMembers=function(){var e=this,t=0;(0,l.default)(this.members).forEach(function(r){e.members[r].isOutOfBand()&&(++t,delete e.members[r])}),console.log("LL: RoomState removed "+t+" members..."),this._oobMemberFlags.status=m},o.prototype.setOutOfBandMembers=function(e){var t=this;console.log("LL: RoomState about to set "+e.length+" OOB members ..."),2===this._oobMemberFlags.status&&(console.log("LL: RoomState put in OOB_STATUS_FINISHED state ..."),this._oobMemberFlags.status=3,e.forEach(function(e){return t._setOutOfBandMember(e)}))},o.prototype._setOutOfBandMember=function(e){if("m.room.member"===e.getType()){var t=e.getStateKey(),r=this.getMember(t);if(!r||r.isOutOfBand()){var n=this._getOrCreateMember(t,e);n.setMembershipEvent(e,this),n.markOutOfBand(),s(this,n.userId,n.name),this._setStateEvent(e),this._updateMember(n),this.emit("RoomState.members",e,this,n)}}},o.prototype.setTypingEvent=function(e){h.forEach(h.values(this.members),function(t){t.setTypingEvent(e)})},o.prototype.getInviteForThreePidToken=function(e){return this._tokenToInvite[e]||null},o.prototype._updateModifiedTime=function(){this._modified=Date.now()},o.prototype.getLastModifiedTime=function(){return this._modified},o.prototype.getUserIdsWithDisplayName=function(e){return this._displayNameToUserIds[e]||[]},o.prototype.maySendRedactionForEvent=function(e,t){var r=this.getMember(t);if(!r||"leave"===r.membership)return!1;if(e.status||e.isRedacted())return!1;var n=this.maySendEvent("m.room.redaction",t);return e.getSender()===t?n:this._hasSufficientPowerLevelFor("redact",r.powerLevel)},o.prototype._hasSufficientPowerLevelFor=function(e,t){var r=this.getStateEvents("m.room.power_levels",""),n={};r&&(n=r.getContent());var o=50;return h.isNumber(n[e])&&(o=n[e]),t>=o},o.prototype.maySendMessage=function(e){return this._maySendEventOfType("m.room.message",e,!1)},o.prototype.maySendEvent=function(e,t){return this._maySendEventOfType(e,t,!1)},o.prototype.mayClientSendStateEvent=function(e,t){return!t.isGuest()&&this.maySendStateEvent(e,t.credentials.userId)},o.prototype.maySendStateEvent=function(e,t){return this._maySendEventOfType(e,t,!0)},o.prototype._maySendEventOfType=function(e,t,r){var n=this.getStateEvents("m.room.power_levels",""),o=void 0,i={},s=0,a=0,c=0;if(n){o=n.getContent(),i=o.events||{},s=(0,u.default)(o.state_default)?o.state_default:50;var l=o.users&&o.users[t];(0,u.default)(l)?c=l:(0,u.default)(o.users_default)&&(c=o.users_default),(0,u.default)(o.events_default)&&(a=o.events_default)}var d=r?s:a;return(0,u.default)(i[e])&&(d=i[e]),c>=d},o.prototype.mayTriggerNotifOfType=function(e,t){var r=this.getMember(t);if(!r)return!1;var n=this.getStateEvents("m.room.power_levels",""),o=50;return n&&n.getContent()&&n.getContent().notifications&&h.isNumber(n.getContent().notifications[e])&&(o=n.getContent().notifications[e]),r.powerLevel>=o},t.exports=o},{"../utils":55,"./room-member":36,"babel-runtime/core-js/number/is-finite":61,"babel-runtime/core-js/object/keys":69,"babel-runtime/core-js/object/values":71,events:234}],38:[function(e,t,r){"use strict";function n(e,t){this.roomId=e,this.info=t}t.exports=n},{}],39:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){var n={content:{},type:"m.receipt",room_id:t.getRoomId()};return n.content[t.getId()]={},n.content[t.getId()][r]={},n.content[t.getId()][r][e]={ts:t.getTs()},new S(n)}function i(e,t,r,n){if(n=n||{},n.pendingEventOrdering=n.pendingEventOrdering||"chronological",this.reEmitter=new _.default(this),-1===["chronological","detached"].indexOf(n.pendingEventOrdering))throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or 'detached'. Got: '"+n.pendingEventOrdering+"'");this.myUserId=r,this.roomId=e,this.name=e,this.tags={},this.accountData={},this.summary=null,this.storageToken=n.storageToken,this._opts=n,this._txnToEvent={},this._receipts={},this._receiptCacheByEventId={},this._realReceipts={},this._notificationCounts={},this._timelineSets=[new R(this,n)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),["Room.timeline","Room.timelineReset"]),this._fixUpLegacyTimelineFields(),this._filteredTimelineSets={},"detached"==this._opts.pendingEventOrdering&&(this._pendingEventList=[]),this._blacklistUnverifiedDevices=null,this._selfMembership=null,this._summaryHeroes=null,this._client=t,this._opts.lazyLoadMembers?this._membersPromise=null:this._membersPromise=m.default.resolve()}function s(e,t,r){if(!r){var n=e.currentState.getStateEvents("m.room.name","");if(n&&n.getContent()&&n.getContent().name)return n.getContent().name}var o=e.getCanonicalAlias();if(!o){var i=e.getAliases();i.length&&(o=i[0])}if(o)return o;var s=e.currentState.getJoinedMemberCount(),u=e.currentState.getInvitedMemberCount(),c=s+u-1,l=null;if(e._summaryHeroes)l=e._summaryHeroes.map(function(t){var r=e.getMember(t);return r?r.name:t});else{var d=e.currentState.getMembers().filter(function(e){return e.userId!==t&&("invite"===e.membership||"join"===e.membership)});d.sort(function(e,t){return e.userId.localeCompare(t.userId)}),d=d.slice(0,5),l=d.map(function(e){return e.name})}if(c)return a(l,c);if("join"==e.getMyMembership()){var f=e.currentState.getStateEvents("m.room.third_party_invite");if(f&&f.length)return"Inviting "+a(f.map(function(e){return e.getContent().display_name}))}var p=l;return p.length||(p=e.currentState.getMembers().filter(function(e){return e.userId!==t&&"invite"!==e.membership&&"join"!==e.membership}).map(function(e){return e.name})),p.length?"Empty room (was "+a(p)+")":"Empty room"}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length+1,r=t-1;if(e.length){if(1===e.length&&r<=1)return e[0];if(2===e.length&&r<=2)return e[0]+" and "+e[1];return r>1?e[0]+" and "+r+" others":e[0]+" and 1 other"}return"Empty room"}var u=e("babel-runtime/core-js/object/assign"),c=n(u),l=e("babel-runtime/core-js/number/is-integer"),d=n(l),f=e("babel-runtime/regenerator"),p=n(f),h=e("bluebird"),v=e("babel-runtime/core-js/promise"),m=n(v),y=e("../ReEmitter"),_=n(y),g=e("events").EventEmitter,b=e("./event").EventStatus,E=e("./room-summary"),w=e("./room-member"),S=e("./event").MatrixEvent,k=e("../utils"),T=e("../content-repo"),x=e("./event-timeline"),R=e("./event-timeline-set");k.inherits(i,g),i.prototype.getVersion=function(){var e=this.currentState.getStateEvents("m.room.create","");if(!e)return console.warn("Room "+this.room_id+" does not have an m.room.create event"),"1";var t=e.getContent().room_version;return void 0===t?"1":t},i.prototype.shouldUpgradeToVersion=function(){return"1"===this.getVersion()?null:"1"},i.prototype.userMayUpgradeRoom=function(e){return this.currentState.maySendStateEvent("m.room.tombstone",e)},i.prototype.getPendingEvents=function(){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call getPendingEventList with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList},i.prototype.getLiveTimeline=function(){return this.getUnfilteredTimelineSet().getLiveTimeline()},i.prototype.getMyMembership=function(){return this._selfMembership},i.prototype.getDMInviter=function(){if(this.myUserId){var e=this.getMember(this.myUserId);if(e)return e.getDMInviter()}if("invite"===this._selfMembership){if(2==this.getInvitedAndJoinedMemberCount()&&this._summaryHeroes.length)return this._summaryHeroes[0]}},i.prototype.guessDMUserId=function(){var e=this,t=this.getMember(this.myUserId);if(t){var r=t.getDMInviter();if(r)return r}if(Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length)return this._summaryHeroes[0];var n=this.currentState.getMembers(),o=n.find(function(t){return t.userId!==e.myUserId});return o?o.userId:this.myUserId},i.prototype.getAvatarFallbackMember=function(){var e=this;if(!(this.getInvitedAndJoinedMemberCount()>2)){var t=Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length;if(t){var r=this._summaryHeroes.map(function(t){return e.getMember(t)}).find(function(e){return!!e});if(r)return r}var n=this.currentState.getMembers();if(n.length<=2){var o=n.find(function(t){return t.userId!==e.myUserId});if(o)return o}if(t){var i=this._summaryHeroes.map(function(t){return e._client.getUser(t)}).find(function(e){return!!e});if(i){var s=new w(this.roomId,i.userId);return s.user=i,s}}}},i.prototype.updateMyMembership=function(e){var t=this._selfMembership;this._selfMembership=e,t!==e&&("leave"===e&&this._cleanupAfterLeaving(),this.emit("Room.myMembership",this,e,t))},i.prototype._loadMembersFromServer=(0,h.coroutine)(p.default.mark(function e(){var t,r,n,o,i;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._client.store.getSyncToken(),r=k.encodeParams({not_membership:"leave",at:t}),n=k.encodeUri("/rooms/$roomId/members?"+r,{$roomId:this.roomId}),o=this._client._http,e.next=6,(0,h.resolve)(o.authedRequest(void 0,"GET",n));case 6:return i=e.sent,e.abrupt("return",i.chunk);case 8:case"end":return e.stop()}},e,this)})),i.prototype._loadMembers=(0,h.coroutine)(p.default.mark(function e(){var t,r,n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,(0,h.resolve)(this._client.store.getOutOfBandMembers(this.roomId));case 3:if(null!==(r=e.sent)){e.next=10;break}return t=!0,e.next=8,(0,h.resolve)(this._loadMembersFromServer());case 8:r=e.sent,console.log("LL: got "+r.length+" members from server for room "+this.roomId);case 10:return n=r.map(this._client.getEventMapper()),e.abrupt("return",{memberEvents:n,fromServer:t});case 12:case"end":return e.stop()}},e,this)})),i.prototype.loadMembersIfNeeded=function(){var e=this;if(this._membersPromise)return this._membersPromise;this.currentState.markOutOfBandMembersStarted();var t=this._loadMembers().then(function(t){return e.currentState.setOutOfBandMembers(t.memberEvents),e._client.isRoomEncrypted(e.roomId)&&e._client._crypto.trackRoomDevices(e.roomId),t.fromServer}).catch(function(t){throw e._membersPromise=null,e.currentState.markOutOfBandMembersFailed(),t});return t.then(function(t){if(t){var r=e.currentState.getMembers().filter(function(e){return e.isOutOfBand()}).map(function(e){return e.events.member.event});console.log("LL: telling store to write "+r.length+" members for room "+e.roomId);return e._client.store.setOutOfBandMembers(e.roomId,r).catch(function(e){console.log("LL: storing OOB room members failed, oh well",e)})}}).catch(function(e){console.error(e)}),this._membersPromise=t,this._membersPromise},i.prototype.clearLoadedMembersIfNeeded=(0,h.coroutine)(p.default.mark(function e(){return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._opts.lazyLoadMembers||!this._membersPromise){e.next=7;break}return e.next=3,(0,h.resolve)(this.loadMembersIfNeeded());case 3:return e.next=5,(0,h.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));case 5:this.currentState.clearOutOfBandMembers(),this._membersPromise=null;case 7:case"end":return e.stop()}},e,this)})),i.prototype._cleanupAfterLeaving=function(){var e=this;this.clearLoadedMembersIfNeeded().catch(function(t){console.error("error after clearing loaded members from room "+e.roomId+" after leaving"),console.dir(t)})},i.prototype.resetLiveTimeline=function(e,t){for(var r=0;r<this._timelineSets.length;r++)this._timelineSets[r].resetLiveTimeline(e,t);this._fixUpLegacyTimelineFields()},i.prototype._fixUpLegacyTimelineFields=function(){this.timeline=this.getLiveTimeline().getEvents(),this.oldState=this.getLiveTimeline().getState(x.BACKWARDS),this.currentState=this.getLiveTimeline().getState(x.FORWARDS)},i.prototype.getTimelineSets=function(){return this._timelineSets},i.prototype.getUnfilteredTimelineSet=function(){return this._timelineSets[0]},i.prototype.getTimelineForEvent=function(e){return this.getUnfilteredTimelineSet().getTimelineForEvent(e)},i.prototype.addTimeline=function(){return this.getUnfilteredTimelineSet().addTimeline()},i.prototype.findEventById=function(e){return this.getUnfilteredTimelineSet().findEventById(e)},i.prototype.getUnreadNotificationCount=function(e){return e=e||"total",this._notificationCounts[e]},i.prototype.setUnreadNotificationCount=function(e,t){this._notificationCounts[e]=t},i.prototype.setSummary=function(e){var t=this,r=e["m.heroes"],n=e["m.joined_member_count"],o=e["m.invited_member_count"];(0,d.default)(n)&&this.currentState.setJoinedMemberCount(n),(0,d.default)(o)&&this.currentState.setInvitedMemberCount(o),Array.isArray(r)&&(this._summaryHeroes=r.filter(function(e){return e!==t.myUserId}))},i.prototype.setBlacklistUnverifiedDevices=function(e){this._blacklistUnverifiedDevices=e},i.prototype.getBlacklistUnverifiedDevices=function(){return this._blacklistUnverifiedDevices},i.prototype.getAvatarUrl=function(e,t,r,n,o){var i=this.currentState.getStateEvents("m.room.avatar","");if(void 0===o&&(o=!0),!i&&!o)return null;var s=i?i.getContent().url:null;return s?T.getHttpUriForMxc(e,s,t,r,n):o?T.getIdenticonUri(e,this.roomId,t,r):null},i.prototype.getAliases=function(){var e=[],t=this.currentState.getStateEvents("m.room.aliases");if(t)for(var r=0;r<t.length;++r){var n=t[r];k.isArray(n.getContent().aliases)&&Array.prototype.push.apply(e,n.getContent().aliases)}return e},i.prototype.getCanonicalAlias=function(){var e=this.currentState.getStateEvents("m.room.canonical_alias","");return e?e.getContent().alias:null},i.prototype.addEventsToTimeline=function(e,t,r,n){r.getTimelineSet().addEventsToTimeline(e,t,r,n)},i.prototype.getMember=function(e){return this.currentState.getMember(e)},i.prototype.getJoinedMembers=function(){return this.getMembersWithMembership("join")},i.prototype.getJoinedMemberCount=function(){return this.currentState.getJoinedMemberCount()},i.prototype.getInvitedMemberCount=function(){return this.currentState.getInvitedMemberCount()},i.prototype.getInvitedAndJoinedMemberCount=function(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()},i.prototype.getMembersWithMembership=function(e){return k.filter(this.currentState.getMembers(),function(t){return t.membership===e})},i.prototype.getEncryptionTargetMembers=(0,h.coroutine)(p.default.mark(function e(){var t;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,h.resolve)(this.loadMembersIfNeeded());case 2:return t=this.getMembersWithMembership("join"),this.shouldEncryptForInvitedMembers()&&(t=t.concat(this.getMembersWithMembership("invite"))),e.abrupt("return",t);case 5:case"end":return e.stop()}},e,this)})),i.prototype.shouldEncryptForInvitedMembers=function(){var e=this.currentState.getStateEvents("m.room.history_visibility","");return e&&e.getContent()&&"joined"!==e.getContent().history_visibility},i.prototype.getDefaultRoomName=function(e){return s(this,e,!0)},i.prototype.hasMembershipState=function(e,t){var r=this.getMember(e);return!!r&&r.membership===t},i.prototype.getOrCreateFilteredTimelineSet=function(e){if(this._filteredTimelineSets[e.filterId])return this._filteredTimelineSets[e.filterId];var t=(0,c.default)({filter:e},this._opts),r=new R(this,t);this.reEmitter.reEmit(r,["Room.timeline","Room.timelineReset"]),this._filteredTimelineSets[e.filterId]=r,this._timelineSets.push(r);var n=this.getLiveTimeline();n.getEvents().forEach(function(e){r.addLiveEvent(e)});for(var o=n;o.getNeighbouringTimeline(x.BACKWARDS);)o=o.getNeighbouringTimeline(x.BACKWARDS);return r.getLiveTimeline().setPaginationToken(o.getPaginationToken(x.BACKWARDS),x.BACKWARDS),r},i.prototype.removeFilteredTimelineSet=function(e){var t=this._filteredTimelineSets[e.filterId];delete this._filteredTimelineSets[e.filterId];var r=this._timelineSets.indexOf(t);r>-1&&this._timelineSets.splice(r,1)},i.prototype._addLiveEvent=function(e,t){var r=void 0;if("m.room.redaction"===e.getType()){var n=e.event.redacts,i=this.getUnfilteredTimelineSet().findEventById(n);i&&(i.makeRedacted(e),this.emit("Room.redaction",e,this))}if(e.getUnsigned().transaction_id){var s=this._txnToEvent[e.getUnsigned().transaction_id];if(s)return void this._handleRemoteEcho(e,s)}for(r=0;r<this._timelineSets.length;r++)this._timelineSets[r].addLiveEvent(e,t);e.sender&&"m.room.redaction"!==e.getType()&&this.addReceipt(o(e.sender.userId,e,"m.read"),!0)},i.prototype.addPendingEvent=function(e,t){if(e.status!==b.SENDING)throw new Error("addPendingEvent called on an event with status "+e.status);if(this._txnToEvent[t])throw new Error("addPendingEvent called on an event with known txnId "+t);if(x.setEventMetadata(e,this.getLiveTimeline().getState(x.FORWARDS),!1),this._txnToEvent[t]=e,"detached"==this._opts.pendingEventOrdering)this._pendingEventList.some(function(e){return e.status===b.NOT_SENT})&&(console.warn("Setting event as NOT_SENT due to messages in the same state"),e.status=b.NOT_SENT),this._pendingEventList.push(e);else for(var r=0;r<this._timelineSets.length;r++){var n=this._timelineSets[r];n.getFilter()?this._filter.filterRoomTimeline([e]).length&&n.addEventToTimeline(e,n.getLiveTimeline(),!1):n.addEventToTimeline(e,n.getLiveTimeline(),!1)}this.emit("Room.localEchoUpdated",e,this,null,null)},i.prototype._handleRemoteEcho=function(e,t){var r=t.getId(),n=e.getId(),o=t.status;delete this._txnToEvent[e.transaction_id],this._pendingEventList&&k.removeElement(this._pendingEventList,function(e){return e.getId()==r},!1),t.handleRemoteEcho(e.event);for(var i=0;i<this._timelineSets.length;i++){this._timelineSets[i].handleRemoteEcho(t,r,n)}this.emit("Room.localEchoUpdated",t,this,r,o)};var I={};I[b.ENCRYPTING]=[b.SENDING,b.NOT_SENT],I[b.SENDING]=[b.ENCRYPTING,b.QUEUED,b.NOT_SENT,b.SENT],I[b.QUEUED]=[b.SENDING,b.CANCELLED],I[b.SENT]=[],I[b.NOT_SENT]=[b.SENDING,b.QUEUED,b.CANCELLED],I[b.CANCELLED]=[],i.prototype.updatePendingEvent=function(e,t,r){if(console.log("setting pendingEvent status to "+t+" in "+e.getRoomId()),t==b.SENT&&!r)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==b.SENT){if(this.getUnfilteredTimelineSet().eventIdToTimeline(r))return}var n=e.status,o=e.getId();if(!n)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");var i=I[n];if(!i||i.indexOf(t)<0)throw new Error("Invalid EventStatus transition "+n+"->"+t);if(e.status=t,t==b.SENT){e.event.event_id=r +;for(var s=0;s<this._timelineSets.length;s++)this._timelineSets[s].replaceEventId(o,r)}else t==b.CANCELLED&&(this._pendingEventList&&k.removeElement(this._pendingEventList,function(e){return e.getId()==o},!1),this.removeEvent(o));this.emit("Room.localEchoUpdated",e,this,e.getId(),n)},i.prototype.addLiveEvents=function(e,t){var r=void 0;if(t&&-1===["replace","ignore"].indexOf(t))throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");for(r=0;r<this._timelineSets.length;r++){var n=this._timelineSets[r].getLiveTimeline();if(n.getPaginationToken(x.FORWARDS))throw new Error("live timeline "+r+" is no longer live - it has a pagination token ("+n.getPaginationToken(x.FORWARDS)+")");if(n.getNeighbouringTimeline(x.FORWARDS))throw new Error("live timeline "+r+" is no longer live - it has a neighbouring timeline")}for(r=0;r<e.length;r++)"m.typing"===e[r].getType()?this.currentState.setTypingEvent(e[r]):"m.receipt"===e[r].getType()?this.addReceipt(e[r]):this._addLiveEvent(e[r],t)},i.prototype.removeEvents=function(e){for(var t=0;t<e.length;++t)this.removeEvent(e[t])},i.prototype.removeEvent=function(e){for(var t=!1,r=0;r<this._timelineSets.length;r++){this._timelineSets[r].removeEvent(e)&&(t=!0)}return t},i.prototype.recalculate=function(){var e=this,t=this.currentState.getStateEvents("m.room.member",this.myUserId);if(t&&"invite"===t.getContent().membership){var r=t.event.invite_room_state||[];k.forEach(r,function(t){e.currentState.getStateEvents(t.type,t.state_key)||e.currentState.setStateEvents([new S({type:t.type,state_key:t.state_key,content:t.content,event_id:"$fake"+Date.now(),room_id:e.roomId,user_id:e.myUserId})])})}var n=this.name;this.name=s(this,this.myUserId),this.summary=new E(this.roomId,{title:this.name}),n!==this.name&&this.emit("Room.name",this)},i.prototype.getUsersReadUpTo=function(e){return this.getReceiptsForEvent(e).filter(function(e){return"m.read"===e.type}).map(function(e){return e.userId})},i.prototype.getEventReadUpTo=function(e,t){var r=this._receipts;return t&&(r=this._realReceipts),void 0===r["m.read"]||void 0===r["m.read"][e]?null:r["m.read"][e].eventId},i.prototype.getReceiptsForEvent=function(e){return this._receiptCacheByEventId[e.getId()]||[]},i.prototype.addReceipt=function(e,t){void 0===t&&(t=!1),t||this._addReceiptsToStructure(e,this._realReceipts),this._addReceiptsToStructure(e,this._receipts),this._receiptCacheByEventId=this._buildReceiptCache(this._receipts),this.emit("Room.receipt",e,this)},i.prototype._addReceiptsToStructure=function(e,t){var r=this;k.keys(e.getContent()).forEach(function(n){k.keys(e.getContent()[n]).forEach(function(o){k.keys(e.getContent()[n][o]).forEach(function(i){var s=e.getContent()[n][o][i];t[o]||(t[o]={});var a=t[o][i];if(a){var u=r.getUnfilteredTimelineSet().compareEventOrdering(a.eventId,n);if(null!==u&&u>=0)return}else t[o][i]={};t[o][i]={eventId:n,data:s}})})})},i.prototype._buildReceiptCache=function(e){var t={};return k.keys(e).forEach(function(r){k.keys(e[r]).forEach(function(n){var o=e[r][n];t[o.eventId]||(t[o.eventId]=[]),t[o.eventId].push({userId:n,type:r,data:o.data})})}),t},i.prototype._addLocalEchoReceipt=function(e,t,r){this.addReceipt(o(e,t,r),!0)},i.prototype.addTags=function(e){this.tags=e.getContent().tags||{},this.emit("Room.tags",e,this)},i.prototype.addAccountData=function(e){for(var t=0;t<e.length;t++){var r=e[t];"m.tag"===r.getType()&&this.addTags(r),this.accountData[r.getType()]=r,this.emit("Room.accountData",r,this)}},i.prototype.getAccountData=function(e){return this.accountData[e]},i.prototype.maySendMessage=function(){return"join"===this.getMyMembership()&&this.currentState.maySendEvent("m.room.message",this.myUserId)},t.exports=i},{"../ReEmitter":2,"../content-repo":6,"../utils":55,"./event":34,"./event-timeline":33,"./event-timeline-set":32,"./room-member":36,"./room-summary":38,"babel-runtime/core-js/number/is-integer":62,"babel-runtime/core-js/object/assign":63,"babel-runtime/core-js/promise":72,"babel-runtime/regenerator":86,bluebird:89,events:234}],40:[function(e,t,r){"use strict";function n(e,t){this.rank=e,this.context=t}var o=e("./event-context"),i=e("../utils");n.fromJson=function(e,t){var r=e.context||{},s=r.events_before||[],a=r.events_after||[],u=new o(t(e.result));return u.setPaginateToken(r.start,!0),u.addEvents(i.map(s,t),!0),u.addEvents(i.map(a,t),!1),u.setPaginateToken(r.end,!1),new n(e.rank,u)},t.exports=n},{"../utils":55,"./event-context":31}],41:[function(e,t,r){"use strict";function n(e){this.userId=e,this.presence="offline",this.presenceStatusMsg=null,this.displayName=e,this.rawDisplayName=e,this.avatarUrl=null,this.lastActiveAgo=0,this.lastPresenceTs=0,this.currentlyActive=!1,this.events={presence:null,profile:null},this._updateModifiedTime()}var o=e("events").EventEmitter;e("../utils").inherits(n,o),n.prototype.setPresenceEvent=function(e){if("m.presence"===e.getType()){var t=null===this.events.presence;this.events.presence=e;var r=[];(e.getContent().presence!==this.presence||t)&&r.push("User.presence"),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&r.push("User.avatarUrl"),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&r.push("User.displayName"),void 0!==e.getContent().currently_active&&e.getContent().currently_active!==this.currentlyActive&&r.push("User.currentlyActive"),this.presence=e.getContent().presence,r.push("User.lastPresenceTs"),e.getContent().status_msg&&(this.presenceStatusMsg=e.getContent().status_msg),e.getContent().displayname&&(this.displayName=e.getContent().displayname),e.getContent().avatar_url&&(this.avatarUrl=e.getContent().avatar_url),this.lastActiveAgo=e.getContent().last_active_ago,this.lastPresenceTs=Date.now(),this.currentlyActive=e.getContent().currently_active,this._updateModifiedTime();for(var n=0;n<r.length;n++)this.emit(r[n],e,this)}},n.prototype.setDisplayName=function(e){var t=this.displayName;this.displayName=e,e!==t&&this._updateModifiedTime()},n.prototype.setRawDisplayName=function(e){this.rawDisplayName=e},n.prototype.setAvatarUrl=function(e){var t=this.avatarUrl;this.avatarUrl=e,e!==t&&this._updateModifiedTime()},n.prototype._updateModifiedTime=function(){this._modified=Date.now()},n.prototype.getLastModifiedTime=function(){return this._modified},n.prototype.getLastActiveTs=function(){return this.lastPresenceTs-this.lastActiveAgo},t.exports=n},{"../utils":55,events:234}],42:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=this,r={},n=function(e,r,n){for(var o=0;o<f.length;++o)for(var s=f[o],a=r[s],u=0;u<a.length;++u){var c=a[u];if(c.enabled){var l=i(s,c,n);if(l&&t.ruleMatchesEvent(l,e))return c.kind=s,c}}return null},i=function(e,t,r){var n={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case"underride":case"override":n.conditions=t.conditions;break;case"room":if(!t.rule_id)return null;n.conditions.push({kind:"event_match",key:"room_id",value:t.rule_id});break;case"sender":if(!t.rule_id)return null;n.conditions.push({kind:"event_match",key:"user_id",value:t.rule_id});break;case"content":if(!t.pattern)return null;n.conditions.push({kind:"event_match",key:"content.body",pattern:t.pattern})}return r&&n.conditions.push({kind:"device",profile_tag:r}),n},s=function(e,t){var r={event_match:v,device:h,contains_display_name:p,room_member_count:c,sender_notification_permission:a};return!!r[e.kind]&&r[e.kind](e,t)},a=function(t,r){var n=t.key;if(!n)return!1;var o=e.getRoom(r.getRoomId());return!(!o||!o.currentState)&&o.currentState.mayTriggerNotifOfType(n,r.getSender())},c=function(t,r){if(!t.is)return!1;var n=e.getRoom(r.getRoomId());if(!n||!n.currentState||!n.currentState.members)return!1;var o=n.currentState.getJoinedMemberCount(),i=t.is.match(/^([=<>]*)([0-9]*)$/);if(!i)return!1;var s=i[1],a=parseInt(i[2]);if(isNaN(a))return!1;switch(s){case"":case"==":return o==a;case"<":return o<a;case">":return o>a;case"<=":return o<=a;case">=":return o>=a;default:return!1}},p=function(t,r){var n=r.getContent();if(!n||!n.body||"string"!=typeof n.body)return!1;var o=e.getRoom(r.getRoomId());if(!(o&&o.currentState&&o.currentState.members&&o.currentState.getMember(e.credentials.userId)))return!1;var i=o.currentState.getMember(e.credentials.userId).name,s=new RegExp("(^|\\W)"+(0,d.escapeRegExp)(i)+"(\\W|$)","i");return n.body.search(s)>-1},h=function(e,t){return!1},v=function(e,t){if(!e.key)return!1;var r=y(e.key,t);if(!r||"string"!=typeof r)return!1;if(e.value)return e.value===r;var n=void 0;return n="content.body"==e.key?m("(^|\\W)",e.pattern,"(\\W|$)"):m("^",e.pattern,"$"),!!r.match(n)},m=function(e,t,n){return r[t]?r[t]:(r[t]=new RegExp(e+(0,d.globToRegexp)(t)+n,"i"),r[t])},y=function(e,t){var r=e.split("."),n=void 0,o=r[0];for("content"==o?(n=t.getContent(),r.shift()):"type"==o?(n=t.getType(),r.shift()):n=t.event;r.length>0;){var i=r.shift();if(!n[i])return null;n=n[i]}return n},_=function(t,r){if(!r||!r.device)return null;if(t.getSender()==e.credentials.userId)return null;for(var o=(0,l.default)(r.device),i=0;i<o.length;++i){var s=o[i],a=r.device[s],u=n(a,s);if(u)return u}return n(t,r.global)},g=function(e,t){var r=_(e,t);if(!r)return{};var n=o.actionListToActionsObject(r.actions);return void 0===n.tweaks.highlight&&(n.tweaks.highlight="content"==r.kind),n};this.ruleMatchesEvent=function(e,t){for(var r=!0,n=0;n<e.conditions.length;++n){var o=e.conditions[n];r&=s(o,t)}return r},this.actionsForEvent=function(t){return g(t,e.pushRules)},this.getPushRuleById=function(t){for(var r=["device","global"],n=0;n<r.length;n++){var o=r[n];if(void 0!==e.pushRules[o]){var i=!0,s=!1,a=void 0;try{for(var c,l=(0,u.default)(f);!(i=(c=l.next()).done);i=!0){var d=c.value;if(void 0!==e.pushRules[o][d]){var p=!0,h=!1,v=void 0;try{for(var m,y=(0,u.default)(e.pushRules[o][d]);!(p=(m=y.next()).done);p=!0){var _=m.value;if(_.rule_id===t)return _}}catch(e){h=!0,v=e}finally{try{!p&&y.return&&y.return()}finally{if(h)throw v}}}}}catch(e){s=!0,a=e}finally{try{!i&&l.return&&l.return()}finally{if(s)throw a}}}}return null}}var i=e("babel-runtime/helpers/typeof"),s=n(i),a=e("babel-runtime/core-js/get-iterator"),u=n(a),c=e("babel-runtime/core-js/object/keys"),l=n(c),d=e("./utils"),f=["override","content","room","sender","underride"];o.actionListToActionsObject=function(e){for(var t={notify:!1,tweaks:{}},r=0;r<e.length;++r){var n=e[r];"notify"===n?t.notify=!0:"object"===(void 0===n?"undefined":(0,s.default)(n))&&(void 0===n.value&&(n.value=!0),t.tweaks[n.set_tweak]=n.value)}return t},t.exports=o},{"./utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/typeof":85}],43:[function(e,t,r){"use strict";function n(e){for(var t="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=0;n<e;++n)t+=r.charAt(Math.floor(Math.random()*r.length));return t}Object.defineProperty(r,"__esModule",{value:!0}),r.randomString=n},{}],44:[function(e,t,r){(function(e){"use strict";function r(){a&&e.clearTimeout(a);var t=u[0];if(!t)return void c("_scheduleRealCallback: no more callbacks, not rescheduling");var r=l(),o=Math.min(t.runAt-r,i);c("_scheduleRealCallback: now:",r,"delay:",o),a=e.setTimeout(n,o)}function n(){var t=void 0,n=l();c("_runCallbacks: now:",n);for(var o=[];;){var i=u[0];if(!i||i.runAt>n)break;t=u.shift(),c("_runCallbacks: popping",t.key),o.push(t)}r();for(var s=0;s<o.length;s++){t=o[s];try{t.func.apply(e,t.params)}catch(e){console.error("Uncaught exception in callback function",e.stack||e)}}}function o(e,t){for(var r=0,n=e.length;r<n;){var o=r+n>>1;t(e[o])>0?n=o:r=o+1}return r}var i=1e3,s=0,a=void 0,u=[],c=function(){};t.exports.setNow=function(e){l=e||Date.now};var l=Date.now;t.exports.setTimeout=function(e,t){(t=t||0)<0&&(t=0);var n=Array.prototype.slice.call(arguments,2),i=l()+t,a=s++;c("setTimeout: scheduling cb",a,"at",i,"(delay",t,")");var d={runAt:i,func:e,params:n,key:a},f=o(u,function(e){return e.runAt-i});return u.splice(f,0,d),r(),a},t.exports.clearTimeout=function(e){if(0!==u.length){var t=void 0;for(t=0;t<u.length;t++){if(u[t].key==e){u.splice(t,1);break}}0===t&&r()}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],45:[function(e,t,r){"use strict";function n(e,t){this.retryAlgorithm=e||n.RETRY_BACKOFF_RATELIMIT,this.queueAlgorithm=t||n.QUEUE_MESSAGES,this._queues={},this._activeQueues=[],this._procFn=null}function o(e){e._procFn&&d.forEach(d.filter(d.keys(e._queues),function(t){return-1===e._activeQueues.indexOf(t)&&e._queues[t].length>0}),function(t){e._activeQueues.push(t),u("Spinning up queue: '%s'",t),i(e,t)})}function i(e,t){var r=s(e,t);if(!r){var n=e._activeQueues.indexOf(t);return n>=0&&e._activeQueues.splice(n,1),void u("Stopping queue '%s' as it is now empty",t)}u("Queue '%s' has %s pending events",t,e._queues[t].length),e._procFn(r.event).done(function(n){a(e,t),u("Queue '%s' sent event %s",t,r.event.getId()),r.defer.resolve(n),i(e,t)},function(n){r.attempts+=1;var o=e.retryAlgorithm(r.event,r.attempts,n);u("retry(%s) err=%s event_id=%s waitTime=%s",r.attempts,n,r.event.getId(),o),-1===o?(u("Queue '%s' giving up on event %s",t,r.event.getId()),a(e,t),r.defer.reject(n),i(e,t)):setTimeout(function(){i(e,t)},o)})}function s(e,t){var r=e._queues[t];return d.isArray(r)?r[0]:null}function a(e,t){var r=e._queues[t];return d.isArray(r)?r.shift():null}function u(){if(f){var e;(e=console).log.apply(e,arguments)}}var c=e("bluebird"),l=function(e){return e&&e.__esModule?e:{default:e}}(c),d=e("./utils"),f=!1;n.prototype.getQueueForEvent=function(e){var t=this.queueAlgorithm(e);return t&&this._queues[t]?d.map(this._queues[t],function(e){return e.event}):null},n.prototype.removeEventFromQueue=function(e){var t=this.queueAlgorithm(e);if(!t||!this._queues[t])return!1;var r=!1;return d.removeElement(this._queues[t],function(t){if(t.event.getId()===e.getId())return r=!0,!0}),r},n.prototype.setProcessFunction=function(e){this._procFn=e,o(this)},n.prototype.queueEvent=function(e){var t=this.queueAlgorithm(e);if(!t)return null;this._queues[t]||(this._queues[t]=[]);var r=l.default.defer();return this._queues[t].push({event:e,defer:r,attempts:0}),u("Queue algorithm dumped event %s into queue '%s'",e.getId(),t),o(this),r.promise},n.RETRY_BACKOFF_RATELIMIT=function(e,t,r){if(400===r.httpStatus||403===r.httpStatus||401===r.httpStatus)return-1;if("rejected"===r.cors)return-1;if("M_LIMIT_EXCEEDED"===r.name){var n=r.data.retry_after_ms;if(n)return n}return t>4?-1:1e3*Math.pow(2,t)},n.QUEUE_MESSAGES=function(e){return"m.room.message"===e.getType()?"message":null},t.exports=n},{"./utils":55,bluebird:89}],46:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})}function i(e){e.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}function s(e){e.createObjectStore("client_options",{keyPath:["clobber"]})}function a(e,t,r){var n=e.openCursor(t);return new y.default(function(e,t){var o=[];n.onerror=function(e){t(new Error("Query failed: "+e.target.errorCode))},n.onsuccess=function(t){var n=t.target.result;if(!n)return void e(o);o.push(r(n)),n.continue()}})}function u(e){return new y.default(function(t,r){e.oncomplete=function(e){t(e)},e.onerror=function(e){r(e.target.error)}})}function c(e){return new y.default(function(t,r){e.onsuccess=function(e){t(e)},e.onerror=function(e){r(e.target.error)}})}function l(e){return new y.default(function(t,r){e.onsuccess=function(){return t(e)},e.onerror=function(e){return r(e)}})}function d(e){return c(e).then(function(e){return e.target.result})}Object.defineProperty(r,"__esModule",{value:!0});var f=e("babel-runtime/core-js/get-iterator"),p=n(f),h=e("babel-runtime/regenerator"),v=n(h),m=e("bluebird"),y=n(m),_=e("babel-runtime/helpers/slicedToArray"),g=n(_),b=e("../sync-accumulator"),E=n(b),w=e("../utils"),S=n(w),k=function(e,t){this.indexedDB=e,this._dbName="matrix-js-sdk:"+(t||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new E.default,this._isNewlyCreated=!1};k.prototype={connect:function(){var e=this;if(!this._disconnected)return console.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),y.default.resolve();this._disconnected=!1,console.log("LocalIndexedDBStoreBackend.connect: connecting...");var t=this.indexedDB.open(this._dbName,3);return t.onupgradeneeded=function(t){var r=t.target.result,n=t.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+n),n<1&&(e._isNewlyCreated=!0,o(r)),n<2&&i(r),n<3&&s(r)},t.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),c(t).then(function(t){return console.log("LocalIndexedDBStoreBackend.connect: connected"),e.db=t.target.result,e.db.onversionchange=function(){e.db.close()},e._init()})},isNewlyCreated:function(){return y.default.resolve(this._isNewlyCreated)},_init:function(){var e=this;return y.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(t){var r=(0,g.default)(t,2),n=r[0],o=r[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),e._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:n}})})},getOutOfBandMembers:function(e){var t=this;return new y.default(function(r,n){var o=t.db.transaction(["oob_membership_events"],"readonly"),i=o.objectStore("oob_membership_events"),s=i.index("room"),a=IDBKeyRange.only(e),u=s.openCursor(a),c=[],l=!1;u.onsuccess=function(e){var t=e.target.result;if(!t)return r(c.length||l?c:null);var n=t.value;n.oob_written?l=!0:c.push(n),t.continue()},u.onerror=function(e){n(e)}}).then(function(t){return console.log("LL: got "+(t&&t.length)+" membershipEvents from storage for room "+e+" ..."),t})},setOutOfBandMembers:function(){function e(e,r){return t.apply(this,arguments)}var t=(0,m.coroutine)(v.default.mark(function e(t,r){var n,o,i;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("LL: backend about to store "+r.length+" members for "+t),n=this.db.transaction(["oob_membership_events"],"readwrite"),o=n.objectStore("oob_membership_events"),r.forEach(function(e){o.put(e)}),i={room_id:t,oob_written:!0,state_key:0},o.put(i),e.next=8,(0,m.resolve)(u(n));case 8:console.log("LL: backend done storing for "+t+"!");case 9:case"end":return e.stop()}},e,this)}));return e}(),clearOutOfBandMembers:function(){function e(e){return t.apply(this,arguments)}var t=(0,m.coroutine)(v.default.mark(function e(t){var r,n,o,i,s,a,u,c,f,p,h,_,b;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.db.transaction(["oob_membership_events"],"readonly"),n=r.objectStore("oob_membership_events"),o=n.index("room"),i=IDBKeyRange.only(t),s=d(o.openKeyCursor(i,"next")).then(function(e){return e&&e.primaryKey[1]}),a=d(o.openKeyCursor(i,"prev")).then(function(e){return e&&e.primaryKey[1]}),e.next=8,(0,m.resolve)(y.default.all([s,a]));case 8:return u=e.sent,c=(0,g.default)(u,2),f=c[0],p=c[1],h=this.db.transaction(["oob_membership_events"],"readwrite"),_=h.objectStore("oob_membership_events"),b=IDBKeyRange.bound([t,f],[t,p]),console.log("LL: Deleting all users + marker in storage for room "+t+", with key range:",[t,f],[t,p]),e.next=18,(0,m.resolve)(l(_.delete(b)));case 18:case"end":return e.stop()}},e,this)}));return e}(),clearDatabase:function(){var e=this;return new y.default(function(t,r){console.log("Removing indexeddb instance: "+e._dbName);var n=e.indexedDB.deleteDatabase(e._dbName);n.onblocked=function(){console.log("can't yet delete indexeddb "+e._dbName+" because it is open elsewhere")},n.onerror=function(e){console.warn("unable to delete js-sdk store indexeddb: "+e.target.error),t()},n.onsuccess=function(){console.log("Removed indexeddb instance: "+e._dbName),t()}})},getSavedSync:function(e){void 0===e&&(e=!0);var t=this._syncAccumulator.getJSON();return t.nextBatch?e?y.default.resolve(S.default.deepCopy(t)):y.default.resolve(t):y.default.resolve(null)},getNextBatchToken:function(){return y.default.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(e){var t=this;return y.default.resolve().then(function(){t._syncAccumulator.accumulate(e)})},syncToDatabase:function(e){var t=this._syncAccumulator.getJSON();return y.default.all([this._persistUserPresenceEvents(e),this._persistAccountData(t.accountData),this._persistSyncData(t.nextBatch,t.roomsData,t.groupsData)])},_persistSyncData:function(e,t,r){var n=this;return console.log("Persisting sync data up to ",e),y.default.try(function(){var o=n.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t,groupsData:r}),u(o)})},_persistAccountData:function(e){var t=this;return y.default.try(function(){for(var r=t.db.transaction(["accountData"],"readwrite"),n=r.objectStore("accountData"),o=0;o<e.length;o++)n.put(e[o]);return u(r)})},_persistUserPresenceEvents:function(e){var t=this;return y.default.try(function(){var r=t.db.transaction(["users"],"readwrite"),n=r.objectStore("users"),o=!0,i=!1,s=void 0;try{for(var a,c=(0,p.default)(e);!(o=(a=c.next()).done);o=!0){var l=a.value;n.put({userId:l[0],event:l[1]})}}catch(e){i=!0,s=e}finally{try{!o&&c.return&&c.return()}finally{if(i)throw s}}return u(r)})},getUserPresenceEvents:function(){var e=this;return y.default.try(function(){return a(e.db.transaction(["users"],"readonly").objectStore("users"),void 0,function(e){return[e.value.userId,e.value.event]})})},_loadAccountData:function(){var e=this;return console.log("LocalIndexedDBStoreBackend: loading account data..."),y.default.try(function(){return a(e.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,function(e){return e.value}).then(function(e){return console.log("LocalIndexedDBStoreBackend: loaded account data"),e})})},_loadSyncData:function(){var e=this;return console.log("LocalIndexedDBStoreBackend: loading sync data..."),y.default.try(function(){return a(e.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,function(e){return e.value}).then(function(e){return console.log("LocalIndexedDBStoreBackend: loaded sync data"),e.length>1&&console.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{}})})},getClientOptions:function(){var e=this;return y.default.resolve().then(function(){return a(e.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,function(e){if(e.value&&e.value&&e.value.options)return e.value.options}).then(function(e){return e[0]})})},storeClientOptions:function(){function e(e){return t.apply(this,arguments)}var t=(0,m.coroutine)(v.default.mark(function e(t){var r,n;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.db.transaction(["client_options"],"readwrite"),n=r.objectStore("client_options"),n.put({clobber:"-",options:t}),e.next=5,(0,m.resolve)(u(r));case 5:case"end":return e.stop()}},e,this)}));return e}()},r.default=k},{"../sync-accumulator":52,"../utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/helpers/slicedToArray":84,"babel-runtime/regenerator":86,bluebird:89}],47:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("bluebird"),o=function(e){return e&&e.__esModule?e:{default:e}}(n),i=function(e,t,r){this._workerScript=e,this._dbName=t,this._workerApi=r,this._worker=null,this._nextSeq=0,this._inFlight={},this._startPromise=null};i.prototype={connect:function(){var e=this;return this._ensureStarted().then(function(){return e._doCmd("connect")})},clearDatabase:function(){var e=this;return this._ensureStarted().then(function(){return e._doCmd("clearDatabase")})},isNewlyCreated:function(){return this._doCmd("isNewlyCreated")},getSavedSync:function(){return this._doCmd("getSavedSync")},getNextBatchToken:function(){return this._doCmd("getNextBatchToken")},setSyncData:function(e){return this._doCmd("setSyncData",[e])},syncToDatabase:function(e){return this._doCmd("syncToDatabase",[e])},getOutOfBandMembers:function(e){return this._doCmd("getOutOfBandMembers",[e])},setOutOfBandMembers:function(e,t){return this._doCmd("setOutOfBandMembers",[e,t])},clearOutOfBandMembers:function(e){return this._doCmd("clearOutOfBandMembers",[e])},getClientOptions:function(){return this._doCmd("getClientOptions")},storeClientOptions:function(e){return this._doCmd("storeClientOptions",[e])},getUserPresenceEvents:function(){return this._doCmd("getUserPresenceEvents")},_ensureStarted:function(){return null===this._startPromise&&(this._worker=new this._workerApi(this._workerScript),this._worker.onmessage=this._onWorkerMessage.bind(this),this._startPromise=this._doCmd("_setupWorker",[this._dbName]).then(function(){console.log("IndexedDB worker is ready")})),this._startPromise},_doCmd:function(e,t){var r=this;return o.default.resolve().then(function(){var n=r._nextSeq++,i=o.default.defer();return r._inFlight[n]=i,r._worker.postMessage({command:e,seq:n,args:t}),i.promise})},_onWorkerMessage:function(e){var t=e.data;if("cmd_success"==t.command||"cmd_fail"==t.command){if(void 0===t.seq)return void console.error("Got reply from worker with no seq");var r=this._inFlight[t.seq];if(void 0===r)return void console.error("Got reply for unknown seq "+t.seq);if(delete this._inFlight[t.seq],"cmd_success"==t.command)r.resolve(t.result);else{var n=new Error(t.error.message);n.name=t.error.name,r.reject(n)}}else console.warn("Unrecognised message from worker: "+t)}},r.default=i},{bluebird:89}],48:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var o=e("babel-runtime/core-js/get-iterator"),i=n(o),s=e("babel-runtime/helpers/slicedToArray"),a=n(s),u=e("bluebird"),c=n(u),l=e("./memory"),d=e("../utils"),f=n(d),p=e("./indexeddb-local-backend.js"),h=n(p),v=e("./indexeddb-remote-backend.js"),m=n(v),y=e("../models/user"),_=n(y),g=e("../models/event"),b=function(e){if(l.MatrixInMemoryStore.call(this,e),!e.indexedDB)throw new Error("Missing required option: indexedDB");if(e.workerScript){var t=e.workerApi;t||(t=r.Worker),this.backend=new m.default(e.workerScript,e.dbName,t)}else this.backend=new h.default(e.indexedDB,e.dbName);this.startedUp=!1,this._syncTs=0,this._userModifiedMap={}};f.default.inherits(b,l.MatrixInMemoryStore),b.prototype.startup=function(){var e=this;return this.startedUp?(console.log("IndexedDBStore.startup: already started"),c.default.resolve()):(console.log("IndexedDBStore.startup: connecting to backend"),this.backend.connect().then(function(){return console.log("IndexedDBStore.startup: loading presence events"),e.backend.getUserPresenceEvents()}).then(function(t){console.log("IndexedDBStore.startup: processing presence events"),t.forEach(function(t){var r=(0,a.default)(t,2),n=r[0],o=r[1],i=new _.default(n);o&&i.setPresenceEvent(new g.MatrixEvent(o)),e._userModifiedMap[i.userId]=i.getLastModifiedTime(),e.storeUser(i)})}))},b.prototype.getSavedSync=function(){return this.backend.getSavedSync()},b.prototype.isNewlyCreated=function(){return this.backend.isNewlyCreated()},b.prototype.getSavedSyncToken=function(){return this.backend.getNextBatchToken()},b.prototype.deleteAllData=function(){return l.MatrixInMemoryStore.prototype.deleteAllData.call(this),this.backend.clearDatabase().then(function(){console.log("Deleted indexeddb data.")},function(e){throw console.error("Failed to delete indexeddb data: "+e),e})},b.prototype.wantsSave=function(){return Date.now()-this._syncTs>3e5},b.prototype.save=function(){return this.wantsSave()?this._reallySave():c.default.resolve()},b.prototype._reallySave=function(){this._syncTs=Date.now();var e=[],t=!0,r=!1,n=void 0;try{for(var o,s=(0,i.default)(this.getUsers());!(t=(o=s.next()).done);t=!0){var a=o.value;this._userModifiedMap[a.userId]!==a.getLastModifiedTime()&&(a.events.presence&&(e.push([a.userId,a.events.presence.event]),this._userModifiedMap[a.userId]=a.getLastModifiedTime()))}}catch(e){r=!0,n=e}finally{try{!t&&s.return&&s.return()}finally{if(r)throw n}}return this.backend.syncToDatabase(e).catch(function(e){console.error("sync fail:",e)})},b.prototype.setSyncData=function(e){return this.backend.setSyncData(e)},b.prototype.getOutOfBandMembers=function(e){return this.backend.getOutOfBandMembers(e)},b.prototype.setOutOfBandMembers=function(e,t){return this.backend.setOutOfBandMembers(e,t)},b.prototype.clearOutOfBandMembers=function(e){return this.backend.clearOutOfBandMembers(e)},b.prototype.getClientOptions=function(){return this.backend.getClientOptions()},b.prototype.storeClientOptions=function(e){return this.backend.storeClientOptions(e)},t.exports.IndexedDBStore=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../models/event":34,"../models/user":41,"../utils":55,"./indexeddb-local-backend.js":46,"./indexeddb-remote-backend.js":47,"./memory":49,"babel-runtime/core-js/get-iterator":58,"babel-runtime/helpers/slicedToArray":84,bluebird:89}],49:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var o=e("babel-runtime/core-js/object/assign"),i=n(o),s=e("bluebird"),a=n(s),u=e("../utils"),c=e("../models/user");t.exports.MatrixInMemoryStore=function(e){e=e||{},this.rooms={},this.groups={},this.users={},this.syncToken=null,this.filters={},this.accountData={},this.localStorage=e.localStorage,this._oobMembers={},this._clientOptions={}},t.exports.MatrixInMemoryStore.prototype={getSyncToken:function(){return this.syncToken},isNewlyCreated:function(){return a.default.resolve(!0)},setSyncToken:function(e){this.syncToken=e},storeGroup:function(e){this.groups[e.groupId]=e},getGroup:function(e){return this.groups[e]||null},getGroups:function(){return u.values(this.groups)},storeRoom:function(e){this.rooms[e.roomId]=e,e.currentState.on("RoomState.members",this._onRoomMember.bind(this));var t=this;e.currentState.getMembers().forEach(function(r){t._onRoomMember(null,e.currentState,r)})},_onRoomMember:function(e,t,r){if("invite"!==r.membership){var n=this.users[r.userId]||new c(r.userId);r.name&&(n.setDisplayName(r.name),r.events.member&&n.setRawDisplayName(r.events.member.getDirectionalContent().displayname)),r.events.member&&r.events.member.getContent().avatar_url&&n.setAvatarUrl(r.events.member.getContent().avatar_url),this.users[n.userId]=n}},getRoom:function(e){return this.rooms[e]||null},getRooms:function(){return u.values(this.rooms)},removeRoom:function(e){this.rooms[e]&&this.rooms[e].removeListener("RoomState.members",this._onRoomMember),delete this.rooms[e]},getRoomSummaries:function(){return u.map(u.values(this.rooms),function(e){return e.summary})},storeUser:function(e){this.users[e.userId]=e},getUser:function(e){return this.users[e]||null},getUsers:function(){return u.values(this.users)},scrollback:function(e,t){return[]},storeEvents:function(e,t,r,n){},storeFilter:function(e){e&&(this.filters[e.userId]||(this.filters[e.userId]={}),this.filters[e.userId][e.filterId]=e)},getFilter:function(e,t){return this.filters[e]&&this.filters[e][t]?this.filters[e][t]:null},getFilterIdByName:function(e){if(!this.localStorage)return null;try{return this.localStorage.getItem("mxjssdk_memory_filter_"+e)}catch(e){}return null},setFilterIdByName:function(e,t){if(this.localStorage)try{this.localStorage.setItem("mxjssdk_memory_filter_"+e,t)}catch(e){}},storeAccountDataEvents:function(e){var t=this;e.forEach(function(e){t.accountData[e.getType()]=e})},getAccountData:function(e){return this.accountData[e]},setSyncData:function(e){return a.default.resolve()},wantsSave:function(){return!1},save:function(){},startup:function(){return a.default.resolve()},getSavedSync:function(){return a.default.resolve(null)},getSavedSyncToken:function(){ +return a.default.resolve(null)},deleteAllData:function(){return this.rooms={},this.users={},this.syncToken=null,this.filters={},this.accountData={},a.default.resolve()},getOutOfBandMembers:function(e){return a.default.resolve(this._oobMembers[e]||null)},setOutOfBandMembers:function(e,t){return this._oobMembers[e]=t,a.default.resolve()},getClientOptions:function(){return a.default.resolve(this._clientOptions)},storeClientOptions:function(e){return this._clientOptions=(0,i.default)({},e),a.default.resolve()}}},{"../models/user":41,"../utils":55,"babel-runtime/core-js/object/assign":63,bluebird:89}],50:[function(e,t,r){"use strict";function n(e){if(this.store=e,!(h.isFunction(e.getItem)&&h.isFunction(e.setItem)&&h.isFunction(e.removeItem)&&h.isFunction(e.key)&&"number"==typeof e.length))throw new Error("Supplied webStore does not meet the WebStorage API interface")}function o(e){return m+"devices/"+e}function i(e){return m+"sessions/"+e}function s(e,t){return m+"inboundgroupsessions/"+e+"/"+t}function a(e){return m+"rooms/"+e}function u(e,t){try{return JSON.parse(e.getItem(t))}catch(e){d("Failed to get key %s: %s",t,e),d(e.stack)}return null}function c(e,t){for(var r=[],n=0;n<e.length;++n){var o=e.key(n);o.startsWith(t)&&r.push(o)}return r}function l(e,t){for(var r=[],n=0;n<e.length;++n){var o=e.key(n);o.startsWith(t)&&r.push(o)}var i=!0,s=!1,a=void 0;try{for(var u,c=(0,p.default)(r);!(i=(u=c.next()).done);i=!0){var l=u.value;e.removeItem(l)}}catch(e){s=!0,a=e}finally{try{!i&&c.return&&c.return()}finally{if(s)throw a}}}function d(){if(v){var e;(e=console).log.apply(e,arguments)}}var f=e("babel-runtime/core-js/get-iterator"),p=function(e){return e&&e.__esModule?e:{default:e}}(f),h=e("../../utils"),v=!1,m="session.e2e.";n.prototype={removeEndToEndAccount:function(){this.store.removeItem(y)},getEndToEndAccount:function(){return this.store.getItem(y)},getAllEndToEndDevices:function(){for(var e=o(""),t={},r=0;r<this.store.length;++r){var n=this.store.key(r),i=n.substr(e.length);n.startsWith(e)&&(t[i]=u(this.store,n))}return t},getEndToEndDeviceTrackingStatus:function(){return u(this.store,g)},getEndToEndDeviceSyncToken:function(){return u(this.store,_)},removeEndToEndDeviceData:function(){l(this.store,o("")),l(this.store,g),l(this.store,_)},getEndToEndSessions:function(e){return u(this.store,i(e))},getAllEndToEndSessions:function(){var e=c(this.store,i("")),t={},r=!0,n=!1,o=void 0;try{for(var s,a=(0,p.default)(e);!(r=(s=a.next()).done);r=!0){var l=s.value;t[l.substr(i("").length)]=u(this.store,l)}}catch(e){n=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(n)throw o}}return t},removeAllEndToEndSessions:function(){l(this.store,i(""))},getAllEndToEndInboundGroupSessionKeys:function(){for(var e=m+"inboundgroupsessions/",t=[],r=0;r<this.store.length;r++){var n=this.store.key(r);n.startsWith(e)&&t.push({senderKey:n.substr(e.length,43),sessionId:n.substr(e.length+44)})}return t},getEndToEndInboundGroupSession:function(e,t){var r=s(e,t);return this.store.getItem(r)},removeAllEndToEndInboundGroupSessions:function(){l(this.store,m+"inboundgroupsessions/")},getAllEndToEndRooms:function(){var e=c(this.store,a("")),t={},r=!0,n=!1,o=void 0;try{for(var i,s=(0,p.default)(e);!(r=(i=s.next()).done);r=!0){var l=i.value;t[l.substr(a("").length)]=u(this.store,l)}}catch(e){n=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw o}}return t},removeAllEndToEndRooms:function(){l(this.store,a(""))}};var y=m+"account",_=m+"device_sync_token",g=m+"device_tracking";t.exports=n},{"../../utils":55,"babel-runtime/core-js/get-iterator":58}],51:[function(e,t,r){"use strict";function n(){this.fromToken=null}var o=e("bluebird"),i=function(e){return e&&e.__esModule?e:{default:e}}(o);n.prototype={isNewlyCreated:function(){return i.default.resolve(!0)},getSyncToken:function(){return this.fromToken},setSyncToken:function(e){this.fromToken=e},storeGroup:function(e){},getGroup:function(e){return null},getGroups:function(){return[]},storeRoom:function(e){},getRoom:function(e){return null},getRooms:function(){return[]},removeRoom:function(e){},getRoomSummaries:function(){return[]},storeUser:function(e){},getUser:function(e){return null},getUsers:function(){return[]},scrollback:function(e,t){return[]},storeEvents:function(e,t,r,n){},storeFilter:function(e){},getFilter:function(e,t){return null},getFilterIdByName:function(e){return null},setFilterIdByName:function(e,t){},storeAccountDataEvents:function(e){},getAccountData:function(e){},setSyncData:function(e){return i.default.resolve()},wantsSave:function(){return!1},save:function(){},startup:function(){return i.default.resolve()},getSavedSync:function(){return i.default.resolve(null)},getSavedSyncToken:function(){return i.default.resolve(null)},deleteAllData:function(){return i.default.resolve()},getOutOfBandMembers:function(){return i.default.resolve(null)},setOutOfBandMembers:function(){return i.default.resolve()},clearOutOfBandMembers:function(){return i.default.resolve()},getClientOptions:function(){return i.default.resolve()},storeClientOptions:function(){return i.default.resolve()}},t.exports=n},{bluebird:89}],52:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){null!==t.state_key&&void 0!==t.state_key&&t.type&&(e[t.type]||(e[t.type]=(0,s.default)(null)),e[t.type][t.state_key]=t)}var i=e("babel-runtime/core-js/object/create"),s=n(i),a=e("babel-runtime/core-js/object/keys"),u=n(a),c=e("babel-runtime/helpers/classCallCheck"),l=n(c),d=e("babel-runtime/helpers/createClass"),f=n(d),p=e("./utils"),h=n(p),v=function(){function e(t){(0,l.default)(this,e),t=t||{},t.maxTimelineEntries=t.maxTimelineEntries||50,this.opts=t,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,f.default)(e,[{key:"accumulate",value:function(e){this._accumulateRooms(e),this._accumulateGroups(e),this._accumulateAccountData(e),this.nextBatch=e.next_batch}},{key:"_accumulateAccountData",value:function(e){var t=this;e.account_data&&e.account_data.events&&e.account_data.events.forEach(function(e){t.accountData[e.type]=e})}},{key:"_accumulateRooms",value:function(e){var t=this;e.rooms&&(e.rooms.invite&&(0,u.default)(e.rooms.invite).forEach(function(r){t._accumulateRoom(r,"invite",e.rooms.invite[r])}),e.rooms.join&&(0,u.default)(e.rooms.join).forEach(function(r){t._accumulateRoom(r,"join",e.rooms.join[r])}),e.rooms.leave&&(0,u.default)(e.rooms.leave).forEach(function(r){t._accumulateRoom(r,"leave",e.rooms.leave[r])}))}},{key:"_accumulateRoom",value:function(e,t,r){switch(t){case"invite":this._accumulateInviteState(e,r);break;case"join":this.inviteRooms[e]&&delete this.inviteRooms[e],this._accumulateJoinState(e,r);break;case"leave":this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:console.error("Unknown cateogory: ",t)}}},{key:"_accumulateInviteState",value:function(e,t){if(t.invite_state&&t.invite_state.events){if(!this.inviteRooms[e])return void(this.inviteRooms[e]={invite_state:t.invite_state});var r=this.inviteRooms[e];t.invite_state.events.forEach(function(e){for(var t=!1,n=0;n<r.invite_state.events.length;n++){var o=r.invite_state.events[n];o.type===e.type&&o.state_key==e.state_key&&(r.invite_state.events[n]=e,t=!0)}t||r.invite_state.events.push(e)})}}},{key:"_accumulateJoinState",value:function(e,t){this.joinRooms[e]||(this.joinRooms[e]={_currentState:(0,s.default)(null),_timeline:[],_accountData:(0,s.default)(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var r=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach(function(e){r._accountData[e.type]=e}),t.unread_notifications&&(r._unreadNotifications=t.unread_notifications),t.summary){var n=r._summary,i=t.summary;n["m.heroes"]=i["m.heroes"]||n["m.heroes"],n["m.joined_member_count"]=i["m.joined_member_count"]||n["m.joined_member_count"],n["m.invited_member_count"]=i["m.invited_member_count"]||n["m.invited_member_count"]}if(t.ephemeral&&t.ephemeral.events&&t.ephemeral.events.forEach(function(e){"m.receipt"===e.type&&e.content&&(0,u.default)(e.content).forEach(function(t){e.content[t]["m.read"]&&(0,u.default)(e.content[t]["m.read"]).forEach(function(n){r._readReceipts[n]={data:e.content[t]["m.read"][n],eventId:t}})})}),t.timeline&&t.timeline.limited&&(r._timeline=[]),t.state&&t.state.events&&t.state.events.forEach(function(e){o(r._currentState,e)}),t.timeline&&t.timeline.events&&t.timeline.events.forEach(function(e,n){o(r._currentState,e),r._timeline.push({event:e,token:0===n?t.timeline.prev_batch:null})}),r._timeline.length>this.opts.maxTimelineEntries)for(var a=r._timeline.length-this.opts.maxTimelineEntries,c=a;c<r._timeline.length;c++)if(r._timeline[c].token){r._timeline=r._timeline.slice(c,r._timeline.length);break}}},{key:"_accumulateGroups",value:function(e){var t=this;e.groups&&(e.groups.invite&&(0,u.default)(e.groups.invite).forEach(function(r){t._accumulateGroup(r,"invite",e.groups.invite[r])}),e.groups.join&&(0,u.default)(e.groups.join).forEach(function(r){t._accumulateGroup(r,"join",e.groups.join[r])}),e.groups.leave&&(0,u.default)(e.groups.leave).forEach(function(r){t._accumulateGroup(r,"leave",e.groups.leave[r])}))}},{key:"_accumulateGroup",value:function(e,t,r){for(var n=["invite","join","leave"],o=0;o<n.length;o++){var i=n[o];delete this.groups[i][e]}this.groups[t][e]=r}},{key:"getJSON",value:function(){var e=this,t={join:{},invite:{},leave:{}};(0,u.default)(this.inviteRooms).forEach(function(r){t.invite[r]=e.inviteRooms[r]}),(0,u.default)(this.joinRooms).forEach(function(r){var n=e.joinRooms[r],i={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:n._unreadNotifications,summary:n._summary};(0,u.default)(n._accountData).forEach(function(e){i.account_data.events.push(n._accountData[e])});var a={type:"m.receipt",room_id:r,content:{}};(0,u.default)(n._readReceipts).forEach(function(e){var t=n._readReceipts[e];a.content[t.eventId]||(a.content[t.eventId]={"m.read":{}}),a.content[t.eventId]["m.read"][e]=t.data}),(0,u.default)(a.content).length>0&&i.ephemeral.events.push(a),n._timeline.forEach(function(e){if(!i.timeline.prev_batch){if(!e.token)return;i.timeline.prev_batch=e.token}i.timeline.events.push(e.event)});for(var c=(0,s.default)(null),l=i.timeline.events.length-1;l>=0;l--){var d=i.timeline.events[l];if(null!==d.state_key&&void 0!==d.state_key){var f=h.default.deepCopy(d);f.unsigned&&(f.unsigned.prev_content&&(f.content=f.unsigned.prev_content),f.unsigned.prev_sender&&(f.sender=f.unsigned.prev_sender)),o(c,f)}}(0,u.default)(n._currentState).forEach(function(e){(0,u.default)(n._currentState[e]).forEach(function(t){var r=n._currentState[e][t];c[e]&&c[e][t]&&(r=c[e][t]),i.state.events.push(r)})}),t.join[r]=i});var r=[];return(0,u.default)(this.accountData).forEach(function(t){r.push(e.accountData[t])}),{nextBatch:this.nextBatch,roomsData:t,groupsData:this.groups,accountData:r}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),e}();t.exports=v},{"./utils":55,"babel-runtime/core-js/object/create":64,"babel-runtime/core-js/object/keys":69,"babel-runtime/helpers/classCallCheck":79,"babel-runtime/helpers/createClass":80}],53:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){return"FILTER_SYNC_"+e+(t?"_"+t:"")}function i(){var e;T&&(e=console).log.apply(e,arguments)}function s(e,t){this.client=e,t=t||{},t.initialSyncLimit=void 0===t.initialSyncLimit?8:t.initialSyncLimit,t.resolveInvitesToProfiles=t.resolveInvitesToProfiles||!1,t.pollTimeout=t.pollTimeout||3e4,t.pendingEventOrdering=t.pendingEventOrdering||"chronological",t.canResetEntireTimeline||(t.canResetEntireTimeline=function(e){return!1}),this.opts=t,this._peekRoomId=null,this._currentSyncRequest=null,this._syncState=null,this._syncStateData=null,this._catchingUp=!1,this._running=!1,this._keepAliveTimer=null,this._connectionReturnedDefer=null,this._notifEvents=[],this._failedSyncCount=0,this._storeIsInvalid=!1,e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),["Room.timeline","Room.timelineReset"])}function a(e,t){var r=new g(t);return e.reEmitter.reEmit(r,["User.avatarUrl","User.displayName","User.presence","User.currentlyActive","User.lastPresenceTs"]),r}var u=e("babel-runtime/core-js/json/stringify"),c=n(u),l=e("babel-runtime/core-js/object/keys"),d=n(l),f=e("babel-runtime/core-js/get-iterator"),p=n(f),h=e("babel-runtime/regenerator"),v=n(h),m=e("bluebird"),y=n(m),_=e("./errors"),g=e("./models/user"),b=e("./models/room"),E=e("./models/group"),w=e("./utils"),S=e("./filter"),k=e("./models/event-timeline"),T=!0;s.prototype.createRoom=function(e){var t=this.client,r=new b(e,t,t.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t.timelineSupport});return t.reEmitter.reEmit(r,["Room.name","Room.timeline","Room.redaction","Room.receipt","Room.tags","Room.timelineReset","Room.localEchoUpdated","Room.accountData","Room.myMembership"]),this._registerStateListeners(r),r},s.prototype.createGroup=function(e){var t=this.client,r=new E(e);return t.reEmitter.reEmit(r,["Group.profile","Group.myMembership"]),t.store.storeGroup(r),r},s.prototype._registerStateListeners=function(e){var t=this.client;t.reEmitter.reEmit(e.currentState,["RoomState.events","RoomState.members","RoomState.newMember"]),e.currentState.on("RoomState.newMember",function(e,r,n){n.user=t.getUser(n.userId),t.reEmitter.reEmit(n,["RoomMember.name","RoomMember.typing","RoomMember.powerLevel","RoomMember.membership"])})},s.prototype._deregisterStateListeners=function(e){e.currentState.removeAllListeners("RoomState.events"),e.currentState.removeAllListeners("RoomState.members"),e.currentState.removeAllListeners("RoomState.newMember")},s.prototype.syncLeftRooms=function(){var e=this.client,t=this,r=new S(this.client.credentials.userId);r.setTimelineLimit(1),r.setIncludeLeaveRooms(!0);var n=this.opts.pollTimeout+8e4,i={timeout:0};return e.getOrCreateFilter(o(e.credentials.userId,"LEFT_ROOMS"),r).then(function(t){return i.filter=t,e._http.authedRequest(void 0,"GET","/sync",i,void 0,n)}).then(function(r){var n=[];r.rooms&&r.rooms.leave&&(n=t._mapSyncResponseToRoomArray(r.rooms.leave));var o=[];return n.forEach(function(r){var n=r.room;if(o.push(n),r.isBrandNewRoom){r.timeline=r.timeline||{};var i=t._mapSyncEventsFormat(r.timeline,n),s=t._mapSyncEventsFormat(r.state,n);n.getLiveTimeline().setPaginationToken(r.timeline.prev_batch,k.BACKWARDS),t._processRoomEvents(n,s,i),n.recalculate(),e.store.storeRoom(n),e.emit("Room",n),t._processEventsForNotifs(n,i)}}),o})},s.prototype.peek=function(e){var t=this,r=this.client;return this._peekRoomId=e,this.client.roomInitialSync(e,20).then(function(n){n.messages=n.messages||{},n.messages.chunk=n.messages.chunk||[],n.state=n.state||[];var o=t.createRoom(e),i=w.map(w.deepCopy(n.state),r.getEventMapper()),s=w.map(n.state,r.getEventMapper()),u=w.map(n.messages.chunk,r.getEventMapper());return n.presence&&w.isArray(n.presence)&&n.presence.map(r.getEventMapper()).forEach(function(e){var t=r.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=a(r,e.getContent().user_id),t.setPresenceEvent(e),r.store.storeUser(t)),r.emit("event",e)}),n.messages.start&&(o.oldState.paginationToken=n.messages.start),o.oldState.setStateEvents(i),o.currentState.setStateEvents(s),t._resolveInvites(o),o.recalculate(),o.addEventsToTimeline(u.reverse(),!0,o.getLiveTimeline(),n.messages.start),r.store.storeRoom(o),r.emit("Room",o),t._peekPoll(o),o})},s.prototype.stopPeeking=function(){this._peekRoomId=null},s.prototype._peekPoll=function(e,t){if(this._peekRoomId!==e.roomId)return void i("Stopped peeking in room %s",e.roomId);var r=this;this.client._http.authedRequest(void 0,"GET","/events",{room_id:e.roomId,timeout:3e4,from:t},void 0,5e4).done(function(t){if(r._peekRoomId!==e.roomId)return void i("Stopped peeking in room %s",e.roomId);t.chunk.filter(function(e){return"m.presence"===e.type}).map(r.client.getEventMapper()).forEach(function(e){var t=r.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=a(r.client,e.getContent().user_id),t.setPresenceEvent(e),r.client.store.storeUser(t)),r.client.emit("event",e)});var n=t.chunk.filter(function(t){return t.room_id===e.roomId}).map(r.client.getEventMapper());e.addLiveEvents(n),r._peekPoll(e,t.end)},function(n){console.error("[%s] Peek poll failed: %s",e.roomId,n),setTimeout(function(){r._peekPoll(e,t)},3e4)})},s.prototype.getSyncState=function(){return this._syncState},s.prototype.getSyncStateData=function(){return this._syncStateData},s.prototype.recoverFromSyncStartupError=function(){var e=(0,m.coroutine)(v.default.mark(function e(t,r){var n;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,m.resolve)(t);case 2:return n=this._startKeepAlives(),this._updateSyncState("ERROR",{error:r}),e.next=6,(0,m.resolve)(n);case 6:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),s.prototype._wasLazyLoadingToggled=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){var r,n,o;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=!!t,r=!1,e.next=4,(0,m.resolve)(this.client.store.isNewlyCreated());case 4:if(n=e.sent){e.next=11;break}return e.next=8,(0,m.resolve)(this.client.store.getClientOptions());case 8:return o=e.sent,o&&(r=!!o.lazyLoadMembers),e.abrupt("return",r!==t);case 11:return e.abrupt("return",!1);case 12:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),s.prototype.sync=function(){var e=this,t=function(){var e=(0,m.coroutine)(v.default.mark(function e(){var r;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,(0,m.resolve)(s.getPushRules());case 3:r=e.sent,i("Got push rules"),s.pushRules=r,e.next=14;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,(0,m.resolve)(a.recoverFromSyncStartupError(u,e.t0));case 12:return t(),e.abrupt("return");case 14:l();case 15:case"end":return e.stop()}},e,this,[[0,8]])}));return function(){return e.apply(this,arguments)}}(),n=function(){var e=(0,m.coroutine)(v.default.mark(function e(){var t,r;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=void 0,a.opts.filter?t=a.opts.filter:(t=new S(s.credentials.userId),t.setTimelineLimit(a.opts.initialSyncLimit)),r=void 0,e.prev=3,e.next=6,(0,m.resolve)(s.getOrCreateFilter(o(s.credentials.userId),t));case 6:r=e.sent,e.next=15;break;case 9:return e.prev=9,e.t0=e.catch(3),e.next=13,(0,m.resolve)(a.recoverFromSyncStartupError(u,e.t0));case 13:return n(),e.abrupt("return");case 15:return s.resetNotifTimelineSet(),null===a._currentSyncRequest&&(console.log("Sending first sync request..."),a._currentSyncRequest=a._doSyncRequest({filterId:r},c)),e.next=19,(0,m.resolve)(u);case 19:a._sync({filterId:r});case 20:case"end":return e.stop()}},e,this,[[3,9]])}));return function(){return e.apply(this,arguments)}}(),s=this.client,a=this;this._running=!0,r.document&&(this._onOnlineBound=this._onOnline.bind(this),r.document.addEventListener("online",this._onOnlineBound,!1));var u=y.default.resolve(),c=null,l=function(){var t=(0,m.coroutine)(v.default.mark(function t(){var r,o,i,a;return v.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e.opts.lazyLoadMembers&&s.isGuest()&&(e.opts.lazyLoadMembers=!1),!e.opts.lazyLoadMembers){t.next=13;break}return t.next=4,(0,m.resolve)(s.doesServerSupportLazyLoading());case 4:if(!(r=t.sent)){t.next=11;break}return t.next=8,(0,m.resolve)(s.createFilter(S.LAZY_LOADING_SYNC_FILTER));case 8:e.opts.filter=t.sent,t.next=13;break;case 11:console.log("LL: lazy loading requested but not supported by server, so disabling"),e.opts.lazyLoadMembers=!1;case 13:return t.next=15,(0,m.resolve)(e._wasLazyLoadingToggled(e.opts.lazyLoadMembers));case 15:if(!(o=t.sent)){t.next=23;break}return e._storeIsInvalid=!0,i=_.InvalidStoreError.TOGGLED_LAZY_LOADING,a=new _.InvalidStoreError(i,!!e.opts.lazyLoadMembers),e._updateSyncState("ERROR",{error:a}),console.warn("InvalidStoreError: store is not usable: stopping sync."),t.abrupt("return");case 23:return e.opts.lazyLoadMembers&&e.opts.crypto&&e.opts.crypto.enableLazyLoading(),t.next=26,(0,m.resolve)(e.client._storeClientOptions());case 26:n();case 27:case"end":return t.stop()}},t,e)}));return function(){return t.apply(this,arguments)}}();s.isGuest()?a._sync({}):(u=s.store.getSavedSyncToken().then(function(e){return c=e,s.store.getSavedSync()}).then(function(e){if(e)return a._syncFromCache(e)}),t())},s.prototype.stop=function(){i("SyncApi.stop"),r.document&&(r.document.removeEventListener("online",this._onOnlineBound,!1),this._onOnlineBound=void 0),this._running=!1,this._currentSyncRequest&&this._currentSyncRequest.abort(),this._keepAliveTimer&&(clearTimeout(this._keepAliveTimer),this._keepAliveTimer=null)},s.prototype.retryImmediately=function(){return!!this._connectionReturnedDefer&&(this._startKeepAlives(0),!0)},s.prototype._syncFromCache=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){var r,n,o;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i("sync(): not doing HTTP hit, instead returning stored /sync data"),r=t.nextBatch,this.client.store.setSyncToken(r),n={oldSyncToken:null,nextSyncToken:r,catchingUp:!1},o={next_batch:r,rooms:t.roomsData,groups:t.groupsData,account_data:{events:t.accountData}},e.prev=5,e.next=8,(0,m.resolve)(this._processSyncResponse(n,o));case 8:e.next=13;break;case 10:e.prev=10,e.t0=e.catch(5),console.error("Error processing cached sync",e.t0.stack||e.t0);case 13:this._storeIsInvalid||this._updateSyncState("PREPARED",n);case 14:case"end":return e.stop()}},e,this,[[5,10]])}));return function(t){return e.apply(this,arguments)}}(),s.prototype._sync=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){var r,n,o,s;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.client,this._running){e.next=6;break}return i("Sync no longer running: exiting."),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),this._updateSyncState("STOPPED"),e.abrupt("return");case 6:return n=r.store.getSyncToken(),o=void 0,e.prev=8,null===this._currentSyncRequest&&(this._currentSyncRequest=this._doSyncRequest(t,n)),e.next=12,(0,m.resolve)(this._currentSyncRequest);case 12:o=e.sent,e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(8),this._onSyncError(e.t0,t),e.abrupt("return");case 19:return e.prev=19,this._currentSyncRequest=null,e.finish(19);case 22:return r.store.setSyncToken(o.next_batch),this._failedSyncCount=0,e.next=26,(0,m.resolve)(r.store.setSyncData(o));case 26:if(s={oldSyncToken:n,nextSyncToken:o.next_batch,catchingUp:this._catchingUp},!this.opts.crypto){e.next=30;break}return e.next=30,(0,m.resolve)(this.opts.crypto.onSyncWillProcess(s));case 30:return e.prev=30,e.next=33,(0,m.resolve)(this._processSyncResponse(s,o));case 33:e.next=38;break;case 35:e.prev=35,e.t1=e.catch(30),console.error("Caught /sync error",e.t1.stack||e.t1);case 38:if(s.catchingUp=this._catchingUp,t.hasSyncedBefore||(this._updateSyncState("PREPARED",s),t.hasSyncedBefore=!0),!this.opts.crypto){e.next=43;break}return e.next=43,(0,m.resolve)(this.opts.crypto.onSyncCompleted(s));case 43:if(this._updateSyncState("SYNCING",s),!r.store.wantsSave()){e.next=49;break}if(!this.opts.crypto){e.next=48;break}return e.next=48,(0,m.resolve)(this.opts.crypto.saveDeviceList(0));case 48:r.store.save();case 49:this._sync(t);case 50:case"end":return e.stop()}},e,this,[[8,15,19,22],[30,35]])}));return function(t){return e.apply(this,arguments)}}(),s.prototype._doSyncRequest=function(e,t){var r=this._getSyncParams(e,t);return this.client._http.authedRequest(void 0,"GET","/sync",r,void 0,r.timeout+8e4)},s.prototype._getSyncParams=function(e,t){var r=this.opts.pollTimeout;("SYNCING"!==this.getSyncState()||this._catchingUp)&&(this._catchingUp=!0,r=0);var n=e.filterId;this.client.isGuest()&&!n&&(n=this._getGuestFilter());var o={filter:n,timeout:r};return this.opts.disablePresence&&(o.set_presence="offline"),t?o.since=t:o._cacheBuster=Date.now(),"ERROR"!=this.getSyncState()&&"RECONNECTING"!=this.getSyncState()||(o.timeout=0),o},s.prototype._onSyncError=function(e,t){var r=this;if(!this._running)return i("Sync no longer running: exiting"),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");console.error("/sync error %s",e),console.error(e),this._failedSyncCount++,console.log("Number of consecutive failed sync requests:",this._failedSyncCount),i("Starting keep-alive"),this._startKeepAlives().then(function(e){e&&"ERROR"===r.getSyncState()&&r._updateSyncState("CATCHUP",{oldSyncToken:null,nextSyncToken:null,catchingUp:!0}),r._sync(t)}),this._currentSyncRequest=null,this._updateSyncState(this._failedSyncCount>=3?"ERROR":"RECONNECTING",{error:e})},s.prototype._processSyncResponse=function(){var e=(0,m.coroutine)(v.default.mark(function e(t,r){var n,o,s,u,c,l,d;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.client,o=this,r.presence&&w.isArray(r.presence.events)&&r.presence.events.map(n.getEventMapper()).forEach(function(e){var t=n.store.getUser(e.getSender());t?t.setPresenceEvent(e):(t=a(n,e.getSender()),t.setPresenceEvent(e),n.store.storeUser(t)),n.emit("event",e)}),r.account_data&&w.isArray(r.account_data.events)&&(s=r.account_data.events.map(n.getEventMapper()),n.store.storeAccountDataEvents(s),s.forEach(function(e){return"m.push_rules"==e.getType()&&(n.pushRules=e.getContent()),n.emit("accountData",e),e})),r.to_device&&w.isArray(r.to_device.events)&&r.to_device.events.length>0?r.to_device.events.map(n.getEventMapper()).forEach(function(e){var t=e.getContent();if("m.room.message"==e.getType()&&"m.bad.encrypted"==t.msgtype)return void console.log("Ignoring undecryptable to-device event from "+e.getSender());n.emit("toDeviceEvent",e)}):this._catchingUp=!1,r.groups&&(r.groups.invite&&this._processGroupSyncEntry(r.groups.invite,"invite"),r.groups.join&&this._processGroupSyncEntry(r.groups.join,"join"),r.groups.leave&&this._processGroupSyncEntry(r.groups.leave,"leave")),u=[],c=[],l=[],r.rooms&&(r.rooms.invite&&(u=this._mapSyncResponseToRoomArray(r.rooms.invite)),r.rooms.join&&(c=this._mapSyncResponseToRoomArray(r.rooms.join)),r.rooms.leave&&(l=this._mapSyncResponseToRoomArray(r.rooms.leave))),this._notifEvents=[],u.forEach(function(e){var t=e.room,r=o._mapSyncEventsFormat(e.invite_state,t);t.updateMyMembership("invite"),o._processRoomEvents(t,r),e.isBrandNewRoom&&(t.recalculate(),n.store.storeRoom(t),n.emit("Room",t)),r.forEach(function(e){n.emit("event",e)})}),e.next=14,(0,m.resolve)(y.default.mapSeries(c,function(){var e=(0,m.coroutine)(v.default.mark(function e(r){var s,a,u,c,l,d,f,p,h=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n.emit("event",t),!t.isState()||"m.room.encryption"!=t.getType()||!o.opts.crypto){e.next=4;break}return e.next=4,(0,m.resolve)(o.opts.crypto.onCryptoEvent(t));case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.room,a=o._mapSyncEventsFormat(r.state,s),u=o._mapSyncEventsFormat(r.timeline,s),c=o._mapSyncEventsFormat(r.ephemeral),l=o._mapSyncEventsFormat(r.account_data),r.unread_notifications&&(s.setUnreadNotificationCount("total",r.unread_notifications.notification_count),s.setUnreadNotificationCount("highlight",r.unread_notifications.highlight_count)),s.updateMyMembership("join"),r.timeline=r.timeline||{},!r.isBrandNewRoom){e.next=12;break}s.getLiveTimeline().setPaginationToken(r.timeline.prev_batch,k.BACKWARDS),e.next=26;break;case 12:if(!r.timeline.limited){e.next=26;break}d=!0,f=u.length-1;case 15:if(!(f>=0)){e.next=25;break}if(p=u[f].getId(),!s.getTimelineForEvent(p)){e.next=22;break}return i("Already have event "+p+" in limited sync - not resetting"),d=!1,u.splice(0,f),e.abrupt("break",25);case 22:f--,e.next=15;break;case 25:d&&(o._deregisterStateListeners(s),s.resetLiveTimeline(r.timeline.prev_batch,o.opts.canResetEntireTimeline(s.roomId)?null:t.oldSyncToken),n.resetNotifTimelineSet(),o._registerStateListeners(s));case 26:return o._processRoomEvents(s,a,u),r.summary&&s.setSummary(r.summary),s.addLiveEvents(c),s.addAccountData(l),s.recalculate(),r.isBrandNewRoom&&(n.store.storeRoom(s),n.emit("Room",s)),o._processEventsForNotifs(s,u),e.next=35,(0,m.resolve)(y.default.mapSeries(a,h));case 35:return e.next=37,(0,m.resolve)(y.default.mapSeries(u,h));case 37:c.forEach(function(e){n.emit("event",e)}),l.forEach(function(e){n.emit("event",e)});case 39:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()));case 14:if(l.forEach(function(e){var t=e.room,r=o._mapSyncEventsFormat(e.state,t),i=o._mapSyncEventsFormat(e.timeline,t),s=o._mapSyncEventsFormat(e.account_data);t.updateMyMembership("leave"),o._processRoomEvents(t,r,i),t.addAccountData(s),t.recalculate(),e.isBrandNewRoom&&(n.store.storeRoom(t),n.emit("Room",t)),o._processEventsForNotifs(t,i),r.forEach(function(e){n.emit("event",e)}),i.forEach(function(e){n.emit("event",e)}),s.forEach(function(e){n.emit("event",e)})}),t.oldSyncToken&&this._notifEvents.length&&(this._notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this._notifEvents.forEach(function(e){n.getNotifTimelineSet().addLiveEvent(e)})),!r.device_lists){e.next=22;break}if(!this.opts.crypto){e.next=22;break}return e.next=20,(0,m.resolve)(this.opts.crypto.handleDeviceListChanges(t,r.device_lists));case 20:e.next=22;break;case 22:this.opts.crypto&&r.device_one_time_keys_count&&(d=r.device_one_time_keys_count.signed_curve25519||0,this.opts.crypto.updateOneTimeKeyCount(d));case 23:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}(),s.prototype._startKeepAlives=function(e){void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this._keepAliveTimer&&clearTimeout(this._keepAliveTimer);var t=this;return e>0?t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t),e):t._pokeKeepAlive(),this._connectionReturnedDefer||(this._connectionReturnedDefer=y.default.defer()),this._connectionReturnedDefer.promise},s.prototype._pokeKeepAlive=function(e){function t(){clearTimeout(r._keepAliveTimer),r._connectionReturnedDefer&&(r._connectionReturnedDefer.resolve(e),r._connectionReturnedDefer=null)}void 0===e&&(e=!1);var r=this;this.client._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15e3}).done(function(){t()},function(n){400==n.httpStatus||404==n.httpStatus?r._keepAliveTimer=setTimeout(t,2e3):(e=!0,r._keepAliveTimer=setTimeout(r._pokeKeepAlive.bind(r,e),5e3+Math.floor(5e3*Math.random())),r._updateSyncState("ERROR",{error:n}))})},s.prototype._processGroupSyncEntry=function(e,t){var r=!0,n=!1,o=void 0;try{for(var i,s=(0,p.default)((0,d.default)(e));!(r=(i=s.next()).done);r=!0){var a=i.value,u=e[a],c=this.client.store.getGroup(a),l=null===c;null===c&&(c=this.createGroup(a)),u.profile&&c.setProfile(u.profile.name,u.profile.avatar_url),u.inviter&&c.setInviter({userId:u.inviter}),c.setMyMembership(t),l&&this.client.emit("Group",c)}}catch(e){n=!0,o=e}finally{try{!r&&s.return&&s.return()}finally{if(n)throw o}}},s.prototype._mapSyncResponseToRoomArray=function(e){var t=this.client,r=this;return w.keys(e).map(function(n){var o=e[n],i=t.store.getRoom(n),s=!1;return i||(i=r.createRoom(n),s=!0),o.room=i,o.isBrandNewRoom=s,o})},s.prototype._mapSyncEventsFormat=function(e,t){if(!e||!w.isArray(e.events))return[];var r=this.client.getEventMapper();return e.events.map(function(e){return t&&(e.room_id=t.roomId),r(e) +})},s.prototype._resolveInvites=function(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership("invite").forEach(function(r){if(!r._requestedProfileInfo){r._requestedProfileInfo=!0;var n=t.getUser(r.userId),o=void 0;o=n?y.default.resolve({avatar_url:n.avatarUrl,displayname:n.displayName}):t.getProfileInfo(r.userId),o.done(function(t){var n=r.events.member;"invite"===n.getContent().membership&&(n.getContent().avatar_url=t.avatar_url,n.getContent().displayname=t.displayname,r.setMembershipEvent(n,e.currentState))},function(e){})}})}},s.prototype._processRoomEvents=function(e,t,r){var n=e.getLiveTimeline(),o=0==n.getEvents().length;if(o){var i=!0,s=!1,a=void 0;try{for(var u,c=(0,p.default)(t);!(i=(u=c.next()).done);i=!0){var l=u.value;this.client.getPushActionsForEvent(l)}}catch(e){s=!0,a=e}finally{try{!i&&c.return&&c.return()}finally{if(s)throw a}}n.initialiseState(t)}this._resolveInvites(e),e.recalculate(),o||(e.oldState.setStateEvents(t||[]),e.currentState.setStateEvents(t||[])),e.addLiveEvents(r||[])},s.prototype._processEventsForNotifs=function(e,t){if(this.client.getNotifTimelineSet())for(var r=0;r<t.length;r++){var n=this.client.getPushActionsForEvent(t[r]);n&&n.notify&&n.tweaks&&n.tweaks.highlight&&this._notifEvents.push(t[r])}},s.prototype._getGuestFilter=function(){return this.client._guestRooms?(0,c.default)({room:{timeline:{limit:20}}}):"{}"},s.prototype._updateSyncState=function(e,t){var r=this._syncState;this._syncState=e,this._syncStateData=t,this.client.emit("sync",this._syncState,r,t)},s.prototype._onOnline=function(){i("Browser thinks we are back online"),this._startKeepAlives(0)},t.exports=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./errors":24,"./filter":26,"./models/event-timeline":33,"./models/group":35,"./models/room":39,"./models/user":41,"./utils":55,"babel-runtime/core-js/get-iterator":58,"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/keys":69,"babel-runtime/regenerator":86,bluebird:89}],54:[function(e,t,r){"use strict";function n(e,t,r){r=r||{},this._client=e,this._timelineSet=t,this._start=null,this._end=null,this._eventCount=0,this._windowLimit=r.windowLimit||1e3}function o(e,t){this.timeline=e,this.index=t}var i=e("bluebird"),s=function(e){return e&&e.__esModule?e:{default:e}}(i),a=e("./models/event-timeline"),u=function(){};n.prototype.load=function(e,t){var r=this;t=t||20;var n=function(n){var i=void 0,s=n.getEvents();if(e){for(var a=0;a<s.length;a++)if(s[a].getId()==e){i=a;break}if(void 0===i)throw new Error("getEventTimeline result didn't include requested event")}else i=s.length;var u=Math.min(s.length,i+Math.ceil(t/2)),c=Math.max(0,u-t);r._start=new o(n,c-n.getBaseIndex()),r._end=new o(n,u-n.getBaseIndex()),r._eventCount=u-c};if(e){var i=this._client.getEventTimeline(this._timelineSet,e);return i.isFulfilled()?(n(i.value()),s.default.resolve()):i.then(n)}return n(this._timelineSet.getLiveTimeline()),s.default.resolve()},n.prototype.canPaginate=function(e){var t=void 0;if(e==a.BACKWARDS)t=this._start;else{if(e!=a.FORWARDS)throw new Error("Invalid direction '"+e+"'");t=this._end}if(!t)return u("TimelineWindow: no timeline yet"),!1;if(e==a.BACKWARDS){if(t.index>t.minIndex())return!0}else if(t.index<t.maxIndex())return!0;return Boolean(t.timeline.getNeighbouringTimeline(e)||t.timeline.getPaginationToken(e))},n.prototype.paginate=function(e,t,r,n){void 0===r&&(r=!0),void 0===n&&(n=5);var o=void 0;if(e==a.BACKWARDS)o=this._start;else{if(e!=a.FORWARDS)throw new Error("Invalid direction '"+e+"'");o=this._end}if(!o)return u("TimelineWindow: no timeline yet"),s.default.resolve(!1);if(o.pendingPaginate)return o.pendingPaginate;var i=e==a.BACKWARDS?o.retreat(t):o.advance(t);if(i){this._eventCount+=i,u("TimelineWindow: increased cap by "+i+" (now "+this._eventCount+")");var c=this._eventCount-this._windowLimit;return c>0&&this.unpaginate(c,e!=a.BACKWARDS),s.default.resolve(!0)}if(!r||0===n)return s.default.resolve(!1);if(!o.timeline.getPaginationToken(e))return u("TimelineWindow: no token"),s.default.resolve(!1);u("TimelineWindow: starting request");var l=this,d=this._client.paginateEventTimeline(o.timeline,{backwards:e==a.BACKWARDS,limit:t}).finally(function(){o.pendingPaginate=null}).then(function(r){return u("TimelineWindow: request completed with result "+r),!!r&&l.paginate(e,t,!0,n-1)});return o.pendingPaginate=d,d},n.prototype.unpaginate=function(e,t){var r=t?this._start:this._end;if(e>this._eventCount||e<0)throw new Error("Attemting to unpaginate "+e+" events, but only have "+this._eventCount+" in the timeline");for(;e>0;){var n=t?r.advance(e):r.retreat(e);if(n<=0)throw new Error("Unable to unpaginate any further, but still have "+this._eventCount+" events");e-=n,this._eventCount-=n,u("TimelineWindow.unpaginate: dropped "+n+" (now "+this._eventCount+")")}},n.prototype.getEvents=function(){if(!this._start)return[];for(var e=[],t=this._start.timeline;;){var r=t.getEvents(),n=0,o=r.length;t===this._start.timeline&&(n=this._start.index+t.getBaseIndex()),t===this._end.timeline&&(o=this._end.index+t.getBaseIndex());for(var i=n;i<o;i++)e.push(r[i]);if(t===this._end.timeline)break;t=t.getNeighbouringTimeline(a.FORWARDS)}return e},o.prototype.minIndex=function(){return-1*this.timeline.getBaseIndex()},o.prototype.maxIndex=function(){return this.timeline.getEvents().length-this.timeline.getBaseIndex()},o.prototype.advance=function(e){if(!e)return 0;var t=void 0;if(e<0){if((t=Math.max(e,this.minIndex()-this.index))<0)return this.index+=t,t}else if((t=Math.min(e,this.maxIndex()-this.index))>0)return this.index+=t,t;var r=this.timeline.getNeighbouringTimeline(e<0?a.BACKWARDS:a.FORWARDS);return r?(this.timeline=r,this.index=e<0?this.maxIndex():this.minIndex(),u("paginate: switched to new neighbour"),this.advance(e)):0},o.prototype.retreat=function(e){return-1*this.advance(-1*e)},t.exports.TimelineWindow=n,t.exports.TimelineIndex=o},{"./models/event-timeline":33,bluebird:89}],55:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var i=e("babel-runtime/core-js/object/create"),s=n(i),a=e("babel-runtime/helpers/typeof"),u=n(a),c=e("babel-runtime/core-js/json/stringify"),l=n(c);t.exports.encodeParams=function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t+="&"+encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t.substring(1)},t.exports.encodeUri=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e=e.replace(r,encodeURIComponent(t[r])));return e},t.exports.map=function(e,t){for(var r=new Array(e.length),n=0;n<e.length;n++)r[n]=t(e[n]);return r},t.exports.filter=function(e,t){for(var r=[],n=0;n<e.length;n++)t(e[n],n,e)&&r.push(e[n]);return r},t.exports.keys=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r);return t},t.exports.values=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t},t.exports.forEach=function(e,t){for(var r=0;r<e.length;r++)t(e[r],r)},t.exports.findElement=function(e,t,r){var n=void 0;if(r){for(n=e.length-1;n>=0;n--)if(t(e[n],n,e))return e[n]}else for(n=0;n<e.length;n++)if(t(e[n],n,e))return e[n]},t.exports.removeElement=function(e,t,r){var n=void 0,o=void 0;if(r){for(n=e.length-1;n>=0;n--)if(t(e[n],n,e))return o=e[n],e.splice(n,1),o}else for(n=0;n<e.length;n++)if(t(e[n],n,e))return o=e[n],e.splice(n,1),o;return!1},t.exports.isFunction=function(e){return"[object Function]"==Object.prototype.toString.call(e)},t.exports.isArray=function(e){return Array.isArray?Array.isArray(e):Boolean(e&&e.constructor===Array)},t.exports.checkObjectHasKeys=function(e,t){for(var r=0;r<t.length;r++)if(!e.hasOwnProperty(t[r]))throw new Error("Missing required key: "+t[r])},t.exports.checkObjectHasNoAdditionalKeys=function(e,t){for(var r in e)if(e.hasOwnProperty(r)&&-1===t.indexOf(r))throw new Error("Unknown key: "+r)},t.exports.deepCopy=function(e){return JSON.parse((0,l.default)(e))};var d=t.exports.deepCompare=function(e,t){if(e===t)return!0;if((void 0===e?"undefined":(0,u.default)(e))!==(void 0===t?"undefined":(0,u.default)(t)))return!1;if("number"==typeof e&&isNaN(e)&&isNaN(t))return!0;if(null===e||null===t)return e===t;if(!(e instanceof Object))return!1;if(e.constructor!==t.constructor||e.prototype!==t.prototype)return!1;if(e instanceof RegExp||e instanceof Date)return e.toString()===t.toString();if(e instanceof Array){if(e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(!d(e[r],t[r]))return!1}else{var n=void 0;for(n in t)if(t.hasOwnProperty(n)!==e.hasOwnProperty(n))return!1;for(n in t){if(t.hasOwnProperty(n)!==e.hasOwnProperty(n))return!1;if(!d(e[n],t[n]))return!1}}return!0};t.exports.extend=function(){for(var e=arguments[0]||{},t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)e[n]=r[n]}return e},t.exports.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(e){if(void 0===this||null===this)throw new TypeError;var t=Object(this),r=t.length>>>0;if("function"!=typeof e)throw new TypeError;for(var n=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i<r;i++)if(i in t){var s=t[i];e.call(o,s,i,t)&&n.push(s)}return n}),Array.prototype.map||(Array.prototype.map=function(e,t){var r=void 0,n=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(r=t);var s=new Array(i);for(n=0;n<i;){var a,u;n in o&&(a=o[n],u=e.call(r,a,n,o),s[n]=u),n++}return s}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var r=void 0,n=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(r=t),n=0;n<i;){var s;n in o&&(s=o[n],e.call(r,s,n,o)),n++}})},t.exports.inherits=function(e,t){"function"!=typeof s.default&&(Object.create=function(){function e(){}var t=Object.prototype.hasOwnProperty;return function(r){if("object"!=(void 0===r?"undefined":(0,u.default)(r)))throw new TypeError("Object prototype may only be an Object or null");e.prototype=r;var n=new e;if(e.prototype=null,arguments.length>1){var o=Object(arguments[1]);for(var i in o)t.call(o,i)&&(n[i]=o[i])}return n}}()),e.super_=t,e.prototype=(0,s.default)(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.exports.isNumber=function(e){return"number"==typeof e&&isFinite(e)},t.exports.removeHiddenChars=function(e){return e.normalize("NFD").replace(f,"")};var f=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g;t.exports.escapeRegExp=o,t.exports.globToRegexp=function(e,t){t="boolean"!=typeof t||t;var r=o(e);return r=r.replace(/\\\*/g,".*"),r=r.replace(/\?/g,"."),t&&(r=r.replace(/\\\[(!|)(.*)\\]/g,function(e,t,r,n,o){return"["+(t&&"^"||"")+r.replace(/\\\-/,"-")+"]"})),r}},{"babel-runtime/core-js/json/stringify":60,"babel-runtime/core-js/object/create":64,"babel-runtime/helpers/typeof":85}],56:[function(e,t,r){(function(r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){this.roomId=e.roomId,this.client=e.client,this.webRtc=e.webRtc,this.forceTURN=e.forceTURN,this.URL=e.URL,this.turnServers=e.turnServers||[],0===this.turnServers.length&&this.turnServers.push({urls:[o.FALLBACK_STUN_SERVER]}),l.forEach(this.turnServers,function(e){l.checkObjectHasKeys(e,["urls"])}),this.callId="c"+(new Date).getTime()+Math.random(),this.state="fledgling",this.didConnect=!1,this.candidateSendQueue=[],this.candidateSendTries=0,this.mediaPromises=(0,c.default)(null),this.screenSharingStream=null,this._answerContent=null}var i=e("babel-runtime/regenerator"),s=n(i),a=e("bluebird"),u=e("babel-runtime/core-js/object/create"),c=n(u),l=e("../utils"),d=e("events").EventEmitter;o.CALL_TIMEOUT_MS=6e4,o.FALLBACK_STUN_SERVER="stun:stun.l.google.com:19302",o.ERR_LOCAL_OFFER_FAILED="local_offer_failed",o.ERR_NO_USER_MEDIA="no_user_media",o.ERR_UNKNOWN_DEVICES="unknown_devices",o.ERR_SEND_INVITE="send_invite",o.ERR_SEND_ANSWER="send_answer",l.inherits(o,d),o.prototype.placeVoiceCall=function(){S("placeVoiceCall"),E(this),T(this,I("voice")),this.type="voice"},o.prototype.placeVideoCall=function(e,t){S("placeVideoCall"),E(this),this.localVideoElement=t,this.remoteVideoElement=e,T(this,I("video")),this.type="video",g(this)},o.prototype.placeScreenSharingCall=function(e,t){S("placeScreenSharingCall"),E(this);var r=R(this);if(r){this.localVideoElement=t,this.remoteVideoElement=e;var n=this;this.webRtc.getUserMedia(r,function(e){n.screenSharingStream=e,S("Got screen stream, requesting audio stream...");var t=I("voice");T(n,t)},function(e){n.emit("error",w(o.ERR_NO_USER_MEDIA,"Failed to get screen-sharing stream: "+e))}),this.type="video",g(this)}},o.prototype.playElement=function(e,t){console.log("queuing play on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.play()},function(){return console.log("previous promise failed for "+t),e.play()}):this.mediaPromises[t]=e.play()},o.prototype.pauseElement=function(e,t){console.log("queuing pause on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.pause()},function(){return console.log("previous promise failed for "+t),e.pause()}):this.mediaPromises[t]=e.pause()},o.prototype.assignElement=function(e,t,r){console.log("queuing assign on "+r+" element "+e+" for "+t),this.mediaPromises[r]?this.mediaPromises[r]=this.mediaPromises[r].then(function(){console.log("previous promise completed for "+r),e.srcObject=t},function(){console.log("previous promise failed for "+r),e.srcObject=t}):e.srcObject=t},o.prototype.getLocalVideoElement=function(){return this.localVideoElement},o.prototype.getRemoteVideoElement=function(){return this.remoteVideoElement},o.prototype.getRemoteAudioElement=function(){return this.remoteAudioElement},o.prototype.setLocalVideoElement=function(e){if(this.localVideoElement=e,e&&this.localAVStream&&"video"===this.type){e.autoplay=!0,this.assignElement(e,this.localAVStream,"localVideo"),e.muted=!0;var t=this;setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)}},o.prototype.setRemoteVideoElement=function(e){this.remoteVideoElement=e,g(this)},o.prototype.setRemoteAudioElement=function(e){this.remoteVideoElement.muted=!0,this.remoteAudioElement=e,this.remoteAudioElement.muted=!1,b(this)},o.prototype._initWithInvite=function(e){this.msg=e.getContent(),this.peerConn=x(this);var t=this;this.peerConn&&this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(this.msg.offer),C(t,t._onSetRemoteDescriptionSuccess),C(t,t._onSetRemoteDescriptionError)),h(this,"ringing"),this.direction="inbound",this.msg.offer&&this.msg.offer.sdp&&this.msg.offer.sdp.indexOf("m=video")>-1?this.type="video":this.type="voice",e.getAge()&&setTimeout(function(){"ringing"==t.state&&(S("Call invite has expired. Hanging up."),t.hangupParty="remote",h(t,"ended"),_(t),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),t.emit("hangup",t))},this.msg.lifetime-e.getAge())},o.prototype._initWithHangup=function(e){this.msg=e.getContent(),h(this,"ended")},o.prototype.answer=function(){S("Answering call %s of type %s",this.callId,this.type);var e=this;if(e._answerContent)return void e._sendAnswer();this.localAVStream||this.waitForLocalAVStream?this.localAVStream?this._maybeGotUserMediaForAnswer(this.localAVStream):this.waitForLocalAVStream&&h(this,"wait_local_media"):(this.webRtc.getUserMedia(I(this.type),C(e,e._maybeGotUserMediaForAnswer),C(e,e._maybeGotUserMediaForAnswer)),h(this,"wait_local_media"))},o.prototype._replacedBy=function(e){S(this.callId+" being replaced by "+e.callId),"wait_local_media"==this.state?(S("Telling new call to wait for local media"),e.waitForLocalAVStream=!0):"create_offer"==this.state?(S("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream):"invite_sent"==this.state&&(S("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream),e.localVideoElement=this.localVideoElement,e.remoteVideoElement=this.remoteVideoElement,e.remoteAudioElement=this.remoteAudioElement,this.successor=e,this.emit("replaced",e),this.hangup(!0)},o.prototype.hangup=function(e,t){if("ended"!=this.state){S("Ending call "+this.callId),y(this,"local",e,!t);var r={version:0,call_id:this.callId,reason:e};v(this,"m.call.hangup",r)}},o.prototype.setLocalVideoMuted=function(e){this.localAVStream&&f(this.localAVStream.getVideoTracks(),!e)},o.prototype.isLocalVideoMuted=function(){return!!this.localAVStream&&!p(this.localAVStream.getVideoTracks())},o.prototype.setMicrophoneMuted=function(e){this.localAVStream&&f(this.localAVStream.getAudioTracks(),!e)},o.prototype.isMicrophoneMuted=function(){return!!this.localAVStream&&!p(this.localAVStream.getAudioTracks())},o.prototype._maybeGotUserMediaForInvite=function(e){if(this.successor)return void this.successor._maybeGotUserMediaForAnswer(e);if("ended"!=this.state){S("_maybeGotUserMediaForInvite -> "+this.type);var t=this,r=e,n={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};if(e instanceof MediaStream){var o=this.getLocalVideoElement();o&&"video"==this.type&&(o.autoplay=!0,this.screenSharingStream?(S("Setting screen sharing stream to the local video element"),this.assignElement(o,this.screenSharingStream,"localVideo")):this.assignElement(o,e,"localVideo"),o.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),this.screenSharingStream&&(this.screenSharingStream.addTrack(e.getAudioTracks()[0]),e=this.screenSharingStream),this.localAVStream=e,f(e.getAudioTracks(),!0),this.peerConn=x(this),this.peerConn.addStream(e)}else{if("PermissionDeniedError"!==r.name)return S("Failed to getUserMedia."),void this._getUserMediaFailed(r);S("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only."),this.peerConn=x(this)}this.peerConn.createOffer(C(t,t._gotLocalOffer),C(t,t._getLocalOfferFailed),n),h(t,"create_offer")}},o.prototype._sendAnswer=function(e){var t=this;v(this,"m.call.answer",this._answerContent).then(function(){h(t,"connecting"),k(t)}).catch(function(e){h(t,"ringing"),t.client.cancelPendingEvent(e.event);var r=o.ERR_SEND_ANSWER,n="Failed to send answer";throw"UnknownDeviceError"==e.name&&(r=o.ERR_UNKNOWN_DEVICES,n="Unknown devices present in the room"),t.emit("error",w(r,n)),e})},o.prototype._maybeGotUserMediaForAnswer=function(e){var t=this;if("ended"!=t.state){var r=e;if(e instanceof MediaStream){var n=t.getLocalVideoElement();n&&"video"==t.type&&(n.autoplay=!0,this.assignElement(n,e,"localVideo"),n.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),t.localAVStream=e,f(e.getAudioTracks(),!0),t.peerConn.addStream(e)}else{if("PermissionDeniedError"!==r.name)return S("Failed to getUserMedia."),void this._getUserMediaFailed(r);S("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only.")}var o={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};t.peerConn.createAnswer(function(e){S("Created answer: "+e),t.peerConn.setLocalDescription(e,function(){t._answerContent={version:0,call_id:t.callId,answer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type}},t._sendAnswer()},function(){S("Error setting local description!")},o)},function(e){S("Failed to create answer: "+e)}),h(t,"create_answer")}},o.prototype._gotLocalIceCandidate=function(e){if(e.candidate){if(S("Got local ICE "+e.candidate.sdpMid+" candidate: "+e.candidate.candidate),"ended"==this.state)return;var t={candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid,sdpMLineIndex:e.candidate.sdpMLineIndex};m(this,t)}},o.prototype._gotRemoteIceCandidate=function(e){"ended"!=this.state&&(S("Got remote ICE "+e.sdpMid+" candidate: "+e.candidate),this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(e),function(){},function(e){}))},o.prototype._receivedAnswer=function(e){if("ended"!=this.state){var t=this;this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(e.answer),C(t,t._onSetRemoteDescriptionSuccess),C(t,t._onSetRemoteDescriptionError)),h(t,"connecting")}},o.prototype._gotLocalOffer=function(e){var t=this;if(S("Created offer: "+e),"ended"==t.state)return void S("Ignoring newly created offer on call ID "+t.callId+" because the call has ended");t.peerConn.setLocalDescription(e,function(){var e={version:0,call_id:t.callId,offer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type},lifetime:o.CALL_TIMEOUT_MS};v(t,"m.call.invite",e).then(function(){h(t,"invite_sent"),setTimeout(function(){"invite_sent"==t.state&&t.hangup("invite_timeout")},o.CALL_TIMEOUT_MS)}).catch(function(e){var r=o.ERR_SEND_INVITE,n="Failed to send invite";throw"UnknownDeviceError"==e.name&&(r=o.ERR_UNKNOWN_DEVICES,n="Unknown devices present in the room"),t.client.cancelPendingEvent(e.event),y(t,"local",r,!1),t.emit("error",w(r,n)),e})},function(){S("Error setting local description!")})},o.prototype._getLocalOfferFailed=function(e){this.emit("error",w(o.ERR_LOCAL_OFFER_FAILED,"Failed to start audio for call!"))},o.prototype._getUserMediaFailed=function(e){y(this,"local","user_media_failed",!1),this.emit("error",w(o.ERR_NO_USER_MEDIA,"Couldn't start capturing media! Is your microphone set up and does this app have permission?"))},o.prototype._onIceConnectionStateChanged=function(){"ended"!=this.state&&(S("Ice connection state changed to: "+this.peerConn.iceConnectionState),"completed"==this.peerConn.iceConnectionState||"connected"==this.peerConn.iceConnectionState?(h(this,"connected"),this.didConnect=!0):"failed"==this.peerConn.iceConnectionState&&this.hangup("ice_failed"))},o.prototype._onSignallingStateChanged=function(){S("call "+this.callId+": Signalling state changed to: "+this.peerConn.signalingState)},o.prototype._onSetRemoteDescriptionSuccess=function(){S("Set remote description")},o.prototype._onSetRemoteDescriptionError=function(e){S("Failed to set remote description"+e)},o.prototype._onAddStream=function(e){S("Stream id "+e.stream.id+" added");var t=e.stream;t.getVideoTracks().length>0?(this.type="video",this.remoteAVStream=t,this.remoteAStream=t):(this.type="voice",this.remoteAStream=t);var r=this;A(t,function(e){S("Track id "+e.id+" added"),e.onstarted=C(r,r._onRemoteStreamTrackStarted)}),void 0!==e.stream.oninactive?e.stream.oninactive=C(r,r._onRemoteStreamEnded):e.stream.onended=C(r,r._onRemoteStreamEnded),e.stream.onstarted=C(r,r._onRemoteStreamStarted),"video"===this.type?(g(this),b(this)):b(this)},o.prototype._onRemoteStreamStarted=function(e){h(this,"connected")},o.prototype._onRemoteStreamEnded=function(e){S("Remote stream ended"),this.hangupParty="remote",h(this,"ended"),_(this),"closed"!=this.peerConn.signalingState&&this.peerConn.close(),this.emit("hangup",this)},o.prototype._onRemoteStreamTrackStarted=function(e){h(this,"connected")},o.prototype._onHangupReceived=function(e){S("Hangup received"),y(this,"remote",e.reason,!0)},o.prototype._onAnsweredElsewhere=function(e){S("Answered elsewhere"),y(this,"remote","answered_elsewhere",!0)};var f=function(e,t){for(var r=0;r<e.length;r++)e[r].enabled=t},p=function(e){for(var t=0;t<e.length;t++)if(e[t].enabled)return!0;return!1},h=function(e,t){var r=e.state;e.state=t,e.emit("state",t,r)},v=function(e,t,r){return e.client.sendEvent(e.roomId,t,r)},m=function(e,t){e.candidateSendQueue.push(t),"ringing"!=e.state&&0===e.candidateSendTries&&setTimeout(function(){k(e)},100)},y=function(e,t,r,n){e.getRemoteVideoElement()&&(e.getRemoteVideoElement().pause&&e.pauseElement(e.getRemoteVideoElement(),"remoteVideo"),e.assignElement(e.getRemoteVideoElement(),null,"remoteVideo")),e.getRemoteAudioElement()&&(e.getRemoteAudioElement().pause&&e.pauseElement(e.getRemoteAudioElement(),"remoteAudio"),e.assignElement(e.getRemoteAudioElement(),null,"remoteAudio")),e.getLocalVideoElement()&&(e.getLocalVideoElement().pause&&e.pauseElement(e.getLocalVideoElement(),"localVideo"),e.assignElement(e.getLocalVideoElement(),null,"localVideo")),e.hangupParty=t,e.hangupReason=r,h(e,"ended"),_(e),e.peerConn&&"closed"!==e.peerConn.signalingState&&e.peerConn.close(),n&&e.emit("hangup",e)},_=function(e){S("stopAllMedia (stream=%s)",e.localAVStream),e.localAVStream&&(A(e.localAVStream,function(e){e.stop&&e.stop()}),e.localAVStream.stop&&e.localAVStream.stop()),e.screenSharingStream&&(A(e.screenSharingStream,function(e){e.stop&&e.stop()}),e.screenSharingStream.stop&&e.screenSharingStream.stop()),e.remoteAVStream&&A(e.remoteAVStream,function(e){e.stop&&e.stop()}),e.remoteAStream&&A(e.remoteAStream,function(e){e.stop&&e.stop()})},g=function(e){if(e.getRemoteVideoElement()&&e.remoteAVStream){var t=e.getRemoteVideoElement();t.autoplay=!0,e.assignElement(t,e.remoteAVStream,"remoteVideo"),setTimeout(function(){var t=e.getRemoteVideoElement();t.play&&e.playElement(t,"remoteVideo"),e.webRtc.isOpenWebRTC()&&h(e,"connected")},0)}},b=function(){var e=(0,a.coroutine)(s.default.mark(function e(t){var r;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.getRemoteAudioElement()||!t.remoteAStream){e.next=8;break}if(r=t.getRemoteAudioElement(),!D){e.next=5;break}return e.next=5,(0,a.resolve)(r.setSinkId(D));case 5:r.autoplay=!0,t.assignElement(r,t.remoteAStream,"remoteAudio"),setTimeout(function(){var e=t.getRemoteAudioElement();e.play&&t.playElement(e,"remoteAudio"),t.webRtc.isOpenWebRTC()&&h(t,"connected")},0);case 8:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),E=function(e){if(0===e.listeners("error").length)throw new Error("You MUST attach an error listener using call.on('error', function() {})")},w=function(e,t){var r=new Error(t);return r.code=e,r},S=function(){var e;(e=console).log.apply(e,arguments)},k=function e(t){if(0!==t.candidateSendQueue.length){var r=t.candidateSendQueue;t.candidateSendQueue=[],++t.candidateSendTries;var n={version:0,call_id:t.callId,candidates:r};S("Attempting to send "+r.length+" candidates"),v(t,"m.call.candidates",n).then(function(){t.candidateSendTries=0,e(t)},function(n){for(var o=0;o<r.length;o++)t.candidateSendQueue.push(r[o]);if(t.candidateSendTries>5)return S("Failed to send candidates on attempt %s. Giving up for now.",t.candidateSendTries),void(t.candidateSendTries=0);var i=500*Math.pow(2,t.candidateSendTries);++t.candidateSendTries,S("Failed to send candidates. Retrying in "+i+"ms"),setTimeout(function(){e(t)},i)})}},T=function(e,t){e.client.callList[e.callId]=e,e.webRtc.getUserMedia(t,C(e,e._maybeGotUserMediaForInvite),C(e,e._maybeGotUserMediaForInvite)),h(e,"wait_local_media"),e.direction="outbound",e.config=t},x=function(e){var t=e.turnServers;if("mozilla"===e.webRtc.vendor){t=[];for(var r=0;r<e.turnServers.length;r++)for(var n=0;n<e.turnServers[r].urls.length;n++)t.push({url:e.turnServers[r].urls[n],username:e.turnServers[r].username,credential:e.turnServers[r].credential})}var o=new e.webRtc.RtcPeerConnection({iceTransportPolicy:e.forceTURN?"relay":void 0,iceServers:t});return o.oniceconnectionstatechange=C(e,e._onIceConnectionStateChanged),o.onsignalingstatechange=C(e,e._onSignallingStateChanged),o.onicecandidate=C(e,e._gotLocalIceCandidate),o.onaddstream=C(e,e._onAddStream),o},R=function(e){var t=r.screen;return t?{video:{mediaSource:"screen",mandatory:{chromeMediaSource:"screen",chromeMediaSourceId:""+Date.now(),maxWidth:t.width,maxHeight:t.height,minFrameRate:1,maxFrameRate:10}}}:void e.emit("error",w(o.ERR_NO_USER_MEDIA,"Couldn't determine screen sharing constaints."))},I=function(e){var t=!!r.window.navigator.webkitGetUserMedia;switch(e){case"voice":return{audio:{deviceId:M?{exact:M}:void 0},video:!1};case"video":return{audio:{deviceId:M?{exact:M}:void 0},video:{deviceId:P?{exact:P}:void 0,width:t?{exact:640}:{ideal:640},height:t?{exact:360}:{ideal:360}}}}},C=function(e,t){return function(){return t.apply(e,arguments)}},j=function(e,t){for(var r=e.getVideoTracks(),n=0;n<r.length;n++)t(r[n])},O=function(e,t){for(var r=e.getAudioTracks(),n=0;n<r.length;n++)t(r[n])},A=function(e,t){j(e,t),O(e,t)};t.exports.MatrixCall=o;var D=void 0,M=void 0,P=void 0;t.exports.setAudioOutput=function(e){D=e},t.exports.setAudioInput=function(e){M=e},t.exports.setVideoInput=function(e){P=e},t.exports.createNewMatrixCall=function(e,t,n){var i=r.window,s=r.document;if(!i||!s)return null;var a={};a.isOpenWebRTC=function(){var e=s.getElementById("script");if(!e||!e.length)return!1;for(var t=0;t<e.length;t++)if(e[t].src.indexOf("owr.js")>-1)return!0;return!1};var u=i.navigator.getUserMedia||i.navigator.webkitGetUserMedia||i.navigator.mozGetUserMedia;if(u&&(a.getUserMedia=function(){return u.apply(i.navigator,arguments)}),a.RtcPeerConnection=i.RTCPeerConnection||i.webkitRTCPeerConnection||i.mozRTCPeerConnection,a.RtcSessionDescription=i.RTCSessionDescription||i.webkitRTCSessionDescription||i.mozRTCSessionDescription,a.RtcIceCandidate=i.RTCIceCandidate||i.webkitRTCIceCandidate||i.mozRTCIceCandidate,a.vendor=null,i.mozRTCPeerConnection?a.vendor="mozilla":i.webkitRTCPeerConnection?a.vendor="webkit":i.RTCPeerConnection&&(a.vendor="generic"),!(a.RtcIceCandidate&&a.RtcSessionDescription&&a.RtcPeerConnection&&a.getUserMedia))return null;var c=!!n&&n.forceTURN;return new o({webRtc:a,client:e,URL:i.URL,roomId:t,turnServers:e.getTurnServers(),forceTURN:e._forceTURN||c})}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils":55,"babel-runtime/core-js/object/create":64,"babel-runtime/regenerator":86,bluebird:89,events:234}],57:[function(e,t,r){"use strict";function n(e){return a.lastIndex=0,e.replace(a,function(e){return u[e]})}function o(e){switch(typeof e){case"string":return'"'+n(e)+'"';case"number":return isFinite(e)?e:"null";case"boolean":return e;case"object":return null===e?"null":Array.isArray(e)?i(e):s(e);default:throw new Error("Cannot stringify: "+typeof e)}}function i(e){for(var t="[",r="",n=0;n<e.length;++n)r+=t,t=",",r+=o(e[n]);return","!=t?"[]":r+"]"}function s(e){var t="{",r="",i=Object.keys(e);i.sort();for(var s=0;s<i.length;++s){var a=i[s];r+=t+'"'+n(a)+'":',t=",",r+=o(e[a])}return","!=t?"{}":r+"}"}for(var a=/[\\\"\x00-\x1F]/g,u={},c=0;c<32;++c)u[String.fromCharCode(c)]="\\U"+("0000"+c.toString(16)).slice(-4).toUpperCase();u["\b"]="\\b",u["\t"]="\\t",u["\n"]="\\n",u["\f"]="\\f",u["\r"]="\\r",u['"']='\\"',u["\\"]="\\\\",t.exports={stringify:o}},{}],58:[function(e,t,r){t.exports={default:e("core-js/library/fn/get-iterator"),__esModule:!0}},{"core-js/library/fn/get-iterator":95}],59:[function(e,t,r){t.exports={default:e("core-js/library/fn/is-iterable"),__esModule:!0}},{"core-js/library/fn/is-iterable":96}],60:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:!0}},{"core-js/library/fn/json/stringify":97}],61:[function(e,t,r){t.exports={default:e("core-js/library/fn/number/is-finite"),__esModule:!0}},{"core-js/library/fn/number/is-finite":98}],62:[function(e,t,r){t.exports={default:e("core-js/library/fn/number/is-integer"),__esModule:!0}},{"core-js/library/fn/number/is-integer":99}],63:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/assign"),__esModule:!0}},{"core-js/library/fn/object/assign":100}],64:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/create"),__esModule:!0}},{"core-js/library/fn/object/create":101}],65:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:!0}},{"core-js/library/fn/object/define-property":102}],66:[function(e,t,r){ +t.exports={default:e("core-js/library/fn/object/entries"),__esModule:!0}},{"core-js/library/fn/object/entries":103}],67:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/freeze"),__esModule:!0}},{"core-js/library/fn/object/freeze":104}],68:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/get-prototype-of"),__esModule:!0}},{"core-js/library/fn/object/get-prototype-of":105}],69:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/keys"),__esModule:!0}},{"core-js/library/fn/object/keys":106}],70:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/set-prototype-of"),__esModule:!0}},{"core-js/library/fn/object/set-prototype-of":107}],71:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/values"),__esModule:!0}},{"core-js/library/fn/object/values":108}],72:[function(e,t,r){t.exports={default:e("core-js/library/fn/promise"),__esModule:!0}},{"core-js/library/fn/promise":109}],73:[function(e,t,r){t.exports={default:e("core-js/library/fn/reflect/construct"),__esModule:!0}},{"core-js/library/fn/reflect/construct":110}],74:[function(e,t,r){t.exports={default:e("core-js/library/fn/reflect/get-prototype-of"),__esModule:!0}},{"core-js/library/fn/reflect/get-prototype-of":111}],75:[function(e,t,r){t.exports={default:e("core-js/library/fn/reflect/set-prototype-of"),__esModule:!0}},{"core-js/library/fn/reflect/set-prototype-of":112}],76:[function(e,t,r){t.exports={default:e("core-js/library/fn/set"),__esModule:!0}},{"core-js/library/fn/set":113}],77:[function(e,t,r){t.exports={default:e("core-js/library/fn/symbol"),__esModule:!0}},{"core-js/library/fn/symbol":114}],78:[function(e,t,r){t.exports={default:e("core-js/library/fn/symbol/iterator"),__esModule:!0}},{"core-js/library/fn/symbol/iterator":115}],79:[function(e,t,r){"use strict";r.__esModule=!0,r.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},{}],80:[function(e,t,r){"use strict";r.__esModule=!0;var n=e("../core-js/object/define-property"),o=function(e){return e&&e.__esModule?e:{default:e}}(n);r.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,o.default)(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}()},{"../core-js/object/define-property":65}],81:[function(e,t,r){"use strict";r.__esModule=!0;var n=e("../core-js/object/define-property"),o=function(e){return e&&e.__esModule?e:{default:e}}(n);r.default=function(e,t,r){return t in e?(0,o.default)(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},{"../core-js/object/define-property":65}],82:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var o=e("../core-js/object/set-prototype-of"),i=n(o),s=e("../core-js/object/create"),a=n(s),u=e("../helpers/typeof"),c=n(u);r.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,c.default)(t)));e.prototype=(0,a.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(i.default?(0,i.default)(e,t):e.__proto__=t)}},{"../core-js/object/create":64,"../core-js/object/set-prototype-of":70,"../helpers/typeof":85}],83:[function(e,t,r){"use strict";r.__esModule=!0;var n=e("../helpers/typeof"),o=function(e){return e&&e.__esModule?e:{default:e}}(n);r.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,o.default)(t))&&"function"!=typeof t?e:t}},{"../helpers/typeof":85}],84:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var o=e("../core-js/is-iterable"),i=n(o),s=e("../core-js/get-iterator"),a=n(s);r.default=function(){function e(e,t){var r=[],n=!0,o=!1,i=void 0;try{for(var s,u=(0,a.default)(e);!(n=(s=u.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if((0,i.default)(Object(t)))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},{"../core-js/get-iterator":58,"../core-js/is-iterable":59}],85:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.__esModule=!0;var o=e("../core-js/symbol/iterator"),i=n(o),s=e("../core-js/symbol"),a=n(s),u="function"==typeof a.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":typeof e};r.default="function"==typeof a.default&&"symbol"===u(i.default)?function(e){return void 0===e?"undefined":u(e)}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":void 0===e?"undefined":u(e)}},{"../core-js/symbol":77,"../core-js/symbol/iterator":78}],86:[function(e,t,r){t.exports=e("regenerator-runtime")},{"regenerator-runtime":246}],87:[function(e,t,r){var n=e("safe-buffer").Buffer;t.exports=function(e){function t(t){if(0===t.length)return"";for(var r=[0],n=0;n<t.length;++n){for(var o=0,i=t[n];o<r.length;++o)i+=r[o]<<8,r[o]=i%s,i=i/s|0;for(;i>0;)r.push(i%s),i=i/s|0}for(var u="",c=0;0===t[c]&&c<t.length-1;++c)u+=a;for(var l=r.length-1;l>=0;--l)u+=e[r[l]];return u}function r(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return n.allocUnsafe(0);for(var t=[0],r=0;r<e.length;r++){var o=i[e[r]];if(void 0===o)return;for(var u=0,c=o;u<t.length;++u)c+=t[u]*s,t[u]=255&c,c>>=8;for(;c>0;)t.push(255&c),c>>=8}for(var l=0;e[l]===a&&l<e.length-1;++l)t.push(0);return n.from(t.reverse())}function o(e){var t=r(e);if(t)return t;throw new Error("Non-base"+s+" character")}for(var i={},s=e.length,a=e.charAt(0),u=0;u<e.length;u++){var c=e.charAt(u);if(void 0!==i[c])throw new TypeError(c+" is ambiguous");i[c]=u}return{encode:t,decodeUnsafe:r,decode:o}}},{"safe-buffer":248}],88:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function o(e){var t=n(e),r=t[0],o=t[1];return 3*(r+o)/4-o}function i(e,t,r){return 3*(t+r)/4-r}function s(e){for(var t,r=n(e),o=r[0],s=r[1],a=new f(i(e,o,s)),u=0,c=s>0?o-4:o,l=0;l<c;l+=4)t=d[e.charCodeAt(l)]<<18|d[e.charCodeAt(l+1)]<<12|d[e.charCodeAt(l+2)]<<6|d[e.charCodeAt(l+3)],a[u++]=t>>16&255,a[u++]=t>>8&255,a[u++]=255&t;return 2===s&&(t=d[e.charCodeAt(l)]<<2|d[e.charCodeAt(l+1)]>>4,a[u++]=255&t),1===s&&(t=d[e.charCodeAt(l)]<<10|d[e.charCodeAt(l+1)]<<4|d[e.charCodeAt(l+2)]>>2,a[u++]=t>>8&255,a[u++]=255&t),a}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function u(e,t,r){for(var n,o=[],i=t;i<r;i+=3)n=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(a(n));return o.join("")}function c(e){for(var t,r=e.length,n=r%3,o=[],i=0,s=r-n;i<s;i+=16383)o.push(u(e,i,i+16383>s?s:i+16383));return 1===n?(t=e[r-1],o.push(l[t>>2]+l[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],o.push(l[t>>10]+l[t>>4&63]+l[t<<2&63]+"=")),o.join("")}r.byteLength=o,r.toByteArray=s,r.fromByteArray=c;for(var l=[],d=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,v=p.length;h<v;++h)l[h]=p[h],d[p.charCodeAt(h)]=h;d["-".charCodeAt(0)]=62,d["_".charCodeAt(0)]=63},{}],89:[function(e,t,r){(function(e,n,o){!function(e){if("object"==typeof r&&void 0!==t)t.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o;"undefined"!=typeof window?o=window:void 0!==n?o=n:"undefined"!=typeof self&&(o=self),o.Promise=e()}}(function(){var t,r,i;return function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var u="function"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return o(r||e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var i="function"==typeof _dereq_&&_dereq_,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(e,t,r){"use strict";t.exports=function(e){function t(e){var t=new r(e),n=t.promise();return t.setHowMany(1),t.setUnwrap(),t.init(),n}var r=e._SomePromiseArray;e.any=function(e){return t(e)},e.prototype.any=function(){return t(this)}}},{}],2:[function(t,r,n){"use strict";function o(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new f(16),this._normalQueue=new f(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var e=this;this.drainQueues=function(){e._drainQueues()},this._schedule=d}function i(e,t,r){this._lateQueue.push(e,t,r),this._queueTick()}function s(e,t,r){this._normalQueue.push(e,t,r),this._queueTick()}function a(e){this._normalQueue._pushOne(e),this._queueTick()}function u(e){for(;e.length()>0;)c(e)}function c(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var r=e.shift(),n=e.shift();t.call(r,n)}}var l;try{throw new Error}catch(e){l=e}var d=t("./schedule"),f=t("./queue"),p=t("./util");o.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},o.prototype.hasCustomScheduler=function(){return this._customScheduler},o.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},o.prototype.disableTrampolineIfNecessary=function(){p.hasDevTools&&(this._trampolineEnabled=!1)},o.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},o.prototype.fatalError=function(t,r){r?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},o.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout(function(){e(t)},0);else try{this._schedule(function(){e(t)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},p.hasDevTools?(o.prototype.invokeLater=function(e,t,r){this._trampolineEnabled?i.call(this,e,t,r):this._schedule(function(){setTimeout(function(){e.call(t,r)},100)})},o.prototype.invoke=function(e,t,r){this._trampolineEnabled?s.call(this,e,t,r):this._schedule(function(){e.call(t,r)})},o.prototype.settlePromises=function(e){this._trampolineEnabled?a.call(this,e):this._schedule(function(){e._settlePromises()})}):(o.prototype.invokeLater=i,o.prototype.invoke=s,o.prototype.settlePromises=a),o.prototype._drainQueues=function(){u(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,u(this._lateQueue)},o.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},o.prototype._reset=function(){this._isTickUsed=!1},r.exports=o,r.exports.firstLineError=l},{"./queue":26,"./schedule":29,"./util":36}],3:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){var o=!1,i=function(e,t){this._reject(t)},s=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(i,i,null,this,e)},a=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},u=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(i){o||(o=!0,e.prototype._propagateFrom=n.propagateFromFunction(),e.prototype._boundValue=n.boundValueFunction());var c=r(i),l=new e(t);l._propagateFrom(this,1);var d=this._target();if(l._setBoundTo(c),c instanceof e){var f={promiseRejectionQueued:!1,promise:l,target:d,bindingPromise:c};d._then(t,s,void 0,l,f),c._then(a,u,void 0,l,f),l._setOnCancel(c)}else l._resolveCallback(d);return l},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,r){return e.resolve(r).bind(t)}}},{}],4:[function(e,t,r){"use strict";function n(){try{Promise===i&&(Promise=o)}catch(e){}return i}var o;"undefined"!=typeof Promise&&(o=Promise);var i=e("./promise")();i.noConflict=n,t.exports=i},{"./promise":22}],5:[function(e,t,r){"use strict";var n=Object.create;if(n){var o=n(null),i=n(null);o[" size"]=i[" size"]=0}t.exports=function(t){function r(e,r){var n;if(null!=e&&(n=e[r]),"function"!=typeof n){var o="Object "+a.classString(e)+" has no method '"+a.toString(r)+"'";throw new t.TypeError(o)}return n}function n(e){return r(e,this.pop()).apply(e,this)}function o(e){return e[this]}function i(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}var s,a=e("./util"),u=a.canEvaluate;a.isIdentifier;t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(n,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t,r="number"==typeof e;if(r)t=i;else if(u){var n=s(e);t=null!==n?n:o}else t=o;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,r){"use strict";t.exports=function(t,r,n,o){var i=e("./util"),s=i.tryCatch,a=i.errorObj,u=t._async;t.prototype.break=t.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var r=e._cancellationParent;if(null==r||!r._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=r}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(i.isArray(e))for(var r=0;r<e.length;++r)this._doInvokeOnCancel(e[r],t);else if(void 0!==e)if("function"==typeof e){if(!t){var n=s(e).call(this._boundValue());n===a&&(this._attachExtraTrace(n.e),u.throwLater(n.e))}}else e._resultCancelled(this)},t.prototype._invokeOnCancel=function(){var e=this._onCancel();this._unsetOnCancel(),u.invoke(this._doInvokeOnCancel,this,e)},t.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},t.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(e,t,r){"use strict";t.exports=function(t){function r(e,r,a){return function(u){var c=a._boundValue();e:for(var l=0;l<e.length;++l){var d=e[l];if(d===Error||null!=d&&d.prototype instanceof Error){if(u instanceof d)return i(r).call(c,u)}else if("function"==typeof d){var f=i(d).call(c,u);if(f===s)return f;if(f)return i(r).call(c,u)}else if(n.isObject(u)){for(var p=o(d),h=0;h<p.length;++h){var v=p[h];if(d[v]!=u[v])continue e}return i(r).call(c,u)}}return t}}var n=e("./util"),o=e("./es5").keys,i=n.tryCatch,s=n.errorObj;return r}},{"./es5":13,"./util":36}],8:[function(e,t,r){"use strict";t.exports=function(e){function t(){this._trace=new t.CapturedTrace(n())}function r(){if(o)return new t}function n(){var e=i.length-1;if(e>=0)return i[e]}var o=!1,i=[];return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},t.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,i.push(this._trace))},t.prototype._popContext=function(){if(void 0!==this._trace){var e=i.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},t.CapturedTrace=null,t.create=r,t.deactivateLongStackTraces=function(){},t.activateLongStackTraces=function(){var r=e.prototype._pushContext,i=e.prototype._popContext,s=e._peekContext,a=e.prototype._peekContext,u=e.prototype._promiseCreated;t.deactivateLongStackTraces=function(){e.prototype._pushContext=r,e.prototype._popContext=i,e._peekContext=s,e.prototype._peekContext=a,e.prototype._promiseCreated=u,o=!1},o=!0,e.prototype._pushContext=t.prototype._pushContext,e.prototype._popContext=t.prototype._popContext,e._peekContext=e.prototype._peekContext=n,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},t}},{}],9:[function(t,r,n){"use strict";r.exports=function(r,n){function o(e,t){return{promise:t}}function i(){return!1}function s(e,t,r){var n=this;try{e(t,r,function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+q.toString(e));n._attachCancellationCallback(e)})}catch(e){return e}}function a(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?q.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function u(){return this._onCancelField}function c(e){this._onCancelField=e}function l(){this._cancellationParent=void 0,this._onCancelField=void 0}function d(e,t){if(0!=(1&t)){this._cancellationParent=e;var r=e._branchesRemainingToCancel;void 0===r&&(r=0),e._branchesRemainingToCancel=r+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}function f(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}function p(){var e=this._boundTo;return void 0!==e&&e instanceof r?e.isFulfilled()?e.value():void 0:e}function h(){this._trace=new D(this._peekContext())}function v(e,t){if(K(e)){var r=this._trace;if(void 0!==r&&t&&(r=r._parent),void 0!==r)r.attachExtraTrace(e);else if(!e.__stackCleaned__){var n=T(e);q.notEnumerableProp(e,"stack",n.message+"\n"+n.stack.join("\n")),q.notEnumerableProp(e,"__stackCleaned__",!0)}}}function m(){this._trace=void 0}function y(e,t,r,n,o){if(void 0===e&&null!==t&&X){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&n._bitField))return;r&&(r+=" ");var i="",s="";if(t._trace){for(var a=t._trace.stack.split("\n"),u=S(a),c=u.length-1;c>=0;--c){var l=u[c];if(!$.test(l)){var d=l.match(V);d&&(i="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(u.length>0)for(var f=u[0],c=0;c<a.length;++c)if(a[c]===f){c>0&&(s="\n"+a[c-1]);break}}var p="a promise was created in a "+r+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+s;n._warn(p,!0,t)}}function _(e,t){var r=e+" is deprecated and will be removed in a future version.";return t&&(r+=" Use "+t+" instead."),g(r)}function g(e,t,n){if(ue.warnings){var o,i=new F(e);if(t)n._attachExtraTrace(i);else if(ue.longStackTraces&&(o=r._peekContext()))o.attachExtraTrace(i);else{var s=T(i);i.stack=s.message+"\n"+s.stack.join("\n")}ne("warning",i)||x(i,"",!0)}}function b(e,t){for(var r=0;r<t.length-1;++r)t[r].push("From previous event:"),t[r]=t[r].join("\n");return r<t.length&&(t[r]=t[r].join("\n")),e+"\n"+t.join("\n")}function E(e){for(var t=0;t<e.length;++t)(0===e[t].length||t+1<e.length&&e[t][0]===e[t+1][0])&&(e.splice(t,1),t--)}function w(e){for(var t=e[0],r=1;r<e.length;++r){for(var n=e[r],o=t.length-1,i=t[o],s=-1,a=n.length-1;a>=0;--a)if(n[a]===i){s=a;break}for(var a=s;a>=0;--a){var u=n[a];if(t[o]!==u)break;t.pop(),o--}t=n}}function S(e){for(var t=[],r=0;r<e.length;++r){var n=e[r],o=" (No stack trace)"===n||W.test(n),i=o&&ie(n);o&&!i&&(z&&" "!==n.charAt(0)&&(n=" "+n),t.push(n))}return t}function k(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),r=0;r<t.length;++r){var n=t[r];if(" (No stack trace)"===n||W.test(n))break}return r>0&&"SyntaxError"!=e.name&&(t=t.slice(r)),t}function T(e){var t=e.stack,r=e.toString();return t="string"==typeof t&&t.length>0?k(e):[" (No stack trace)"],{message:r,stack:"SyntaxError"==e.name?t:S(t)}}function x(e,t,r){if("undefined"!=typeof console){var n;if(q.isObject(e)){var o=e.stack;n=t+H(o,e)}else n=t+String(e);"function"==typeof L?L(n,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function R(e,t,r,n){var o=!1;try{"function"==typeof t&&(o=!0,"rejectionHandled"===e?t(n):t(r,n))}catch(e){N.throwLater(e)}"unhandledRejection"===e?ne(e,r,n)||o||x(r,"Unhandled rejection "):ne(e,n)}function I(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{t=e&&"function"==typeof e.toString?e.toString():q.toString(e);if(/\[object [a-zA-Z0-9$_]+\]/.test(t))try{t=JSON.stringify(e)}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+C(t)+">, no stack trace)"}function C(e){return e.length<41?e:e.substr(0,38)+"..."}function j(){return"function"==typeof ae}function O(e){var t=e.match(se);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function A(e,t){if(j()){for(var r,n,o=e.stack.split("\n"),i=t.stack.split("\n"),s=-1,a=-1,u=0;u<o.length;++u){var c=O(o[u]);if(c){r=c.fileName,s=c.line;break}}for(var u=0;u<i.length;++u){var c=O(i[u]);if(c){n=c.fileName,a=c.line;break}}s<0||a<0||!r||!n||r!==n||s>=a||(ie=function(e){if(G.test(e))return!0;var t=O(e);return!!(t&&t.fileName===r&&s<=t.line&&t.line<=a)})}}function D(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);ae(this,D),t>32&&this.uncycle()}var M,P,L,U=r._getDomain,N=r._async,F=t("./errors").Warning,q=t("./util"),B=t("./es5"),K=q.canAttachTrace,G=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,$=/\((?:timers\.js):\d+:\d+\)/,V=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,W=null,H=null,z=!1,Q=!(0==q.env("BLUEBIRD_DEBUG")),J=!(0==q.env("BLUEBIRD_WARNINGS")||!Q&&!q.env("BLUEBIRD_WARNINGS")),Y=!(0==q.env("BLUEBIRD_LONG_STACK_TRACES")||!Q&&!q.env("BLUEBIRD_LONG_STACK_TRACES")),X=0!=q.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(J||!!q.env("BLUEBIRD_W_FORGOTTEN_RETURN"));r.prototype.suppressUnhandledRejections=function(){var e=this._target();e._bitField=-1048577&e._bitField|524288},r.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var e=this;setTimeout(function(){e._notifyUnhandledRejection()},1)}},r.prototype._notifyUnhandledRejectionIsHandled=function(){R("rejectionHandled",M,void 0,this)},r.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},r.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},r.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._settledValue();this._setUnhandledRejectionIsNotified(),R("unhandledRejection",P,e,this)}},r.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},r.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},r.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},r.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},r.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},r.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},r.prototype._warn=function(e,t,r){return g(e,t,r||this)},r.onPossiblyUnhandledRejection=function(e){var t=U();P="function"==typeof e?null===t?e:q.domainBind(t,e):void 0},r.onUnhandledRejectionHandled=function(e){var t=U();M="function"==typeof e?null===t?e:q.domainBind(t,e):void 0};var Z=function(){};r.longStackTraces=function(){if(N.haveItemsQueued()&&!ue.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!ue.longStackTraces&&j()){var e=r.prototype._captureStackTrace,t=r.prototype._attachExtraTrace,o=r.prototype._dereferenceTrace;ue.longStackTraces=!0,Z=function(){if(N.haveItemsQueued()&&!ue.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");r.prototype._captureStackTrace=e,r.prototype._attachExtraTrace=t,r.prototype._dereferenceTrace=o,n.deactivateLongStackTraces(),N.enableTrampoline(),ue.longStackTraces=!1},r.prototype._captureStackTrace=h,r.prototype._attachExtraTrace=v,r.prototype._dereferenceTrace=m,n.activateLongStackTraces(),N.disableTrampolineIfNecessary()}},r.hasLongStackTraces=function(){return ue.longStackTraces&&j()};var ee=function(){try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return q.global.dispatchEvent(e),function(e,t){var r={detail:t,cancelable:!0};B.defineProperty(r,"promise",{value:t.promise}),B.defineProperty(r,"reason",{value:t.reason});var n=new CustomEvent(e.toLowerCase(),r);return!q.global.dispatchEvent(n)}}if("function"==typeof Event){var e=new Event("CustomEvent");return q.global.dispatchEvent(e),function(e,t){var r=new Event(e.toLowerCase(),{cancelable:!0});return r.detail=t,B.defineProperty(r,"promise",{value:t.promise}),B.defineProperty(r,"reason",{value:t.reason}),!q.global.dispatchEvent(r)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),q.global.dispatchEvent(e),function(e,t){var r=document.createEvent("CustomEvent");return r.initCustomEvent(e.toLowerCase(),!1,!0,t),!q.global.dispatchEvent(r)}}catch(e){}return function(){return!1}}(),te=function(){return q.isNode?function(){return e.emit.apply(e,arguments)}:q.global?function(e){var t="on"+e.toLowerCase(),r=q.global[t];return!!r&&(r.apply(q.global,[].slice.call(arguments,1)),!0)}:function(){return!1}}(),re={promiseCreated:o,promiseFulfilled:o,promiseRejected:o,promiseResolved:o,promiseCancelled:o,promiseChained:function(e,t,r){return{promise:t,child:r}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,r){return{reason:t,promise:r}},rejectionHandled:o},ne=function(e){var t=!1;try{t=te.apply(null,arguments)}catch(e){N.throwLater(e),t=!0}var r=!1;try{r=ee(e,re[e].apply(null,arguments))}catch(e){N.throwLater(e),r=!0}return r||t};r.config=function(e){if(e=Object(e),"longStackTraces"in e&&(e.longStackTraces?r.longStackTraces():!e.longStackTraces&&r.hasLongStackTraces()&&Z()),"warnings"in e){var t=e.warnings;ue.warnings=!!t,X=ue.warnings,q.isObject(t)&&"wForgottenReturn"in t&&(X=!!t.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!ue.cancellation){if(N.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");r.prototype._clearCancellationData=l,r.prototype._propagateFrom=d,r.prototype._onCancel=u,r.prototype._setOnCancel=c,r.prototype._attachCancellationCallback=a,r.prototype._execute=s,oe=d,ue.cancellation=!0}return"monitoring"in e&&(e.monitoring&&!ue.monitoring?(ue.monitoring=!0,r.prototype._fireEvent=ne):!e.monitoring&&ue.monitoring&&(ue.monitoring=!1,r.prototype._fireEvent=i)),r},r.prototype._fireEvent=i,r.prototype._execute=function(e,t,r){try{e(t,r)}catch(e){return e}},r.prototype._onCancel=function(){},r.prototype._setOnCancel=function(e){},r.prototype._attachCancellationCallback=function(e){},r.prototype._captureStackTrace=function(){},r.prototype._attachExtraTrace=function(){},r.prototype._dereferenceTrace=function(){},r.prototype._clearCancellationData=function(){},r.prototype._propagateFrom=function(e,t){};var oe=f,ie=function(){return!1},se=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;q.inherits(D,Error),n.CapturedTrace=D,D.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],r={},n=0,o=this;void 0!==o;++n)t.push(o),o=o._parent;e=this._length=n;for(var n=e-1;n>=0;--n){var i=t[n].stack;void 0===r[i]&&(r[i]=n)}for(var n=0;n<e;++n){var s=t[n].stack,a=r[s];if(void 0!==a&&a!==n){a>0&&(t[a-1]._parent=void 0,t[a-1]._length=1),t[n]._parent=void 0,t[n]._length=1;var u=n>0?t[n-1]:this;a<e-1?(u._parent=t[a+1],u._parent.uncycle(),u._length=u._parent._length+1):(u._parent=void 0,u._length=1);for(var c=u._length+1,l=n-2;l>=0;--l)t[l]._length=c,c++;return}}}},D.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=T(e),r=t.message,n=[t.stack],o=this;void 0!==o;)n.push(S(o.stack.split("\n"))),o=o._parent;w(n),E(n),q.notEnumerableProp(e,"stack",b(r,n)),q.notEnumerableProp(e,"__stackCleaned__",!0)}};var ae=function(){var e=/^\s*at\s*/,t=function(e,t){return"string"==typeof e?e:void 0!==t.name&&void 0!==t.message?t.toString():I(t)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,W=e,H=t;var r=Error.captureStackTrace;return ie=function(e){return G.test(e)},function(e,t){Error.stackTraceLimit+=6,r(e,t),Error.stackTraceLimit-=6}}var n=new Error;if("string"==typeof n.stack&&n.stack.split("\n")[0].indexOf("stackDetection@")>=0)return W=/@/,H=t,z=!0,function(e){e.stack=(new Error).stack};var o;try{throw new Error}catch(e){o="stack"in e}return"stack"in n||!o||"number"!=typeof Error.stackTraceLimit?(H=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?I(t):t.toString()},null):(W=e,H=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(L=function(e){console.warn(e)},q.isNode&&e.stderr.isTTY?L=function(e,t){var r=t?"[33m":"[31m";console.warn(r+e+"[0m\n")}:q.isNode||"string"!=typeof(new Error).stack||(L=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var ue={warnings:J,longStackTraces:!1,cancellation:!1,monitoring:!1};return Y&&r.longStackTraces(),{longStackTraces:function(){return ue.longStackTraces},warnings:function(){return ue.warnings},cancellation:function(){return ue.cancellation},monitoring:function(){return ue.monitoring},propagateFromFunction:function(){return oe},boundValueFunction:function(){return p},checkForgottenReturns:y,setBounds:A,warn:g,deprecated:_,CapturedTrace:D,fireDomEvent:ee,fireGlobalEvent:te}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,r){"use strict";t.exports=function(e){function t(){return this.value}function r(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(r){return r instanceof e&&r.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:r},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(r,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:e},void 0);var t=arguments[1],n=function(){throw t};return this.caught(e,n)},e.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof e&&r.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:r},void 0);var n=arguments[1];n instanceof e&&n.suppressUnhandledRejections();var o=function(){return n};return this.caught(r,o)}}},{}],11:[function(e,t,r){"use strict";t.exports=function(e,t){function r(){return i(this)}function n(e,r){return o(e,r,t,t)}var o=e.reduce,i=e.all;e.prototype.each=function(e){return o(this,e,t,0)._then(r,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return o(this,e,t,t)},e.each=function(e,n){return o(e,n,t,0)._then(r,void 0,void 0,e,void 0)},e.mapSeries=n}},{}],12:[function(e,t,r){"use strict";function n(e,t){function r(n){if(!(this instanceof r))return new r(n);d(this,"message","string"==typeof n?n:t),d(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(r,Error),r}function o(e){if(!(this instanceof o))return new o(e);d(this,"name","OperationalError"),d(this,"message",e),this.cause=e,this.isOperational=!0, +e instanceof Error?(d(this,"message",e.message),d(this,"stack",e.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}var i,s,a=e("./es5"),u=a.freeze,c=e("./util"),l=c.inherits,d=c.notEnumerableProp,f=n("Warning","warning"),p=n("CancellationError","cancellation error"),h=n("TimeoutError","timeout error"),v=n("AggregateError","aggregate error");try{i=TypeError,s=RangeError}catch(e){i=n("TypeError","type error"),s=n("RangeError","range error")}for(var m="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),y=0;y<m.length;++y)"function"==typeof Array.prototype[m[y]]&&(v.prototype[m[y]]=Array.prototype[m[y]]);a.defineProperty(v.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),v.prototype.isOperational=!0;var _=0;v.prototype.toString=function(){var e=Array(4*_+1).join(" "),t="\n"+e+"AggregateError of:\n";_++,e=Array(4*_+1).join(" ");for(var r=0;r<this.length;++r){for(var n=this[r]===this?"[Circular AggregateError]":this[r]+"",o=n.split("\n"),i=0;i<o.length;++i)o[i]=e+o[i];n=o.join("\n"),t+=n+"\n"}return _--,t},l(o,Error);var g=Error.__BluebirdErrorTypes__;g||(g=u({CancellationError:p,TimeoutError:h,OperationalError:o,RejectionError:o,AggregateError:v}),a.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),t.exports={Error:Error,TypeError:i,RangeError:s,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(e,t,r){var n=function(){"use strict";return void 0===this}();if(n)t.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:n,propertyIsWritable:function(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return!(r&&!r.writable&&!r.set)}};else{var o={}.hasOwnProperty,i={}.toString,s={}.constructor.prototype,a=function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t},u=function(e,t){return{value:e[t]}},c=function(e,t,r){return e[t]=r.value,e},l=function(e){return e},d=function(e){try{return Object(e).constructor.prototype}catch(e){return s}},f=function(e){try{return"[object Array]"===i.call(e)}catch(e){return!1}};t.exports={isArray:f,keys:a,names:a,defineProperty:c,getDescriptor:u,freeze:l,getPrototypeOf:d,isES5:n,propertyIsWritable:function(){return!0}}}},{}],14:[function(e,t,r){"use strict";t.exports=function(e,t){var r=e.map;e.prototype.filter=function(e,n){return r(this,e,n,t)},e.filter=function(e,n,o){return r(e,n,o,t)}}},{}],15:[function(e,t,r){"use strict";t.exports=function(t,r,n){function o(e,t,r){this.promise=e,this.type=t,this.handler=r,this.called=!1,this.cancelPromise=null}function i(e){this.finallyHandler=e}function s(e,t){return null!=e.cancelPromise&&(arguments.length>1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function a(){return c.call(this,this.promise._target()._settledValue())}function u(e){if(!s(this,e))return f.e=e,f}function c(e){var o=this.promise,c=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?c.call(o._boundValue()):c.call(o._boundValue(),e);if(l===n)return l;if(void 0!==l){o._setReturnedNonUndefined();var p=r(l,o);if(p instanceof t){if(null!=this.cancelPromise){if(p._isCancelled()){var h=new d("late cancellation observer");return o._attachExtraTrace(h),f.e=h,f}p.isPending()&&p._attachCancellationCallback(new i(this))}return p._then(a,u,void 0,this,void 0)}}}return o.isRejected()?(s(this),f.e=e,f):(s(this),e)}var l=e("./util"),d=t.CancellationError,f=l.errorObj,p=e("./catch_filter")(n);return o.prototype.isFinallyHandler=function(){return 0===this.type},i.prototype._resultCancelled=function(){s(this.finallyHandler)},t.prototype._passThrough=function(e,t,r,n){return"function"!=typeof e?this.then():this._then(r,n,void 0,new o(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,c,c)},t.prototype.tap=function(e){return this._passThrough(e,1,c)},t.prototype.tapCatch=function(e){var r=arguments.length;if(1===r)return this._passThrough(e,1,void 0,c);var n,o=new Array(r-1),i=0;for(n=0;n<r-1;++n){var s=arguments[n];if(!l.isObject(s))return t.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+l.classString(s)));o[i++]=s}o.length=i;var a=arguments[n];return this._passThrough(p(o,a,this),1,void 0,c)},o}},{"./catch_filter":7,"./util":36}],16:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i,s){function a(e,r,n){for(var i=0;i<r.length;++i){n._pushContext();var s=p(r[i])(e);if(n._popContext(),s===f){n._pushContext();var a=t.reject(f.e);return n._popContext(),a}var u=o(s,n);if(u instanceof t)return u}return null}function u(e,r,o,i){if(s.cancellation()){var a=new t(n),u=this._finallyPromise=new t(n);this._promise=a.lastly(function(){return u}),a._captureStackTrace(),a._setOnCancel(this)}else{(this._promise=new t(n))._captureStackTrace()}this._stack=i,this._generatorFunction=e,this._receiver=r,this._generator=void 0,this._yieldHandlers="function"==typeof o?[o].concat(h):h,this._yieldedPromise=null,this._cancellationPhase=!1}var c=e("./errors"),l=c.TypeError,d=e("./util"),f=d.errorObj,p=d.tryCatch,h=[];d.inherits(u,i),u.prototype._isResolved=function(){return null===this._promise},u.prototype._cleanup=function(){this._promise=this._generator=null,s.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},u.prototype._promiseCancelled=function(){if(!this._isResolved()){var e,r=void 0!==this._generator.return;if(r)this._promise._pushContext(),e=p(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var n=new t.CancellationError("generator .return() sentinel");t.coroutine.returnSentinel=n,this._promise._attachExtraTrace(n),this._promise._pushContext(),e=p(this._generator.throw).call(this._generator,n),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(e)}},u.prototype._promiseFulfilled=function(e){this._yieldedPromise=null,this._promise._pushContext();var t=p(this._generator.next).call(this._generator,e);this._promise._popContext(),this._continue(t)},u.prototype._promiseRejected=function(e){this._yieldedPromise=null,this._promise._attachExtraTrace(e),this._promise._pushContext();var t=p(this._generator.throw).call(this._generator,e);this._promise._popContext(),this._continue(t)},u.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof t){var e=this._yieldedPromise;this._yieldedPromise=null,e.cancel()}},u.prototype.promise=function(){return this._promise},u.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},u.prototype._continue=function(e){var r=this._promise;if(e===f)return this._cleanup(),this._cancellationPhase?r.cancel():r._rejectCallback(e.e,!1);var n=e.value;if(!0===e.done)return this._cleanup(),this._cancellationPhase?r.cancel():r._resolveCallback(n);var i=o(n,this._promise);if(!(i instanceof t)&&null===(i=a(i,this._yieldHandlers,this._promise)))return void this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(n))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")));i=i._target();var s=i._bitField;0==(50397184&s)?(this._yieldedPromise=i,i._proxy(this,null)):0!=(33554432&s)?t._async.invoke(this._promiseFulfilled,this,i._value()):0!=(16777216&s)?t._async.invoke(this._promiseRejected,this,i._reason()):this._promiseCancelled()},t.coroutine=function(e,t){if("function"!=typeof e)throw new l("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=Object(t).yieldHandler,n=u,o=(new Error).stack;return function(){var t=e.apply(this,arguments),i=new n(void 0,void 0,r,o),s=i.promise();return i._generator=t,i._promiseFulfilled(void 0),s}},t.coroutine.addYieldHandler=function(e){if("function"!=typeof e)throw new l("expecting a function but got "+d.classString(e));h.push(e)},t.spawn=function(e){if(s.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof e)return r("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=new u(e,this),o=n.promise();return n._run(t.spawn),o}}},{"./errors":12,"./util":36}],17:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i,s){var a=e("./util");a.canEvaluate,a.tryCatch,a.errorObj;t.join=function(){var e,t=arguments.length-1;if(t>0&&"function"==typeof arguments[t]){e=arguments[t];var n}var o=[].slice.call(arguments);e&&o.pop();var n=new r(o).promise();return void 0!==e?n.spread(e):n}}},{"./util":36}],18:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i,s){function a(e,t,r,n){this.constructor$(e),this._promise._captureStackTrace();var o=c();this._callback=null===o?t:l.domainBind(o,t),this._preservedValues=n===i?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],p.invoke(this._asyncInit,this,void 0)}function u(e,r,o,i){if("function"!=typeof r)return n("expecting a function but got "+l.classString(r));var s=0;if(void 0!==o){if("object"!=typeof o||null===o)return t.reject(new TypeError("options argument must be an object but it is "+l.classString(o)));if("number"!=typeof o.concurrency)return t.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(o.concurrency)));s=o.concurrency}return s="number"==typeof s&&isFinite(s)&&s>=1?s:0,new a(e,r,s,i).promise()}var c=t._getDomain,l=e("./util"),d=l.tryCatch,f=l.errorObj,p=t._async;l.inherits(a,r),a.prototype._asyncInit=function(){this._init$(void 0,-2)},a.prototype._init=function(){},a.prototype._promiseFulfilled=function(e,r){var n=this._values,i=this.length(),a=this._preservedValues,u=this._limit;if(r<0){if(r=-1*r-1,n[r]=e,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return n[r]=e,this._queue.push(r),!1;null!==a&&(a[r]=e);var c=this._promise,l=this._callback,p=c._boundValue();c._pushContext();var h=d(l).call(p,e,r,i),v=c._popContext();if(s.checkForgottenReturns(h,v,null!==a?"Promise.filter":"Promise.map",c),h===f)return this._reject(h.e),!0;var m=o(h,this._promise);if(m instanceof t){m=m._target();var y=m._bitField;if(0==(50397184&y))return u>=1&&this._inFlight++,n[r]=m,m._proxy(this,-1*(r+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(m._reason()),!0):(this._cancel(),!0);h=m._value()}n[r]=h}return++this._totalResolved>=i&&(null!==a?this._filter(n,a):this._resolve(n),!0)},a.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,r=this._values;e.length>0&&this._inFlight<t;){if(this._isResolved())return;var n=e.pop();this._promiseFulfilled(r[n],n)}},a.prototype._filter=function(e,t){for(var r=t.length,n=new Array(r),o=0,i=0;i<r;++i)e[i]&&(n[o++]=t[i]);n.length=o,this._resolve(n)},a.prototype.preservedValues=function(){return this._preservedValues},t.prototype.map=function(e,t){return u(this,e,t,null)},t.map=function(e,t,r,n){return u(e,t,r,n)}}},{"./util":36}],19:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i){var s=e("./util"),a=s.tryCatch;t.method=function(e){if("function"!=typeof e)throw new t.TypeError("expecting a function but got "+s.classString(e));return function(){var n=new t(r);n._captureStackTrace(),n._pushContext();var o=a(e).apply(this,arguments),s=n._popContext();return i.checkForgottenReturns(o,s,"Promise.method",n),n._resolveFromSyncValue(o),n}},t.attempt=t.try=function(e){if("function"!=typeof e)return o("expecting a function but got "+s.classString(e));var n=new t(r);n._captureStackTrace(),n._pushContext();var u;if(arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];u=s.isArray(c)?a(e).apply(l,c):a(e).call(l,c)}else u=a(e)();var d=n._popContext();return i.checkForgottenReturns(u,d,"Promise.try",n),n._resolveFromSyncValue(u),n},t.prototype._resolveFromSyncValue=function(e){e===s.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,r){"use strict";function n(e){return e instanceof Error&&l.getPrototypeOf(e)===Error.prototype}function o(e){var t;if(n(e)){t=new c(e),t.name=e.name,t.message=e.message,t.stack=e.stack;for(var r=l.keys(e),o=0;o<r.length;++o){var i=r[o];d.test(i)||(t[i]=e[i])}return t}return s.markAsOriginatingFromRejection(e),e}function i(e,t){return function(r,n){if(null!==e){if(r){var i=o(a(r));e._attachExtraTrace(i),e._reject(i)}else if(t){var s=[].slice.call(arguments,1);e._fulfill(s)}else e._fulfill(n);e=null}}}var s=e("./util"),a=s.maybeWrapAsError,u=e("./errors"),c=u.OperationalError,l=e("./es5"),d=/^(?:name|message|stack|cause)$/;t.exports=i},{"./errors":12,"./es5":13,"./util":36}],21:[function(e,t,r){"use strict";t.exports=function(t){function r(e,t){var r=this;if(!i.isArray(e))return n.call(r,e,t);var o=a(t).apply(r._boundValue(),[null].concat(e));o===u&&s.throwLater(o.e)}function n(e,t){var r=this,n=r._boundValue(),o=void 0===e?a(t).call(n,null):a(t).call(n,null,e);o===u&&s.throwLater(o.e)}function o(e,t){var r=this;if(!e){var n=new Error(e+"");n.cause=e,e=n}var o=a(t).call(r._boundValue(),e);o===u&&s.throwLater(o.e)}var i=e("./util"),s=t._async,a=i.tryCatch,u=i.errorObj;t.prototype.asCallback=t.prototype.nodeify=function(e,t){if("function"==typeof e){var i=n;void 0!==t&&Object(t).spread&&(i=r),this._then(i,o,void 0,this,e)}return this}}},{"./util":36}],22:[function(t,r,n){"use strict";r.exports=function(){function n(){}function o(e,t){if(null==e||e.constructor!==i)throw new g("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof t)throw new g("expecting a function but got "+h.classString(t))}function i(e){e!==E&&o(this,e),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(e),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function s(e){this.promise._resolveCallback(e)}function a(e){this.promise._rejectCallback(e,!1)}function u(e){var t=new i(E);t._fulfillmentHandler0=e,t._rejectionHandler0=e,t._promise0=e,t._receiver0=e}var c,l=function(){return new g("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},d=function(){return new i.PromiseInspection(this._target())},f=function(e){return i.reject(new g(e))},p={},h=t("./util");c=h.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},h.notEnumerableProp(i,"_getDomain",c);var v=t("./es5"),m=t("./async"),y=new m;v.defineProperty(i,"_async",{value:y});var _=t("./errors"),g=i.TypeError=_.TypeError;i.RangeError=_.RangeError;var b=i.CancellationError=_.CancellationError;i.TimeoutError=_.TimeoutError,i.OperationalError=_.OperationalError,i.RejectionError=_.OperationalError,i.AggregateError=_.AggregateError;var E=function(){},w={},S={},k=t("./thenables")(i,E),T=t("./promise_array")(i,E,k,f,n),x=t("./context")(i),R=x.create,I=t("./debuggability")(i,x),C=(I.CapturedTrace,t("./finally")(i,k,S)),j=t("./catch_filter")(S),O=t("./nodeback"),A=h.errorObj,D=h.tryCatch;return i.prototype.toString=function(){return"[object Promise]"},i.prototype.caught=i.prototype.catch=function(e){var t=arguments.length;if(t>1){var r,n=new Array(t-1),o=0;for(r=0;r<t-1;++r){var i=arguments[r];if(!h.isObject(i))return f("Catch statement predicate: expecting an object but got "+h.classString(i));n[o++]=i}return n.length=o,e=arguments[r],this.then(void 0,j(n,e,this))}return this.then(void 0,e)},i.prototype.reflect=function(){return this._then(d,d,void 0,this,void 0)},i.prototype.then=function(e,t){if(I.warnings()&&arguments.length>0&&"function"!=typeof e&&"function"!=typeof t){var r=".then() only accepts functions but was passed: "+h.classString(e);arguments.length>1&&(r+=", "+h.classString(t)),this._warn(r)}return this._then(e,t,void 0,void 0,void 0)},i.prototype.done=function(e,t){this._then(e,t,void 0,void 0,void 0)._setIsFinal()},i.prototype.spread=function(e){return"function"!=typeof e?f("expecting a function but got "+h.classString(e)):this.all()._then(e,void 0,void 0,w,void 0)},i.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new T(this).promise()},i.prototype.error=function(e){return this.caught(h.originatesFromRejection,e)},i.getNewLibraryCopy=r.exports,i.is=function(e){return e instanceof i},i.fromNode=i.fromCallback=function(e){var t=new i(E);t._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=D(e)(O(t,r));return n===A&&t._rejectCallback(n.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},i.all=function(e){return new T(e).promise()},i.cast=function(e){var t=k(e);return t instanceof i||(t=new i(E),t._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(e){var t=new i(E);return t._captureStackTrace(),t._rejectCallback(e,!0),t},i.setScheduler=function(e){if("function"!=typeof e)throw new g("expecting a function but got "+h.classString(e));return y.setScheduler(e)},i.prototype._then=function(e,t,r,n,o){var s=void 0!==o,a=s?o:new i(E),u=this._target(),l=u._bitField;s||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&l)?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var d=c();if(0!=(50397184&l)){var f,p,v=u._settlePromiseCtx;0!=(33554432&l)?(p=u._rejectionHandler0,f=e):0!=(16777216&l)?(p=u._fulfillmentHandler0,f=t,u._unsetRejectionIsUnhandled()):(v=u._settlePromiseLateCancellationObserver,p=new b("late cancellation observer"),u._attachExtraTrace(p),f=t),y.invoke(v,u,{handler:null===d?f:"function"==typeof f&&h.domainBind(d,f),promise:a,receiver:n,value:p})}else u._addCallbacks(e,t,a,n,d);return a},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},i.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},i.prototype._setAsyncGuaranteed=function(){y.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},i.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==p)return void 0===t&&this._isBound()?this._boundValue():t},i.prototype._promiseAt=function(e){return this[4*e-4+2]},i.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},i.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(e){var t=(e._bitField,e._fulfillmentHandler0),r=e._rejectionHandler0,n=e._promise0,o=e._receiverAt(0);void 0===o&&(o=p),this._addCallbacks(t,r,n,o,null)},i.prototype._migrateCallbackAt=function(e,t){var r=e._fulfillmentHandlerAt(t),n=e._rejectionHandlerAt(t),o=e._promiseAt(t),i=e._receiverAt(t);void 0===i&&(i=p),this._addCallbacks(r,n,o,i,null)},i.prototype._addCallbacks=function(e,t,r,n,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=r,this._receiver0=n,"function"==typeof e&&(this._fulfillmentHandler0=null===o?e:h.domainBind(o,e)),"function"==typeof t&&(this._rejectionHandler0=null===o?t:h.domainBind(o,t));else{var s=4*i-4;this[s+2]=r,this[s+3]=n,"function"==typeof e&&(this[s+0]=null===o?e:h.domainBind(o,e)),"function"==typeof t&&(this[s+1]=null===o?t:h.domainBind(o,t))}return this._setLength(i+1),i},i.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},i.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(l(),!1);var r=k(e,this);if(!(r instanceof i))return this._fulfill(e);t&&this._propagateFrom(r,2);var n=r._target();if(n===this)return void this._reject(l());var o=n._bitField;if(0==(50397184&o)){var s=this._length();s>0&&n._migrateCallback0(this);for(var a=1;a<s;++a)n._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(n)}else if(0!=(33554432&o))this._fulfill(n._value());else if(0!=(16777216&o))this._reject(n._reason());else{var u=new b("late cancellation observer");n._attachExtraTrace(u),this._reject(u)}}},i.prototype._rejectCallback=function(e,t,r){var n=h.ensureErrorObject(e),o=n===e;if(!o&&!r&&I.warnings()){var i="a promise was rejected with a non-error: "+h.classString(e);this._warn(i,!0)}this._attachExtraTrace(n,!!t&&o),this._reject(e)},i.prototype._resolveFromExecutor=function(e){if(e!==E){var t=this;this._captureStackTrace(),this._pushContext();var r=!0,n=this._execute(e,function(e){t._resolveCallback(e)},function(e){t._rejectCallback(e,r)});r=!1,this._popContext(),void 0!==n&&t._rejectCallback(n,!0)}},i.prototype._settlePromiseFromHandler=function(e,t,r,n){var o=n._bitField;if(0==(65536&o)){n._pushContext();var i;t===w?r&&"number"==typeof r.length?i=D(e).apply(this._boundValue(),r):(i=A,i.e=new g("cannot .spread() a non-array: "+h.classString(r))):i=D(e).call(t,r);var s=n._popContext();o=n._bitField,0==(65536&o)&&(i===S?n._reject(r):i===A?n._rejectCallback(i.e,!1):(I.checkForgottenReturns(i,s,"",n,this),n._resolveCallback(i)))}},i.prototype._target=function(){for(var e=this;e._isFollowing();)e=e._followee();return e},i.prototype._followee=function(){return this._rejectionHandler0},i.prototype._setFollowee=function(e){this._rejectionHandler0=e},i.prototype._settlePromise=function(e,t,r,o){var s=e instanceof i,a=this._bitField,u=0!=(134217728&a);0!=(65536&a)?(s&&e._invokeInternalOnCancel(),r instanceof C&&r.isFinallyHandler()?(r.cancelPromise=e,D(t).call(r,o)===A&&e._reject(A.e)):t===d?e._fulfill(d.call(r)):r instanceof n?r._promiseCancelled(e):s||e instanceof T?e._cancel():r.cancel()):"function"==typeof t?s?(u&&e._setAsyncGuaranteed(),this._settlePromiseFromHandler(t,r,o,e)):t.call(r,o,e):r instanceof n?r._isResolved()||(0!=(33554432&a)?r._promiseFulfilled(o,e):r._promiseRejected(o,e)):s&&(u&&e._setAsyncGuaranteed(),0!=(33554432&a)?e._fulfill(o):e._reject(o))},i.prototype._settlePromiseLateCancellationObserver=function(e){var t=e.handler,r=e.promise,n=e.receiver,o=e.value;"function"==typeof t?r instanceof i?this._settlePromiseFromHandler(t,n,o,r):t.call(n,o,r):r instanceof i&&r._reject(o)},i.prototype._settlePromiseCtx=function(e){this._settlePromise(e.promise,e.handler,e.receiver,e.value)},i.prototype._settlePromise0=function(e,t,r){var n=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(n,e,o,t)},i.prototype._clearCallbackDataAtIndex=function(e){var t=4*e-4;this[t+2]=this[t+3]=this[t+0]=this[t+1]=void 0},i.prototype._fulfill=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(e===this){var r=l();return this._attachExtraTrace(r),this._reject(r)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():y.settlePromises(this),this._dereferenceTrace())}},i.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return y.fatalError(e,h.isNode);(65535&t)>0?y.settlePromises(this):this._ensurePossibleRejectionHandled()}},i.prototype._fulfillPromises=function(e,t){for(var r=1;r<e;r++){var n=this._fulfillmentHandlerAt(r),o=this._promiseAt(r),i=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(o,n,i,t)}},i.prototype._rejectPromises=function(e,t){for(var r=1;r<e;r++){var n=this._rejectionHandlerAt(r),o=this._promiseAt(r),i=this._receiverAt(r);this._clearCallbackDataAtIndex(r),this._settlePromise(o,n,i,t)}},i.prototype._settlePromises=function(){var e=this._bitField,t=65535&e;if(t>0){if(0!=(16842752&e)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,e),this._rejectPromises(t,r)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,e),this._fulfillPromises(t,n)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},i.defer=i.pending=function(){return I.deprecated("Promise.defer","new Promise"),{promise:new i(E),resolve:s,reject:a}},h.notEnumerableProp(i,"_makeSelfResolutionError",l),t("./method")(i,E,k,f,I),t("./bind")(i,E,k,I),t("./cancel")(i,T,f,I),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,T,k,E,y,c),i.Promise=i,i.version="3.5.3",t("./map.js")(i,T,f,k,E,I),t("./call_get.js")(i),t("./using.js")(i,f,k,R,E,I),t("./timers.js")(i,E,I),t("./generators.js")(i,f,E,k,n,I),t("./nodeify.js")(i),t("./promisify.js")(i,E),t("./props.js")(i,T,k,f),t("./race.js")(i,E,k,f),t("./reduce.js")(i,T,f,k,E,I),t("./settle.js")(i,T,I),t("./some.js")(i,T,f),t("./filter.js")(i,E),t("./each.js")(i,E),t("./any.js")(i),h.toFastProperties(i),h.toFastProperties(i.prototype),u({a:1}),u({b:2}),u({c:3}),u(1),u(function(){}),u(void 0),u(!1),u(new i(E)),I.setBounds(m.firstLineError,h.lastLineError),i}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i){function s(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}function a(e){var n=this._promise=new t(r);e instanceof t&&n._propagateFrom(e,3),n._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var u=e("./util");u.isArray;return u.inherits(a,i),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function e(r,i){var a=n(this._values,this._promise);if(a instanceof t){a=a._target();var c=a._bitField;if(this._values=a,0==(50397184&c))return this._promise._setAsyncGuaranteed(),a._then(e,this._reject,void 0,this,i);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(a._reason()):this._cancel();a=a._value()}if(null===(a=u.asArray(a))){var l=o("expecting an array or an iterable object but got "+u.classString(a)).reason();return void this._promise._rejectCallback(l,!1)}if(0===a.length)return void(-5===i?this._resolveEmptyArray():this._resolve(s(i)));this._iterate(a)},a.prototype._iterate=function(e){var r=this.getActualLength(e.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var o=this._promise,i=!1,s=null,a=0;a<r;++a){var u=n(e[a],o);u instanceof t?(u=u._target(),s=u._bitField):s=null,i?null!==s&&u.suppressUnhandledRejections():null!==s?0==(50397184&s)?(u._proxy(this,a),this._values[a]=u):i=0!=(33554432&s)?this._promiseFulfilled(u._value(),a):0!=(16777216&s)?this._promiseRejected(u._reason(),a):this._promiseCancelled(a):i=this._promiseFulfilled(u,a)}i||o._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(e){this._values=null,this._promise._fulfill(e)},a.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(e){this._values=null,this._promise._rejectCallback(e,!1)},a.prototype._promiseFulfilled=function(e,t){return this._values[t]=e,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var r=0;r<e.length;++r)e[r]instanceof t&&e[r].cancel()}},a.prototype.shouldCopyValues=function(){return!0},a.prototype.getActualLength=function(e){return e},a}},{"./util":36}],24:[function(e,t,r){"use strict";t.exports=function(t,r){function n(e){return!E.test(e)}function o(e){try{return!0===e.__isPromisified__}catch(e){return!1}}function i(e,t,r){var n=p.getDataPropertyOrDefault(e,t+r,g);return!!n&&o(n)}function s(e,t,r){for(var n=0;n<e.length;n+=2){var o=e[n];if(r.test(o))for(var i=o.replace(r,""),s=0;s<e.length;s+=2)if(e[s]===i)throw new _("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",t))}}function a(e,t,r,n){for(var a=p.inheritedDataKeys(e),u=[],c=0;c<a.length;++c){var l=a[c],d=e[l],f=n===w||w(l,d,e);"function"!=typeof d||o(d)||i(e,l,t)||!n(l,d,e,f)||u.push(l,d)}return s(u,t,r),u}function u(e,n,o,i,s,a){function u(){var o=n;n===f&&(o=this);var i=new t(r);i._captureStackTrace();var s="string"==typeof l&&this!==c?this[l]:e,u=h(i,a);try{s.apply(o,v(arguments,u))}catch(e){i._rejectCallback(m(e),!0,!0)}return i._isFateSealed()||i._setAsyncGuaranteed(),i}var c=function(){return this}(),l=e;return"string"==typeof l&&(e=i),p.notEnumerableProp(u,"__isPromisified__",!0),u}function c(e,t,r,n,o){for(var i=new RegExp(S(t)+"$"),s=a(e,t,i,r),u=0,c=s.length;u<c;u+=2){var l=s[u],d=s[u+1],h=l+t;if(n===k)e[h]=k(l,f,l,d,t,o);else{var v=n(d,function(){return k(l,f,l,d,t,o)});p.notEnumerableProp(v,"__isPromisified__",!0),e[h]=v}}return p.toFastProperties(e),e}function l(e,t,r){return k(e,t,void 0,e,null,r)}var d,f={},p=e("./util"),h=e("./nodeback"),v=p.withAppended,m=p.maybeWrapAsError,y=p.canEvaluate,_=e("./errors").TypeError,g={__isPromisified__:!0},b=["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"],E=new RegExp("^(?:"+b.join("|")+")$"),w=function(e){return p.isIdentifier(e)&&"_"!==e.charAt(0)&&"constructor"!==e},S=function(e){return e.replace(/([$])/,"\\$")},k=y?d:u;t.promisify=function(e,t){if("function"!=typeof e)throw new _("expecting a function but got "+p.classString(e));if(o(e))return e;t=Object(t);var r=void 0===t.context?f:t.context,i=!!t.multiArgs,s=l(e,r,i);return p.copyDescriptors(e,s,n),s},t.promisifyAll=function(e,t){if("function"!=typeof e&&"object"!=typeof e)throw new _("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");t=Object(t);var r=!!t.multiArgs,n=t.suffix;"string"!=typeof n&&(n="Async");var o=t.filter;"function"!=typeof o&&(o=w);var i=t.promisifier;if("function"!=typeof i&&(i=k), +!p.isIdentifier(n))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=p.inheritedDataKeys(e),a=0;a<s.length;++a){var u=e[s[a]];"constructor"!==s[a]&&p.isClass(u)&&(c(u.prototype,n,o,i,r),c(u,n,o,i,r))}return c(e,n,o,i,r)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(e,t,r){"use strict";t.exports=function(t,r,n,o){function i(e){var t,r=!1;if(void 0!==a&&e instanceof a)t=d(e),r=!0;else{var n=l.keys(e),o=n.length;t=new Array(2*o);for(var i=0;i<o;++i){var s=n[i];t[i]=e[s],t[i+o]=s}}this.constructor$(t),this._isMap=r,this._init$(void 0,r?-6:-3)}function s(e){var r,s=n(e);return c(s)?(r=s instanceof t?s._then(t.props,void 0,void 0,void 0,void 0):new i(s).promise(),s instanceof t&&r._propagateFrom(s,2),r):o("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}var a,u=e("./util"),c=u.isObject,l=e("./es5");"function"==typeof Map&&(a=Map);var d=function(){function e(e,n){this[t]=e,this[t+r]=n,t++}var t=0,r=0;return function(n){r=n.size,t=0;var o=new Array(2*n.size);return n.forEach(e,o),o}}(),f=function(e){for(var t=new a,r=e.length/2|0,n=0;n<r;++n){var o=e[r+n],i=e[n];t.set(o,i)}return t};u.inherits(i,r),i.prototype._init=function(){},i.prototype._promiseFulfilled=function(e,t){if(this._values[t]=e,++this._totalResolved>=this._length){var r;if(this._isMap)r=f(this._values);else{r={};for(var n=this.length(),o=0,i=this.length();o<i;++o)r[this._values[o+n]]=this._values[o]}return this._resolve(r),!0}return!1},i.prototype.shouldCopyValues=function(){return!1},i.prototype.getActualLength=function(e){return e>>1},t.prototype.props=function(){return s(this)},t.props=function(e){return s(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,r){"use strict";function n(e,t,r,n,o){for(var i=0;i<o;++i)r[i+n]=e[i+t],e[i+t]=void 0}function o(e){this._capacity=e,this._length=0,this._front=0}o.prototype._willBeOverCapacity=function(e){return this._capacity<e},o.prototype._pushOne=function(e){var t=this.length();this._checkCapacity(t+1),this[this._front+t&this._capacity-1]=e,this._length=t+1},o.prototype.push=function(e,t,r){var n=this.length()+3;if(this._willBeOverCapacity(n))return this._pushOne(e),this._pushOne(t),void this._pushOne(r);var o=this._front+n-3;this._checkCapacity(n);var i=this._capacity-1;this[o+0&i]=e,this[o+1&i]=t,this[o+2&i]=r,this._length=n},o.prototype.shift=function(){var e=this._front,t=this[e];return this[e]=void 0,this._front=e+1&this._capacity-1,this._length--,t},o.prototype.length=function(){return this._length},o.prototype._checkCapacity=function(e){this._capacity<e&&this._resizeTo(this._capacity<<1)},o.prototype._resizeTo=function(e){var t=this._capacity;this._capacity=e,n(this,0,this,t,this._front+this._length&t-1)},t.exports=o},{}],27:[function(e,t,r){"use strict";t.exports=function(t,r,n,o){function i(e,i){var u=n(e);if(u instanceof t)return a(u);if(null===(e=s.asArray(e)))return o("expecting an array or an iterable object but got "+s.classString(e));var c=new t(r);void 0!==i&&c._propagateFrom(i,3);for(var l=c._fulfill,d=c._reject,f=0,p=e.length;f<p;++f){var h=e[f];(void 0!==h||f in e)&&t.cast(h)._then(l,d,void 0,c,null)}return c}var s=e("./util"),a=function(e){return e.then(function(t){return i(t,e)})};t.race=function(e){return i(e,void 0)},t.prototype.race=function(){return i(this,void 0)}}},{"./util":36}],28:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i,s){function a(e,r,n,o){this.constructor$(e);var s=f();this._fn=null===s?r:p.domainBind(s,r),void 0!==n&&(n=t.resolve(n),n._attachCancellationCallback(this)),this._initialValue=n,this._currentCancellable=null,this._eachValues=o===i?Array(this._length):0===o?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function u(e,t){this.isFulfilled()?t._resolve(e):t._reject(e)}function c(e,t,r,o){return"function"!=typeof t?n("expecting a function but got "+p.classString(t)):new a(e,t,r,o).promise()}function l(e){this.accum=e,this.array._gotAccum(e);var r=o(this.value,this.array._promise);return r instanceof t?(this.array._currentCancellable=r,r._then(d,void 0,void 0,this,void 0)):d.call(this,r)}function d(e){var r=this.array,n=r._promise,o=h(r._fn);n._pushContext();var i;(i=void 0!==r._eachValues?o.call(n._boundValue(),e,this.index,this.length):o.call(n._boundValue(),this.accum,e,this.index,this.length))instanceof t&&(r._currentCancellable=i);var a=n._popContext();return s.checkForgottenReturns(i,a,void 0!==r._eachValues?"Promise.each":"Promise.reduce",n),i}var f=t._getDomain,p=e("./util"),h=p.tryCatch;p.inherits(a,r),a.prototype._gotAccum=function(e){void 0!==this._eachValues&&null!==this._eachValues&&e!==i&&this._eachValues.push(e)},a.prototype._eachComplete=function(e){return null!==this._eachValues&&this._eachValues.push(e),this._eachValues},a.prototype._init=function(){},a.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},a.prototype.shouldCopyValues=function(){return!1},a.prototype._resolve=function(e){this._promise._resolveCallback(e),this._values=null},a.prototype._resultCancelled=function(e){if(e===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof t&&this._currentCancellable.cancel(),this._initialValue instanceof t&&this._initialValue.cancel())},a.prototype._iterate=function(e){this._values=e;var r,n,o=e.length;if(void 0!==this._initialValue?(r=this._initialValue,n=0):(r=t.resolve(e[0]),n=1),this._currentCancellable=r,!r.isRejected())for(;n<o;++n){var i={accum:null,value:e[n],index:n,length:o,array:this};r=r._then(l,void 0,void 0,i,void 0)}void 0!==this._eachValues&&(r=r._then(this._eachComplete,void 0,void 0,this,void 0)),r._then(u,u,void 0,r,this)},t.prototype.reduce=function(e,t){return c(this,e,t,null)},t.reduce=function(e,t,r,n){return c(e,t,r,n)}}},{"./util":36}],29:[function(t,r,i){"use strict";var s,a=t("./util"),u=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")},c=a.getNativePromise();if(a.isNode&&"undefined"==typeof MutationObserver){var l=n.setImmediate,d=e.nextTick;s=a.isRecentNode?function(e){l.call(n,e)}:function(t){d.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();s=function(e){f.then(e)}}else s="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==o?function(e){o(e)}:"undefined"!=typeof setTimeout?function(e){setTimeout(e,0)}:u:function(){var e=document.createElement("div"),t={attributes:!0},r=!1,n=document.createElement("div");new MutationObserver(function(){e.classList.toggle("foo"),r=!1}).observe(n,t);var o=function(){r||(r=!0,n.classList.toggle("foo"))};return function(r){var n=new MutationObserver(function(){n.disconnect(),r()});n.observe(e,t),o()}}();r.exports=s},{"./util":36}],30:[function(e,t,r){"use strict";t.exports=function(t,r,n){function o(e){this.constructor$(e)}var i=t.PromiseInspection;e("./util").inherits(o,r),o.prototype._promiseResolved=function(e,t){return this._values[e]=t,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(e,t){var r=new i;return r._bitField=33554432,r._settledValueField=e,this._promiseResolved(t,r)},o.prototype._promiseRejected=function(e,t){var r=new i;return r._bitField=16777216,r._settledValueField=e,this._promiseResolved(t,r)},t.settle=function(e){return n.deprecated(".settle()",".reflect()"),new o(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,r){"use strict";t.exports=function(t,r,n){function o(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function i(e,t){if((0|t)!==t||t<0)return n("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var r=new o(e),i=r.promise();return r.setHowMany(t),r.init(),i}var s=e("./util"),a=e("./errors").RangeError,u=e("./errors").AggregateError,c=s.isArray,l={};s.inherits(o,r),o.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var e=c(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},o.prototype.init=function(){this._initialized=!0,this._init()},o.prototype.setUnwrap=function(){this._unwrap=!0},o.prototype.howMany=function(){return this._howMany},o.prototype.setHowMany=function(e){this._howMany=e},o.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},o.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},o.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},o.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new u,t=this.length();t<this._values.length;++t)this._values[t]!==l&&e.push(this._values[t]);return e.length>0?this._reject(e):this._cancel(),!0}return!1},o.prototype._fulfilled=function(){return this._totalResolved},o.prototype._rejected=function(){return this._values.length-this.length()},o.prototype._addRejected=function(e){this._values.push(e)},o.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},o.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},o.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new a(t)},o.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return i(e,t)},t.prototype.some=function(e){return i(this,e)},t._SomePromiseArray=o}},{"./errors":12,"./util":36}],32:[function(e,t,r){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var r=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},s=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},a=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return s.call(this._target())},e.prototype.isRejected=function(){return i.call(this._target())},e.prototype.isFulfilled=function(){return o.call(this._target())},e.prototype.isResolved=function(){return a.call(this._target())},e.prototype.value=function(){return r.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),n.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,r){"use strict";t.exports=function(t,r){function n(e,n){if(l(e)){if(e instanceof t)return e;var o=i(e);if(o===c){n&&n._pushContext();var u=t.reject(o.e);return n&&n._popContext(),u}if("function"==typeof o){if(s(e)){var u=new t(r);return e._then(u._fulfill,u._reject,void 0,u,null),u}return a(e,o,n)}}return e}function o(e){return e.then}function i(e){try{return o(e)}catch(e){return c.e=e,c}}function s(e){try{return d.call(e,"_promise0")}catch(e){return!1}}function a(e,n,o){function i(e){a&&(a._resolveCallback(e),a=null)}function s(e){a&&(a._rejectCallback(e,d,!0),a=null)}var a=new t(r),l=a;o&&o._pushContext(),a._captureStackTrace(),o&&o._popContext();var d=!0,f=u.tryCatch(n).call(e,i,s);return d=!1,a&&f===c&&(a._rejectCallback(f.e,!0,!0),a=null),l}var u=e("./util"),c=u.errorObj,l=u.isObject,d={}.hasOwnProperty;return n}},{"./util":36}],34:[function(e,t,r){"use strict";t.exports=function(t,r,n){function o(e){this.handle=e}function i(e){return clearTimeout(this.handle),e}function s(e){throw clearTimeout(this.handle),e}var a=e("./util"),u=t.TimeoutError;o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var c=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,i){var s,a;return void 0!==i?(s=t.resolve(i)._then(c,null,null,e,void 0),n.cancellation()&&i instanceof t&&s._setOnCancel(i)):(s=new t(r),a=setTimeout(function(){s._fulfill()},+e),n.cancellation()&&s._setOnCancel(new o(a)),s._captureStackTrace()),s._setAsyncGuaranteed(),s};t.prototype.delay=function(e){return l(e,this)};var d=function(e,t,r){var n;n="string"!=typeof t?t instanceof Error?t:new u("operation timed out"):new u(t),a.markAsOriginatingFromRejection(n),e._attachExtraTrace(n),e._reject(n),null!=r&&r.cancel()};t.prototype.timeout=function(e,t){e=+e;var r,a,u=new o(setTimeout(function(){r.isPending()&&d(r,t,a)},e));return n.cancellation()?(a=this.then(),r=a._then(i,s,void 0,u,void 0),r._setOnCancel(u)):r=this._then(i,s,void 0,u,void 0),r}}},{"./util":36}],35:[function(e,t,r){"use strict";t.exports=function(t,r,n,o,i,s){function a(e){setTimeout(function(){throw e},0)}function u(e){var t=n(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}function c(e,r){function o(){if(s>=c)return l._fulfill();var i=u(e[s++]);if(i instanceof t&&i._isDisposable()){try{i=n(i._getDisposer().tryDispose(r),e.promise)}catch(e){return a(e)}if(i instanceof t)return i._then(o,a,null,null,null)}o()}var s=0,c=e.length,l=new t(i);return o(),l}function l(e,t,r){this._data=e,this._promise=t,this._context=r}function d(e,t,r){this.constructor$(e,t,r)}function f(e){return l.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function p(e){this.length=e,this.promise=null,this[e-1]=null}var h=e("./util"),v=e("./errors").TypeError,m=e("./util").inherits,y=h.errorObj,_=h.tryCatch,g={};l.prototype.data=function(){return this._data},l.prototype.promise=function(){return this._promise},l.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():g},l.prototype.tryDispose=function(e){var t=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=t!==g?this.doDispose(t,e):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},l.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},m(d,l),d.prototype.doDispose=function(e,t){return this.data().call(e,e,t)},p.prototype._resultCancelled=function(){for(var e=this.length,r=0;r<e;++r){var n=this[r];n instanceof t&&n.cancel()}},t.using=function(){var e=arguments.length;if(e<2)return r("you must pass at least 2 arguments to Promise.using");var o=arguments[e-1];if("function"!=typeof o)return r("expecting a function but got "+h.classString(o));var i,a=!0;2===e&&Array.isArray(arguments[0])?(i=arguments[0],e=i.length,a=!1):(i=arguments,e--);for(var u=new p(e),d=0;d<e;++d){var v=i[d];if(l.isDisposer(v)){var m=v;v=v.promise(),v._setDisposable(m)}else{var g=n(v);g instanceof t&&(v=g._then(f,null,null,{resources:u,index:d},void 0))}u[d]=v}for(var b=new Array(u.length),d=0;d<b.length;++d)b[d]=t.resolve(u[d]).reflect();var E=t.all(b).then(function(e){for(var t=0;t<e.length;++t){var r=e[t];if(r.isRejected())return y.e=r.error(),y;if(!r.isFulfilled())return void E.cancel();e[t]=r.value()}w._pushContext(),o=_(o);var n=a?o.apply(void 0,e):o(e),i=w._popContext();return s.checkForgottenReturns(n,i,"Promise.using",w),n}),w=E.lastly(function(){var e=new t.PromiseInspection(E);return c(u,e)});return u.promise=w,w._setOnCancel(u),w},t.prototype._setDisposable=function(e){this._bitField=131072|this._bitField,this._disposer=e},t.prototype._isDisposable=function(){return(131072&this._bitField)>0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new d(e,this,o());throw new v}}},{"./errors":12,"./util":36}],36:[function(t,r,o){"use strict";function i(){try{var e=O;return O=null,e.apply(this,arguments)}catch(e){return j.e=e,j}}function s(e){return O=e,i}function a(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function u(e){return"function"==typeof e||"object"==typeof e&&null!==e}function c(e){return a(e)?new Error(_(e)):e}function l(e,t){var r,n=e.length,o=new Array(n+1);for(r=0;r<n;++r)o[r]=e[r];return o[r]=t,o}function d(e,t,r){if(!I.isES5)return{}.hasOwnProperty.call(e,t)?e[t]:void 0;var n=Object.getOwnPropertyDescriptor(e,t);return null!=n?null==n.get&&null==n.set?n.value:r:void 0}function f(e,t,r){if(a(e))return e;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return I.defineProperty(e,t,n),e}function p(e){throw e}function h(e){try{if("function"==typeof e){var t=I.names(e.prototype),r=I.isES5&&t.length>1,n=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=P.test(e+"")&&I.names(e).length>0;if(r||n||o)return!0}return!1}catch(e){return!1}}function v(e){function t(){}function r(){return typeof n.foo}t.prototype=e;var n=new t;return r(),r(),e}function m(e){return L.test(e)}function y(e,t,r){for(var n=new Array(e),o=0;o<e;++o)n[o]=t+o+r;return n}function _(e){try{return e+""}catch(e){return"[no string representation]"}}function g(e){return e instanceof Error||null!==e&&"object"==typeof e&&"string"==typeof e.message&&"string"==typeof e.name}function b(e){try{f(e,"isOperational",!0)}catch(e){}}function E(e){return null!=e&&(e instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===e.isOperational)}function w(e){return g(e)&&I.propertyIsWritable(e,"stack")}function S(e){return{}.toString.call(e)}function k(e,t,r){for(var n=I.names(e),o=0;o<n.length;++o){var i=n[o];if(r(i))try{I.defineProperty(t,i,I.getDescriptor(e,i))}catch(e){}}}function T(t){return B?e.env[t]:void 0}function x(){if("function"==typeof Promise)try{var e=new Promise(function(){});if("[object Promise]"==={}.toString.call(e))return Promise}catch(e){}}function R(e,t){return e.bind(t)}var I=t("./es5"),C="undefined"==typeof navigator,j={e:{}},O,A="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null,D=function(e,t){function r(){this.constructor=e,this.constructor$=t;for(var r in t.prototype)n.call(t.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=t.prototype[r])}var n={}.hasOwnProperty;return r.prototype=t.prototype,e.prototype=new r,e.prototype},M=function(){var e=[Array.prototype,Object.prototype,Function.prototype],t=function(t){for(var r=0;r<e.length;++r)if(e[r]===t)return!0;return!1};if(I.isES5){var r=Object.getOwnPropertyNames;return function(e){for(var n=[],o=Object.create(null);null!=e&&!t(e);){var i;try{i=r(e)}catch(e){return n}for(var s=0;s<i.length;++s){var a=i[s];if(!o[a]){o[a]=!0;var u=Object.getOwnPropertyDescriptor(e,a);null!=u&&null==u.get&&null==u.set&&n.push(a)}}e=I.getPrototypeOf(e)}return n}}var n={}.hasOwnProperty;return function(r){if(t(r))return[];var o=[];e:for(var i in r)if(n.call(r,i))o.push(i);else{for(var s=0;s<e.length;++s)if(n.call(e[s],i))continue e;o.push(i)}return o}}(),P=/this\s*\.\s*\S+\s*=/,L=/^[a-z$_][a-z$_0-9]*$/i,U=function(){return"stack"in new Error?function(e){return w(e)?e:new Error(_(e))}:function(e){if(w(e))return e;try{throw new Error(_(e))}catch(e){return e}}}(),N=function(e){return I.isArray(e)?e:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var F="function"==typeof Array.from?function(e){return Array.from(e)}:function(e){for(var t,r=[],n=e[Symbol.iterator]();!(t=n.next()).done;)r.push(t.value);return r};N=function(e){return I.isArray(e)?e:null!=e&&"function"==typeof e[Symbol.iterator]?F(e):null}}var q=void 0!==e&&"[object process]"===S(e).toLowerCase(),B=void 0!==e&&void 0!==e.env,K={isClass:h,isIdentifier:m,inheritedDataKeys:M,getDataPropertyOrDefault:d,thrower:p,isArray:I.isArray,asArray:N,notEnumerableProp:f,isPrimitive:a,isObject:u,isError:g,canEvaluate:C,errorObj:j,tryCatch:s,inherits:D,withAppended:l,maybeWrapAsError:c,toFastProperties:v,filledRange:y,toString:_,canAttachTrace:w,ensureErrorObject:U,originatesFromRejection:E,markAsOriginatingFromRejection:b,classString:S,copyDescriptors:k,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:q,hasEnvVariables:B,env:T,global:A,getNativePromise:x,domainBind:R};K.isRecentNode=K.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),K.isNode&&K.toFastProperties(e);try{throw new Error}catch(e){K.lastLineError=e}r.exports=K},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").setImmediate)},{_process:237,timers:249}],90:[function(e,t,r){!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof r?t.exports=n():e.returnExports=n()}(this,function(){function e(o,i){if("function"!=typeof i)throw new Error("Bad callback given: "+i);if(!o)throw new Error("No options given");var a=o.onResponse;if(o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o)),o.onResponse=a,o.verbose&&(e.log=n()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var u=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],c=0;c<u.length;c++)if(o[u[c]])throw new Error("options."+u[c]+" is not supported");if(o.callback=i,o.method=o.method||"GET",o.headers=o.headers||{},o.body=o.body||null,o.timeout=o.timeout||e.DEFAULT_TIMEOUT,o.headers.host)throw new Error("Options.headers.host is not supported");o.json&&(o.headers.accept=o.headers.accept||"application/json","GET"!==o.method&&(o.headers["content-type"]="application/json"),"boolean"!=typeof o.json?o.body=JSON.stringify(o.json):"string"!=typeof o.body&&(o.body=JSON.stringify(o.body)));var l=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t.join("&")};if(o.qs){var d="string"==typeof o.qs?o.qs:l(o.qs);-1!==o.uri.indexOf("?")?o.uri=o.uri+"&"+d:o.uri=o.uri+"?"+d}if(o.form){if("string"==typeof o.form)throw"form name unsupported";if("POST"===o.method){var f=(o.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(o.headers["content-type"]=f,f){case"application/x-www-form-urlencoded":o.body=l(o.form).replace(/%20/g,"+");break;case"multipart/form-data":var p=function(e){var t={};t.boundry="-------------------------------"+Math.floor(1e9*Math.random());var r=[];for(var n in e)e.hasOwnProperty(n)&&r.push("--"+t.boundry+'\nContent-Disposition: form-data; name="'+n+'"\n\n'+e[n]+"\n");return r.push("--"+t.boundry+"--"),t.body=r.join(""),t.length=t.body.length,t.type="multipart/form-data; boundary="+t.boundry,t}(o.form);o.body=p.body,o.headers["content-type"]=p.type;break;default:throw new Error("unsupported encoding:"+f)}}}return o.onResponse=o.onResponse||r,!0===o.onResponse&&(o.onResponse=i,o.callback=r),!o.headers.authorization&&o.auth&&(o.headers.authorization="Basic "+s(o.auth.username+":"+o.auth.password)),t(o)}function t(t){function r(){d=!0;var r=new Error("ETIMEDOUT");return r.code="ETIMEDOUT",r.duration=t.timeout,e.log.error("Timeout",{id:l._id,milliseconds:t.timeout}),t.callback(r,l)}function n(r){if(d)return e.log.debug("Ignoring timed out state change",{state:l.readyState,id:l.id});if(e.log.debug("State change",{state:l.readyState,id:l.id,timed_out:d}),l.readyState===a.OPENED){e.log.debug("Request started",{id:l.id});for(var n in t.headers)l.setRequestHeader(n,t.headers[n])}else l.readyState===a.HEADERS_RECEIVED?o():l.readyState===a.LOADING?(o(),s()):l.readyState===a.DONE&&(o(),s(),c())}function o(){if(!v.response){if(v.response=!0,e.log.debug("Got response",{id:l.id,status:l.status}),clearTimeout(l.timeoutTimer),l.statusCode=l.status,f&&0==l.statusCode){var r=new Error("CORS request rejected: "+t.uri);return r.cors="rejected",v.loading=!0,v.end=!0,t.callback(r,l)}t.onResponse(null,l)}}function s(){v.loading||(v.loading=!0,e.log.debug("Response body loading",{id:l.id}))}function c(){if(!v.end){if(v.end=!0,e.log.debug("Request done",{id:l.id}),l.body=l.responseText,t.json)try{l.body=JSON.parse(l.responseText)}catch(e){return t.callback(e,l)}t.callback(null,l,l.body)}}var l=new a,d=!1,f=i(t.uri),p="withCredentials"in l;if(u+=1,l.seq_id=u,l.id=u+": "+t.method+" "+t.uri,l._id=l.id,f&&!p){var h=new Error("Browser does not support cross-origin request: "+t.uri);return h.cors="unsupported",t.callback(h,l)}l.timeoutTimer=setTimeout(r,t.timeout);var v={response:!1,loading:!1,end:!1};return l.onreadystatechange=n,l.open(t.method,t.uri,!0),f&&(l.withCredentials=!!t.withCredentials),l.send(t.body),l}function r(){}function n(){var e,t,n={},i=["trace","debug","info","warn","error"];for(t=0;t<i.length;t++)e=i[t],n[e]=r,"undefined"!=typeof console&&console&&console[e]&&(n[e]=o(console,e));return n}function o(e,t){function r(r,n){return"object"==typeof n&&(r+=" "+JSON.stringify(n)),e[t].call(e,r)}return r}function i(e){var t,r=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{t=location.href}catch(e){t=document.createElement("a"),t.href="",t=t.href}var n=r.exec(t.toLowerCase())||[],o=r.exec(e.toLowerCase());return!(!o||o[1]==n[1]&&o[2]==n[2]&&(o[3]||("http:"===o[1]?80:443))==(n[3]||("http:"===n[1]?80:443)))}function s(e){var t,r,n,o,i,s,a,u,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l=0,d=0,f="",p=[];if(!e)return e;do{t=e.charCodeAt(l++),r=e.charCodeAt(l++),n=e.charCodeAt(l++),u=t<<16|r<<8|n,o=u>>18&63,i=u>>12&63,s=u>>6&63,a=63&u,p[d++]=c.charAt(o)+c.charAt(i)+c.charAt(s)+c.charAt(a)}while(l<e.length);switch(f=p.join(""),e.length%3){case 1:f=f.slice(0,-2)+"==";break;case 2:f=f.slice(0,-1)+"="}return f}var a=XMLHttpRequest;if(!a)throw new Error("missing XMLHttpRequest");e.log={trace:r,debug:r,info:r,warn:r,error:r};var u=0;return e.withCredentials=!1,e.DEFAULT_TIMEOUT=18e4,e.defaults=function(t,r){var n=function(e){return function(r,n){r="string"==typeof r?{uri:r}:JSON.parse(JSON.stringify(r));for(var o in t)void 0===r[o]&&(r[o]=t[o]);return e(r,n)}},o=n(e);return o.get=n(e.get),o.post=n(e.post),o.put=n(e.put),o.head=n(e.head),o},["get","put","post","head"].forEach(function(t){var r=t.toUpperCase();e[t.toLowerCase()]=function(t){"string"==typeof t?t={method:r,uri:t}:(t=JSON.parse(JSON.stringify(t)),t.method=r);var n=[t].concat(Array.prototype.slice.apply(arguments,[1]));return e.apply(this,n)}}),e.couch=function(t,n){function o(e,t,r){if(e)return n(e,t,r);if((t.statusCode<200||t.statusCode>299)&&r.error){e=new Error("CouchDB error: "+(r.error.reason||r.error.error));for(var o in r)e[o]=r[o];return n(e,t,r)}return n(e,t,r)}return"string"==typeof t&&(t={uri:t}),t.json=!0,t.body&&(t.json=t.body),delete t.body,n=n||r,e(t,o)},e})},{}],91:[function(e,t,r){(function(e){!function(n){function o(e){throw new RangeError(D[e])}function i(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function s(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(A,"."),n+i(e.split("."),t).join(".")}function a(e){for(var t,r,n=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t>=55296&&t<=56319&&o<i?(r=e.charCodeAt(o++),56320==(64512&r)?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),o--)):n.push(t);return n}function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,t+=L(e>>>10&1023|55296),e=56320|1023&e),t+=L(e)}).join("")}function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:w}function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function d(e,t,r){var n=0;for(e=r?P(e/x):e>>1,e+=P(e/t);e>M*k>>1;n+=w)e=P(e/M);return P(n+(M+1)*e/(e+T))}function f(e){var t,r,n,i,s,a,l,f,p,h,v=[],m=e.length,y=0,_=I,g=R;for(r=e.lastIndexOf(C),r<0&&(r=0),n=0;n<r;++n)e.charCodeAt(n)>=128&&o("not-basic"),v.push(e.charCodeAt(n));for(i=r>0?r+1:0;i<m;){for(s=y,a=1,l=w;i>=m&&o("invalid-input"),f=c(e.charCodeAt(i++)),(f>=w||f>P((E-y)/a))&&o("overflow"),y+=f*a,p=l<=g?S:l>=g+k?k:l-g,!(f<p);l+=w)h=w-p,a>P(E/h)&&o("overflow"),a*=h;t=v.length+1,g=d(y-s,t,0==s),P(y/t)>E-_&&o("overflow"),_+=P(y/t),y%=t,v.splice(y++,0,_)}return u(v)}function p(e){var t,r,n,i,s,u,c,f,p,h,v,m,y,_,g,b=[];for(e=a(e),m=e.length,t=I,r=0,s=R,u=0;u<m;++u)(v=e[u])<128&&b.push(L(v));for(n=i=b.length,i&&b.push(C);n<m;){for(c=E,u=0;u<m;++u)(v=e[u])>=t&&v<c&&(c=v);for(y=n+1,c-t>P((E-r)/y)&&o("overflow"),r+=(c-t)*y,t=c,u=0;u<m;++u)if(v=e[u],v<t&&++r>E&&o("overflow"),v==t){for(f=r,p=w;h=p<=s?S:p>=s+k?k:p-s,!(f<h);p+=w)g=f-h,_=w-h,b.push(L(l(h+g%_,0))),f=P(g/_);b.push(L(l(f,0))),s=d(r,y,n==i),r=0,++n}++r,++t}return b.join("")}function h(e){return s(e,function(e){return j.test(e)?f(e.slice(4).toLowerCase()):e})}function v(e){return s(e,function(e){return O.test(e)?"xn--"+p(e):e})}var m="object"==typeof r&&r&&!r.nodeType&&r,y="object"==typeof t&&t&&!t.nodeType&&t,_="object"==typeof e&&e;_.global!==_&&_.window!==_&&_.self!==_||(n=_);var g,b,E=2147483647,w=36,S=1,k=26,T=38,x=700,R=72,I=128,C="-",j=/^xn--/,O=/[^\x20-\x7E]/,A=/[\x2E\u3002\uFF0E\uFF61]/g,D={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=w-S,P=Math.floor,L=String.fromCharCode;if(g={version:"1.4.1",ucs2:{decode:a,encode:u},decode:f,encode:p,toASCII:v,toUnicode:h},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return g});else if(m&&y)if(t.exports==m)y.exports=g;else for(b in g)g.hasOwnProperty(b)&&(m[b]=g[b]);else n.punycode=g}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],92:[function(e,t,r){var n=e("base-x");t.exports=n("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},{"base-x":87}],93:[function(e,t,r){"use strict";function n(e){if(e>Q)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return i(e,t,r)}function i(e,t,r){if("string"==typeof e)return c(e,t);if(ArrayBuffer.isView(e))return l(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return o.from(n,t,r);var i=f(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return o.from(e[Symbol.toPrimitive]("string"),t,r) +;throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function a(e,t,r){return s(e),e<=0?n(e):void 0!==t?"string"==typeof r?n(e).fill(t,r):n(e).fill(t):n(e)}function u(e){return s(e),n(e<0?0:0|p(e))}function c(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!o.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|v(e,t),i=n(r),s=i.write(e,t);return s!==r&&(i=i.slice(0,s)),i}function l(e){for(var t=e.length<0?0:0|p(e.length),r=n(t),o=0;o<t;o+=1)r[o]=255&e[o];return r}function d(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),n.__proto__=o.prototype,n}function f(e){if(o.isBuffer(e)){var t=0|p(e.length),r=n(t);return 0===r.length?r:(e.copy(r,0,0,t),r)}return void 0!==e.length?"number"!=typeof e.length||W(e.length)?n(0):l(e):"Buffer"===e.type&&Array.isArray(e.data)?l(e.data):void 0}function p(e){if(e>=Q)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Q.toString(16)+" bytes");return 0|e}function h(e){return+e!=e&&(e=0),o.alloc(+e)}function v(e,t){if(o.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(e).length;default:if(i)return n?-1:q(e).length;t=(""+t).toLowerCase(),i=!0}}function m(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return R(this,t,r);case"ascii":return C(this,t,r);case"latin1":case"binary":return j(this,t,r);case"base64":return x(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function y(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function _(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,W(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:g(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,n,o){function i(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,r/=2}var c;if(o){var l=-1;for(c=r;c<a;c++)if(i(e,c)===i(t,-1===l?0:c-l)){if(-1===l&&(l=c),c-l+1===u)return l*s}else-1!==l&&(c-=c-l),l=-1}else for(r+u>a&&(r=a-u),c=r;c>=0;c--){for(var d=!0,f=0;f<u;f++)if(i(e,c+f)!==i(t,f)){d=!1;break}if(d)return c}return-1}function b(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(W(a))return s;e[r+s]=a}return s}function E(e,t,r,n){return $(q(t,e.length-r),e,r,n)}function w(e,t,r,n){return $(B(t),e,r,n)}function S(e,t,r,n){return w(e,t,r,n)}function k(e,t,r,n){return $(G(t),e,r,n)}function T(e,t,r,n){return $(K(t,e.length-r),e,r,n)}function x(e,t,r){return 0===t&&r===e.length?H.fromByteArray(e):H.fromByteArray(e.slice(t,r))}function R(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i=e[o],s=null,a=i>239?4:i>223?3:i>191?2:1;if(o+a<=r){var u,c,l,d;switch(a){case 1:i<128&&(s=i);break;case 2:u=e[o+1],128==(192&u)&&(d=(31&i)<<6|63&u)>127&&(s=d);break;case 3:u=e[o+1],c=e[o+2],128==(192&u)&&128==(192&c)&&(d=(15&i)<<12|(63&u)<<6|63&c)>2047&&(d<55296||d>57343)&&(s=d);break;case 4:u=e[o+1],c=e[o+2],l=e[o+3],128==(192&u)&&128==(192&c)&&128==(192&l)&&(d=(15&i)<<18|(63&u)<<12|(63&c)<<6|63&l)>65535&&d<1114112&&(s=d)}}null===s?(s=65533,a=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|1023&s),n.push(s),o+=a}return I(n)}function I(e){var t=e.length;if(t<=J)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=J));return r}function C(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function j(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function O(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=F(e[i]);return o}function A(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function D(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,r,n,i,s){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<s)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function P(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,o){return t=+t,r>>>=0,o||P(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),z.write(e,t,r,n,23,4),r+4}function U(e,t,r,n,o){return t=+t,r>>>=0,o||P(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),z.write(e,t,r,n,52,8),r+8}function N(e){if(e=e.split("=")[0],e=e.trim().replace(Y,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function F(e){return e<16?"0"+e.toString(16):e.toString(16)}function q(e,t){t=t||1/0;for(var r,n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function B(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}function K(e,t){for(var r,n,o,i=[],s=0;s<e.length&&!((t-=2)<0);++s)r=e.charCodeAt(s),n=r>>8,o=r%256,i.push(o),i.push(n);return i}function G(e){return H.toByteArray(N(e))}function $(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function W(e){return e!==e}var H=e("base64-js"),z=e("ieee754");r.Buffer=o,r.SlowBuffer=h,r.INSPECT_MAX_BYTES=50;var Q=2147483647;r.kMaxLength=Q,o.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,r){return i(e,t,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,r){return a(e,t,r)},o.allocUnsafe=function(e){return u(e)},o.allocUnsafeSlow=function(e){return u(e)},o.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==o.prototype},o.compare=function(e,t){if(V(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,s=Math.min(r,n);i<s;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=o.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var s=e[r];if(V(s,Uint8Array)&&(s=o.from(s)),!o.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,i),i+=s.length}return n},o.byteLength=v,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)y(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?R(this,0,e):m.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},o.prototype.compare=function(e,t,r,n,i){if(V(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),!o.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var s=i-n,a=r-t,u=Math.min(s,a),c=this.slice(n,i),l=e.slice(t,r),d=0;d<u;++d)if(c[d]!==l[d]){s=c[d],a=l[d];break}return s<a?-1:a<s?1:0},o.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return _(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return _(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return b(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":return w(this,e,t,r);case"latin1":case"binary":return S(this,e,t,r);case"base64":return k(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var J=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return n.__proto__=o.prototype,n},o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},o.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},o.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return o*=128,n>=o&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||D(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*t)),i},o.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||D(e,4,this.length),z.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),z.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),z.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),z.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},o.prototype.writeUIntBE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);M(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&0===a&&0!==this[t+i-1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);M(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return U(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return U(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(!o.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var s=i-1;s>=0;--s)e[s+t]=this[s+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var s;if("number"==typeof e)for(s=t;s<r;++s)this[s]=e;else{var a=o.isBuffer(e)?e:o.from(e,n),u=a.length;if(0===u)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<r-t;++s)this[s+t]=a[s%u]}return this};var Y=/[^+\/0-9A-Za-z-_]/g},{"base64-js":88,ieee754:235}],94:[function(e,t,r){"use strict";function n(e){if(!e||"object"!=typeof e)throw new TypeError("argument obj is required");var t=e.parameters,r=e.type;if(!r||!p.test(r))throw new TypeError("invalid type");var n=r;if(t&&"object"==typeof t)for(var o,i=Object.keys(t).sort(),a=0;a<i.length;a++){if(o=i[a],!l.test(o))throw new TypeError("invalid parameter name");n+="; "+o+"="+s(t[o])}return n}function o(e){if(!e)throw new TypeError("argument string is required");var t="object"==typeof e?i(e):e;if("string"!=typeof t)throw new TypeError("argument string is required to be a string");var r=t.indexOf(";"),n=-1!==r?t.substr(0,r).trim():t.trim();if(!p.test(n))throw new TypeError("invalid media type");var o=new a(n.toLowerCase());if(-1!==r){var s,c,l;for(u.lastIndex=r;c=u.exec(t);){if(c.index!==r)throw new TypeError("invalid parameter format");r+=c[0].length,s=c[1].toLowerCase(),l=c[2],'"'===l[0]&&(l=l.substr(1,l.length-2).replace(d,"$1")),o.parameters[s]=l}if(r!==t.length)throw new TypeError("invalid parameter format")}return o}function i(e){var t;if("function"==typeof e.getHeader?t=e.getHeader("content-type"):"object"==typeof e.headers&&(t=e.headers&&e.headers["content-type"]),"string"!=typeof t)throw new TypeError("content-type header is missing from object");return t}function s(e){var t=String(e);if(l.test(t))return t;if(t.length>0&&!c.test(t))throw new TypeError("invalid parameter value");return'"'+t.replace(f,"\\$1")+'"'}function a(e){this.parameters=Object.create(null),this.type=e}var u=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,c=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,l=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,d=/\\([\u000b\u0020-\u00ff])/g,f=/([\\"])/g,p=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;r.format=n,r.parse=o},{}],95:[function(e,t,r){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":204,"../modules/es6.string.iterator":222,"../modules/web.dom.iterable":233}],96:[function(e,t,r){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":205,"../modules/es6.string.iterator":222,"../modules/web.dom.iterable":233}],97:[function(e,t,r){var n=e("../../modules/_core"),o=n.JSON||(n.JSON={stringify:JSON.stringify});t.exports=function(e){return o.stringify.apply(o,arguments)}},{"../../modules/_core":131}],98:[function(e,t,r){e("../../modules/es6.number.is-finite"),t.exports=e("../../modules/_core").Number.isFinite},{"../../modules/_core":131,"../../modules/es6.number.is-finite":207}],99:[function(e,t,r){e("../../modules/es6.number.is-integer"),t.exports=e("../../modules/_core").Number.isInteger},{"../../modules/_core":131,"../../modules/es6.number.is-integer":208}],100:[function(e,t,r){e("../../modules/es6.object.assign"),t.exports=e("../../modules/_core").Object.assign},{"../../modules/_core":131,"../../modules/es6.object.assign":209}],101:[function(e,t,r){e("../../modules/es6.object.create");var n=e("../../modules/_core").Object;t.exports=function(e,t){return n.create(e,t)}},{"../../modules/_core":131,"../../modules/es6.object.create":210}],102:[function(e,t,r){e("../../modules/es6.object.define-property");var n=e("../../modules/_core").Object;t.exports=function(e,t,r){return n.defineProperty(e,t,r)}},{"../../modules/_core":131,"../../modules/es6.object.define-property":211}],103:[function(e,t,r){e("../../modules/es7.object.entries"),t.exports=e("../../modules/_core").Object.entries},{"../../modules/_core":131,"../../modules/es7.object.entries":224}],104:[function(e,t,r){e("../../modules/es6.object.freeze"),t.exports=e("../../modules/_core").Object.freeze},{"../../modules/_core":131,"../../modules/es6.object.freeze":212}],105:[function(e,t,r){e("../../modules/es6.object.get-prototype-of"),t.exports=e("../../modules/_core").Object.getPrototypeOf},{"../../modules/_core":131,"../../modules/es6.object.get-prototype-of":213}],106:[function(e,t,r){e("../../modules/es6.object.keys"),t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":131,"../../modules/es6.object.keys":214}],107:[function(e,t,r){e("../../modules/es6.object.set-prototype-of"),t.exports=e("../../modules/_core").Object.setPrototypeOf},{"../../modules/_core":131,"../../modules/es6.object.set-prototype-of":215}],108:[function(e,t,r){e("../../modules/es7.object.values"),t.exports=e("../../modules/_core").Object.values},{"../../modules/_core":131,"../../modules/es7.object.values":225}],109:[function(e,t,r){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),e("../modules/es7.promise.finally"),e("../modules/es7.promise.try"),t.exports=e("../modules/_core").Promise},{"../modules/_core":131,"../modules/es6.object.to-string":216,"../modules/es6.promise":217,"../modules/es6.string.iterator":222,"../modules/es7.promise.finally":226,"../modules/es7.promise.try":227,"../modules/web.dom.iterable":233}],110:[function(e,t,r){e("../../modules/es6.reflect.construct"),t.exports=e("../../modules/_core").Reflect.construct},{"../../modules/_core":131,"../../modules/es6.reflect.construct":218}],111:[function(e,t,r){e("../../modules/es6.reflect.get-prototype-of"),t.exports=e("../../modules/_core").Reflect.getPrototypeOf},{"../../modules/_core":131,"../../modules/es6.reflect.get-prototype-of":219}],112:[function(e,t,r){e("../../modules/es6.reflect.set-prototype-of"),t.exports=e("../../modules/_core").Reflect.setPrototypeOf},{"../../modules/_core":131,"../../modules/es6.reflect.set-prototype-of":220}],113:[function(e,t,r){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.set"),e("../modules/es7.set.to-json"),e("../modules/es7.set.of"),e("../modules/es7.set.from"),t.exports=e("../modules/_core").Set},{"../modules/_core":131,"../modules/es6.object.to-string":216,"../modules/es6.set":221,"../modules/es6.string.iterator":222,"../modules/es7.set.from":228,"../modules/es7.set.of":229,"../modules/es7.set.to-json":230,"../modules/web.dom.iterable":233}],114:[function(e,t,r){e("../../modules/es6.symbol"),e("../../modules/es6.object.to-string"),e("../../modules/es7.symbol.async-iterator"),e("../../modules/es7.symbol.observable"),t.exports=e("../../modules/_core").Symbol},{"../../modules/_core":131,"../../modules/es6.object.to-string":216,"../../modules/es6.symbol":223,"../../modules/es7.symbol.async-iterator":231,"../../modules/es7.symbol.observable":232}],115:[function(e,t,r){e("../../modules/es6.string.iterator"),e("../../modules/web.dom.iterable"),t.exports=e("../../modules/_wks-ext").f("iterator")},{"../../modules/_wks-ext":201,"../../modules/es6.string.iterator":222,"../../modules/web.dom.iterable":233}],116:[function(e,t,r){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],117:[function(e,t,r){t.exports=function(){}},{}],118:[function(e,t,r){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],119:[function(e,t,r){var n=e("./_is-object");t.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":151}],120:[function(e,t,r){var n=e("./_for-of");t.exports=function(e,t){var r=[];return n(e,!1,r.push,r,t),r}},{"./_for-of":140}],121:[function(e,t,r){var n=e("./_to-iobject"),o=e("./_to-length"),i=e("./_to-absolute-index");t.exports=function(e){return function(t,r,s){var a,u=n(t),c=o(u.length),l=i(s,c);if(e&&r!=r){for(;c>l;)if((a=u[l++])!=a)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===r)return e||l||0;return!e&&-1}}},{"./_to-absolute-index":191,"./_to-iobject":193,"./_to-length":194}],122:[function(e,t,r){var n=e("./_ctx"),o=e("./_iobject"),i=e("./_to-object"),s=e("./_to-length"),a=e("./_array-species-create");t.exports=function(e,t){var r=1==e,u=2==e,c=3==e,l=4==e,d=6==e,f=5==e||d,p=t||a;return function(t,a,h){for(var v,m,y=i(t),_=o(y),g=n(a,h,3),b=s(_.length),E=0,w=r?p(t,b):u?p(t,0):void 0;b>E;E++)if((f||E in _)&&(v=_[E],m=g(v,E,y),e))if(r)w[E]=m;else if(m)switch(e){case 3:return!0;case 5:return v;case 6:return E;case 2:w.push(v)}else if(l)return!1;return d?-1:c||l?l:w}}},{"./_array-species-create":124,"./_ctx":132,"./_iobject":147,"./_to-length":194,"./_to-object":195}],123:[function(e,t,r){var n=e("./_is-object"),o=e("./_is-array"),i=e("./_wks")("species");t.exports=function(e){var t;return o(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!o(t.prototype)||(t=void 0),n(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},{"./_is-array":149,"./_is-object":151,"./_wks":202}],124:[function(e,t,r){var n=e("./_array-species-constructor");t.exports=function(e,t){return new(n(e))(t)}},{"./_array-species-constructor":123}],125:[function(e,t,r){"use strict";var n=e("./_a-function"),o=e("./_is-object"),i=e("./_invoke"),s=[].slice,a={},u=function(e,t,r){if(!(t in a)){for(var n=[],o=0;o<t;o++)n[o]="a["+o+"]";a[t]=Function("F,a","return new F("+n.join(",")+")")}return a[t](e,r)};t.exports=Function.bind||function(e){var t=n(this),r=s.call(arguments,1),a=function(){var n=r.concat(s.call(arguments));return this instanceof a?u(t,n.length,n):i(t,n,e)};return o(t.prototype)&&(a.prototype=t.prototype),a}},{"./_a-function":116,"./_invoke":146,"./_is-object":151}],126:[function(e,t,r){var n=e("./_cof"),o=e("./_wks")("toStringTag"),i="Arguments"==n(function(){return arguments}()),s=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=s(t=Object(e),o))?r:i?n(t):"Object"==(a=n(t))&&"function"==typeof t.callee?"Arguments":a}},{"./_cof":127,"./_wks":202}],127:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],128:[function(e,t,r){"use strict";var n=e("./_object-dp").f,o=e("./_object-create"),i=e("./_redefine-all"),s=e("./_ctx"),a=e("./_an-instance"),u=e("./_for-of"),c=e("./_iter-define"),l=e("./_iter-step"),d=e("./_set-species"),f=e("./_descriptors"),p=e("./_meta").fastKey,h=e("./_validate-collection"),v=f?"_s":"size",m=function(e,t){var r,n=p(t);if("F"!==n)return e._i[n];for(r=e._f;r;r=r.n)if(r.k==t)return r};t.exports={getConstructor:function(e,t,r,c){var l=e(function(e,n){a(e,l,t,"_i"),e._t=t,e._i=o(null),e._f=void 0,e._l=void 0,e[v]=0,void 0!=n&&u(n,r,e[c],e)});return i(l.prototype,{clear:function(){for(var e=h(this,t),r=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete r[n.i];e._f=e._l=void 0,e[v]=0},delete:function(e){var r=h(this,t),n=m(r,e);if(n){var o=n.n,i=n.p;delete r._i[n.i],n.r=!0,i&&(i.n=o),o&&(o.p=i),r._f==n&&(r._f=o),r._l==n&&(r._l=i),r[v]--}return!!n},forEach:function(e){h(this,t);for(var r,n=s(e,arguments.length>1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(n(r.v,r.k,this);r&&r.r;)r=r.p},has:function(e){return!!m(h(this,t),e)}}),f&&n(l.prototype,"size",{get:function(){return h(this,t)[v]}}),l},def:function(e,t,r){var n,o,i=m(e,t);return i?i.v=r:(e._l=i={i:o=p(t,!0),k:t,v:r,p:n=e._l,n:void 0,r:!1},e._f||(e._f=i),n&&(n.n=i),e[v]++,"F"!==o&&(e._i[o]=i)),e},getEntry:m,setStrong:function(e,t,r){c(e,t,function(e,r){this._t=h(e,t),this._k=r,this._l=void 0},function(){for(var e=this,t=e._k,r=e._l;r&&r.r;)r=r.p;return e._t&&(e._l=r=r?r.n:e._t._f)?"keys"==t?l(0,r.k):"values"==t?l(0,r.v):l(0,[r.k,r.v]):(e._t=void 0,l(1))},r?"entries":"values",!r,!0),d(t)}}},{"./_an-instance":118,"./_ctx":132,"./_descriptors":134,"./_for-of":140,"./_iter-define":154,"./_iter-step":156,"./_meta":159,"./_object-create":163,"./_object-dp":164,"./_redefine-all":179,"./_set-species":184,"./_validate-collection":199}],129:[function(e,t,r){var n=e("./_classof"),o=e("./_array-from-iterable");t.exports=function(e){return function(){if(n(this)!=e)throw TypeError(e+"#toJSON isn't generic");return o(this)}}},{"./_array-from-iterable":120,"./_classof":126}],130:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_export"),i=e("./_meta"),s=e("./_fails"),a=e("./_hide"),u=e("./_redefine-all"),c=e("./_for-of"),l=e("./_an-instance"),d=e("./_is-object"),f=e("./_set-to-string-tag"),p=e("./_object-dp").f,h=e("./_array-methods")(0),v=e("./_descriptors");t.exports=function(e,t,r,m,y,_){var g=n[e],b=g,E=y?"set":"add",w=b&&b.prototype,S={};return v&&"function"==typeof b&&(_||w.forEach&&!s(function(){(new b).entries().next()}))?(b=t(function(t,r){l(t,b,e,"_c"),t._c=new g,void 0!=r&&c(r,y,t[E],t)}), +h("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in w&&(!_||"clear"!=e)&&a(b.prototype,e,function(r,n){if(l(this,b,e),!t&&_&&!d(r))return"get"==e&&void 0;var o=this._c[e](0===r?0:r,n);return t?this:o})}),_||p(b.prototype,"size",{get:function(){return this._c.size}})):(b=m.getConstructor(t,e,y,E),u(b.prototype,r),i.NEED=!0),f(b,e),S[e]=b,o(o.G+o.W+o.F,S),_||m.setStrong(b,e,y),b}},{"./_an-instance":118,"./_array-methods":122,"./_descriptors":134,"./_export":138,"./_fails":139,"./_for-of":140,"./_global":141,"./_hide":143,"./_is-object":151,"./_meta":159,"./_object-dp":164,"./_redefine-all":179,"./_set-to-string-tag":185}],131:[function(e,t,r){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},{}],132:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":116}],133:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],134:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":139}],135:[function(e,t,r){var n=e("./_is-object"),o=e("./_global").document,i=n(o)&&n(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":141,"./_is-object":151}],136:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],137:[function(e,t,r){var n=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=n(e),r=o.f;if(r)for(var s,a=r(e),u=i.f,c=0;a.length>c;)u.call(e,s=a[c++])&&t.push(s);return t}},{"./_object-gops":169,"./_object-keys":172,"./_object-pie":173}],138:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_ctx"),s=e("./_hide"),a=e("./_has"),u=function(e,t,r){var c,l,d,f=e&u.F,p=e&u.G,h=e&u.S,v=e&u.P,m=e&u.B,y=e&u.W,_=p?o:o[t]||(o[t]={}),g=_.prototype,b=p?n:h?n[t]:(n[t]||{}).prototype;p&&(r=t);for(c in r)(l=!f&&b&&void 0!==b[c])&&a(_,c)||(d=l?b[c]:r[c],_[c]=p&&"function"!=typeof b[c]?r[c]:m&&l?i(d,n):y&&b[c]==d?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):v&&"function"==typeof d?i(Function.call,d):d,v&&((_.virtual||(_.virtual={}))[c]=d,e&u.R&&g&&!g[c]&&s(g,c,d)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":131,"./_ctx":132,"./_global":141,"./_has":142,"./_hide":143}],139:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],140:[function(e,t,r){var n=e("./_ctx"),o=e("./_iter-call"),i=e("./_is-array-iter"),s=e("./_an-object"),a=e("./_to-length"),u=e("./core.get-iterator-method"),c={},l={},r=t.exports=function(e,t,r,d,f){var p,h,v,m,y=f?function(){return e}:u(e),_=n(r,d,t?2:1),g=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(p=a(e.length);p>g;g++)if((m=t?_(s(h=e[g])[0],h[1]):_(e[g]))===c||m===l)return m}else for(v=y.call(e);!(h=v.next()).done;)if((m=o(v,_,h.value,t))===c||m===l)return m};r.BREAK=c,r.RETURN=l},{"./_an-object":119,"./_ctx":132,"./_is-array-iter":148,"./_iter-call":152,"./_to-length":194,"./core.get-iterator-method":203}],141:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],142:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],143:[function(e,t,r){var n=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":134,"./_object-dp":164,"./_property-desc":178}],144:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":141}],145:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":134,"./_dom-create":135,"./_fails":139}],146:[function(e,t,r){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],147:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":127}],148:[function(e,t,r){var n=e("./_iterators"),o=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||i[o]===e)}},{"./_iterators":157,"./_wks":202}],149:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":127}],150:[function(e,t,r){var n=e("./_is-object"),o=Math.floor;t.exports=function(e){return!n(e)&&isFinite(e)&&o(e)===e}},{"./_is-object":151}],151:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],152:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},{"./_an-object":119}],153:[function(e,t,r){"use strict";var n=e("./_object-create"),o=e("./_property-desc"),i=e("./_set-to-string-tag"),s={};e("./_hide")(s,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(s,{next:o(1,r)}),i(e,t+" Iterator")}},{"./_hide":143,"./_object-create":163,"./_property-desc":178,"./_set-to-string-tag":185,"./_wks":202}],154:[function(e,t,r){"use strict";var n=e("./_library"),o=e("./_export"),i=e("./_redefine"),s=e("./_hide"),a=e("./_iterators"),u=e("./_iter-create"),c=e("./_set-to-string-tag"),l=e("./_object-gpo"),d=e("./_wks")("iterator"),f=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(e,t,r,h,v,m,y){u(r,t,h);var _,g,b,E=function(e){if(!f&&e in T)return T[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},w=t+" Iterator",S="values"==v,k=!1,T=e.prototype,x=T[d]||T["@@iterator"]||v&&T[v],R=x||E(v),I=v?S?E("entries"):R:void 0,C="Array"==t?T.entries||x:x;if(C&&(b=l(C.call(new e)))!==Object.prototype&&b.next&&(c(b,w,!0),n||"function"==typeof b[d]||s(b,d,p)),S&&x&&"values"!==x.name&&(k=!0,R=function(){return x.call(this)}),n&&!y||!f&&!k&&T[d]||s(T,d,R),a[t]=R,a[w]=p,v)if(_={values:S?R:E("values"),keys:m?R:E("keys"),entries:I},y)for(g in _)g in T||i(T,g,_[g]);else o(o.P+o.F*(f||k),t,_);return _}},{"./_export":138,"./_hide":143,"./_iter-create":153,"./_iterators":157,"./_library":158,"./_object-gpo":170,"./_redefine":180,"./_set-to-string-tag":185,"./_wks":202}],155:[function(e,t,r){var n=e("./_wks")("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i=[7],s=i[n]();s.next=function(){return{done:r=!0}},i[n]=function(){return s},e(i)}catch(e){}return r}},{"./_wks":202}],156:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],157:[function(e,t,r){t.exports={}},{}],158:[function(e,t,r){t.exports=!0},{}],159:[function(e,t,r){var n=e("./_uid")("meta"),o=e("./_is-object"),i=e("./_has"),s=e("./_object-dp").f,a=0,u=Object.isExtensible||function(){return!0},c=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),l=function(e){s(e,n,{value:{i:"O"+ ++a,w:{}}})},d=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!u(e))return"F";if(!t)return"E";l(e)}return e[n].i},f=function(e,t){if(!i(e,n)){if(!u(e))return!0;if(!t)return!1;l(e)}return e[n].w},p=function(e){return c&&h.NEED&&u(e)&&!i(e,n)&&l(e),e},h=t.exports={KEY:n,NEED:!1,fastKey:d,getWeak:f,onFreeze:p}},{"./_fails":139,"./_has":142,"./_is-object":151,"./_object-dp":164,"./_uid":197}],160:[function(e,t,r){var n=e("./_global"),o=e("./_task").set,i=n.MutationObserver||n.WebKitMutationObserver,s=n.process,a=n.Promise,u="process"==e("./_cof")(s);t.exports=function(){var e,t,r,c=function(){var n,o;for(u&&(n=s.domain)&&n.exit();e;){o=e.fn,e=e.next;try{o()}catch(n){throw e?r():t=void 0,n}}t=void 0,n&&n.enter()};if(u)r=function(){s.nextTick(c)};else if(!i||n.navigator&&n.navigator.standalone)if(a&&a.resolve){var l=a.resolve(void 0);r=function(){l.then(c)}}else r=function(){o.call(n,c)};else{var d=!0,f=document.createTextNode("");new i(c).observe(f,{characterData:!0}),r=function(){f.data=d=!d}}return function(n){var o={fn:n,next:void 0};t&&(t.next=o),e||(e=o,r()),t=o}}},{"./_cof":127,"./_global":141,"./_task":190}],161:[function(e,t,r){"use strict";function n(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n}),this.resolve=o(t),this.reject=o(r)}var o=e("./_a-function");t.exports.f=function(e){return new n(e)}},{"./_a-function":116}],162:[function(e,t,r){"use strict";var n=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie"),s=e("./_to-object"),a=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n})?function(e,t){for(var r=s(e),u=arguments.length,c=1,l=o.f,d=i.f;u>c;)for(var f,p=a(arguments[c++]),h=l?n(p).concat(l(p)):n(p),v=h.length,m=0;v>m;)d.call(p,f=h[m++])&&(r[f]=p[f]);return r}:u},{"./_fails":139,"./_iobject":147,"./_object-gops":169,"./_object-keys":172,"./_object-pie":173,"./_to-object":195}],163:[function(e,t,r){var n=e("./_an-object"),o=e("./_object-dps"),i=e("./_enum-bug-keys"),s=e("./_shared-key")("IE_PROTO"),a=function(){},u=function(){var t,r=e("./_dom-create")("iframe"),n=i.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;n--;)delete u.prototype[i[n]];return u()};t.exports=Object.create||function(e,t){var r;return null!==e?(a.prototype=n(e),r=new a,a.prototype=null,r[s]=e):r=u(),void 0===t?r:o(r,t)}},{"./_an-object":119,"./_dom-create":135,"./_enum-bug-keys":136,"./_html":144,"./_object-dps":165,"./_shared-key":186}],164:[function(e,t,r){var n=e("./_an-object"),o=e("./_ie8-dom-define"),i=e("./_to-primitive"),s=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":119,"./_descriptors":134,"./_ie8-dom-define":145,"./_to-primitive":196}],165:[function(e,t,r){var n=e("./_object-dp"),o=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){o(e);for(var r,s=i(t),a=s.length,u=0;a>u;)n.f(e,r=s[u++],t[r]);return e}},{"./_an-object":119,"./_descriptors":134,"./_object-dp":164,"./_object-keys":172}],166:[function(e,t,r){var n=e("./_object-pie"),o=e("./_property-desc"),i=e("./_to-iobject"),s=e("./_to-primitive"),a=e("./_has"),u=e("./_ie8-dom-define"),c=Object.getOwnPropertyDescriptor;r.f=e("./_descriptors")?c:function(e,t){if(e=i(e),t=s(t,!0),u)try{return c(e,t)}catch(e){}if(a(e,t))return o(!n.f.call(e,t),e[t])}},{"./_descriptors":134,"./_has":142,"./_ie8-dom-define":145,"./_object-pie":173,"./_property-desc":178,"./_to-iobject":193,"./_to-primitive":196}],167:[function(e,t,r){var n=e("./_to-iobject"),o=e("./_object-gopn").f,i={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return o(e)}catch(e){return s.slice()}};t.exports.f=function(e){return s&&"[object Window]"==i.call(e)?a(e):o(n(e))}},{"./_object-gopn":168,"./_to-iobject":193}],168:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},{"./_enum-bug-keys":136,"./_object-keys-internal":171}],169:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],170:[function(e,t,r){var n=e("./_has"),o=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},{"./_has":142,"./_shared-key":186,"./_to-object":195}],171:[function(e,t,r){var n=e("./_has"),o=e("./_to-iobject"),i=e("./_array-includes")(!1),s=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r,a=o(e),u=0,c=[];for(r in a)r!=s&&n(a,r)&&c.push(r);for(;t.length>u;)n(a,r=t[u++])&&(~i(c,r)||c.push(r));return c}},{"./_array-includes":121,"./_has":142,"./_shared-key":186,"./_to-iobject":193}],172:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return n(e,o)}},{"./_enum-bug-keys":136,"./_object-keys-internal":171}],173:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],174:[function(e,t,r){var n=e("./_export"),o=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],s={};s[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",s)}},{"./_core":131,"./_export":138,"./_fails":139}],175:[function(e,t,r){var n=e("./_object-keys"),o=e("./_to-iobject"),i=e("./_object-pie").f;t.exports=function(e){return function(t){for(var r,s=o(t),a=n(s),u=a.length,c=0,l=[];u>c;)i.call(s,r=a[c++])&&l.push(e?[r,s[r]]:s[r]);return l}}},{"./_object-keys":172,"./_object-pie":173,"./_to-iobject":193}],176:[function(e,t,r){t.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},{}],177:[function(e,t,r){var n=e("./_an-object"),o=e("./_is-object"),i=e("./_new-promise-capability");t.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},{"./_an-object":119,"./_is-object":151,"./_new-promise-capability":161}],178:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],179:[function(e,t,r){var n=e("./_hide");t.exports=function(e,t,r){for(var o in t)r&&e[o]?e[o]=t[o]:n(e,o,t[o]);return e}},{"./_hide":143}],180:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":143}],181:[function(e,t,r){"use strict";var n=e("./_export"),o=e("./_a-function"),i=e("./_ctx"),s=e("./_for-of");t.exports=function(e){n(n.S,e,{from:function(e){var t,r,n,a,u=arguments[1];return o(this),t=void 0!==u,t&&o(u),void 0==e?new this:(r=[],t?(n=0,a=i(u,arguments[2],2),s(e,!1,function(e){r.push(a(e,n++))})):s(e,!1,r.push,r),new this(r))}})}},{"./_a-function":116,"./_ctx":132,"./_export":138,"./_for-of":140}],182:[function(e,t,r){"use strict";var n=e("./_export");t.exports=function(e){n(n.S,e,{of:function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},{"./_export":138}],183:[function(e,t,r){var n=e("./_is-object"),o=e("./_an-object"),i=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,n){try{n=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),n(t,[]),r=!(t instanceof Array)}catch(e){r=!0}return function(e,t){return i(e,t),r?e.__proto__=t:n(e,t),e}}({},!1):void 0),check:i}},{"./_an-object":119,"./_ctx":132,"./_is-object":151,"./_object-gopd":166}],184:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_core"),i=e("./_object-dp"),s=e("./_descriptors"),a=e("./_wks")("species");t.exports=function(e){var t="function"==typeof o[e]?o[e]:n[e];s&&t&&!t[a]&&i.f(t,a,{configurable:!0,get:function(){return this}})}},{"./_core":131,"./_descriptors":134,"./_global":141,"./_object-dp":164,"./_wks":202}],185:[function(e,t,r){var n=e("./_object-dp").f,o=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},{"./_has":142,"./_object-dp":164,"./_wks":202}],186:[function(e,t,r){var n=e("./_shared")("keys"),o=e("./_uid");t.exports=function(e){return n[e]||(n[e]=o(e))}},{"./_shared":187,"./_uid":197}],187:[function(e,t,r){var n=e("./_core"),o=e("./_global"),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:e("./_library")?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},{"./_core":131,"./_global":141,"./_library":158}],188:[function(e,t,r){var n=e("./_an-object"),o=e("./_a-function"),i=e("./_wks")("species");t.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||void 0==(r=n(s)[i])?t:o(r)}},{"./_a-function":116,"./_an-object":119,"./_wks":202}],189:[function(e,t,r){var n=e("./_to-integer"),o=e("./_defined");t.exports=function(e){return function(t,r){var i,s,a=String(o(t)),u=n(r),c=a.length;return u<0||u>=c?e?"":void 0:(i=a.charCodeAt(u),i<55296||i>56319||u+1===c||(s=a.charCodeAt(u+1))<56320||s>57343?e?a.charAt(u):i:e?a.slice(u,u+2):s-56320+(i-55296<<10)+65536)}}},{"./_defined":133,"./_to-integer":192}],190:[function(e,t,r){var n,o,i,s=e("./_ctx"),a=e("./_invoke"),u=e("./_html"),c=e("./_dom-create"),l=e("./_global"),d=l.process,f=l.setImmediate,p=l.clearImmediate,h=l.MessageChannel,v=l.Dispatch,m=0,y={},_=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},g=function(e){_.call(e.data)};f&&p||(f=function(e){for(var t=[],r=1;arguments.length>r;)t.push(arguments[r++]);return y[++m]=function(){a("function"==typeof e?e:Function(e),t)},n(m),m},p=function(e){delete y[e]},"process"==e("./_cof")(d)?n=function(e){d.nextTick(s(_,e,1))}:v&&v.now?n=function(e){v.now(s(_,e,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=g,n=s(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(n=function(e){l.postMessage(e+"","*")},l.addEventListener("message",g,!1)):n="onreadystatechange"in c("script")?function(e){u.appendChild(c("script")).onreadystatechange=function(){u.removeChild(this),_.call(e)}}:function(e){setTimeout(s(_,e,1),0)}),t.exports={set:f,clear:p}},{"./_cof":127,"./_ctx":132,"./_dom-create":135,"./_global":141,"./_html":144,"./_invoke":146}],191:[function(e,t,r){var n=e("./_to-integer"),o=Math.max,i=Math.min;t.exports=function(e,t){return e=n(e),e<0?o(e+t,0):i(e,t)}},{"./_to-integer":192}],192:[function(e,t,r){var n=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},{}],193:[function(e,t,r){var n=e("./_iobject"),o=e("./_defined");t.exports=function(e){return n(o(e))}},{"./_defined":133,"./_iobject":147}],194:[function(e,t,r){var n=e("./_to-integer"),o=Math.min;t.exports=function(e){return e>0?o(n(e),9007199254740991):0}},{"./_to-integer":192}],195:[function(e,t,r){var n=e("./_defined");t.exports=function(e){return Object(n(e))}},{"./_defined":133}],196:[function(e,t,r){var n=e("./_is-object");t.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":151}],197:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],198:[function(e,t,r){var n=e("./_global"),o=n.navigator;t.exports=o&&o.userAgent||""},{"./_global":141}],199:[function(e,t,r){var n=e("./_is-object");t.exports=function(e,t){if(!n(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},{"./_is-object":151}],200:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_library"),s=e("./_wks-ext"),a=e("./_object-dp").f;t.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},{"./_core":131,"./_global":141,"./_library":158,"./_object-dp":164,"./_wks-ext":201}],201:[function(e,t,r){r.f=e("./_wks")},{"./_wks":202}],202:[function(e,t,r){var n=e("./_shared")("wks"),o=e("./_uid"),i=e("./_global").Symbol,s="function"==typeof i;(t.exports=function(e){return n[e]||(n[e]=s&&i[e]||(s?i:o)("Symbol."+e))}).store=n},{"./_global":141,"./_shared":187,"./_uid":197}],203:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[n(e)]}},{"./_classof":126,"./_core":131,"./_iterators":157,"./_wks":202}],204:[function(e,t,r){var n=e("./_an-object"),o=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return n(t.call(e))}},{"./_an-object":119,"./_core":131,"./core.get-iterator-method":203}],205:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(n(t))}},{"./_classof":126,"./_core":131,"./_iterators":157,"./_wks":202}],206:[function(e,t,r){"use strict";var n=e("./_add-to-unscopables"),o=e("./_iter-step"),i=e("./_iterators"),s=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=s(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,r):"values"==t?o(0,e[r]):o(0,[r,e[r]])},"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},{"./_add-to-unscopables":117,"./_iter-define":154,"./_iter-step":156,"./_iterators":157,"./_to-iobject":193}],207:[function(e,t,r){var n=e("./_export"),o=e("./_global").isFinite;n(n.S,"Number",{isFinite:function(e){return"number"==typeof e&&o(e)}})},{"./_export":138,"./_global":141}],208:[function(e,t,r){var n=e("./_export");n(n.S,"Number",{isInteger:e("./_is-integer")})},{"./_export":138,"./_is-integer":150}],209:[function(e,t,r){var n=e("./_export");n(n.S+n.F,"Object",{assign:e("./_object-assign")})},{"./_export":138,"./_object-assign":162}],210:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{create:e("./_object-create")})},{"./_export":138,"./_object-create":163}],211:[function(e,t,r){var n=e("./_export");n(n.S+n.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":134,"./_export":138,"./_object-dp":164}],212:[function(e,t,r){var n=e("./_is-object"),o=e("./_meta").onFreeze;e("./_object-sap")("freeze",function(e){return function(t){return e&&n(t)?e(o(t)):t}})},{"./_is-object":151,"./_meta":159,"./_object-sap":174}],213:[function(e,t,r){var n=e("./_to-object"),o=e("./_object-gpo");e("./_object-sap")("getPrototypeOf",function(){return function(e){return o(n(e))}})},{"./_object-gpo":170,"./_object-sap":174,"./_to-object":195}],214:[function(e,t,r){var n=e("./_to-object"),o=e("./_object-keys");e("./_object-sap")("keys",function(){return function(e){return o(n(e))}})},{"./_object-keys":172,"./_object-sap":174,"./_to-object":195}],215:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":138,"./_set-proto":183}],216:[function(e,t,r){},{}],217:[function(e,t,r){"use strict";var n,o,i,s,a=e("./_library"),u=e("./_global"),c=e("./_ctx"),l=e("./_classof"),d=e("./_export"),f=e("./_is-object"),p=e("./_a-function"),h=e("./_an-instance"),v=e("./_for-of"),m=e("./_species-constructor"),y=e("./_task").set,_=e("./_microtask")(),g=e("./_new-promise-capability"),b=e("./_perform"),E=e("./_user-agent"),w=e("./_promise-resolve"),S=u.TypeError,k=u.process,T=k&&k.versions,x=T&&T.v8||"",R=u.Promise,I="process"==l(k),C=function(){},j=o=g.f,O=!!function(){try{var t=R.resolve(1),r=(t.constructor={})[e("./_wks")("species")]=function(e){e(C,C)};return(I||"function"==typeof PromiseRejectionEvent)&&t.then(C)instanceof r&&0!==x.indexOf("6.6")&&-1===E.indexOf("Chrome/66")}catch(e){}}(),A=function(e){var t;return!(!f(e)||"function"!=typeof(t=e.then))&&t},D=function(e,t){if(!e._n){e._n=!0;var r=e._c;_(function(){for(var n=e._v,o=1==e._s,i=0;r.length>i;)!function(t){var r,i,s,a=o?t.ok:t.fail,u=t.resolve,c=t.reject,l=t.domain;try{a?(o||(2==e._h&&L(e),e._h=1),!0===a?r=n:(l&&l.enter(),r=a(n),l&&(l.exit(),s=!0)),r===t.promise?c(S("Promise-chain cycle")):(i=A(r))?i.call(r,u,c):u(r)):c(n)}catch(e){l&&!s&&l.exit(),c(e)}}(r[i++]);e._c=[],e._n=!1,t&&!e._h&&M(e)})}},M=function(e){y.call(u,function(){var t,r,n,o=e._v,i=P(e);if(i&&(t=b(function(){I?k.emit("unhandledRejection",o,e):(r=u.onunhandledrejection)?r({promise:e,reason:o}):(n=u.console)&&n.error&&n.error("Unhandled promise rejection",o)}),e._h=I||P(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},P=function(e){return 1!==e._h&&0===(e._a||e._c).length},L=function(e){y.call(u,function(){var t;I?k.emit("rejectionHandled",e):(t=u.onrejectionhandled)&&t({promise:e,reason:e._v})})},U=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),D(t,!0))},N=function(e){var t,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw S("Promise can't be resolved itself");(t=A(e))?_(function(){var n={_w:r,_d:!1};try{t.call(e,c(N,n,1),c(U,n,1))}catch(e){U.call(n,e)}}):(r._v=e,r._s=1,D(r,!1))}catch(e){U.call({_w:r,_d:!1},e)}}};O||(R=function(e){h(this,R,"Promise","_h"),p(e),n.call(this);try{e(c(N,this,1),c(U,this,1))}catch(e){U.call(this,e)}},n=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},n.prototype=e("./_redefine-all")(R.prototype,{then:function(e,t){var r=j(m(this,R));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=I?k.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&D(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new n;this.promise=e,this.resolve=c(N,e,1),this.reject=c(U,e,1)},g.f=j=function(e){return e===R||e===s?new i(e):o(e)}),d(d.G+d.W+d.F*!O,{Promise:R}),e("./_set-to-string-tag")(R,"Promise"),e("./_set-species")("Promise"),s=e("./_core").Promise,d(d.S+d.F*!O,"Promise",{reject:function(e){var t=j(this);return(0,t.reject)(e),t.promise}}),d(d.S+d.F*(a||!O),"Promise",{resolve:function(e){return w(a&&this===s?R:this,e)}}),d(d.S+d.F*!(O&&e("./_iter-detect")(function(e){R.all(e).catch(C)})),"Promise",{all:function(e){var t=this,r=j(t),n=r.resolve,o=r.reject,i=b(function(){var r=[],i=0,s=1;v(e,!1,function(e){var a=i++,u=!1;r.push(void 0),s++,t.resolve(e).then(function(e){u||(u=!0,r[a]=e,--s||n(r))},o)}),--s||n(r)});return i.e&&o(i.v),r.promise},race:function(e){var t=this,r=j(t),n=r.reject,o=b(function(){v(e,!1,function(e){t.resolve(e).then(r.resolve,n)})});return o.e&&n(o.v),r.promise}})},{"./_a-function":116,"./_an-instance":118,"./_classof":126,"./_core":131,"./_ctx":132,"./_export":138,"./_for-of":140,"./_global":141,"./_is-object":151,"./_iter-detect":155,"./_library":158,"./_microtask":160,"./_new-promise-capability":161,"./_perform":176,"./_promise-resolve":177,"./_redefine-all":179,"./_set-species":184,"./_set-to-string-tag":185,"./_species-constructor":188,"./_task":190,"./_user-agent":198,"./_wks":202}],218:[function(e,t,r){var n=e("./_export"),o=e("./_object-create"),i=e("./_a-function"),s=e("./_an-object"),a=e("./_is-object"),u=e("./_fails"),c=e("./_bind"),l=(e("./_global").Reflect||{}).construct,d=u(function(){function e(){}return!(l(function(){},[],e)instanceof e)}),f=!u(function(){l(function(){})});n(n.S+n.F*(d||f),"Reflect",{construct:function(e,t){i(e),s(t);var r=arguments.length<3?e:i(arguments[2]);if(f&&!d)return l(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return n.push.apply(n,t),new(c.apply(e,n))}var u=r.prototype,p=o(a(u)?u:Object.prototype),h=Function.apply.call(e,p,t);return a(h)?h:p}})},{"./_a-function":116,"./_an-object":119,"./_bind":125,"./_export":138,"./_fails":139,"./_global":141,"./_is-object":151,"./_object-create":163}],219:[function(e,t,r){var n=e("./_export"),o=e("./_object-gpo"),i=e("./_an-object");n(n.S,"Reflect",{getPrototypeOf:function(e){return o(i(e))}})},{"./_an-object":119,"./_export":138,"./_object-gpo":170}],220:[function(e,t,r){var n=e("./_export"),o=e("./_set-proto");o&&n(n.S,"Reflect",{setPrototypeOf:function(e,t){o.check(e,t);try{return o.set(e,t),!0}catch(e){return!1}}})},{"./_export":138,"./_set-proto":183}],221:[function(e,t,r){"use strict";var n=e("./_collection-strong"),o=e("./_validate-collection");t.exports=e("./_collection")("Set",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return n.def(o(this,"Set"),e=0===e?0:e,e)}},n)},{"./_collection":130,"./_collection-strong":128,"./_validate-collection":199}],222:[function(e,t,r){"use strict";var n=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":154,"./_string-at":189}],223:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_has"),i=e("./_descriptors"),s=e("./_export"),a=e("./_redefine"),u=e("./_meta").KEY,c=e("./_fails"),l=e("./_shared"),d=e("./_set-to-string-tag"),f=e("./_uid"),p=e("./_wks"),h=e("./_wks-ext"),v=e("./_wks-define"),m=e("./_enum-keys"),y=e("./_is-array"),_=e("./_an-object"),g=e("./_is-object"),b=e("./_to-iobject"),E=e("./_to-primitive"),w=e("./_property-desc"),S=e("./_object-create"),k=e("./_object-gopn-ext"),T=e("./_object-gopd"),x=e("./_object-dp"),R=e("./_object-keys"),I=T.f,C=x.f,j=k.f,O=n.Symbol,A=n.JSON,D=A&&A.stringify,M=p("_hidden"),P=p("toPrimitive"),L={}.propertyIsEnumerable,U=l("symbol-registry"),N=l("symbols"),F=l("op-symbols"),q=Object.prototype,B="function"==typeof O,K=n.QObject,G=!K||!K.prototype||!K.prototype.findChild,$=i&&c(function(){return 7!=S(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=I(q,t);n&&delete q[t],C(e,t,r),n&&e!==q&&C(q,t,n)}:C,V=function(e){var t=N[e]=S(O.prototype);return t._k=e,t},W=B&&"symbol"==typeof O.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof O},H=function(e,t,r){return e===q&&H(F,t,r),_(e),t=E(t,!0),_(r),o(N,t)?(r.enumerable?(o(e,M)&&e[M][t]&&(e[M][t]=!1),r=S(r,{enumerable:w(0,!1)})):(o(e,M)||C(e,M,w(1,{})),e[M][t]=!0),$(e,t,r)):C(e,t,r)},z=function(e,t){_(e);for(var r,n=m(t=b(t)),o=0,i=n.length;i>o;)H(e,r=n[o++],t[r]);return e},Q=function(e,t){return void 0===t?S(e):z(S(e),t)},J=function(e){var t=L.call(this,e=E(e,!0));return!(this===q&&o(N,e)&&!o(F,e))&&(!(t||!o(this,e)||!o(N,e)||o(this,M)&&this[M][e])||t)},Y=function(e,t){if(e=b(e),t=E(t,!0),e!==q||!o(N,t)||o(F,t)){var r=I(e,t);return!r||!o(N,t)||o(e,M)&&e[M][t]||(r.enumerable=!0),r}},X=function(e){for(var t,r=j(b(e)),n=[],i=0;r.length>i;)o(N,t=r[i++])||t==M||t==u||n.push(t);return n},Z=function(e){for(var t,r=e===q,n=j(r?F:b(e)),i=[],s=0;n.length>s;)!o(N,t=n[s++])||r&&!o(q,t)||i.push(N[t]);return i};B||(O=function(){if(this instanceof O)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(r){this===q&&t.call(F,r),o(this,M)&&o(this[M],e)&&(this[M][e]=!1),$(this,e,w(1,r))};return i&&G&&$(q,e,{configurable:!0,set:t}),V(e)},a(O.prototype,"toString",function(){return this._k}),T.f=Y,x.f=H,e("./_object-gopn").f=k.f=X,e("./_object-pie").f=J,e("./_object-gops").f=Z, +i&&!e("./_library")&&a(q,"propertyIsEnumerable",J,!0),h.f=function(e){return V(p(e))}),s(s.G+s.W+s.F*!B,{Symbol:O});for(var ee="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ee.length>te;)p(ee[te++]);for(var re=R(p.store),ne=0;re.length>ne;)v(re[ne++]);s(s.S+s.F*!B,"Symbol",{for:function(e){return o(U,e+="")?U[e]:U[e]=O(e)},keyFor:function(e){if(!W(e))throw TypeError(e+" is not a symbol!");for(var t in U)if(U[t]===e)return t},useSetter:function(){G=!0},useSimple:function(){G=!1}}),s(s.S+s.F*!B,"Object",{create:Q,defineProperty:H,defineProperties:z,getOwnPropertyDescriptor:Y,getOwnPropertyNames:X,getOwnPropertySymbols:Z}),A&&s(s.S+s.F*(!B||c(function(){var e=O();return"[null]"!=D([e])||"{}"!=D({a:e})||"{}"!=D(Object(e))})),"JSON",{stringify:function(e){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=t=n[1],(g(t)||void 0!==e)&&!W(e))return y(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!W(t))return t}),n[1]=t,D.apply(A,n)}}),O.prototype[P]||e("./_hide")(O.prototype,P,O.prototype.valueOf),d(O,"Symbol"),d(Math,"Math",!0),d(n.JSON,"JSON",!0)},{"./_an-object":119,"./_descriptors":134,"./_enum-keys":137,"./_export":138,"./_fails":139,"./_global":141,"./_has":142,"./_hide":143,"./_is-array":149,"./_is-object":151,"./_library":158,"./_meta":159,"./_object-create":163,"./_object-dp":164,"./_object-gopd":166,"./_object-gopn":168,"./_object-gopn-ext":167,"./_object-gops":169,"./_object-keys":172,"./_object-pie":173,"./_property-desc":178,"./_redefine":180,"./_set-to-string-tag":185,"./_shared":187,"./_to-iobject":193,"./_to-primitive":196,"./_uid":197,"./_wks":202,"./_wks-define":200,"./_wks-ext":201}],224:[function(e,t,r){var n=e("./_export"),o=e("./_object-to-array")(!0);n(n.S,"Object",{entries:function(e){return o(e)}})},{"./_export":138,"./_object-to-array":175}],225:[function(e,t,r){var n=e("./_export"),o=e("./_object-to-array")(!1);n(n.S,"Object",{values:function(e){return o(e)}})},{"./_export":138,"./_object-to-array":175}],226:[function(e,t,r){"use strict";var n=e("./_export"),o=e("./_core"),i=e("./_global"),s=e("./_species-constructor"),a=e("./_promise-resolve");n(n.P+n.R,"Promise",{finally:function(e){var t=s(this,o.Promise||i.Promise),r="function"==typeof e;return this.then(r?function(r){return a(t,e()).then(function(){return r})}:e,r?function(r){return a(t,e()).then(function(){throw r})}:e)}})},{"./_core":131,"./_export":138,"./_global":141,"./_promise-resolve":177,"./_species-constructor":188}],227:[function(e,t,r){"use strict";var n=e("./_export"),o=e("./_new-promise-capability"),i=e("./_perform");n(n.S,"Promise",{try:function(e){var t=o.f(this),r=i(e);return(r.e?t.reject:t.resolve)(r.v),t.promise}})},{"./_export":138,"./_new-promise-capability":161,"./_perform":176}],228:[function(e,t,r){e("./_set-collection-from")("Set")},{"./_set-collection-from":181}],229:[function(e,t,r){e("./_set-collection-of")("Set")},{"./_set-collection-of":182}],230:[function(e,t,r){var n=e("./_export");n(n.P+n.R,"Set",{toJSON:e("./_collection-to-json")("Set")})},{"./_collection-to-json":129,"./_export":138}],231:[function(e,t,r){e("./_wks-define")("asyncIterator")},{"./_wks-define":200}],232:[function(e,t,r){e("./_wks-define")("observable")},{"./_wks-define":200}],233:[function(e,t,r){e("./es6.array.iterator");for(var n=e("./_global"),o=e("./_hide"),i=e("./_iterators"),s=e("./_wks")("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),u=0;u<a.length;u++){var c=a[u],l=n[c],d=l&&l.prototype;d&&!d[s]&&o(d,s,c),i[c]=i.Array}},{"./_global":141,"./_hide":143,"./_iterators":157,"./_wks":202,"./es6.array.iterator":206}],234:[function(e,t,r){function n(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=E(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}function o(e){return void 0===e._maxListeners?n.defaultMaxListeners:e._maxListeners}function i(e,t,r){if(t)e.call(r);else for(var n=e.length,o=m(e,n),i=0;i<n;++i)o[i].call(r)}function s(e,t,r,n){if(t)e.call(r,n);else for(var o=e.length,i=m(e,o),s=0;s<o;++s)i[s].call(r,n)}function a(e,t,r,n,o){if(t)e.call(r,n,o);else for(var i=e.length,s=m(e,i),a=0;a<i;++a)s[a].call(r,n,o)}function u(e,t,r,n,o,i){if(t)e.call(r,n,o,i);else for(var s=e.length,a=m(e,s),u=0;u<s;++u)a[u].call(r,n,o,i)}function c(e,t,r,n){if(t)e.apply(r,n);else for(var o=e.length,i=m(e,o),s=0;s<o;++s)i[s].apply(r,n)}function l(e,t,r,n){var i,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if(s=e._events,s?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=E(null),e._eventsCount=0),a){if("function"==typeof a?a=s[t]=n?[r,a]:[a,r]:n?a.unshift(r):a.push(r),!a.warned&&(i=o(e))&&i>0&&a.length>i){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",u.name,u.message)}}else a=s[t]=r,++e._eventsCount;return e}function d(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t<e.length;++t)e[t]=arguments[t];this.listener.apply(this.target,e)}}function f(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=S.call(d,n);return o.listener=r,n.wrapFn=o,o}function p(e,t,r){var n=e._events;if(!n)return[];var o=n[t];return o?"function"==typeof o?r?[o.listener||o]:[o]:r?y(o):m(o,o.length):[]}function h(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function v(e,t){for(var r=t,n=r+1,o=e.length;n<o;r+=1,n+=1)e[r]=e[n];e.pop()}function m(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function y(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function _(e){var t=function(){};return t.prototype=e,new t}function g(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return r}function b(e){var t=this;return function(){return t.apply(e,arguments)}}var E=Object.create||_,w=Object.keys||g,S=Function.prototype.bind||b;t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0;var k,T=10;try{var x={};Object.defineProperty&&Object.defineProperty(x,"x",{value:0}),k=0===x.x}catch(e){k=!1}k?Object.defineProperty(n,"defaultMaxListeners",{enumerable:!0,get:function(){return T},set:function(e){if("number"!=typeof e||e<0||e!==e)throw new TypeError('"defaultMaxListeners" must be a positive number');T=e}}):n.defaultMaxListeners=T,n.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},n.prototype.getMaxListeners=function(){return o(this)},n.prototype.emit=function(e){var t,r,n,o,l,d,f="error"===e;if(d=this._events)f=f&&null==d.error;else if(!f)return!1;if(f){if(arguments.length>1&&(t=arguments[1]),t instanceof Error)throw t;var p=new Error('Unhandled "error" event. ('+t+")");throw p.context=t,p}if(!(r=d[e]))return!1;var h="function"==typeof r;switch(n=arguments.length){case 1:i(r,h,this);break;case 2:s(r,h,this,arguments[1]);break;case 3:a(r,h,this,arguments[1],arguments[2]);break;case 4:u(r,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(o=new Array(n-1),l=1;l<n;l++)o[l-1]=arguments[l];c(r,h,this,o)}return!0},n.prototype.addListener=function(e,t){return l(this,e,t,!1)},n.prototype.on=n.prototype.addListener,n.prototype.prependListener=function(e,t){return l(this,e,t,!0)},n.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,f(this,e,t)),this},n.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,f(this,e,t)),this},n.prototype.removeListener=function(e,t){var r,n,o,i,s;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=E(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(o=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){s=r[i].listener,o=i;break}if(o<0)return this;0===o?r.shift():v(r,o),1===r.length&&(n[e]=r[0]),n.removeListener&&this.emit("removeListener",e,s||t)}return this},n.prototype.removeAllListeners=function(e){var t,r,n;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=E(null),this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=E(null):delete r[e]),this;if(0===arguments.length){var o,i=w(r);for(n=0;n<i.length;++n)"removeListener"!==(o=i[n])&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=E(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},n.prototype.listeners=function(e){return p(this,e,!0)},n.prototype.rawListeners=function(e){return p(this,e,!1)},n.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},n.prototype.listenerCount=h,n.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],235:[function(e,t,r){r.read=function(e,t,r,n,o){var i,s,a=8*o-n-1,u=(1<<a)-1,c=u>>1,l=-7,d=r?o-1:0,f=r?-1:1,p=e[t+d];for(d+=f,i=p&(1<<-l)-1,p>>=-l,l+=a;l>0;i=256*i+e[t+d],d+=f,l-=8);for(s=i&(1<<-l)-1,i>>=-l,l+=n;l>0;s=256*s+e[t+d],d+=f,l-=8);if(0===i)i=1-c;else{if(i===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),i-=c}return(p?-1:1)*s*Math.pow(2,i-n)},r.write=function(e,t,r,n,o,i){var s,a,u,c=8*i-o-1,l=(1<<c)-1,d=l>>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:i-1,h=n?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),t+=s+d>=1?f/u:f*Math.pow(2,1-d),t*u>=2&&(s++,u/=2),s+d>=l?(a=0,s=l):s+d>=1?(a=(t*u-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+p]=255&a,p+=h,a/=256,o-=8);for(s=s<<o|a,c+=o;c>0;e[r+p]=255&s,p+=h,s/=256,c-=8);e[r+p-h]|=128*v}},{}],236:[function(e,t,r){!function(e,r){"use strict";"function"==typeof define&&define.amd?define(r):"object"==typeof t&&t.exports?t.exports=r():e.log=r()}(this,function(){"use strict";function e(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function t(t){return"debug"===t&&(t="log"),typeof console!==a&&(void 0!==console[t]?e(console,t):void 0!==console.log?e(console,"log"):s)}function r(e,t){for(var r=0;r<u.length;r++){var n=u[r];this[n]=r<e?s:this.methodFactory(n,e,t)}this.log=this.debug}function n(e,t,n){return function(){typeof console!==a&&(r.call(this,t,n),this[e].apply(this,arguments))}}function o(e,r,o){return t(e)||n.apply(this,arguments)}function i(e,t,n){function i(e){var t=(u[e]||"silent").toUpperCase();if(typeof window!==a){try{return void(window.localStorage[d]=t)}catch(e){}try{window.document.cookie=encodeURIComponent(d)+"="+t+";"}catch(e){}}}function s(){var e;if(typeof window!==a){try{e=window.localStorage[d]}catch(e){}if(typeof e===a)try{var t=window.document.cookie,r=t.indexOf(encodeURIComponent(d)+"=");-1!==r&&(e=/^([^;]+)/.exec(t.slice(r))[1])}catch(e){}return void 0===l.levels[e]&&(e=void 0),e}}var c,l=this,d="loglevel";e&&(d+=":"+e),l.name=e,l.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},l.methodFactory=n||o,l.getLevel=function(){return c},l.setLevel=function(t,n){if("string"==typeof t&&void 0!==l.levels[t.toUpperCase()]&&(t=l.levels[t.toUpperCase()]),!("number"==typeof t&&t>=0&&t<=l.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(c=t,!1!==n&&i(t),r.call(l,t,e),typeof console===a&&t<l.levels.SILENT)return"No console available for logging"},l.setDefaultLevel=function(e){s()||l.setLevel(e,!1)},l.enableAll=function(e){l.setLevel(l.levels.TRACE,e)},l.disableAll=function(e){l.setLevel(l.levels.SILENT,e)};var f=s();null==f&&(f=null==t?"WARN":t),l.setLevel(f,!1)}var s=function(){},a="undefined",u=["trace","debug","info","warn","error"],c=new i,l={};c.getLogger=function(e){if("string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=l[e];return t||(t=l[e]=new i(e,c.getLevel(),c.methodFactory)),t};var d=typeof window!==a?window.log:void 0;return c.noConflict=function(){return typeof window!==a&&window.log===c&&(window.log=d),c},c.getLoggers=function(){return l},c})},{}],237:[function(e,t,r){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(d===setTimeout)return setTimeout(e,0);if((d===n||!d)&&setTimeout)return d=setTimeout,setTimeout(e,0);try{return d(e,0)}catch(t){try{return d.call(null,e,0)}catch(t){return d.call(this,e,0)}}}function s(e){if(f===clearTimeout)return clearTimeout(e);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function a(){m&&h&&(m=!1,h.length?v=h.concat(v):y=-1,v.length&&u())}function u(){if(!m){var e=i(a);m=!0;for(var t=v.length;t;){for(h=v,v=[];++y<t;)h&&h[y].run();y=-1,t=v.length}h=null,m=!1,s(e)}}function c(e,t){this.fun=e,this.array=t}function l(){}var d,f,p=t.exports={};!function(){try{d="function"==typeof setTimeout?setTimeout:n}catch(e){d=n}try{f="function"==typeof clearTimeout?clearTimeout:o}catch(e){f=o}}();var h,v=[],m=!1,y=-1;p.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];v.push(new c(e,t)),1!==v.length||m||i(u)},c.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=l,p.addListener=l,p.once=l,p.off=l,p.removeListener=l,p.removeAllListeners=l,p.emit=l,p.prependListener=l,p.prependOnceListener=l,p.listeners=function(e){return[]},p.binding=function(e){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},{}],238:[function(e,t,r){"use strict";var n=String.prototype.replace,o=/%20/g;t.exports={default:"RFC3986",formatters:{RFC1738:function(e){return n.call(e,o,"+")},RFC3986:function(e){return e}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},{}],239:[function(e,t,r){"use strict";var n=e("./stringify"),o=e("./parse"),i=e("./formats");t.exports={formats:i,parse:o,stringify:n}},{"./formats":238,"./parse":240,"./stringify":241}],240:[function(e,t,r){"use strict";var n=e("./utils"),o=Object.prototype.hasOwnProperty,i={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:n.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},s=function(e,t){for(var r={},n=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=n.split(t.delimiter,s),u=0;u<a.length;++u){var c,l,d=a[u],f=d.indexOf("]="),p=-1===f?d.indexOf("="):f+1;-1===p?(c=t.decoder(d,i.decoder),l=t.strictNullHandling?null:""):(c=t.decoder(d.slice(0,p),i.decoder),l=t.decoder(d.slice(p+1),i.decoder)),o.call(r,c)?r[c]=[].concat(r[c]).concat(l):r[c]=l}return r},a=function(e,t,r){for(var n=t,o=e.length-1;o>=0;--o){var i,s=e[o];if("[]"===s)i=[],i=i.concat(n);else{i=r.plainObjects?Object.create(null):{};var a="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,u=parseInt(a,10);!isNaN(u)&&s!==a&&String(u)===a&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(i=[],i[u]=n):i[a]=n}n=i}return n},u=function(e,t,r){if(e){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,i=/(\[[^[\]]*])/,s=/(\[[^[\]]*])/g,u=i.exec(n),c=u?n.slice(0,u.index):n,l=[];if(c){if(!r.plainObjects&&o.call(Object.prototype,c)&&!r.allowPrototypes)return;l.push(c)}for(var d=0;null!==(u=s.exec(n))&&d<r.depth;){if(d+=1,!r.plainObjects&&o.call(Object.prototype,u[1].slice(1,-1))&&!r.allowPrototypes)return;l.push(u[1])}return u&&l.push("["+n.slice(u.index)+"]"),a(l,t,r)}};t.exports=function(e,t){var r=t?n.assign({},t):{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.ignoreQueryPrefix=!0===r.ignoreQueryPrefix,r.delimiter="string"==typeof r.delimiter||n.isRegExp(r.delimiter)?r.delimiter:i.delimiter,r.depth="number"==typeof r.depth?r.depth:i.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:i.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:i.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:i.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:i.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:i.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:i.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:i.strictNullHandling,""===e||null===e||void 0===e)return r.plainObjects?Object.create(null):{};for(var o="string"==typeof e?s(e,r):e,a=r.plainObjects?Object.create(null):{},c=Object.keys(o),l=0;l<c.length;++l){var d=c[l],f=u(d,o[d],r);a=n.merge(a,f,r)}return n.compact(a)}},{"./utils":242}],241:[function(e,t,r){"use strict";var n=e("./utils"),o=e("./formats"),i={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},s=Date.prototype.toISOString,a={delimiter:"&",encode:!0,encoder:n.encode,encodeValuesOnly:!1,serializeDate:function(e){return s.call(e)},skipNulls:!1,strictNullHandling:!1},u=function e(t,r,o,i,s,u,c,l,d,f,p,h){var v=t;if("function"==typeof c)v=c(r,v);else if(v instanceof Date)v=f(v);else if(null===v){if(i)return u&&!h?u(r,a.encoder):r;v=""}if("string"==typeof v||"number"==typeof v||"boolean"==typeof v||n.isBuffer(v)){if(u){return[p(h?r:u(r,a.encoder))+"="+p(u(v,a.encoder))]}return[p(r)+"="+p(String(v))]}var m=[];if(void 0===v)return m;var y;if(Array.isArray(c))y=c;else{var _=Object.keys(v);y=l?_.sort(l):_}for(var g=0;g<y.length;++g){var b=y[g];s&&null===v[b]||(m=Array.isArray(v)?m.concat(e(v[b],o(r,b),o,i,s,u,c,l,d,f,p,h)):m.concat(e(v[b],r+(d?"."+b:"["+b+"]"),o,i,s,u,c,l,d,f,p,h)))}return m};t.exports=function(e,t){var r=e,s=t?n.assign({},t):{};if(null!==s.encoder&&void 0!==s.encoder&&"function"!=typeof s.encoder)throw new TypeError("Encoder has to be a function.");var c=void 0===s.delimiter?a.delimiter:s.delimiter,l="boolean"==typeof s.strictNullHandling?s.strictNullHandling:a.strictNullHandling,d="boolean"==typeof s.skipNulls?s.skipNulls:a.skipNulls,f="boolean"==typeof s.encode?s.encode:a.encode,p="function"==typeof s.encoder?s.encoder:a.encoder,h="function"==typeof s.sort?s.sort:null,v=void 0!==s.allowDots&&s.allowDots,m="function"==typeof s.serializeDate?s.serializeDate:a.serializeDate,y="boolean"==typeof s.encodeValuesOnly?s.encodeValuesOnly:a.encodeValuesOnly;if(void 0===s.format)s.format=o.default;else if(!Object.prototype.hasOwnProperty.call(o.formatters,s.format))throw new TypeError("Unknown format option provided.");var _,g,b=o.formatters[s.format];"function"==typeof s.filter?(g=s.filter,r=g("",r)):Array.isArray(s.filter)&&(g=s.filter,_=g);var E=[];if("object"!=typeof r||null===r)return"";var w;w=s.arrayFormat in i?s.arrayFormat:"indices"in s?s.indices?"indices":"repeat":"indices";var S=i[w];_||(_=Object.keys(r)),h&&_.sort(h);for(var k=0;k<_.length;++k){var T=_[k];d&&null===r[T]||(E=E.concat(u(r[T],T,S,l,d,f?p:null,g,h,v,m,b,y)))}var x=E.join(c),R=!0===s.addQueryPrefix?"?":"";return x.length>0?R+x:""}},{"./formats":238,"./utils":242}],242:[function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,o=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),i=function(e){for(var t;e.length;){var r=e.pop();if(t=r.obj[r.prop],Array.isArray(t)){for(var n=[],o=0;o<t.length;++o)void 0!==t[o]&&n.push(t[o]);r.obj[r.prop]=n}}return t},s=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n<e.length;++n)void 0!==e[n]&&(r[n]=e[n]);return r},a=function e(t,r,o){if(!r)return t;if("object"!=typeof r){if(Array.isArray(t))t.push(r);else{if("object"!=typeof t)return[t,r];(o.plainObjects||o.allowPrototypes||!n.call(Object.prototype,r))&&(t[r]=!0)}return t}if("object"!=typeof t)return[t].concat(r);var i=t;return Array.isArray(t)&&!Array.isArray(r)&&(i=s(t,o)),Array.isArray(t)&&Array.isArray(r)?(r.forEach(function(r,i){n.call(t,i)?t[i]&&"object"==typeof t[i]?t[i]=e(t[i],r,o):t.push(r):t[i]=r}),t):Object.keys(r).reduce(function(t,i){var s=r[i];return n.call(t,i)?t[i]=e(t[i],s,o):t[i]=s,t},i)},u=function(e,t){return Object.keys(t).reduce(function(e,r){return e[r]=t[r],e},e)},c=function(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(t){return e}},l=function(e){if(0===e.length)return e;for(var t="string"==typeof e?e:String(e),r="",n=0;n<t.length;++n){var i=t.charCodeAt(n);45===i||46===i||95===i||126===i||i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122?r+=t.charAt(n):i<128?r+=o[i]:i<2048?r+=o[192|i>>6]+o[128|63&i]:i<55296||i>=57344?r+=o[224|i>>12]+o[128|i>>6&63]+o[128|63&i]:(n+=1,i=65536+((1023&i)<<10|1023&t.charCodeAt(n)),r+=o[240|i>>18]+o[128|i>>12&63]+o[128|i>>6&63]+o[128|63&i])}return r},d=function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n<t.length;++n)for(var o=t[n],s=o.obj[o.prop],a=Object.keys(s),u=0;u<a.length;++u){var c=a[u],l=s[c];"object"==typeof l&&null!==l&&-1===r.indexOf(l)&&(t.push({obj:s,prop:c}),r.push(l))}return i(t)},f=function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},p=function(e){return null!==e&&void 0!==e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))};t.exports={arrayToObject:s,assign:u,compact:d,decode:c,encode:l,isBuffer:p,isRegExp:f,merge:a}},{}],243:[function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var c=e.length;u>0&&c>u&&(c=u);for(var l=0;l<c;++l){var d,f,p,h,v=e[l].replace(a,"%20"),m=v.indexOf(r);m>=0?(d=v.substr(0,m),f=v.substr(m+1)):(d=v,f=""),p=decodeURIComponent(d),h=decodeURIComponent(f),n(s,p)?o(s[p])?s[p].push(h):s[p]=[s[p],h]:s[p]=h}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],244:[function(e,t,r){"use strict";function n(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,a){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?n(s(e),function(s){var a=encodeURIComponent(o(s))+r;return i(e[s])?n(e[s],function(e){return a+encodeURIComponent(o(e))}).join(t):a+encodeURIComponent(o(e[s]))}).join(t):a?encodeURIComponent(o(a))+r+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},{}],245:[function(e,t,r){"use strict";r.decode=r.parse=e("./decode"),r.encode=r.stringify=e("./encode")},{"./decode":243,"./encode":244}],246:[function(e,t,r){var n=function(){return this}()||Function("return this")(),o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=e("./runtime"),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(e){n.regeneratorRuntime=void 0}},{"./runtime":247}],247:[function(e,t,r){!function(e){"use strict";function r(e,t,r,n){var i=t&&t.prototype instanceof o?t:o,s=Object.create(i.prototype),a=new p(n||[]);return s._invoke=c(e,r,a),s}function n(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function o(){}function i(){}function s(){}function a(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function u(e){function t(r,o,i,s){var a=n(e[r],e,o);if("throw"!==a.type){var u=a.arg,c=u.value;return c&&"object"==typeof c&&_.call(c,"__await")?Promise.resolve(c.__await).then(function(e){t("next",e,i,s)},function(e){t("throw",e,i,s)}):Promise.resolve(c).then(function(e){u.value=e,i(u)},s)}s(a.arg)}function r(e,r){function n(){return new Promise(function(n,o){t(e,r,n,o)})}return o=o?o.then(n,n):n()}var o;this._invoke=r}function c(e,t,r){var o=T;return function(i,s){if(o===R)throw new Error("Generator is already running");if(o===I){if("throw"===i)throw s;return v()}for(r.method=i,r.arg=s;;){var a=r.delegate;if(a){var u=l(a,r);if(u){if(u===C)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===T)throw o=I,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=R;var c=n(e,t,r);if("normal"===c.type){if(o=r.done?I:x,c.arg===C)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=I,r.method="throw",r.arg=c.arg)}}}function l(e,t){var r=e.iterator[t.method];if(r===m){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=m,l(e,t),"throw"===t.method))return C;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return C}var o=n(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,C;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=m),t.delegate=null,C):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,C)}function d(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function f(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function p(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(d,this),this.reset(!0)}function h(e){if(e){var t=e[b];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r<e.length;)if(_.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=m,t.done=!0,t};return n.next=n}}return{next:v}}function v(){return{value:m,done:!0}}var m,y=Object.prototype,_=y.hasOwnProperty,g="function"==typeof Symbol?Symbol:{},b=g.iterator||"@@iterator",E=g.asyncIterator||"@@asyncIterator",w=g.toStringTag||"@@toStringTag",S="object"==typeof t,k=e.regeneratorRuntime;if(k)return void(S&&(t.exports=k));k=e.regeneratorRuntime=S?t.exports:{},k.wrap=r;var T="suspendedStart",x="suspendedYield",R="executing",I="completed",C={},j={};j[b]=function(){return this};var O=Object.getPrototypeOf,A=O&&O(O(h([])));A&&A!==y&&_.call(A,b)&&(j=A);var D=s.prototype=o.prototype=Object.create(j);i.prototype=D.constructor=s,s.constructor=i,s[w]=i.displayName="GeneratorFunction",k.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===i||"GeneratorFunction"===(t.displayName||t.name))},k.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,w in e||(e[w]="GeneratorFunction")),e.prototype=Object.create(D),e},k.awrap=function(e){return{__await:e}},a(u.prototype),u.prototype[E]=function(){return this},k.AsyncIterator=u,k.async=function(e,t,n,o){var i=new u(r(e,t,n,o));return k.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},a(D),D[w]="Generator",D[b]=function(){return this},D.toString=function(){return"[object Generator]"},k.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},k.values=h,p.prototype={constructor:p,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=m,this.done=!1,this.delegate=null,this.method="next",this.arg=m,this.tryEntries.forEach(f),!e)for(var t in this)"t"===t.charAt(0)&&_.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=m)},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){function t(t,n){return i.type="throw",i.arg=e,r.next=t,n&&(r.method="next",r.arg=m),!!n}if(this.done)throw e;for(var r=this,n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var s=_.call(o,"catchLoc"),a=_.call(o,"finallyLoc");if(s&&a){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!a)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&_.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,C):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),C},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),f(r),C}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;f(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:h(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=m),C}}}(function(){return this}()||Function("return this")())},{}],248:[function(e,t,r){function n(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return s(e,t,r)}var i=e("buffer"),s=i.Buffer;s.from&&s.alloc&&s.allocUnsafe&&s.allocUnsafeSlow?t.exports=i:(n(i,r),r.Buffer=o),n(s,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return s(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=s(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return s(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},{buffer:93}],249:[function(e,t,r){(function(t,n){ +function o(e,t){this._id=e,this._clearFn=t}var i=e("process/browser.js").nextTick,s=Function.prototype.apply,a=Array.prototype.slice,u={},c=0;r.setTimeout=function(){return new o(s.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new o(s.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(e){e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},r.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},r._unrefActive=r.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r.setImmediate="function"==typeof t?t:function(e){var t=c++,n=!(arguments.length<2)&&a.call(arguments,1);return u[t]=!0,i(function(){u[t]&&(n?e.apply(null,n):e.call(null),r.clearImmediate(t))}),t},r.clearImmediate="function"==typeof n?n:function(e){delete u[e]}}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":237,timers:249}],250:[function(e,t,r){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function o(e,t,r){if(e&&c.isObject(e)&&e instanceof n)return e;var o=new n;return o.parse(e,t,r),o}function i(e){return c.isString(e)&&(e=o(e)),e instanceof n?e.format():n.prototype.format.call(e)}function s(e,t){return o(e,!1,!0).resolve(t)}function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}var u=e("punycode"),c=e("./util");r.parse=o,r.resolve=s,r.resolveObject=a,r.format=i,r.Url=n;var l=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,p=["<",">",'"',"`"," ","\r","\n","\t"],h=["{","}","|","\\","^","`"].concat(p),v=["'"].concat(h),m=["%","/","?",";","#"].concat(v),y=["/","?","#"],_=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},E={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=e("querystring");n.prototype.parse=function(e,t,r){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),o=-1!==n&&n<e.indexOf("#")?"?":"#",i=e.split(o),s=/\\/g;i[0]=i[0].replace(s,"/"),e=i.join(o);var a=e;if(a=a.trim(),!r&&1===e.split("#").length){var d=f.exec(a);if(d)return this.path=a,this.href=a,this.pathname=d[1],d[2]?(this.search=d[2],this.query=t?S.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var p=l.exec(a);if(p){p=p[0];var h=p.toLowerCase();this.protocol=h,a=a.substr(p.length)}if(r||p||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===a.substr(0,2);!k||p&&E[p]||(a=a.substr(2),this.slashes=!0)}if(!E[p]&&(k||p&&!w[p])){for(var T=-1,x=0;x<y.length;x++){var R=a.indexOf(y[x]);-1!==R&&(-1===T||R<T)&&(T=R)}var I,C;C=-1===T?a.lastIndexOf("@"):a.lastIndexOf("@",T),-1!==C&&(I=a.slice(0,C),a=a.slice(C+1),this.auth=decodeURIComponent(I)),T=-1;for(var x=0;x<m.length;x++){var R=a.indexOf(m[x]);-1!==R&&(-1===T||R<T)&&(T=R)}-1===T&&(T=a.length),this.host=a.slice(0,T),a=a.slice(T),this.parseHost(),this.hostname=this.hostname||"";var j="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!j)for(var O=this.hostname.split(/\./),x=0,A=O.length;x<A;x++){var D=O[x];if(D&&!D.match(_)){for(var M="",P=0,L=D.length;P<L;P++)D.charCodeAt(P)>127?M+="x":M+=D[P];if(!M.match(_)){var U=O.slice(0,x),N=O.slice(x+1),F=D.match(g);F&&(U.push(F[1]),N.unshift(F[2])),N.length&&(a="/"+N.join(".")+a),this.hostname=U.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=u.toASCII(this.hostname));var q=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+q,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!b[h])for(var x=0,A=v.length;x<A;x++){var K=v[x];if(-1!==a.indexOf(K)){var G=encodeURIComponent(K);G===K&&(G=escape(K)),a=a.split(K).join(G)}}var $=a.indexOf("#");-1!==$&&(this.hash=a.substr($),a=a.slice(0,$));var V=a.indexOf("?");if(-1!==V?(this.search=a.substr(V),this.query=a.substr(V+1),t&&(this.query=S.parse(this.query)),a=a.slice(0,V)):t&&(this.search="",this.query={}),a&&(this.pathname=a),w[h]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var q=this.pathname||"",W=this.search||"";this.path=q+W}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(i=S.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||w[t])&&!1!==o?(o="//"+(o||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):o||(o=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),r=r.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+o+r+s+n},n.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(c.isString(e)){var t=new n;t.parse(e,!1,!0),e=t}for(var r=new n,o=Object.keys(this),i=0;i<o.length;i++){var s=o[i];r[s]=this[s]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),u=0;u<a.length;u++){var l=a[u];"protocol"!==l&&(r[l]=e[l])}return w[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!w[e.protocol]){for(var d=Object.keys(e),f=0;f<d.length;f++){var p=d[f];r[p]=e[p]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||E[e.protocol])r.pathname=e.pathname;else{for(var h=(e.pathname||"").split("/");h.length&&!(e.host=h.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),r.pathname=h.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var v=r.pathname||"",m=r.search||"";r.path=v+m}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var y=r.pathname&&"/"===r.pathname.charAt(0),_=e.host||e.pathname&&"/"===e.pathname.charAt(0),g=_||y||r.host&&e.pathname,b=g,S=r.pathname&&r.pathname.split("/")||[],h=e.pathname&&e.pathname.split("/")||[],k=r.protocol&&!w[r.protocol];if(k&&(r.hostname="",r.port=null,r.host&&(""===S[0]?S[0]=r.host:S.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===h[0]?h[0]=e.host:h.unshift(e.host)),e.host=null),g=g&&(""===h[0]||""===S[0])),_)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,S=h;else if(h.length)S||(S=[]),S.pop(),S=S.concat(h),r.search=e.search,r.query=e.query;else if(!c.isNullOrUndefined(e.search)){if(k){r.hostname=r.host=S.shift();var T=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");T&&(r.auth=T.shift(),r.host=r.hostname=T.shift())}return r.search=e.search,r.query=e.query,c.isNull(r.pathname)&&c.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!S.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var x=S.slice(-1)[0],R=(r.host||e.host||S.length>1)&&("."===x||".."===x)||""===x,I=0,C=S.length;C>=0;C--)x=S[C],"."===x?S.splice(C,1):".."===x?(S.splice(C,1),I++):I&&(S.splice(C,1),I--);if(!g&&!b)for(;I--;I)S.unshift("..");!g||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),R&&"/"!==S.join("/").substr(-1)&&S.push("");var j=""===S[0]||S[0]&&"/"===S[0].charAt(0);if(k){r.hostname=r.host=j?"":S.length?S.shift():"";var T=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");T&&(r.auth=T.shift(),r.host=r.hostname=T.shift())}return g=g||r.host&&S.length,g&&!j&&S.unshift(""),S.length?r.pathname=S.join("/"):(r.pathname=null,r.path=null),c.isNull(r.pathname)&&c.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},n.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":251,punycode:91,querystring:245}],251:[function(e,t,r){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}]},{},[1]); +//# sourceMappingURL=dist/browser-matrix.min.js.map \ No newline at end of file diff --git a/origin_migrator/dest/dest.html b/origin_migrator/dest/dest.html new file mode 100644 index 00000000..240aa07b --- /dev/null +++ b/origin_migrator/dest/dest.html @@ -0,0 +1,6 @@ +<html> +<body> +<script src="browser-matrix.min.js"></script> +<script src="dest.js"></script> +</body> +</html> diff --git a/origin_migrator/dest/dest.js b/origin_migrator/dest/dest.js new file mode 100644 index 00000000..d5ffd42b --- /dev/null +++ b/origin_migrator/dest/dest.js @@ -0,0 +1,125 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const SOURCE_ORIGIN = 'file://'; + +const IndexedDBCryptoStore = window.matrixcs.IndexedDBCryptoStore; +const cryptoStore = new IndexedDBCryptoStore(window.indexedDB, 'matrix-js-sdk:crypto'); + +let accountStored = 0; +let sessionsStored = 0; +let inboundGroupSessionsStored = 0; +let deviceDataStored = 0; +let roomsStored = 0; +let localStorageKeysStored = 0; + +const promises = []; + +async function onMessage(e) { + if (e.origin !== SOURCE_ORIGIN) return; + + const data = e.data.data; // bleh, naming clash + switch (e.data.cmd) { + case 'init': + // start with clean stores before we migrate data in + window.localStorage.clear(); + await cryptoStore.deleteAllData(); + + e.source.postMessage({ + cmd: 'initOK', + }, SOURCE_ORIGIN); + break; + case 'storeAccount': + promises.push(cryptoStore.doTxn( + 'readwrite', [IndexedDBCryptoStore.STORE_ACCOUNT], + (txn) => { + cryptoStore.storeAccount(txn, data); + }, + ).then(() => { + ++accountStored; + })); + break; + case 'storeSessions': + promises.push(cryptoStore.doTxn( + 'readwrite', [IndexedDBCryptoStore.STORE_SESSIONS], + (txn) => { + for (const sess of data) { + cryptoStore.storeEndToEndSession(sess.deviceKey, sess.sessionId, sess, txn); + } + }, + ).then(() => { + sessionsStored += data.length; + })); + break; + case 'storeInboundGroupSessions': + promises.push(cryptoStore.doTxn( + 'readwrite', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], + (txn) => { + for (const sess of data) { + cryptoStore.addEndToEndInboundGroupSession( + sess.senderKey, sess.sessionId, sess.sessionData, txn, + ); + } + }, + ).then(() => { + inboundGroupSessionsStored += data.length; + })); + break; + case 'storeDeviceData': + promises.push(cryptoStore.doTxn( + 'readwrite', [IndexedDBCryptoStore.STORE_DEVICE_DATA], + (txn) => { + cryptoStore.storeEndToEndDeviceData(data, txn); + }, + ).then(() => { + ++deviceDataStored; + })); + break; + case 'storeRooms': + promises.push(cryptoStore.doTxn( + 'readwrite', [IndexedDBCryptoStore.STORE_ROOMS], + (txn) => { + for (const [roomId, roomInfo] of Object.entries(data)) { + cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn); + } + }, + ).then(() => { + ++roomsStored; + })); + break; + case 'storeLocalStorage': + window.localStorage.setItem(data.key, data.val); + ++localStorageKeysStored; + break; + case 'getSummary': + await Promise.all(promises); + e.source.postMessage({ + cmd: 'summary', + data: { + accountStored, + sessionsStored, + inboundGroupSessionsStored, + deviceDataStored, + roomsStored, + localStorageKeysStored, + }, + }, SOURCE_ORIGIN); + break; + } +} + +window.addEventListener('message', onMessage); + diff --git a/origin_migrator/source.html b/origin_migrator/source.html new file mode 100644 index 00000000..ade265c7 --- /dev/null +++ b/origin_migrator/source.html @@ -0,0 +1,7 @@ +<html> +<body> +<script src="dest/browser-matrix.min.js"></script> +<script src="source.js"></script> +<iframe name="dest" src="vector://vector/origin_migrator_dest/dest.html" onload="doMigrate()"></iframe> +</body> +</html> diff --git a/origin_migrator/source.js b/origin_migrator/source.js new file mode 100644 index 00000000..0cbee89f --- /dev/null +++ b/origin_migrator/source.js @@ -0,0 +1,210 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const TARGET_ORIGIN = 'vector://vector'; +const BATCH_SIZE = 500; +let destFrame; + +let initResolver = null; +let getSummaryResolver = null; + +function onMessage(e) { + if (e.origin !== TARGET_ORIGIN) return; + + if (e.data.cmd === 'initOK' && initResolver) { + initResolver(); + initResolver = null; + } else if (e.data.cmd === 'summary' && getSummaryResolver) { + getSummaryResolver(e.data.data); + getSummaryResolver = null; + } +} + +async function initDestFrame() { + return new Promise(resolve => { + initResolver = resolve; + destFrame.postMessage({ + cmd: 'init', + }, TARGET_ORIGIN); + }); +} + +async function getSummary() { + return new Promise(resolve => { + getSummaryResolver = resolve; + destFrame.postMessage({ + cmd: 'getSummary', + }, TARGET_ORIGIN); + }); +} + +async function doMigrate() { + let accountSent = 0; + let sessionsSent = 0; + let inboundGroupSessionsSent = 0; + let deviceDataSent = 0; + let roomsSent = 0; + let localStorageKeysSent = 0; + + if (!window.ipcRenderer) { + console.error("ipcRenderer not found"); + return; + } + + if (window.localStorage.getItem('mx_user_id') === null) { + window.ipcRenderer.send("origin_migration_nodata"); + return; + } + + destFrame = window.parent.frames.dest; + + await initDestFrame(); + + const IndexedDBCryptoStore = window.matrixcs.IndexedDBCryptoStore; + + const cryptoStore = new IndexedDBCryptoStore(window.indexedDB, 'matrix-js-sdk:crypto'); + + await cryptoStore.doTxn( + 'readonly', [IndexedDBCryptoStore.STORE_ACCOUNT], + (txn) => { + cryptoStore.getAccount(txn, (account) => { + destFrame.postMessage({ + cmd: 'storeAccount', + data: account, + }, TARGET_ORIGIN); + ++accountSent; + }); + }, + ); + + await cryptoStore.doTxn( + 'readonly', [IndexedDBCryptoStore.STORE_SESSIONS], + (txn) => { + let sessBatch = []; + cryptoStore.getAllEndToEndSessions(txn, (sessInfo) => { + if (sessInfo) { + ++sessionsSent; + sessBatch.push(sessInfo); + } + if (sessBatch.length >= BATCH_SIZE || sessInfo === null) { + destFrame.postMessage({ + cmd: 'storeSessions', + data: sessBatch, + }, TARGET_ORIGIN); + sessBatch = []; + } + }); + }, + ); + + await cryptoStore.doTxn( + 'readonly', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], + (txn) => { + let sessBatch = []; + cryptoStore.getAllEndToEndInboundGroupSessions(txn, (sessInfo) => { + if (sessInfo) { + ++inboundGroupSessionsSent; + sessBatch.push(sessInfo); + } + if (sessBatch.length >= BATCH_SIZE || sessInfo === null) { + destFrame.postMessage({ + cmd: 'storeInboundGroupSessions', + data: sessBatch, + }, TARGET_ORIGIN); + sessBatch = []; + } + }); + }, + ); + + await cryptoStore.doTxn( + 'readonly', [IndexedDBCryptoStore.STORE_DEVICE_DATA], + (txn) => { + cryptoStore.getEndToEndDeviceData(txn, (deviceData) => { + destFrame.postMessage({ + cmd: 'storeDeviceData', + data: deviceData, + }, TARGET_ORIGIN); + ++deviceDataSent; + }); + }, + ); + + await cryptoStore.doTxn( + 'readonly', [IndexedDBCryptoStore.STORE_ROOMS], + (txn) => { + cryptoStore.getEndToEndRooms(txn, (rooms) => { + destFrame.postMessage({ + cmd: 'storeRooms', + data: rooms, + }, TARGET_ORIGIN); + ++roomsSent; + }); + }, + ); + + // we don't bother migrating; + // * sync data (we can just initialsync again) + // * logs + // * key requests (worst case they'll just be re-sent) + // * sessions needing backup (feature isn't available on Electron) + + for (let i = 0; i < window.localStorage.length; ++i) { + const key = window.localStorage.key(i); + const val = window.localStorage.getItem(key); + + destFrame.postMessage({ + cmd: 'storeLocalStorage', + data: { key, val }, + }, TARGET_ORIGIN); + ++localStorageKeysSent; + } + + const summary = await getSummary(); + let success = false; + if ( + summary.accountStored === accountSent && + summary.sessionsStored === sessionsSent && + summary.inboundGroupSessionsStored === inboundGroupSessionsSent && + summary.deviceDataStored === deviceDataSent && + summary.roomsStored === roomsSent && + summary.localStorageKeysStored === localStorageKeysSent + ) { + success = true; + window.localStorage.clear(); + await cryptoStore.deleteAllData(); + + // we don't bother migrating them, but also blow away the sync & logs db, + // otherwise they'll just hang about taking up space + await new Promise(resolve => { + const req = window.indexedDB.deleteDatabase('matrix-js-sdk:riot-web-sync'); + req.onsuccess = resolve; + req.onerror = resolve; + }); + await new Promise(resolve => { + const req = window.indexedDB.deleteDatabase('logs'); + req.onsuccess = resolve; + req.onerror = resolve; + }); + } + + window.ipcRenderer.send("origin_migration_complete", success, { + accountSent, sessionsSent, inboundGroupSessionsSent, + deviceDataSent, roomsSent, localStorageKeysSent, + }, summary); +} + +window.addEventListener('message', onMessage); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 64e2e49a..00000000 --- a/package-lock.json +++ /dev/null @@ -1,9512 +0,0 @@ -{ - "name": "riot-web", - "version": "0.12.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "7zip": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/7zip/-/7zip-0.0.6.tgz", - "integrity": "sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA=", - "dev": true - }, - "7zip-bin": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-2.2.7.tgz", - "integrity": "sha512-+rr4OgeTNrLuJAf09o3USdttEYiXvZshWMkhD6wR9v1ieXH0JM1Q2yT41/cJuJcqiPpSXlM/g3aR+Y5MWQdr0Q==", - "dev": true, - "requires": { - "7zip-bin-mac": "1.0.1" - } - }, - "7zip-bin-mac": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/7zip-bin-mac/-/7zip-bin-mac-1.0.1.tgz", - "integrity": "sha1-Pmh3i78JJq3GgVlCcHRQXUdVXAI=", - "dev": true, - "optional": true - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "another-json": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz", - "integrity": "sha1-tfQBnJc7bdXGUGotk0acttMq7tw=" - }, - "ansi-align": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", - "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "any-promise": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", - "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=", - "dev": true - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", - "dev": true, - "requires": { - "archiver-utils": "1.3.0", - "async": "2.5.0", - "buffer-crc32": "0.2.13", - "glob": "7.1.2", - "lodash": "4.17.4", - "readable-stream": "2.3.3", - "tar-stream": "1.5.4", - "walkdir": "0.0.11", - "zip-stream": "1.2.0" - }, - "dependencies": { - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", - "dev": true, - "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lazystream": "1.0.0", - "lodash": "4.17.4", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", - "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" - } - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asar-electron-builder": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/asar-electron-builder/-/asar-electron-builder-0.13.5.tgz", - "integrity": "sha1-TM1NEf18nTs8/8eC/ePe7Z75GvY=", - "dev": true, - "requires": { - "chromium-pickle-js": "0.2.0", - "commander": "2.11.0", - "cuint": "0.2.2", - "minimatch": "3.0.4", - "mkdirp": "0.5.1" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "autolinker": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", - "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=" - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000748", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" - }, - "babel-cli": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", - "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true, - "requires": { - "babel-core": "6.26.0", - "babel-polyfill": "6.26.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "chokidar": "1.7.0", - "commander": "2.11.0", - "convert-source-map": "1.5.0", - "fs-readdir-recursive": "1.0.0", - "glob": "7.1.2", - "lodash": "4.17.4", - "output-file-sync": "1.1.2", - "path-is-absolute": "1.0.1", - "slash": "1.0.0", - "source-map": "0.5.7", - "v8flags": "2.1.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.0", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" - } - }, - "babel-eslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz", - "integrity": "sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=", - "dev": true, - "requires": { - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash.assign": "4.2.0", - "lodash.pickby": "4.6.0" - } - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-builder-react-jsx": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", - "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "esutils": "2.0.2" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, - "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-loader": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", - "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", - "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-add-module-exports": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", - "dev": true - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-async-to-bluebird": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-bluebird/-/babel-plugin-transform-async-to-bluebird-1.1.1.tgz", - "integrity": "sha1-Ruo+fFr2KXgqyfHtG3zTj4Qlr9Q=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, - "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true, - "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-react-display-name": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", - "dev": true, - "requires": { - "babel-helper-builder-react-jsx": "6.26.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-react-jsx-self": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", - "dev": true, - "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-react-jsx-source": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", - "dev": true, - "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "0.10.1" - } - }, - "babel-plugin-transform-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", - "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "regenerator-runtime": "0.10.5" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" - } - }, - "babel-preset-es2016": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz", - "integrity": "sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s=", - "dev": true, - "requires": { - "babel-plugin-transform-exponentiation-operator": "6.24.1" - } - }, - "babel-preset-es2017": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", - "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1" - } - }, - "babel-preset-flow": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", - "dev": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "6.22.0" - } - }, - "babel-preset-react": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", - "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", - "dev": true, - "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-self": "6.22.0", - "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-preset-flow": "6.23.0" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" - } - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", - "dev": true - }, - "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "bluebird-lst-c": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bluebird-lst-c/-/bluebird-lst-c-1.0.6.tgz", - "integrity": "sha1-gfiB0T+d9wD2fVd/E0gLwy2Eu6k=", - "dev": true, - "requires": { - "bluebird": "3.5.1" - } - }, - "blueimp-canvas-to-blob": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.14.0.tgz", - "integrity": "sha512-i6I2CiX1VR8YwUNYBo+dM8tg89ns4TTHxSpWjaDeHKcYS3yFalpLCwDaY21/EsJMufLy2tnG4j0JN5L8OVNkKQ==" - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.2.0" - } - }, - "boxen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", - "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", - "dev": true, - "requires": { - "ansi-align": "1.1.0", - "camelcase": "2.1.1", - "chalk": "1.1.3", - "cli-boxes": "1.0.0", - "filled-array": "1.1.0", - "object-assign": "4.1.1", - "repeating": "2.0.1", - "string-width": "1.0.2", - "widest-line": "1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "browser-encrypt-attachment": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/browser-encrypt-attachment/-/browser-encrypt-attachment-0.3.0.tgz", - "integrity": "sha1-IFqUyq3w3H6BQTlBgS9lW9GQ/xw=" - }, - "browser-request": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", - "integrity": "sha1-ns5bWsqJopkyJC4Yv5M975h2zBc=" - }, - "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "0.2.9" - }, - "dependencies": { - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - } - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000748", - "electron-to-chromium": "1.3.27" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.2.0", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "camelcase-css": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz", - "integrity": "sha1-FXxCOCZfXPlKHf/ehkRlUsvz9wU=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-db": { - "version": "1.0.30000748", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000748.tgz", - "integrity": "sha1-eF2e381kW/eVxv887TPEXVgMSKA=", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", - "dev": true - }, - "ci-info": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", - "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", - "dev": true - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "commonmark": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.27.0.tgz", - "integrity": "sha1-2GwmK5YoIelIPGnFR7xYhAwEezQ=", - "requires": { - "entities": "1.1.1", - "mdurl": "1.0.1", - "minimist": "1.2.0", - "string.prototype.repeat": "0.2.0" - } - }, - "compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", - "dev": true, - "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" - } - }, - "compressible": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz", - "integrity": "sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "compression": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", - "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "bytes": "3.0.0", - "compressible": "2.0.11", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "configstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", - "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", - "dev": true, - "requires": { - "dot-prop": "3.0.0", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "connect": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", - "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.0.6", - "parseurl": "1.3.2", - "utils-merge": "1.0.1" - } - }, - "connect-history-api-fallback": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz", - "integrity": "sha1-PbJPlz9LkjsOgvYZzg3wJBHKYj0=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.10.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - } - }, - "counterpart": { - "version": "0.18.3", - "resolved": "https://registry.npmjs.org/counterpart/-/counterpart-0.18.3.tgz", - "integrity": "sha512-tli4qPAFeYB34LvvCc/1xYRLCWjf4WsUt6sXfpggDfGDKoI8rhnabz0SljDoBpAK8z1u8GBCg0YDkbvWb16uUQ==", - "requires": { - "date-names": "0.1.10", - "except": "0.1.3", - "extend": "3.0.1", - "pluralizers": "0.1.6", - "sprintf-js": "1.1.1" - } - }, - "cpx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", - "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "chokidar": "1.7.0", - "duplexer": "0.1.1", - "glob": "7.1.2", - "glob2base": "0.0.12", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "resolve": "1.4.0", - "safe-buffer": "5.1.1", - "shell-quote": "1.6.1", - "subarg": "1.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "crc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", - "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", - "dev": true - }, - "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", - "dev": true, - "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.3" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } - }, - "create-react-class": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", - "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "cross-env": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-4.0.0.tgz", - "integrity": "sha1-Fgg4YtCCdaRiiwskOxIb7apV3YA=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "is-windows": "1.0.1" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "cross-unzip": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/cross-unzip/-/cross-unzip-0.0.2.tgz", - "integrity": "sha1-UYO8R6CVWb78+YzEZXlkmZNZNy8=", - "dev": true - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.2.0" - } - } - } - }, - "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", - "dev": true, - "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" - } - }, - "css-raw-loader": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/css-raw-loader/-/css-raw-loader-0.1.2.tgz", - "integrity": "sha1-NC5tP1VRwIjGO0eg6rZ5HDCFBhw=", - "dev": true, - "requires": { - "clean-css": "3.4.28", - "loader-utils": "0.2.17", - "source-list-map": "0.1.8" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - }, - "dependencies": { - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - } - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.35" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "1.0.0" - } - }, - "date-names": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/date-names/-/date-names-0.1.10.tgz", - "integrity": "sha1-YvjZMyKVBEZX8852FtijQCH47ys=" - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "disposables": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/disposables/-/disposables-1.0.1.tgz", - "integrity": "sha1-BkcnoltU9QK9griaot+4358bOeM=" - }, - "dnd-core": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.5.4.tgz", - "integrity": "sha512-BcI782MfTm3wCxeIS5c7tAutyTwEIANtuu3W6/xkoJRwiqhRXKX3BbGlycUxxyzMsKdvvoavxgrC3EMPFNYL9A==", - "requires": { - "asap": "2.0.6", - "invariant": "2.2.2", - "lodash": "4.17.4", - "redux": "3.7.2" - } - }, - "doctrine": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.3.tgz", - "integrity": "sha1-auxrvWLPid1JjK5wwO2fSdqHOmo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" - }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "draft-js": { - "version": "0.11.0-alpha", - "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.0-alpha.tgz", - "integrity": "sha1-MtshCPkn6bhEbaH3nkR1wrf4aK4=", - "requires": { - "fbjs": "0.8.16", - "immutable": "3.7.6", - "object-assign": "4.1.1" - } - }, - "draft-js-export-html": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/draft-js-export-html/-/draft-js-export-html-0.6.0.tgz", - "integrity": "sha1-zIDwVExD0Kf+28U8DLCRToCQ92k=", - "requires": { - "draft-js-utils": "1.2.0" - } - }, - "draft-js-export-markdown": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-0.3.0.tgz", - "integrity": "sha1-hjkOA86vHTR/xhaGerf1Net2v0I=", - "requires": { - "draft-js-utils": "1.2.0" - } - }, - "draft-js-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.2.0.tgz", - "integrity": "sha1-9csj6xZzJf/tPXmIL9wxdyHS/RI=" - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-builder": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-11.7.0.tgz", - "integrity": "sha1-1SkS9uhKxSoGXeGXqS3vkxvZ3CU=", - "dev": true, - "requires": { - "7zip-bin": "2.2.7", - "asar-electron-builder": "0.13.5", - "bluebird-lst-c": "1.0.6", - "chalk": "1.1.3", - "chromium-pickle-js": "0.2.0", - "cuint": "0.2.2", - "electron-builder-core": "11.2.1", - "electron-builder-http": "11.5.0", - "electron-builder-util": "11.6.1", - "electron-download-tf": "3.1.0", - "electron-macos-sign": "1.5.0", - "fs-extra-p": "3.1.0", - "hosted-git-info": "2.5.0", - "ini": "1.3.4", - "is-ci": "1.0.10", - "isbinaryfile": "3.0.2", - "js-yaml": "3.10.0", - "mime": "1.4.1", - "minimatch": "3.0.4", - "normalize-package-data": "2.4.0", - "parse-color": "1.0.0", - "plist": "2.1.0", - "progress": "1.1.8", - "sanitize-filename": "1.6.1", - "semver": "5.4.1", - "tunnel-agent": "0.4.3", - "update-notifier": "1.0.3", - "uuid-1345": "0.99.6", - "yargs": "6.6.0" - }, - "dependencies": { - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - } - } - } - }, - "electron-builder-core": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/electron-builder-core/-/electron-builder-core-11.2.1.tgz", - "integrity": "sha1-HcqMGhzui1F1C3cIoEkTrv+s+Kg=", - "dev": true - }, - "electron-builder-http": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/electron-builder-http/-/electron-builder-http-11.5.0.tgz", - "integrity": "sha1-t3OWY0kDREMp7aO7zQIyFEDgYDg=", - "dev": true, - "requires": { - "debug": "2.6.0", - "fs-extra-p": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "electron-builder-squirrel-windows": { - "version": "11.6.1", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-11.6.1.tgz", - "integrity": "sha1-pRYS0oiDuesK8IQuPrJoRM9aalI=", - "dev": true, - "requires": { - "archiver": "1.3.0", - "bluebird-lst-c": "1.0.6", - "electron-builder-core": "11.2.1", - "electron-builder-util": "11.6.1", - "fs-extra-p": "3.1.0" - } - }, - "electron-builder-util": { - "version": "11.6.1", - "resolved": "https://registry.npmjs.org/electron-builder-util/-/electron-builder-util-11.6.1.tgz", - "integrity": "sha1-D1VvZ6cOTI11GFVp7yp1ZtsBXsw=", - "dev": true, - "requires": { - "7zip-bin": "2.2.7", - "bluebird-lst-c": "1.0.6", - "chalk": "1.1.3", - "debug": "2.6.0", - "electron-builder-http": "11.5.0", - "fs-extra-p": "3.1.0", - "is-ci": "1.0.10", - "node-emoji": "1.8.1", - "source-map-support": "0.4.18", - "stat-mode": "0.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "electron-devtools-installer": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-2.2.1.tgz", - "integrity": "sha1-C+tzzL9ly8TQnnBs69pjj4ObjFU=", - "dev": true, - "requires": { - "7zip": "0.0.6", - "cross-unzip": "0.0.2", - "rimraf": "2.6.2", - "semver": "5.4.1" - } - }, - "electron-download-tf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/electron-download-tf/-/electron-download-tf-3.1.0.tgz", - "integrity": "sha1-xtYsDgpMY7ZylfV7a2ZRTBO47Y0=", - "dev": true, - "requires": { - "debug": "2.6.9", - "fs-extra": "1.0.0", - "minimist": "1.2.0", - "nugget": "2.0.1", - "path-exists": "3.0.0", - "rc": "1.2.2", - "semver": "5.4.1", - "sumchecker": "1.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "electron-macos-sign": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/electron-macos-sign/-/electron-macos-sign-1.5.0.tgz", - "integrity": "sha1-/jqKy3VbX1aPH+FE6eZs7kQBlEg=", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "compare-version": "0.1.2", - "debug": "2.6.9", - "isbinaryfile": "3.0.2", - "plist": "2.1.0" - } - }, - "electron-to-chromium": { - "version": "1.3.27", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", - "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", - "dev": true - }, - "emojione": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/emojione/-/emojione-2.2.7.tgz", - "integrity": "sha1-RkV89rmy+NoTroouTlR94G7hXpY=" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } - }, - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - } - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.35", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", - "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", - "dev": true - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.9", - "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - }, - "dependencies": { - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - } - } - }, - "eslint-config-google": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.7.1.tgz", - "integrity": "sha1-VZj4SY6eB4Qg80uASVuNlZ9lH7I=", - "dev": true - }, - "eslint-plugin-babel": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz", - "integrity": "sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4=", - "dev": true - }, - "eslint-plugin-flowtype": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz", - "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "requires": { - "array.prototype.find": "2.0.4", - "doctrine": "1.2.3", - "has": "1.0.1", - "jsx-ast-utils": "1.4.1", - "object.assign": "4.0.4" - } - }, - "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", - "dev": true, - "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "dev": true, - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" - } - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.0" - } - }, - "except": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/except/-/except-0.1.3.tgz", - "integrity": "sha1-mCYckZWFUVNrREgiOOl4P7c9KSo=", - "requires": { - "indexof": "0.0.1" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" - }, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "0.1.1" - } - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" - } - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "expect": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-1.20.2.tgz", - "integrity": "sha1-1Fj+TFYAQDa64yMkFqP2Nh8E+WU=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "has": "1.0.1", - "is-equal": "1.5.5", - "is-regex": "1.0.4", - "object-inspect": "1.3.0", - "object-keys": "1.0.11", - "tmatch": "2.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.0", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", - "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "extract-text-webpack-plugin": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-0.9.1.tgz", - "integrity": "sha1-723FCMs17Q3PikAJq76FP3p2IrU=", - "requires": { - "async": "1.5.2", - "loader-utils": "0.2.17" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "favico.js": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz", - "integrity": "sha1-gFhuJ6EX8kqNUcGKmb3HFNQzkwE=" - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "fbemitter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", - "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", - "requires": { - "fbjs": "0.8.16" - } - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "file": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/file/-/file-0.2.2.tgz", - "integrity": "sha1-w9/Y+M81Na5FXCtCPC5SY112tNM=" - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" - } - }, - "file-saver": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-1.3.3.tgz", - "integrity": "sha1-zdTETTqiZOrC9o7BZbx5HDSvEjI=" - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "filesize": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.6.tgz", - "integrity": "sha1-X9mPPqyU7JUW747VeC+thKAaCho=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "filled-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", - "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", - "dev": true - }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true, - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "flux": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/flux/-/flux-2.1.1.tgz", - "integrity": "sha1-LGrGUtQzdIiWhInGWG86/yajjqQ=", - "requires": { - "fbemitter": "2.1.1", - "fbjs": "0.1.0-alpha.7", - "immutable": "3.7.6" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, - "fbjs": { - "version": "0.1.0-alpha.7", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.1.0-alpha.7.tgz", - "integrity": "sha1-rUMIuPIy+zxzYDNJ6nJdHpw5Mjw=", - "requires": { - "core-js": "1.2.7", - "promise": "7.3.1", - "whatwg-fetch": "0.9.0" - } - }, - "whatwg-fetch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", - "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "requires": { - "null-check": "1.0.0" - } - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" - } - }, - "fs-extra-p": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-3.1.0.tgz", - "integrity": "sha1-7d97uNk4XXkBTeyyH0Wx0MV5ANM=", - "dev": true, - "requires": { - "bluebird-lst-c": "1.0.6", - "fs-extra": "2.1.2" - }, - "dependencies": { - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0" - } - } - } - }, - "fs-readdir-recursive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", - "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "fuse.js": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-2.7.4.tgz", - "integrity": "sha1-luQg/efvARrEnCWKYhMU/ldlNvk=" - }, - "gemini-scrollbar": { - "version": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "1.0.0" - } - }, - "gfm.css": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/gfm.css/-/gfm.css-1.1.1.tgz", - "integrity": "sha1-FrDvCGN/JJW2bITFAkWT1x6+rEY=" - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", - "dev": true, - "requires": { - "find-index": "0.1.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "5.2.3", - "har-schema": "2.0.0" - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.0.2" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "highlight.js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" - }, - "hoist-non-react-statics": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", - "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "html-minifier": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.6.tgz", - "integrity": "sha512-88FjtKrlak2XjczhxrBomgzV4jmGzM3UnHRBScRkJcmcRum0kb+IwhVAETJ8AVp7j0p3xugjSaw9L+RmI5/QOA==", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.11.0", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.1.4" - }, - "dependencies": { - "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - } - } - }, - "html-webpack-plugin": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", - "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "html-minifier": "3.5.6", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "pretty-error": "2.1.1", - "toposort": "1.0.6" - } - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", - "dev": true - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true, - "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", - "dev": true, - "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.4", - "micromatch": "2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", - "dev": true - }, - "immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-arrow-function": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-arrow-function/-/is-arrow-function-2.0.3.tgz", - "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=", - "dev": true, - "requires": { - "is-callable": "1.1.3" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-boolean-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", - "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", - "dev": true - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true, - "requires": { - "ci-info": "1.1.1" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/is-equal/-/is-equal-1.5.5.tgz", - "integrity": "sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0=", - "dev": true, - "requires": { - "has": "1.0.1", - "is-arrow-function": "2.0.3", - "is-boolean-object": "1.0.0", - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-generator-function": "1.0.6", - "is-number-object": "1.0.3", - "is-regex": "1.0.4", - "is-string": "1.0.4", - "is-symbol": "1.0.1", - "object.entries": "1.0.4" - } - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-generator-function": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.6.tgz", - "integrity": "sha1-nnFlPNFf/zQcecQVFGChMdMen8Q=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-number-object": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", - "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", - "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-windows": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", - "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, - "jquery": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", - "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" - }, - "js-base64": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", - "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "karma": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", - "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "socket.io": "1.7.3", - "source-map": "0.5.7", - "tmp": "0.0.31", - "useragent": "2.2.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz", - "integrity": "sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk=", - "dev": true, - "requires": { - "fs-access": "1.0.1", - "which": "1.3.0" - } - }, - "karma-cli": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-0.1.2.tgz", - "integrity": "sha1-ys6oQ3Hs4Zh2JlyPoQLru5/uSow=", - "dev": true, - "requires": { - "resolve": "1.4.0" - } - }, - "karma-junit-reporter": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-0.4.2.tgz", - "integrity": "sha1-SSojZyj+TJKqz0GfzQEQpDJ+nX8=", - "dev": true, - "requires": { - "path-is-absolute": "1.0.1", - "xmlbuilder": "3.1.0" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "xmlbuilder": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz", - "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=", - "dev": true, - "requires": { - "lodash": "3.10.1" - } - } - } - }, - "karma-logcapture-reporter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/karma-logcapture-reporter/-/karma-logcapture-reporter-0.0.1.tgz", - "integrity": "sha1-vxsLHJFeDeKVoV/i8BedQoG6zdw=", - "dev": true - }, - "karma-mocha": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-0.2.2.tgz", - "integrity": "sha1-OI7ZF9oV3LGW0bkVwZNO+AMZP44=", - "dev": true - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "karma-spec-reporter": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz", - "integrity": "sha1-SDDccUihVcfXoYbmMjOaDYD63sM=", - "dev": true, - "requires": { - "colors": "1.1.2" - } - }, - "karma-summary-reporter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/karma-summary-reporter/-/karma-summary-reporter-1.3.3.tgz", - "integrity": "sha1-nHQKJLYL+RNes59acylsTM0Q2Zs=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "karma-webpack": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.1.tgz", - "integrity": "sha1-OdX9Lt7qPMPvW0BZibN9Ww5qO04=", - "dev": true, - "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.1.43", - "webpack-dev-middleware": "1.12.0" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "latest-version": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", - "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "dev": true, - "requires": { - "package-json": "2.4.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "linkifyjs": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.5.tgz", - "integrity": "sha512-8FqxPXQDLjI2nNHlM7eGewxE6DHvMbtiW0AiXzm0s4RkTwVZYRDTeVXkiRxLHTd4CuRBQY/JPtvtqJWdS7gHyA==", - "requires": { - "jquery": "3.2.1", - "react": "15.6.2", - "react-dom": "15.6.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "matrix-js-sdk": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.8.2.tgz", - "integrity": "sha1-e7mrVoXrNCFLOFlMiDn++pY2ViE=", - "requires": { - "another-json": "0.2.0", - "bluebird": "3.5.1", - "browser-request": "0.3.3", - "content-type": "1.0.4", - "request": "2.83.0" - } - }, - "matrix-mock-request": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/matrix-mock-request/-/matrix-mock-request-1.2.1.tgz", - "integrity": "sha1-2aWrqNPYJG6I/3YyWYuZwUE/QjI=", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "expect": "1.20.2" - } - }, - "matrix-react-sdk": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.10.2.tgz", - "integrity": "sha1-TNSwkN1P4Jsl4Yh5Z/XOE17U8q4=", - "requires": { - "babel-runtime": "6.26.0", - "bluebird": "3.5.1", - "blueimp-canvas-to-blob": "3.14.0", - "browser-encrypt-attachment": "0.3.0", - "browser-request": "0.3.3", - "classnames": "2.2.5", - "commonmark": "0.27.0", - "counterpart": "0.18.3", - "draft-js": "0.11.0-alpha", - "draft-js-export-html": "0.6.0", - "draft-js-export-markdown": "0.3.0", - "emojione": "2.2.7", - "file-saver": "1.3.3", - "filesize": "3.5.6", - "flux": "2.1.1", - "fuse.js": "2.7.4", - "glob": "5.0.15", - "highlight.js": "8.9.1", - "isomorphic-fetch": "2.2.1", - "linkifyjs": "2.1.5", - "lodash": "4.17.4", - "matrix-js-sdk": "0.8.2", - "optimist": "0.6.1", - "prop-types": "15.6.0", - "react": "15.6.2", - "react-addons-css-transition-group": "15.3.2", - "react-dom": "15.6.2", - "react-gemini-scrollbar": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", - "sanitize-html": "1.14.1", - "text-encoding-utf-8": "1.0.1", - "url": "0.11.0", - "velocity-vector": "github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", - "whatwg-fetch": "1.1.1" - }, - "dependencies": { - "highlight.js": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.9.1.tgz", - "integrity": "sha1-uKnFSTISqTkvAiK2SclhFJfr+4g=" - }, - "whatwg-fetch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz", - "integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk=" - } - } - }, - "matrix-react-test-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/matrix-react-test-utils/-/matrix-react-test-utils-0.2.1.tgz", - "integrity": "sha1-i2xRAzK54K+XwCuinnMbKdCxF7s=", - "dev": true, - "requires": { - "react": "15.6.2", - "react-dom": "15.6.2" - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "dev": true, - "requires": { - "commander": "2.3.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.11", - "growl": "1.9.2", - "jade": "0.26.3", - "mkdirp": "0.5.1", - "supports-color": "1.2.0", - "to-iso-string": "0.0.2" - }, - "dependencies": { - "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", - "dev": true - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - } - } - }, - "modernizr": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/modernizr/-/modernizr-3.5.0.tgz", - "integrity": "sha1-OWoCIxvcVGKLveLAgTqOiEx+gGA=", - "requires": { - "doctrine": "1.2.3", - "file": "0.2.2", - "find-parent-dir": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "remarkable": "1.7.1", - "requirejs": "2.1.22", - "yargs": "7.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, - "requires": { - "xml-char-classes": "1.0.0" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-emoji": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", - "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", - "dev": true, - "requires": { - "lodash.toarray": "4.4.0" - } - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.3.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "1.0.0" - } - }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "dev": true, - "requires": { - "debug": "2.6.9", - "minimist": "1.2.0", - "pretty-bytes": "1.0.4", - "progress-stream": "1.2.0", - "request": "2.83.0", - "single-line-log": "1.1.2", - "throttleit": "0.0.2" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-inspect": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.3.0.tgz", - "integrity": "sha512-OHHnLgLNXpM++GnJRyyhbr2bwl3pPVm4YvaraHrRvDt/N3r+s/gDVHciA7EJBTkijKXj61ssgSAikq1fb0IBRg==", - "dev": true - }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "olm": { - "version": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz", - "integrity": "sha1-Xl21DQoUK3x6BlDZs9isw9N+aXs=", - "optional": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", - "dev": true, - "requires": { - "url-parse": "1.0.5" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true, - "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" - } - } - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "dev": true, - "requires": { - "got": "5.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.4.1" - } - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" - }, - "parallelshell": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/parallelshell/-/parallelshell-3.0.2.tgz", - "integrity": "sha512-aW73W8tmYiFZtQi41pweV3WWT6o/EvSxAVQHbumOhN53H47OuWQwrRc11xQ2i44GFvR5AjtzhD92r8Kv9X+7Iw==", - "dev": true - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.2" - } - }, - "parse-color": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", - "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", - "dev": true, - "requires": { - "color-convert": "0.5.3" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", - "dev": true, - "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.27" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "pluralizers": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/pluralizers/-/pluralizers-0.1.6.tgz", - "integrity": "sha1-GrOLbnYOb5f5hGElCXuGK8l0yB4=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - } - }, - "postcss-extend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-extend/-/postcss-extend-1.0.5.tgz", - "integrity": "sha1-XqmL94e6PKz030YJdD+AqDOx0Oc=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-import": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-9.1.0.tgz", - "integrity": "sha1-lf6YdqHnmvSfvcNYnwH+WqfMHoA=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "promise-each": "2.2.0", - "read-cache": "1.0.0", - "resolve": "1.4.0" - } - }, - "postcss-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-0.2.0.tgz", - "integrity": "sha1-VubbDNkQpt/+w9+zRGJpOscuOII=", - "dev": true, - "requires": { - "camelcase-css": "1.0.1", - "postcss": "5.2.18" - } - }, - "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-loader": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz", - "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-load-config": "1.2.0" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } - } - }, - "postcss-mixins": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-5.4.1.tgz", - "integrity": "sha1-AEwKzFQyi4a7yzRx+es7Uu1w9Kg=", - "dev": true, - "requires": { - "globby": "6.1.0", - "postcss": "5.2.18", - "postcss-js": "0.2.0", - "postcss-simple-vars": "3.1.0", - "sugarss": "0.2.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "postcss-nested": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-1.0.1.tgz", - "integrity": "sha1-kfKPTm4j1WckGsFUVYoM+rTMDY8=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-scss": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", - "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-simple-vars": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-3.1.0.tgz", - "integrity": "sha1-YsBlchTvH0OjxYk63oneQU8xtv8=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-strip-inline-comments": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/postcss-strip-inline-comments/-/postcss-strip-inline-comments-0.1.5.tgz", - "integrity": "sha1-f/a83BTmM+1M36AguuPt2tT4S5A=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "dev": true, - "requires": { - "speedometer": "0.1.4", - "through2": "0.2.3" - } - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "2.0.6" - } - }, - "promise-each": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", - "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=", - "dev": true, - "requires": { - "any-promise": "0.1.0" - } - }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", - "dev": true, - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" - } - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", - "dev": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, - "react": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", - "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", - "requires": { - "create-react-class": "15.6.2", - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-addons-css-transition-group": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.3.2.tgz", - "integrity": "sha1-2PpSvsm7Yb396LnkZSuAKXy/9mc=" - }, - "react-addons-perf": { - "version": "15.4.2", - "resolved": "https://registry.npmjs.org/react-addons-perf/-/react-addons-perf-15.4.2.tgz", - "integrity": "sha1-EQvc9cRZxPd8uF7WNLzTOXU2ODs=", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "object-assign": "4.1.1" - } - }, - "react-addons-test-utils": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz", - "integrity": "sha1-wStu/cIkfBDae4dw0YUICnsEcVY=", - "dev": true - }, - "react-dnd": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.5.4.tgz", - "integrity": "sha512-y9YmnusURc+3KPgvhYKvZ9oCucj51MSZWODyaeV0KFU0cquzA7dCD1g/OIYUKtNoZ+MXtacDngkdud2TklMSjw==", - "requires": { - "disposables": "1.0.1", - "dnd-core": "2.5.4", - "hoist-non-react-statics": "2.3.1", - "invariant": "2.2.2", - "lodash": "4.17.4", - "prop-types": "15.6.0" - } - }, - "react-dnd-html5-backend": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz", - "integrity": "sha512-jDqAkm/hI8Tl4HcsbhkBgB6HgpJR1e+ML1SbfxaegXYiuMxEVQm0FOwEH5WxUoo6fmIG4N+H0rSm59POuZOCaA==", - "requires": { - "lodash": "4.17.4" - } - }, - "react-dom": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", - "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" - } - }, - "react-gemini-scrollbar": { - "version": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", - "requires": { - "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.4.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "redux": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", - "requires": { - "lodash": "4.17.4", - "lodash-es": "4.17.4", - "loose-envify": "1.3.1", - "symbol-observable": "1.0.4" - } - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "regexp-quote": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz", - "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI=" - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true, - "requires": { - "rc": "1.2.2", - "safe-buffer": "5.1.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "1.2.2" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remarkable": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.1.tgz", - "integrity": "sha1-qspJchALZqZCpjoQIcpLrBvjv/Y=", - "requires": { - "argparse": "0.1.16", - "autolinker": "0.15.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" - }, - "dependencies": { - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "requirejs": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.1.22.tgz", - "integrity": "sha1-3Xj9LTQYDA1ixyS1uK68BmTgNm8=" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", - "dev": true - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", - "dev": true, - "requires": { - "truncate-utf8-bytes": "1.0.2" - } - }, - "sanitize-html": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.14.1.tgz", - "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=", - "requires": { - "htmlparser2": "3.9.2", - "regexp-quote": "0.0.0", - "xtend": "4.0.1" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "5.4.1" - } - }, - "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.17", - "parseurl": "1.3.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - } - } - }, - "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", - "dev": true, - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - }, - "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.0.4", - "rechoir": "0.6.2" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "sntp": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", - "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", - "requires": { - "hoek": "4.2.0" - } - }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", - "dev": true, - "requires": { - "debug": "2.3.3", - "engine.io": "1.8.3", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } - } - }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.3", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.1.0" - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.1.9" - }, - "dependencies": { - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - } - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-loader": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.1.6.tgz", - "integrity": "sha1-wJkD2m1zueU7ftjuUkVZcFHpjpE=", - "dev": true, - "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "source-map": "0.1.43" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, - "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", - "dev": true - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-cache": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", - "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", - "dev": true - }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string.prototype.repeat": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", - "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=" - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "1.2.0" - } - }, - "sugarss": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz", - "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=", - "dev": true, - "requires": { - "postcss": "5.2.18" - } - }, - "sumchecker": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", - "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", - "dev": true, - "requires": { - "debug": "2.6.9", - "es6-promise": "4.1.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", - "dev": true - }, - "tar-stream": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", - "dev": true, - "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "text-encoding-utf-8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz", - "integrity": "sha1-Uepsen6y+09nRnt2NzVmH1YDSS0=" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "dev": true, - "requires": { - "readable-stream": "1.1.14", - "xtend": "2.1.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "0.4.0" - } - } - } - }, - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", - "dev": true - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "tmatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-2.0.1.tgz", - "integrity": "sha1-DFYkbzPzDaG409colauvFmYPOM8=", - "dev": true - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", - "dev": true - }, - "toposort": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", - "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "requires": { - "punycode": "1.4.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "dev": true, - "requires": { - "utf8-byte-length": "1.0.4" - } - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" - }, - "uglify-js": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.4.tgz", - "integrity": "sha512-DcbkPg11Lw2lAWpwCmQDX+qoR4JiII6ypsQmF6tscZtlxGPFAmSRUGuMoVT3/0EHqypVik/TpkH4ITiMJeQqQA==", - "dev": true, - "requires": { - "commander": "2.11.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", - "dev": true - }, - "update-notifier": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", - "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", - "dev": true, - "requires": { - "boxen": "0.6.0", - "chalk": "1.1.3", - "configstore": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "2.0.0", - "lazy-req": "1.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "2.0.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", - "dev": true, - "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.31" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } - } - }, - "utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - }, - "uuid-1345": { - "version": "0.99.6", - "resolved": "https://registry.npmjs.org/uuid-1345/-/uuid-1345-0.99.6.tgz", - "integrity": "sha1-sScK4BWnchx63sbEbsFpxgmK7UA=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "velocity-vector": { - "version": "github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", - "requires": { - "jquery": "3.2.1" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "walkdir": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", - "dev": true - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", - "dev": true, - "requires": { - "async": "0.9.2", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } - } - }, - "webpack": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", - "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", - "dev": true, - "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", - "dev": true - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "dev": true, - "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - } - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "webpack-dev-middleware": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", - "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.4.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" - } - }, - "webpack-dev-server": { - "version": "1.16.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz", - "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=", - "dev": true, - "requires": { - "compression": "1.7.1", - "connect-history-api-fallback": "1.4.0", - "express": "4.16.2", - "http-proxy-middleware": "0.17.4", - "open": "0.0.5", - "optimist": "0.6.1", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "stream-cache": "0.0.2", - "strip-ansi": "3.0.1", - "supports-color": "3.2.3", - "webpack-dev-middleware": "1.12.0" - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": "0.4.9", - "websocket-extensions": "0.1.2" - } - }, - "websocket-extensions": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", - "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", - "dev": true - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" - } - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true - }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", - "dev": true - }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.0.2.tgz", - "integrity": "sha1-EVuX3xMhgj6Lhkjolox4JSEiH2c=", - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "requires": { - "camelcase": "3.0.0" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, - "zip-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", - "dev": true, - "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.4", - "readable-stream": "2.3.3" - } - } - } -} diff --git a/package.json b/package.json index 80d8d93c..05c4d9b3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "0.13.5", + "version": "1.5.0", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { @@ -30,141 +30,142 @@ "reskindex:watch": "reskindex -h src/header -w", "i18n": "matrix-gen-i18n", "prunei18n": "matrix-prune-i18n", + "diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && yarn i18n && node scripts/compare-file.js src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json", "build:res": "node scripts/copy-res.js", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:compile": "npm run reskindex && babel --source-maps -d lib src", - "build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail", - "build:bundle:dev": "webpack --optimize-occurence-order --progress --bail", - "build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64", - "build": "npm run reskindex && npm run build:res && npm run build:bundle", - "build:dev": "npm run reskindex && npm run build:res && npm run build:bundle:dev", + "build:compile": "yarn reskindex && babel --source-maps -d lib src", + "build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production", + "build:bundle:dev": "webpack --progress --bail --mode development", + "build:electron": "yarn clean && yarn build && yarn install:electron && electron-builder -wml --ia32 --x64", + "build:electron:linux": "yarn build && electron-builder -l --x64", + "build:electron:macos": "yarn build && electron-builder -m --x64", + "build:electron:windows": "yarn build && electron-builder -w --ia32 --x64", + "build:react-sdk": "node scripts/yarn-sub.js matrix-react-sdk build", + "build:js-sdk": "node scripts/yarn-sub.js matrix-js-sdk start:init", + "build": "yarn build:js-sdk && yarn build:react-sdk && yarn reskindex && yarn build:res && yarn build:bundle", + "build:dev": "yarn build:js-sdk && yarn build:react-sdk && yarn reskindex && yarn build:res && yarn build:bundle:dev", "dist": "scripts/package.sh", - "install:electron": "install-app-deps", - "electron": "npm run install:electron && electron .", + "install:electron": "electron-builder install-app-deps", + "electron": "yarn install:electron && electron .", "start:res": "node scripts/copy-res.js -w", - "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", - "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress", - "start": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js\"", - "start:prod": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js:prod\"", + "start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development", + "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress --mode production", + "start:js-sdk": "node scripts/yarn-sub.js matrix-js-sdk start:watch", + "start:js-sdk:prod": "cross-env NODE_ENV=production node scripts/yarn-sub.js matrix-js-sdk start:watch", + "start:react-sdk": "node scripts/yarn-sub.js matrix-react-sdk start:all", + "start:react-sdk:prod": "cross-env NODE_ENV=production node scripts/yarn-sub.js matrix-react-sdk start:all", + "start": "yarn build:js-sdk && yarn build:react-sdk && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n js-sdk,react-sdk,reskindex,res,riot-js \"yarn start:js-sdk\" \"yarn start:react-sdk\" \"yarn reskindex:watch\" \"yarn start:res\" \"yarn start:js\"", + "start:prod": "yarn build:js-sdk && yarn build:react-sdk && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n js-sdk,react-sdk,reskindex,res,riot-js \"yarn start:js-sdk:prod\" \"yarn start:react-sdk:prod\" \"yarn reskindex:watch\" \"yarn start:res\" \"yarn start:js:prod\"", "lint": "eslint src/", "lintall": "eslint src/ test/", "clean": "rimraf lib webapp electron_app/dist", - "prepublish": "npm run clean && npm run build:compile", - "test": "karma start --single-run=true --autoWatch=false --browsers ChromeHeadless", + "prepare": "yarn clean && yarn build:compile", + "test": "karma start --single-run=true --autoWatch=false --browsers VectorChromeHeadless", "test-multi": "karma start" }, "dependencies": { - "babel-polyfill": "^6.5.0", - "babel-runtime": "^6.11.6", - "bluebird": "^3.5.0", + "babel-polyfill": "^6.26.0", + "babel-runtime": "^6.26.0", + "bluebird": "^3.5.2", "browser-request": "^0.3.3", - "classnames": "^2.1.2", "draft-js": "^0.11.0-alpha", - "extract-text-webpack-plugin": "^0.9.1", + "extract-text-webpack-plugin": "^4.0.0-beta.0", "favico.js": "^0.3.10", - "filesize": "3.5.6", - "flux": "2.1.1", - "gemini-scrollbar": "matrix-org/gemini-scrollbar#b302279", - "gfm.css": "^1.1.1", - "highlight.js": "^9.0.0", - "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.9.2", - "matrix-react-sdk": "0.11.4", - "modernizr": "^3.1.0", - "pako": "^1.0.5", - "prop-types": "^15.5.10", - "react": "^15.6.0", - "react-beautiful-dnd": "^4.0.1", - "react-dom": "^15.6.0", - "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", - "sanitize-html": "^1.11.1", - "text-encoding-utf-8": "^1.0.1", - "ua-parser-js": "^0.7.10", - "url": "^0.11.0", - "velocity-vector": "vector-im/velocity#059e3b2" + "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#91e1e566", + "gfm.css": "^1.1.2", + "highlight.js": "^9.13.1", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop", + "modernizr": "^3.6.0", + "olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz", + "prop-types": "^15.7.2", + "react": "^16.9.0", + "react-dom": "^16.9.0", + "sanitize-html": "^1.19.1", + "ua-parser-js": "^0.7.19", + "url": "^0.11.0" }, "devDependencies": { "autoprefixer": "^6.6.0", - "babel-cli": "^6.5.2", - "babel-core": "^6.14.0", - "babel-eslint": "^6.1.0", - "babel-loader": "^6.2.5", + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "^8.1.1", + "babel-loader": "^7.1.5", "babel-plugin-add-module-exports": "^0.2.1", + "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-async-to-bluebird": "^1.1.1", - "babel-plugin-transform-class-properties": "^6.16.0", - "babel-plugin-transform-object-rest-spread": "^6.16.0", - "babel-plugin-transform-runtime": "^6.15.0", - "babel-preset-es2015": "^6.16.0", - "babel-preset-es2016": "^6.16.0", - "babel-preset-es2017": "^6.16.0", - "babel-preset-react": "^6.16.0", - "babel-preset-stage-2": "^6.17.0", - "chokidar": "^1.6.1", + "babel-plugin-transform-builtin-extend": "^1.1.2", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.26.0", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-es2016": "^6.24.1", + "babel-preset-es2017": "^6.24.1", + "babel-preset-react": "^6.24.1", + "babel-preset-stage-2": "^6.24.1", + "chokidar": "^2.0.4", + "concurrently": "^4.0.1", "cpx": "^1.3.2", "cross-env": "^4.0.0", - "css-raw-loader": "^0.1.1", - "electron-builder": "^11.2.4", - "electron-builder-squirrel-windows": "^11.2.1", - "electron-devtools-installer": "^2.2.0", - "emojione": "^2.2.7", - "eslint": "^3.14.0", + "css-loader": "^2.1.0", + "electron-builder": "^21.2.0", + "electron-builder-squirrel-windows": "^21.2.0", + "electron-devtools-installer": "^2.2.4", + "electron-notarize": "^0.1.1", + "eslint": "^5.8.0", "eslint-config-google": "^0.7.1", - "eslint-plugin-babel": "^4.1.1", - "eslint-plugin-flowtype": "^2.30.0", - "eslint-plugin-react": "^7.4.0", + "eslint-plugin-babel": "^4.1.2", + "eslint-plugin-flowtype": "^2.50.3", + "eslint-plugin-react": "^7.11.1", "expect": "^1.16.0", + "file-loader": "^3.0.1", "fs-extra": "^0.30.0", - "html-webpack-plugin": "^2.24.0", + "html-webpack-plugin": "^3.2.0", "json-loader": "^0.5.3", - "karma": "^1.7.0", - "karma-chrome-launcher": "^0.2.3", - "karma-cli": "^0.1.2", - "karma-junit-reporter": "^0.4.1", + "karma": "^3.1.2", + "karma-chrome-launcher": "^2.2.0", + "karma-cli": "^1.0.1", "karma-logcapture-reporter": "0.0.1", - "karma-mocha": "^0.2.2", + "karma-mocha": "^1.3.0", "karma-sourcemap-loader": "^0.3.7", "karma-spec-reporter": "0.0.31", - "karma-summary-reporter": "^1.3.3", - "karma-webpack": "^1.7.0", - "matrix-mock-request": "^1.2.0", - "matrix-react-test-utils": "^0.2.0", + "karma-summary-reporter": "^1.5.1", + "karma-webpack": "4.0.0-beta.0", + "loader-utils": "^1.2.3", + "matrix-mock-request": "^1.2.3", + "matrix-react-test-utils": "^0.2.2", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "mocha": "^2.4.5", - "parallelshell": "^3.0.2", + "mocha": "^5.2.0", "postcss-extend": "^1.0.5", - "postcss-import": "^9.0.0", - "postcss-loader": "^1.2.2", - "postcss-mixins": "^5.4.1", - "postcss-nested": "^1.0.0", - "postcss-scss": "^0.4.0", - "postcss-simple-vars": "^3.0.0", + "postcss-import": "^11.1.0", + "postcss-loader": "^2.1.6", + "postcss-mixins": "^6.2.0", + "postcss-nested": "^3.0.0", + "postcss-scss": "^1.0.6", + "postcss-simple-vars": "^4.1.0", "postcss-strip-inline-comments": "^0.1.5", - "react-addons-perf": "^15.4.0", - "react-addons-test-utils": "^15.6.0", "rimraf": "^2.4.3", - "source-map-loader": "^0.1.5", - "webpack": "^1.12.14", - "webpack-dev-server": "^1.16.2" - }, - "optionalDependencies": { - "olm": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz" + "shell-escape": "^0.2.0", + "source-map-loader": "^0.2.4", + "webpack": "^4.23.1", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.11" }, "build": { "appId": "im.riot.app", - "category": "Network", - "electronVersion": "1.7.9", - "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", - "asar": false, - "dereference": true, - "//files": "We bundle everything, so we only need to include webapp/", + "electronVersion": "6.0.11", "files": [ "node_modules/**", - "src/**", - "img/**" + "src/**" ], "extraResources": [ - "webapp/**/*" + { + "from": "electron_app/img", + "to": "img" + }, + "webapp/**/*", + "origin_migrator/**/*" ], "linux": { "target": "deb", @@ -174,13 +175,23 @@ "StartupWMClass": "riot" } }, + "deb": { + "afterInstall": "electron_app/build/linux/after-install.tpl" + }, + "mac": { + "category": "public.app-category.social-networking", + "darkModeSupport": true + }, "win": { - "target": "squirrel" + "target": { + "target": "squirrel" + } }, "directories": { "buildResources": "electron_app/build", "output": "electron_app/dist", "app": "electron_app" - } + }, + "afterSign": "scripts/electron_afterSign.js" } } diff --git a/release.sh b/release.sh index 13675018..33b3676f 100755 --- a/release.sh +++ b/release.sh @@ -1,18 +1,27 @@ #!/bin/bash # -# Script to perform a release of vector-web. +# Script to perform a release of riot-web. # # Requires github-changelog-generator; to install, do # pip install git+https://github.com/matrix-org/github-changelog-generator.git set -e +orig_args=$@ + +# chomp any args starting with '-' as these need to go +# through to the release script and otherwise we'll get +# confused about what the version arg is. +while [[ "$1" == -* ]]; do + shift +done + cd `dirname $0` for i in matrix-js-sdk matrix-react-sdk do depver=`cat package.json | jq -r .dependencies[\"$i\"]` - latestver=`npm show $i version` + latestver=`yarn info -s $i version` if [ "$depver" != "$latestver" ] then echo "The latest version of $i is $latestver but package.json depends on $depver" @@ -29,13 +38,12 @@ done # bump Electron's package.json first release="${1#v}" tag="v${release}" -echo "electron npm version" +echo "electron yarn version" cd electron_app -npm version --no-git-tag-version "$release" +yarn version --no-git-tag-version --new-version "$release" git commit package.json -m "$tag" - cd .. -exec ./node_modules/matrix-js-sdk/release.sh -z "$@" +exec ./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args" diff --git a/release_config.yaml b/release_config.yaml index 2be2a0de..49d7ccd5 100644 --- a/release_config.yaml +++ b/release_config.yaml @@ -1 +1 @@ -signing_id: packages@riot.im +signing_id: releases@riot.im diff --git a/res/flags/AD.png b/res/flags/AD.png deleted file mode 100644 index d5d59645..00000000 Binary files a/res/flags/AD.png and /dev/null differ diff --git a/res/flags/AE.png b/res/flags/AE.png deleted file mode 100644 index 05c7418a..00000000 Binary files a/res/flags/AE.png and /dev/null differ diff --git a/res/flags/AF.png b/res/flags/AF.png deleted file mode 100644 index bc7cef09..00000000 Binary files a/res/flags/AF.png and /dev/null differ diff --git a/res/flags/AG.png b/res/flags/AG.png deleted file mode 100644 index d48facad..00000000 Binary files a/res/flags/AG.png and /dev/null differ diff --git a/res/flags/AI.png b/res/flags/AI.png deleted file mode 100644 index 8fd27cd3..00000000 Binary files a/res/flags/AI.png and /dev/null differ diff --git a/res/flags/AL.png b/res/flags/AL.png deleted file mode 100644 index 883835ff..00000000 Binary files a/res/flags/AL.png and /dev/null differ diff --git a/res/flags/AM.png b/res/flags/AM.png deleted file mode 100644 index b1bb36b9..00000000 Binary files a/res/flags/AM.png and /dev/null differ diff --git a/res/flags/AO.png b/res/flags/AO.png deleted file mode 100644 index ae68b12c..00000000 Binary files a/res/flags/AO.png and /dev/null differ diff --git a/res/flags/AQ.png b/res/flags/AQ.png deleted file mode 100644 index 146e9c0a..00000000 Binary files a/res/flags/AQ.png and /dev/null differ diff --git a/res/flags/AR.png b/res/flags/AR.png deleted file mode 100644 index 8142adfc..00000000 Binary files a/res/flags/AR.png and /dev/null differ diff --git a/res/flags/AS.png b/res/flags/AS.png deleted file mode 100644 index cc5bf30d..00000000 Binary files a/res/flags/AS.png and /dev/null differ diff --git a/res/flags/AT.png b/res/flags/AT.png deleted file mode 100644 index e32414bd..00000000 Binary files a/res/flags/AT.png and /dev/null differ diff --git a/res/flags/AU.png b/res/flags/AU.png deleted file mode 100644 index 8d1e1437..00000000 Binary files a/res/flags/AU.png and /dev/null differ diff --git a/res/flags/AW.png b/res/flags/AW.png deleted file mode 100644 index 6ec17884..00000000 Binary files a/res/flags/AW.png and /dev/null differ diff --git a/res/flags/AX.png b/res/flags/AX.png deleted file mode 100644 index ba269c04..00000000 Binary files a/res/flags/AX.png and /dev/null differ diff --git a/res/flags/AZ.png b/res/flags/AZ.png deleted file mode 100644 index 2bf3c746..00000000 Binary files a/res/flags/AZ.png and /dev/null differ diff --git a/res/flags/BA.png b/res/flags/BA.png deleted file mode 100644 index 3e3ec3fc..00000000 Binary files a/res/flags/BA.png and /dev/null differ diff --git a/res/flags/BB.png b/res/flags/BB.png deleted file mode 100644 index 694050ca..00000000 Binary files a/res/flags/BB.png and /dev/null differ diff --git a/res/flags/BD.png b/res/flags/BD.png deleted file mode 100644 index 6de2cde8..00000000 Binary files a/res/flags/BD.png and /dev/null differ diff --git a/res/flags/BE.png b/res/flags/BE.png deleted file mode 100644 index 742ba923..00000000 Binary files a/res/flags/BE.png and /dev/null differ diff --git a/res/flags/BF.png b/res/flags/BF.png deleted file mode 100644 index 17f9f67d..00000000 Binary files a/res/flags/BF.png and /dev/null differ diff --git a/res/flags/BG.png b/res/flags/BG.png deleted file mode 100644 index b01d3ff5..00000000 Binary files a/res/flags/BG.png and /dev/null differ diff --git a/res/flags/BH.png b/res/flags/BH.png deleted file mode 100644 index d0f82e82..00000000 Binary files a/res/flags/BH.png and /dev/null differ diff --git a/res/flags/BI.png b/res/flags/BI.png deleted file mode 100644 index 21865ac7..00000000 Binary files a/res/flags/BI.png and /dev/null differ diff --git a/res/flags/BJ.png b/res/flags/BJ.png deleted file mode 100644 index a7c60914..00000000 Binary files a/res/flags/BJ.png and /dev/null differ diff --git a/res/flags/BL.png b/res/flags/BL.png deleted file mode 100644 index 6d50a0f5..00000000 Binary files a/res/flags/BL.png and /dev/null differ diff --git a/res/flags/BM.png b/res/flags/BM.png deleted file mode 100644 index 310a25ea..00000000 Binary files a/res/flags/BM.png and /dev/null differ diff --git a/res/flags/BN.png b/res/flags/BN.png deleted file mode 100644 index bc4da8d9..00000000 Binary files a/res/flags/BN.png and /dev/null differ diff --git a/res/flags/BO.png b/res/flags/BO.png deleted file mode 100644 index 144b8d32..00000000 Binary files a/res/flags/BO.png and /dev/null differ diff --git a/res/flags/BQ.png b/res/flags/BQ.png deleted file mode 100644 index 08979437..00000000 Binary files a/res/flags/BQ.png and /dev/null differ diff --git a/res/flags/BR.png b/res/flags/BR.png deleted file mode 100644 index 02784925..00000000 Binary files a/res/flags/BR.png and /dev/null differ diff --git a/res/flags/BS.png b/res/flags/BS.png deleted file mode 100644 index 2b05a8fc..00000000 Binary files a/res/flags/BS.png and /dev/null differ diff --git a/res/flags/BT.png b/res/flags/BT.png deleted file mode 100644 index 1f031df0..00000000 Binary files a/res/flags/BT.png and /dev/null differ diff --git a/res/flags/BV.png b/res/flags/BV.png deleted file mode 100644 index aafb0f17..00000000 Binary files a/res/flags/BV.png and /dev/null differ diff --git a/res/flags/BW.png b/res/flags/BW.png deleted file mode 100644 index 30840167..00000000 Binary files a/res/flags/BW.png and /dev/null differ diff --git a/res/flags/BY.png b/res/flags/BY.png deleted file mode 100644 index ce9de9c9..00000000 Binary files a/res/flags/BY.png and /dev/null differ diff --git a/res/flags/BZ.png b/res/flags/BZ.png deleted file mode 100644 index 33620c3f..00000000 Binary files a/res/flags/BZ.png and /dev/null differ diff --git a/res/flags/CA.png b/res/flags/CA.png deleted file mode 100644 index 4bbf8b11..00000000 Binary files a/res/flags/CA.png and /dev/null differ diff --git a/res/flags/CC.png b/res/flags/CC.png deleted file mode 100644 index fd40fc8a..00000000 Binary files a/res/flags/CC.png and /dev/null differ diff --git a/res/flags/CD.png b/res/flags/CD.png deleted file mode 100644 index 230aacd4..00000000 Binary files a/res/flags/CD.png and /dev/null differ diff --git a/res/flags/CF.png b/res/flags/CF.png deleted file mode 100644 index c58ed4f7..00000000 Binary files a/res/flags/CF.png and /dev/null differ diff --git a/res/flags/CG.png b/res/flags/CG.png deleted file mode 100644 index 6c2441e3..00000000 Binary files a/res/flags/CG.png and /dev/null differ diff --git a/res/flags/CH.png b/res/flags/CH.png deleted file mode 100644 index 9fd87167..00000000 Binary files a/res/flags/CH.png and /dev/null differ diff --git a/res/flags/CI.png b/res/flags/CI.png deleted file mode 100644 index 9741b9b1..00000000 Binary files a/res/flags/CI.png and /dev/null differ diff --git a/res/flags/CK.png b/res/flags/CK.png deleted file mode 100644 index 6cca3596..00000000 Binary files a/res/flags/CK.png and /dev/null differ diff --git a/res/flags/CL.png b/res/flags/CL.png deleted file mode 100644 index 13b993d1..00000000 Binary files a/res/flags/CL.png and /dev/null differ diff --git a/res/flags/CM.png b/res/flags/CM.png deleted file mode 100644 index bca5730f..00000000 Binary files a/res/flags/CM.png and /dev/null differ diff --git a/res/flags/CN.png b/res/flags/CN.png deleted file mode 100644 index e086855c..00000000 Binary files a/res/flags/CN.png and /dev/null differ diff --git a/res/flags/CO.png b/res/flags/CO.png deleted file mode 100644 index 65c0aba4..00000000 Binary files a/res/flags/CO.png and /dev/null differ diff --git a/res/flags/CR.png b/res/flags/CR.png deleted file mode 100644 index b351c67a..00000000 Binary files a/res/flags/CR.png and /dev/null differ diff --git a/res/flags/CU.png b/res/flags/CU.png deleted file mode 100644 index e7a25c60..00000000 Binary files a/res/flags/CU.png and /dev/null differ diff --git a/res/flags/CV.png b/res/flags/CV.png deleted file mode 100644 index f249bbaa..00000000 Binary files a/res/flags/CV.png and /dev/null differ diff --git a/res/flags/CW.png b/res/flags/CW.png deleted file mode 100644 index e02cacd3..00000000 Binary files a/res/flags/CW.png and /dev/null differ diff --git a/res/flags/CX.png b/res/flags/CX.png deleted file mode 100644 index 3ea21422..00000000 Binary files a/res/flags/CX.png and /dev/null differ diff --git a/res/flags/CY.png b/res/flags/CY.png deleted file mode 100644 index 3182f48b..00000000 Binary files a/res/flags/CY.png and /dev/null differ diff --git a/res/flags/CZ.png b/res/flags/CZ.png deleted file mode 100644 index 54623346..00000000 Binary files a/res/flags/CZ.png and /dev/null differ diff --git a/res/flags/DE.png b/res/flags/DE.png deleted file mode 100644 index 93e26916..00000000 Binary files a/res/flags/DE.png and /dev/null differ diff --git a/res/flags/DJ.png b/res/flags/DJ.png deleted file mode 100644 index 243bb739..00000000 Binary files a/res/flags/DJ.png and /dev/null differ diff --git a/res/flags/DK.png b/res/flags/DK.png deleted file mode 100644 index fc74cc39..00000000 Binary files a/res/flags/DK.png and /dev/null differ diff --git a/res/flags/DM.png b/res/flags/DM.png deleted file mode 100644 index c3a0e9d1..00000000 Binary files a/res/flags/DM.png and /dev/null differ diff --git a/res/flags/DO.png b/res/flags/DO.png deleted file mode 100644 index 5c4a004f..00000000 Binary files a/res/flags/DO.png and /dev/null differ diff --git a/res/flags/DZ.png b/res/flags/DZ.png deleted file mode 100644 index 1589d0cc..00000000 Binary files a/res/flags/DZ.png and /dev/null differ diff --git a/res/flags/EC.png b/res/flags/EC.png deleted file mode 100644 index 4c53dead..00000000 Binary files a/res/flags/EC.png and /dev/null differ diff --git a/res/flags/EE.png b/res/flags/EE.png deleted file mode 100644 index 3668de79..00000000 Binary files a/res/flags/EE.png and /dev/null differ diff --git a/res/flags/EG.png b/res/flags/EG.png deleted file mode 100644 index 66ec709d..00000000 Binary files a/res/flags/EG.png and /dev/null differ diff --git a/res/flags/EH.png b/res/flags/EH.png deleted file mode 100644 index 148be93c..00000000 Binary files a/res/flags/EH.png and /dev/null differ diff --git a/res/flags/ER.png b/res/flags/ER.png deleted file mode 100644 index 7cb84415..00000000 Binary files a/res/flags/ER.png and /dev/null differ diff --git a/res/flags/ES.png b/res/flags/ES.png deleted file mode 100644 index aae73b6f..00000000 Binary files a/res/flags/ES.png and /dev/null differ diff --git a/res/flags/ET.png b/res/flags/ET.png deleted file mode 100644 index 7b420f02..00000000 Binary files a/res/flags/ET.png and /dev/null differ diff --git a/res/flags/FI.png b/res/flags/FI.png deleted file mode 100644 index 42f64bf3..00000000 Binary files a/res/flags/FI.png and /dev/null differ diff --git a/res/flags/FJ.png b/res/flags/FJ.png deleted file mode 100644 index cecc683c..00000000 Binary files a/res/flags/FJ.png and /dev/null differ diff --git a/res/flags/FK.png b/res/flags/FK.png deleted file mode 100644 index 6074fea0..00000000 Binary files a/res/flags/FK.png and /dev/null differ diff --git a/res/flags/FM.png b/res/flags/FM.png deleted file mode 100644 index 45fdb664..00000000 Binary files a/res/flags/FM.png and /dev/null differ diff --git a/res/flags/FO.png b/res/flags/FO.png deleted file mode 100644 index d8fd75c6..00000000 Binary files a/res/flags/FO.png and /dev/null differ diff --git a/res/flags/FR.png b/res/flags/FR.png deleted file mode 100644 index 6d50a0f5..00000000 Binary files a/res/flags/FR.png and /dev/null differ diff --git a/res/flags/GA.png b/res/flags/GA.png deleted file mode 100644 index 3808a61f..00000000 Binary files a/res/flags/GA.png and /dev/null differ diff --git a/res/flags/GB.png b/res/flags/GB.png deleted file mode 100644 index 589be700..00000000 Binary files a/res/flags/GB.png and /dev/null differ diff --git a/res/flags/GD.png b/res/flags/GD.png deleted file mode 100644 index babe1e4c..00000000 Binary files a/res/flags/GD.png and /dev/null differ diff --git a/res/flags/GE.png b/res/flags/GE.png deleted file mode 100644 index d34cddec..00000000 Binary files a/res/flags/GE.png and /dev/null differ diff --git a/res/flags/GF.png b/res/flags/GF.png deleted file mode 100644 index 98828a59..00000000 Binary files a/res/flags/GF.png and /dev/null differ diff --git a/res/flags/GG.png b/res/flags/GG.png deleted file mode 100644 index aec8969b..00000000 Binary files a/res/flags/GG.png and /dev/null differ diff --git a/res/flags/GH.png b/res/flags/GH.png deleted file mode 100644 index 70b1a623..00000000 Binary files a/res/flags/GH.png and /dev/null differ diff --git a/res/flags/GI.png b/res/flags/GI.png deleted file mode 100644 index 9aa58327..00000000 Binary files a/res/flags/GI.png and /dev/null differ diff --git a/res/flags/GL.png b/res/flags/GL.png deleted file mode 100644 index cf1645c2..00000000 Binary files a/res/flags/GL.png and /dev/null differ diff --git a/res/flags/GM.png b/res/flags/GM.png deleted file mode 100644 index ec374fb3..00000000 Binary files a/res/flags/GM.png and /dev/null differ diff --git a/res/flags/GN.png b/res/flags/GN.png deleted file mode 100644 index 46874b4d..00000000 Binary files a/res/flags/GN.png and /dev/null differ diff --git a/res/flags/GP.png b/res/flags/GP.png deleted file mode 100644 index 81b7abdf..00000000 Binary files a/res/flags/GP.png and /dev/null differ diff --git a/res/flags/GQ.png b/res/flags/GQ.png deleted file mode 100644 index 7fd1015e..00000000 Binary files a/res/flags/GQ.png and /dev/null differ diff --git a/res/flags/GR.png b/res/flags/GR.png deleted file mode 100644 index 101de51e..00000000 Binary files a/res/flags/GR.png and /dev/null differ diff --git a/res/flags/GS.png b/res/flags/GS.png deleted file mode 100644 index 772c2cbe..00000000 Binary files a/res/flags/GS.png and /dev/null differ diff --git a/res/flags/GT.png b/res/flags/GT.png deleted file mode 100644 index d5bd8c1e..00000000 Binary files a/res/flags/GT.png and /dev/null differ diff --git a/res/flags/GU.png b/res/flags/GU.png deleted file mode 100644 index 8923085d..00000000 Binary files a/res/flags/GU.png and /dev/null differ diff --git a/res/flags/GW.png b/res/flags/GW.png deleted file mode 100644 index 20c268ce..00000000 Binary files a/res/flags/GW.png and /dev/null differ diff --git a/res/flags/GY.png b/res/flags/GY.png deleted file mode 100644 index 86f56635..00000000 Binary files a/res/flags/GY.png and /dev/null differ diff --git a/res/flags/HK.png b/res/flags/HK.png deleted file mode 100644 index 907dc596..00000000 Binary files a/res/flags/HK.png and /dev/null differ diff --git a/res/flags/HM.png b/res/flags/HM.png deleted file mode 100644 index 8d1e1437..00000000 Binary files a/res/flags/HM.png and /dev/null differ diff --git a/res/flags/HN.png b/res/flags/HN.png deleted file mode 100644 index 4cf8c311..00000000 Binary files a/res/flags/HN.png and /dev/null differ diff --git a/res/flags/HR.png b/res/flags/HR.png deleted file mode 100644 index 413ceb15..00000000 Binary files a/res/flags/HR.png and /dev/null differ diff --git a/res/flags/HT.png b/res/flags/HT.png deleted file mode 100644 index 097abeb4..00000000 Binary files a/res/flags/HT.png and /dev/null differ diff --git a/res/flags/HU.png b/res/flags/HU.png deleted file mode 100644 index 23499bf6..00000000 Binary files a/res/flags/HU.png and /dev/null differ diff --git a/res/flags/ID.png b/res/flags/ID.png deleted file mode 100644 index 80200657..00000000 Binary files a/res/flags/ID.png and /dev/null differ diff --git a/res/flags/IE.png b/res/flags/IE.png deleted file mode 100644 index 63f22201..00000000 Binary files a/res/flags/IE.png and /dev/null differ diff --git a/res/flags/IL.png b/res/flags/IL.png deleted file mode 100644 index 02688263..00000000 Binary files a/res/flags/IL.png and /dev/null differ diff --git a/res/flags/IM.png b/res/flags/IM.png deleted file mode 100644 index c777acc4..00000000 Binary files a/res/flags/IM.png and /dev/null differ diff --git a/res/flags/IN.png b/res/flags/IN.png deleted file mode 100644 index 85fa9bfe..00000000 Binary files a/res/flags/IN.png and /dev/null differ diff --git a/res/flags/IO.png b/res/flags/IO.png deleted file mode 100644 index 1675d8e7..00000000 Binary files a/res/flags/IO.png and /dev/null differ diff --git a/res/flags/IQ.png b/res/flags/IQ.png deleted file mode 100644 index f2c21f72..00000000 Binary files a/res/flags/IQ.png and /dev/null differ diff --git a/res/flags/IR.png b/res/flags/IR.png deleted file mode 100644 index 0b8e6750..00000000 Binary files a/res/flags/IR.png and /dev/null differ diff --git a/res/flags/IS.png b/res/flags/IS.png deleted file mode 100644 index 5ee3e63c..00000000 Binary files a/res/flags/IS.png and /dev/null differ diff --git a/res/flags/IT.png b/res/flags/IT.png deleted file mode 100644 index 53b967be..00000000 Binary files a/res/flags/IT.png and /dev/null differ diff --git a/res/flags/JE.png b/res/flags/JE.png deleted file mode 100644 index a1437aba..00000000 Binary files a/res/flags/JE.png and /dev/null differ diff --git a/res/flags/JM.png b/res/flags/JM.png deleted file mode 100644 index 0d462fa3..00000000 Binary files a/res/flags/JM.png and /dev/null differ diff --git a/res/flags/JO.png b/res/flags/JO.png deleted file mode 100644 index 8934db7e..00000000 Binary files a/res/flags/JO.png and /dev/null differ diff --git a/res/flags/JP.png b/res/flags/JP.png deleted file mode 100644 index 6f92d523..00000000 Binary files a/res/flags/JP.png and /dev/null differ diff --git a/res/flags/KE.png b/res/flags/KE.png deleted file mode 100644 index 866b3f15..00000000 Binary files a/res/flags/KE.png and /dev/null differ diff --git a/res/flags/KG.png b/res/flags/KG.png deleted file mode 100644 index 56b433c7..00000000 Binary files a/res/flags/KG.png and /dev/null differ diff --git a/res/flags/KH.png b/res/flags/KH.png deleted file mode 100644 index e1ddd5f8..00000000 Binary files a/res/flags/KH.png and /dev/null differ diff --git a/res/flags/KI.png b/res/flags/KI.png deleted file mode 100644 index 8b7c54bc..00000000 Binary files a/res/flags/KI.png and /dev/null differ diff --git a/res/flags/KM.png b/res/flags/KM.png deleted file mode 100644 index 227a3b33..00000000 Binary files a/res/flags/KM.png and /dev/null differ diff --git a/res/flags/KN.png b/res/flags/KN.png deleted file mode 100644 index bc6189be..00000000 Binary files a/res/flags/KN.png and /dev/null differ diff --git a/res/flags/KP.png b/res/flags/KP.png deleted file mode 100644 index c92248b9..00000000 Binary files a/res/flags/KP.png and /dev/null differ diff --git a/res/flags/KR.png b/res/flags/KR.png deleted file mode 100644 index ab1cb949..00000000 Binary files a/res/flags/KR.png and /dev/null differ diff --git a/res/flags/KW.png b/res/flags/KW.png deleted file mode 100644 index 0b41c7a5..00000000 Binary files a/res/flags/KW.png and /dev/null differ diff --git a/res/flags/KY.png b/res/flags/KY.png deleted file mode 100644 index 7af5290d..00000000 Binary files a/res/flags/KY.png and /dev/null differ diff --git a/res/flags/KZ.png b/res/flags/KZ.png deleted file mode 100644 index e10a1255..00000000 Binary files a/res/flags/KZ.png and /dev/null differ diff --git a/res/flags/LA.png b/res/flags/LA.png deleted file mode 100644 index 6ad67d42..00000000 Binary files a/res/flags/LA.png and /dev/null differ diff --git a/res/flags/LB.png b/res/flags/LB.png deleted file mode 100644 index 865df57a..00000000 Binary files a/res/flags/LB.png and /dev/null differ diff --git a/res/flags/LC.png b/res/flags/LC.png deleted file mode 100644 index e83a2d08..00000000 Binary files a/res/flags/LC.png and /dev/null differ diff --git a/res/flags/LI.png b/res/flags/LI.png deleted file mode 100644 index 57034d36..00000000 Binary files a/res/flags/LI.png and /dev/null differ diff --git a/res/flags/LK.png b/res/flags/LK.png deleted file mode 100644 index 6e7ad582..00000000 Binary files a/res/flags/LK.png and /dev/null differ diff --git a/res/flags/LR.png b/res/flags/LR.png deleted file mode 100644 index 46c3b84a..00000000 Binary files a/res/flags/LR.png and /dev/null differ diff --git a/res/flags/LS.png b/res/flags/LS.png deleted file mode 100644 index 79b505d4..00000000 Binary files a/res/flags/LS.png and /dev/null differ diff --git a/res/flags/LT.png b/res/flags/LT.png deleted file mode 100644 index 7740cdc0..00000000 Binary files a/res/flags/LT.png and /dev/null differ diff --git a/res/flags/LU.png b/res/flags/LU.png deleted file mode 100644 index 8f383e67..00000000 Binary files a/res/flags/LU.png and /dev/null differ diff --git a/res/flags/LV.png b/res/flags/LV.png deleted file mode 100644 index a0f36d89..00000000 Binary files a/res/flags/LV.png and /dev/null differ diff --git a/res/flags/LY.png b/res/flags/LY.png deleted file mode 100644 index 2884c4c0..00000000 Binary files a/res/flags/LY.png and /dev/null differ diff --git a/res/flags/MA.png b/res/flags/MA.png deleted file mode 100644 index 1f76cfc9..00000000 Binary files a/res/flags/MA.png and /dev/null differ diff --git a/res/flags/MC.png b/res/flags/MC.png deleted file mode 100644 index 06fc2ad1..00000000 Binary files a/res/flags/MC.png and /dev/null differ diff --git a/res/flags/MD.png b/res/flags/MD.png deleted file mode 100644 index 8e54c2b8..00000000 Binary files a/res/flags/MD.png and /dev/null differ diff --git a/res/flags/ME.png b/res/flags/ME.png deleted file mode 100644 index 97424d4e..00000000 Binary files a/res/flags/ME.png and /dev/null differ diff --git a/res/flags/MF.png b/res/flags/MF.png deleted file mode 100644 index 6d50a0f5..00000000 Binary files a/res/flags/MF.png and /dev/null differ diff --git a/res/flags/MG.png b/res/flags/MG.png deleted file mode 100644 index 28bfccc9..00000000 Binary files a/res/flags/MG.png and /dev/null differ diff --git a/res/flags/MH.png b/res/flags/MH.png deleted file mode 100644 index e482a659..00000000 Binary files a/res/flags/MH.png and /dev/null differ diff --git a/res/flags/MK.png b/res/flags/MK.png deleted file mode 100644 index 84e2e65e..00000000 Binary files a/res/flags/MK.png and /dev/null differ diff --git a/res/flags/ML.png b/res/flags/ML.png deleted file mode 100644 index 38fec347..00000000 Binary files a/res/flags/ML.png and /dev/null differ diff --git a/res/flags/MM.png b/res/flags/MM.png deleted file mode 100644 index 70a03c6b..00000000 Binary files a/res/flags/MM.png and /dev/null differ diff --git a/res/flags/MN.png b/res/flags/MN.png deleted file mode 100644 index 1e1bbe60..00000000 Binary files a/res/flags/MN.png and /dev/null differ diff --git a/res/flags/MO.png b/res/flags/MO.png deleted file mode 100644 index 3833d683..00000000 Binary files a/res/flags/MO.png and /dev/null differ diff --git a/res/flags/MP.png b/res/flags/MP.png deleted file mode 100644 index 63119096..00000000 Binary files a/res/flags/MP.png and /dev/null differ diff --git a/res/flags/MQ.png b/res/flags/MQ.png deleted file mode 100644 index 9cab441a..00000000 Binary files a/res/flags/MQ.png and /dev/null differ diff --git a/res/flags/MR.png b/res/flags/MR.png deleted file mode 100644 index c144de17..00000000 Binary files a/res/flags/MR.png and /dev/null differ diff --git a/res/flags/MS.png b/res/flags/MS.png deleted file mode 100644 index 12217070..00000000 Binary files a/res/flags/MS.png and /dev/null differ diff --git a/res/flags/MT.png b/res/flags/MT.png deleted file mode 100644 index 7963aa61..00000000 Binary files a/res/flags/MT.png and /dev/null differ diff --git a/res/flags/MU.png b/res/flags/MU.png deleted file mode 100644 index d5d4d400..00000000 Binary files a/res/flags/MU.png and /dev/null differ diff --git a/res/flags/MV.png b/res/flags/MV.png deleted file mode 100644 index 0f2ecb43..00000000 Binary files a/res/flags/MV.png and /dev/null differ diff --git a/res/flags/MW.png b/res/flags/MW.png deleted file mode 100644 index d0a5d24f..00000000 Binary files a/res/flags/MW.png and /dev/null differ diff --git a/res/flags/MX.png b/res/flags/MX.png deleted file mode 100644 index 096cb111..00000000 Binary files a/res/flags/MX.png and /dev/null differ diff --git a/res/flags/MY.png b/res/flags/MY.png deleted file mode 100644 index 17f18ac5..00000000 Binary files a/res/flags/MY.png and /dev/null differ diff --git a/res/flags/MZ.png b/res/flags/MZ.png deleted file mode 100644 index 66be6563..00000000 Binary files a/res/flags/MZ.png and /dev/null differ diff --git a/res/flags/NA.png b/res/flags/NA.png deleted file mode 100644 index 7ecfd317..00000000 Binary files a/res/flags/NA.png and /dev/null differ diff --git a/res/flags/NC.png b/res/flags/NC.png deleted file mode 100644 index 11126ade..00000000 Binary files a/res/flags/NC.png and /dev/null differ diff --git a/res/flags/NE.png b/res/flags/NE.png deleted file mode 100644 index d584fa84..00000000 Binary files a/res/flags/NE.png and /dev/null differ diff --git a/res/flags/NF.png b/res/flags/NF.png deleted file mode 100644 index c0540425..00000000 Binary files a/res/flags/NF.png and /dev/null differ diff --git a/res/flags/NG.png b/res/flags/NG.png deleted file mode 100644 index 73aee15b..00000000 Binary files a/res/flags/NG.png and /dev/null differ diff --git a/res/flags/NI.png b/res/flags/NI.png deleted file mode 100644 index fd044933..00000000 Binary files a/res/flags/NI.png and /dev/null differ diff --git a/res/flags/NL.png b/res/flags/NL.png deleted file mode 100644 index 08979437..00000000 Binary files a/res/flags/NL.png and /dev/null differ diff --git a/res/flags/NO.png b/res/flags/NO.png deleted file mode 100644 index aafb0f17..00000000 Binary files a/res/flags/NO.png and /dev/null differ diff --git a/res/flags/NP.png b/res/flags/NP.png deleted file mode 100644 index 744458e1..00000000 Binary files a/res/flags/NP.png and /dev/null differ diff --git a/res/flags/NR.png b/res/flags/NR.png deleted file mode 100644 index 58c2afb2..00000000 Binary files a/res/flags/NR.png and /dev/null differ diff --git a/res/flags/NU.png b/res/flags/NU.png deleted file mode 100644 index 007c99ec..00000000 Binary files a/res/flags/NU.png and /dev/null differ diff --git a/res/flags/NZ.png b/res/flags/NZ.png deleted file mode 100644 index 839368dd..00000000 Binary files a/res/flags/NZ.png and /dev/null differ diff --git a/res/flags/OM.png b/res/flags/OM.png deleted file mode 100644 index 63a89336..00000000 Binary files a/res/flags/OM.png and /dev/null differ diff --git a/res/flags/PA.png b/res/flags/PA.png deleted file mode 100644 index 3515d95d..00000000 Binary files a/res/flags/PA.png and /dev/null differ diff --git a/res/flags/PE.png b/res/flags/PE.png deleted file mode 100644 index 58f70b8d..00000000 Binary files a/res/flags/PE.png and /dev/null differ diff --git a/res/flags/PF.png b/res/flags/PF.png deleted file mode 100644 index 2f33f257..00000000 Binary files a/res/flags/PF.png and /dev/null differ diff --git a/res/flags/PG.png b/res/flags/PG.png deleted file mode 100644 index c796f587..00000000 Binary files a/res/flags/PG.png and /dev/null differ diff --git a/res/flags/PH.png b/res/flags/PH.png deleted file mode 100644 index 0d98de03..00000000 Binary files a/res/flags/PH.png and /dev/null differ diff --git a/res/flags/PK.png b/res/flags/PK.png deleted file mode 100644 index 87f4e2f4..00000000 Binary files a/res/flags/PK.png and /dev/null differ diff --git a/res/flags/PL.png b/res/flags/PL.png deleted file mode 100644 index 273869df..00000000 Binary files a/res/flags/PL.png and /dev/null differ diff --git a/res/flags/PM.png b/res/flags/PM.png deleted file mode 100644 index b74c396d..00000000 Binary files a/res/flags/PM.png and /dev/null differ diff --git a/res/flags/PN.png b/res/flags/PN.png deleted file mode 100644 index e34c62d5..00000000 Binary files a/res/flags/PN.png and /dev/null differ diff --git a/res/flags/PR.png b/res/flags/PR.png deleted file mode 100644 index 8efdb912..00000000 Binary files a/res/flags/PR.png and /dev/null differ diff --git a/res/flags/PS.png b/res/flags/PS.png deleted file mode 100644 index 7a0cceec..00000000 Binary files a/res/flags/PS.png and /dev/null differ diff --git a/res/flags/PT.png b/res/flags/PT.png deleted file mode 100644 index 49e29082..00000000 Binary files a/res/flags/PT.png and /dev/null differ diff --git a/res/flags/PW.png b/res/flags/PW.png deleted file mode 100644 index 6cb2e1e7..00000000 Binary files a/res/flags/PW.png and /dev/null differ diff --git a/res/flags/PY.png b/res/flags/PY.png deleted file mode 100644 index a61c42c4..00000000 Binary files a/res/flags/PY.png and /dev/null differ diff --git a/res/flags/QA.png b/res/flags/QA.png deleted file mode 100644 index bb091cc8..00000000 Binary files a/res/flags/QA.png and /dev/null differ diff --git a/res/flags/RE.png b/res/flags/RE.png deleted file mode 100644 index 6d50a0f5..00000000 Binary files a/res/flags/RE.png and /dev/null differ diff --git a/res/flags/RO.png b/res/flags/RO.png deleted file mode 100644 index 4495d29e..00000000 Binary files a/res/flags/RO.png and /dev/null differ diff --git a/res/flags/RS.png b/res/flags/RS.png deleted file mode 100644 index ebb0f28a..00000000 Binary files a/res/flags/RS.png and /dev/null differ diff --git a/res/flags/RU.png b/res/flags/RU.png deleted file mode 100644 index 64532ffa..00000000 Binary files a/res/flags/RU.png and /dev/null differ diff --git a/res/flags/RW.png b/res/flags/RW.png deleted file mode 100644 index 64b3cfff..00000000 Binary files a/res/flags/RW.png and /dev/null differ diff --git a/res/flags/SA.png b/res/flags/SA.png deleted file mode 100644 index 250de6f6..00000000 Binary files a/res/flags/SA.png and /dev/null differ diff --git a/res/flags/SB.png b/res/flags/SB.png deleted file mode 100644 index 5833c130..00000000 Binary files a/res/flags/SB.png and /dev/null differ diff --git a/res/flags/SC.png b/res/flags/SC.png deleted file mode 100644 index ce5248f4..00000000 Binary files a/res/flags/SC.png and /dev/null differ diff --git a/res/flags/SD.png b/res/flags/SD.png deleted file mode 100644 index d8711a83..00000000 Binary files a/res/flags/SD.png and /dev/null differ diff --git a/res/flags/SE.png b/res/flags/SE.png deleted file mode 100644 index 81880931..00000000 Binary files a/res/flags/SE.png and /dev/null differ diff --git a/res/flags/SG.png b/res/flags/SG.png deleted file mode 100644 index 6f00e579..00000000 Binary files a/res/flags/SG.png and /dev/null differ diff --git a/res/flags/SH.png b/res/flags/SH.png deleted file mode 100644 index 055dde68..00000000 Binary files a/res/flags/SH.png and /dev/null differ diff --git a/res/flags/SI.png b/res/flags/SI.png deleted file mode 100644 index 96359834..00000000 Binary files a/res/flags/SI.png and /dev/null differ diff --git a/res/flags/SJ.png b/res/flags/SJ.png deleted file mode 100644 index aafb0f17..00000000 Binary files a/res/flags/SJ.png and /dev/null differ diff --git a/res/flags/SK.png b/res/flags/SK.png deleted file mode 100644 index 84c7021f..00000000 Binary files a/res/flags/SK.png and /dev/null differ diff --git a/res/flags/SL.png b/res/flags/SL.png deleted file mode 100644 index c5ed1991..00000000 Binary files a/res/flags/SL.png and /dev/null differ diff --git a/res/flags/SM.png b/res/flags/SM.png deleted file mode 100644 index 1af1ca28..00000000 Binary files a/res/flags/SM.png and /dev/null differ diff --git a/res/flags/SN.png b/res/flags/SN.png deleted file mode 100644 index d0b18435..00000000 Binary files a/res/flags/SN.png and /dev/null differ diff --git a/res/flags/SO.png b/res/flags/SO.png deleted file mode 100644 index 64e2970b..00000000 Binary files a/res/flags/SO.png and /dev/null differ diff --git a/res/flags/SR.png b/res/flags/SR.png deleted file mode 100644 index b072dda8..00000000 Binary files a/res/flags/SR.png and /dev/null differ diff --git a/res/flags/SS.png b/res/flags/SS.png deleted file mode 100644 index 83933d45..00000000 Binary files a/res/flags/SS.png and /dev/null differ diff --git a/res/flags/ST.png b/res/flags/ST.png deleted file mode 100644 index c102721a..00000000 Binary files a/res/flags/ST.png and /dev/null differ diff --git a/res/flags/SV.png b/res/flags/SV.png deleted file mode 100644 index 80de92e5..00000000 Binary files a/res/flags/SV.png and /dev/null differ diff --git a/res/flags/SX.png b/res/flags/SX.png deleted file mode 100644 index dd52215c..00000000 Binary files a/res/flags/SX.png and /dev/null differ diff --git a/res/flags/SY.png b/res/flags/SY.png deleted file mode 100644 index 78f45b7c..00000000 Binary files a/res/flags/SY.png and /dev/null differ diff --git a/res/flags/SZ.png b/res/flags/SZ.png deleted file mode 100644 index 2182f4ff..00000000 Binary files a/res/flags/SZ.png and /dev/null differ diff --git a/res/flags/TC.png b/res/flags/TC.png deleted file mode 100644 index 3e3e19d4..00000000 Binary files a/res/flags/TC.png and /dev/null differ diff --git a/res/flags/TD.png b/res/flags/TD.png deleted file mode 100644 index 753bec22..00000000 Binary files a/res/flags/TD.png and /dev/null differ diff --git a/res/flags/TF.png b/res/flags/TF.png deleted file mode 100644 index 6d50a0f5..00000000 Binary files a/res/flags/TF.png and /dev/null differ diff --git a/res/flags/TG.png b/res/flags/TG.png deleted file mode 100644 index 8501ada6..00000000 Binary files a/res/flags/TG.png and /dev/null differ diff --git a/res/flags/TH.png b/res/flags/TH.png deleted file mode 100644 index 0c884c32..00000000 Binary files a/res/flags/TH.png and /dev/null differ diff --git a/res/flags/TJ.png b/res/flags/TJ.png deleted file mode 100644 index 3c9026fa..00000000 Binary files a/res/flags/TJ.png and /dev/null differ diff --git a/res/flags/TK.png b/res/flags/TK.png deleted file mode 100644 index fd605749..00000000 Binary files a/res/flags/TK.png and /dev/null differ diff --git a/res/flags/TL.png b/res/flags/TL.png deleted file mode 100644 index b4c834b1..00000000 Binary files a/res/flags/TL.png and /dev/null differ diff --git a/res/flags/TM.png b/res/flags/TM.png deleted file mode 100644 index d18cb939..00000000 Binary files a/res/flags/TM.png and /dev/null differ diff --git a/res/flags/TN.png b/res/flags/TN.png deleted file mode 100644 index 21c4b98b..00000000 Binary files a/res/flags/TN.png and /dev/null differ diff --git a/res/flags/TO.png b/res/flags/TO.png deleted file mode 100644 index c828206e..00000000 Binary files a/res/flags/TO.png and /dev/null differ diff --git a/res/flags/TR.png b/res/flags/TR.png deleted file mode 100644 index f2a5bd22..00000000 Binary files a/res/flags/TR.png and /dev/null differ diff --git a/res/flags/TT.png b/res/flags/TT.png deleted file mode 100644 index 66d69833..00000000 Binary files a/res/flags/TT.png and /dev/null differ diff --git a/res/flags/TV.png b/res/flags/TV.png deleted file mode 100644 index 7a127f51..00000000 Binary files a/res/flags/TV.png and /dev/null differ diff --git a/res/flags/TW.png b/res/flags/TW.png deleted file mode 100644 index 2353ba1b..00000000 Binary files a/res/flags/TW.png and /dev/null differ diff --git a/res/flags/TZ.png b/res/flags/TZ.png deleted file mode 100644 index 7949f65d..00000000 Binary files a/res/flags/TZ.png and /dev/null differ diff --git a/res/flags/UA.png b/res/flags/UA.png deleted file mode 100644 index 687e3052..00000000 Binary files a/res/flags/UA.png and /dev/null differ diff --git a/res/flags/UG.png b/res/flags/UG.png deleted file mode 100644 index 0a21ad15..00000000 Binary files a/res/flags/UG.png and /dev/null differ diff --git a/res/flags/US.png b/res/flags/US.png deleted file mode 100644 index c3a245b7..00000000 Binary files a/res/flags/US.png and /dev/null differ diff --git a/res/flags/UY.png b/res/flags/UY.png deleted file mode 100644 index 21a347c6..00000000 Binary files a/res/flags/UY.png and /dev/null differ diff --git a/res/flags/UZ.png b/res/flags/UZ.png deleted file mode 100644 index 643b6ae0..00000000 Binary files a/res/flags/UZ.png and /dev/null differ diff --git a/res/flags/VA.png b/res/flags/VA.png deleted file mode 100644 index 63a13c0e..00000000 Binary files a/res/flags/VA.png and /dev/null differ diff --git a/res/flags/VC.png b/res/flags/VC.png deleted file mode 100644 index da991a93..00000000 Binary files a/res/flags/VC.png and /dev/null differ diff --git a/res/flags/VE.png b/res/flags/VE.png deleted file mode 100644 index e75e17c9..00000000 Binary files a/res/flags/VE.png and /dev/null differ diff --git a/res/flags/VG.png b/res/flags/VG.png deleted file mode 100644 index 46f93cad..00000000 Binary files a/res/flags/VG.png and /dev/null differ diff --git a/res/flags/VI.png b/res/flags/VI.png deleted file mode 100644 index 8c849a73..00000000 Binary files a/res/flags/VI.png and /dev/null differ diff --git a/res/flags/VN.png b/res/flags/VN.png deleted file mode 100644 index 6ea2122f..00000000 Binary files a/res/flags/VN.png and /dev/null differ diff --git a/res/flags/VU.png b/res/flags/VU.png deleted file mode 100644 index bad3ba4d..00000000 Binary files a/res/flags/VU.png and /dev/null differ diff --git a/res/flags/WF.png b/res/flags/WF.png deleted file mode 100644 index d94359dc..00000000 Binary files a/res/flags/WF.png and /dev/null differ diff --git a/res/flags/WS.png b/res/flags/WS.png deleted file mode 100644 index f8b80e5b..00000000 Binary files a/res/flags/WS.png and /dev/null differ diff --git a/res/flags/YE.png b/res/flags/YE.png deleted file mode 100644 index 8b9bbd89..00000000 Binary files a/res/flags/YE.png and /dev/null differ diff --git a/res/flags/YT.png b/res/flags/YT.png deleted file mode 100644 index 32887936..00000000 Binary files a/res/flags/YT.png and /dev/null differ diff --git a/res/flags/ZA.png b/res/flags/ZA.png deleted file mode 100644 index 7f0a52d3..00000000 Binary files a/res/flags/ZA.png and /dev/null differ diff --git a/res/flags/ZM.png b/res/flags/ZM.png deleted file mode 100644 index 87adc3af..00000000 Binary files a/res/flags/ZM.png and /dev/null differ diff --git a/res/flags/ZW.png b/res/flags/ZW.png deleted file mode 100644 index 742c9f7e..00000000 Binary files a/res/flags/ZW.png and /dev/null differ diff --git a/res/home-status.html b/res/home-status.html deleted file mode 100644 index 7d50470a..00000000 --- a/res/home-status.html +++ /dev/null @@ -1,192 +0,0 @@ -<style type="text/css"> - -/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid - * voodoo where we have to set display: none by default - */ - -.mx_HomePage_container { - text-align: center; - display: block ! important; - width: 690px; - margin: 20px; -} - -.mx_HomePage_header { - margin-top: 37px; - margin-left: 10px; - width: 670px; - box-sizing: border-box; - font-size: 18px; - background-color: #fff; - box-shadow: 0px 2px 10px 0px rgba(48,55,81,0.05); - border-radius: 5px; - padding: 20px 80px 20px 80px; - align-items: center; -} - -.mx_HomePage_header h1 { - font-size: 29px; - margin-bottom: 10px; -} - -.mx_HomePage_intro h2 { - margin-top: 32px; - font-size: 25px; - color: #49555F; -} - -.mx_HomePage_intro { - margin: auto; - width: 600px; - margin-top: 40px; - margin-bottom: 40px; - font-size: 18px; -} - -.mx_HomePage_coc { - font-size: 16px; -} - -.mx_HomePage_coc a { - color: #4360DF; -} - -.mx_HomePage_room, .mx_HomePage_telegram { - float: left; - background-color: #fff; - box-shadow: 0px 2px 10px 0px rgba(48,55,81,0.05); - border-radius: 5px; - margin: 10px; - width: 210px; - height: 250px; - display: flex; - flex-direction: column; - align-items: center; -} - -.mx_HomePage_telegram { - background-color: transparent; - border: 1px solid rgba(113, 129, 142, 0.2); - box-shadow: none; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - font-size: 16px; - line-height: 25px; - box-sizing: border-box; -} - -.mx_HomePage_telegram a { - text-transform: uppercase; - color: #4360DF; - font-size: 13px; - font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; - font-weight: 600; - opacity: 1.0; - transition: opacity .2s ease; -} - -.mx_HomePage_telegram a:hover { - opacity: 0.5; -} - -.mx_HomePage_room .mx_HomePage_icon { - margin-top: 24px; - margin-bottom: 16px; - width: 50px; - height: 50px; -} - -.mx_HomePage_room .mx_HomePage_name { - display: block; - font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; - font-weight: 600; - font-size: 15px; - color: #49555F; - line-height: 25px; - margin: 0px 12px 0px 12px; -} - -.mx_HomePage_room .mx_HomePage_desc { - flex: 1; - display: block; - margin: 0px 12px 0px 12px; - font-size: 14px; - line-height: 20px; -} - -.mx_HomePage_button { - align-self: normal; - margin: 12px; - border-radius: 8px; - border: 1px solid rgba(199, 206, 209, 0.12); - background-color: #6CC1F6; - font-size: 13px; - font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 1px; - color: #fff ! important; - cursor: pointer; - outline: none; - padding: 14px; - box-sizing: border-box; - padding-left: 1.5em; - padding-right: 1.5em; -} - -</style> - -<div class="mx_HomePage_container"> - <div class="mx_HomePage_header"> - <div> - <h1>Welcome to Status Community Chat, powered by Riot.</h1> - <p>For contributors, developers and Ethereum-enthusiasts who care about the movement for decentralization.</p> - </div> - </div> - - <div class="mx_HomePage_intro"> - <h2>Our rooms</h2> - <p>Please abide by the channels discussion categories and remain on topic to the specific category details listed.</p> - <p class="mx_HomePage_coc">Before posting please refer to our <a href="https://wiki.status.im/Code_of_conduct">Code of Conduct</a></p> - </div> - - - <div class="mx_HomePage_room"> - <img class="mx_HomePage_icon" src="themes/status/img/a.png"> - <span class="mx_HomePage_name">#announcements</span> - <span class="mx_HomePage_desc">Company wide announcements.</span> - <a class="mx_HomePage_button" href="#/room/#announcements:status.im">Join</a> - </div> - <div class="mx_HomePage_room"> - <img class="mx_HomePage_icon" src="themes/status/img/i.png"> - <span class="mx_HomePage_name">#introductions</span> - <span class="mx_HomePage_desc">Newcomer introductions.</span> - <a class="mx_HomePage_button" href="#/room/#introductions:status.im">Join</a> - </div> - <div class="mx_HomePage_room"> - <img class="mx_HomePage_icon" src="themes/status/img/g.png"> - <span class="mx_HomePage_name">#general</span> - <span class="mx_HomePage_desc">General discussions of Status.</span> - <a class="mx_HomePage_button" href="#/room/#general:status.im">Join</a> - </div> - <div class="mx_HomePage_room"> - <img class="mx_HomePage_icon" src="themes/status/img/d.png"> - <span class="mx_HomePage_name">#dev-status</span> - <span class="mx_HomePage_desc">Contributing to our codebase? Building a DApp or a chatbot? We're here to help.</span> - <a class="mx_HomePage_button" href="#/room/#dev-status:status.im">Join</a> - </div> - <div class="mx_HomePage_room"> - <img class="mx_HomePage_icon" src="themes/status/img/n.png"> - <span class="mx_HomePage_name">#news-articles</span> - <span class="mx_HomePage_desc">Share news, articles related to Ethereum or projects you're excited about</span> - <a class="mx_HomePage_button" href="#/room/#news-articles:status.im">Join</a> - </div> - <div class="mx_HomePage_telegram"> - <p> - Interested in market and cryptocurrency type discussions? - </p> - <a href="https://t.me/StatusNetworkChat">Join Telegram</a> - </div> -</div> diff --git a/res/home.html b/res/home.html deleted file mode 100644 index 4b8da3da..00000000 --- a/res/home.html +++ /dev/null @@ -1,292 +0,0 @@ -<style type="text/css"> - -/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid - * voodoo where we have to set display: none by default - */ - -.mx_HomePage_header h1 { - margin-left: 0px; - margin-bottom: 0px; - margin-top: 20px; - margin-right: 20px; - color: #454545; -} - -.mx_HomePage_header h2 { - margin-left: 0px; - margin-top: 5px; - margin-bottom: 20px; - margin-right: 20px; - color: #454545; -} - -.mx_HomePage_header h1 a { - color: #454545; -} - -.mx_HomePage h3 { - margin-top: 30px; -} - -.mx_HomePage_header { - border: 1px solid #76CFA6; - background-color: #eaf5f0; - border-radius: 5px; - align-items: center; -} - -.mx_HomePage_col { - display: flex; - flex-direction: row; -} - -.mx_HomePage_toprow { - flex-wrap: wrap; -} - -.mx_HomePage_row { - flex: 1 1 0; - margin-right: 20px; - display: flex; - flex-direction: row; - flex-wrap: wrap; -} - -.mx_HomePage_logo { - margin-top: 20px; - margin-left: 40px; - margin-right: 40px; - margin-bottom: 20px; - display: inline; - height: 100px; -} - -.mx_HomePage_room { - cursor: pointer; - float: left; - text-decoration: none; - text-align: center; - padding-left: 10px; - padding-right: 10px; - width: 120px; -} - -.mx_HomePage_toprow .mx_HomePage_room { - width: 64px; -} - - -.mx_HomePage_room .mx_HomePage_icon { - border-radius: 50%; - width: 64px; - height: 64px; -} - -.mx_HomePage_room .mx_HomePage_name { - display: block; -} - -.mx_HomePage_room .mx_HomePage_desc { - display: block; - font-size: 12px; - margin-top: 8px; -} - -.mx_HomePage_comment { - display: flex; - align-items: center; - margin-left: 100px; - min-height: 64px; -} - -.mx_HomePage_container h3::after, -.mx_HomePage_container h4::after { - content: ":"; -} - -.mx_HomePage_container { - display: block ! important; - margin: 20px; -} - -.mx_HomePage_container h1, -.mx_HomePage_container h2, -.mx_HomePage_container h3, -.mx_HomePage_container h4 { - font-weight: 600; -} -</style> - -<div class="mx_HomePage_container"> - <div class="mx_HomePage_col mx_HomePage_header"> - <a href="https://riot.im"><img src="home/images/logo.svg" class="mx_HomePage_logo"></a> - <div> - <h1>_t("Welcome to Riot.im")</h1> - <h2>_t("Decentralised, encrypted chat & collaboration powered by [matrix]")</h2> - </div> - </div> - <div class="mx_HomePage_col mx_HomePage_toprow"> - <div class="mx_HomePage_row"> - <div> - <h3>_t("Search the room directory")</h3> - <a class="mx_HomePage_room" href="#/directory"> - <img class="mx_HomePage_icon" src="img/icons-directory.svg"> - </a> - <span class="mx_HomePage_comment"> - _t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!") - </span> - </div> - </div> - <div class="mx_HomePage_row"> - <div> - <h3>_t("Chat with Riot Bot")</h3> - <a class="mx_HomePage_room" href="#/user/@riot-bot:matrix.org?action=chat"> - <img class="mx_HomePage_icon" src="home/rooms/riot-bot.png"> - </a> - <span class="mx_HomePage_comment"> - _t("Get started with some tips from Riot Bot!") - </span> - </div> - </div> - </div> - - <h3>_t("General discussion about Matrix and Riot")</h3> - - <div class="mx_HomePage_row"> - <div class="mx_HomePage_room"> - <a href="#/room/#matrix:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/matrix.png"> - <span class="mx_HomePage_name">Matrix HQ</span> - </a> - <span class="mx_HomePage_desc">_t("Discussion of all things Matrix!")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#riot:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/riot.png"> - <span class="mx_HomePage_name">Riot</span> - </a> - <span class="mx_HomePage_desc">_t("Riot/Web & Desktop chat")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#riot-ios:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/riot-ios.png"> - <span class="mx_HomePage_name">#riot-ios</span> - </a> - <span class="mx_HomePage_desc">_t("Riot/iOS & matrix-ios-sdk chat")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#riot-android:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/riot-android.png"> - <span class="mx_HomePage_name">#riot-android</span> - </a> - <span class="mx_HomePage_desc">_t("Riot/Android & matrix-android-sdk chat")</span> - </div> - </div> - - <h3>_t("Matrix technical discussions")</h3> - <h4>_t("Running Matrix services")</h4> - - <div class="mx_HomePage_row"> - <div class="mx_HomePage_room"> - <a href="#/room/#synapse:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/matrix.png"> - <span class="mx_HomePage_name">Synapse Support Community</span> - </a> - <span class="mx_HomePage_desc">_t("Community-run support for Synapse")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#dendrite:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/dendrite.png"> - <span class="mx_HomePage_name">#dendrite:matrix.org</span> - </a> - <span class="mx_HomePage_desc">_t("Admin support for Dendrite")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#homeowners:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/homeowners.png"> - <span class="mx_HomePage_name">Synapse Homeowners</span> - </a> - <span class="mx_HomePage_desc">_t("Announcements about Synapse releases")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#irc:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/irc.png"> - <span class="mx_HomePage_name">IRC Matrix Bridges</span> - </a> - <span class="mx_HomePage_desc">_t("Support for those using and running matrix-appservice-irc")</span> - </div> - </div> - - <h4>_t("Building services on Matrix")</h4> - - <div class="mx_HomePage_row"> - <div class="mx_HomePage_room"> - <a href="#/room/#matrix-dev:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/matrix-dev.png"> - <span class="mx_HomePage_name">#matrix-dev:matrix.org</span> - </a> - <span class="mx_HomePage_desc">_t("Support for those using the Matrix spec")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#e2e:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/e2e.png"> - <span class="mx_HomePage_name">End-to-end crypto in Matrix</span> - </a> - <span class="mx_HomePage_desc">_t("Design and implementation of E2E in Matrix")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#vr:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/vr.png"> - <span class="mx_HomePage_name">#vr:matrix.org</span> - </a> - <span class="mx_HomePage_desc">_t("Implementing VR services with Matrix")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#webrtc:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/webrtc.png"> - <span class="mx_HomePage_name">#webrtc:matrix.org</span> - </a> - <span class="mx_HomePage_desc">_t("Implementing VoIP services with Matrix")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#matrix-identity:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/identity.jpg"> - <span class="mx_HomePage_name">Matrix Identity</span> - </a> - <span class="mx_HomePage_desc">_t("Discussion of the Identity Service API")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#bridging:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/bridging.png"> - <span class="mx_HomePage_name">Matrix Bridging</span> - </a> - <span class="mx_HomePage_desc">_t("Support for those using, running and writing other bridges")</span> - </div> - </div> - - <h4>_t("Contributing code to Matrix and Riot")</h4> - - <div class="mx_HomePage_row"> - <div class="mx_HomePage_room"> - <a href="#/room/#riot-dev:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/riot-dev.png"> - <span class="mx_HomePage_name">#riot-dev</span> - </a> - <span class="mx_HomePage_desc">_t("Dev chat for the Riot/Web dev team")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#dendrite-dev:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/dendrite-dev.png"> - <span class="mx_HomePage_name">#dendrite-dev</span> - </a> - <span class="mx_HomePage_desc">_t("Dev chat for the Dendrite dev team")</span> - </div> - <div class="mx_HomePage_room"> - <a href="#/room/#riotweb-translations:matrix.org"> - <img class="mx_HomePage_icon" src="home/rooms/riot-translations.png"> - <span class="mx_HomePage_name">Riot-Web Translations</span> - </a> - <span class="mx_HomePage_desc">_t("Co-ordination for Riot/Web translators")</span> - </div> - </div> -</div> diff --git a/res/home/images/logo.svg b/res/home/images/logo.svg deleted file mode 100644 index a5f70e5e..00000000 --- a/res/home/images/logo.svg +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 173.6 146.6" style="enable-background:new 0 0 173.6 146.6;" xml:space="preserve"> -<style type="text/css"> - .st0{fill:#7DC8A2;} - .st1{fill:#AFDBC5;} - .st2{fill:#764D80;} - .st3{enable-background:new ;} - .st4{fill:none;stroke:#764D80;stroke-miterlimit:10;} -</style> -<title>New_logo</title> -<g id="Design"> - <path class="st0" d="M62.3,0H21.2C9.9,0,0.7,9.2,0.7,20.6v102.8c0,11.4,9.2,20.6,20.6,20.6c11.3,0,20.5-9.2,20.6-20.6v-20.6h20.5 - c28.4,0,51.4-23,51.4-51.4S90.7,0,62.3,0z"/> - <path class="st1" d="M21.2,138.8c-8.5,0-15.4-6.9-15.4-15.4V20.6c0-8.5,6.8-15.3,15.3-15.4h41.2c25.5,0.4,46,21.4,45.6,46.9 - c-0.4,25-20.6,45.2-45.6,45.6H36.6v25.7C36.6,131.9,29.7,138.8,21.2,138.8z"/> - <path class="st0" d="M21.2,133.7c-5.7,0-10.3-4.6-10.3-10.3V20.6c0-5.6,4.5-10.2,10.1-10.3h41.3c22.7,0,41.1,18.4,41.1,41.1 - S85.1,92.5,62.4,92.5H31.5v30.8C31.5,129.1,26.9,133.7,21.2,133.7z"/> - <path class="st1" d="M21.2,128.6c-2.9,0-5.2-2.3-5.2-5.2V20.6c0-2.8,2.2-5.1,5-5.2h41.3c19.9,0,36,16.1,36,36s-16.1,36-36,36h-36 - v36C26.4,126.3,24.1,128.6,21.2,128.6z"/> - <path class="st0" d="M21.3,82.3h41.1c17.1,0,30.9-13.8,30.9-30.9S79.4,20.5,62.3,20.5H21.2L21.3,82.3z"/> - <path class="st1" d="M26.4,77.2V25.7h36c14.2,0.3,25.5,12,25.2,26.3c-0.3,13.8-11.4,25-25.2,25.2H26.4z"/> - <path class="st0" d="M31.5,72V30.8h30.8c11.4,0.3,20.4,9.7,20.2,21.1c-0.2,11-9.1,19.9-20.2,20.2H31.5z"/> - <path class="st1" d="M36.6,66.9v-31h25.7c8.6,0,15.5,6.9,15.5,15.5s-6.9,15.5-15.5,15.5H36.6z"/> - <path class="st0" d="M41.8,61.8V41.1h20.6c5.7,0,10.4,4.7,10.3,10.4c0,5.7-4.6,10.3-10.3,10.3H41.8z"/> - <path class="st1" d="M46.9,56.6V46.2h15.5c2.9,0,5.2,2.3,5.2,5.2s-2.3,5.2-5.2,5.2L46.9,56.6z"/> - <ellipse transform="matrix(0.8192 -0.5736 0.5736 0.8192 -8.0825 15.5141)" class="st2" cx="20.6" cy="20.6" rx="20.6" ry="20.6"/> - <path class="st2" d="M109.3,111.6c6.7,9.2,4.6,22-4.6,28.7s-22,4.6-28.7-4.6c-0.1-0.2-0.3-0.4-0.4-0.6l-30.8-44 - c-6.5-9.3-4.3-22.1,5-28.6s22.1-4.3,28.6,5L109.3,111.6z"/> -</g> -<g id="Layer_3"> - <path class="st2" d="M145.3,32.7h16.4c0.9,0,1.6-0.7,1.6-1.6c0-0.9-0.7-1.6-1.6-1.6h-16.4c-0.9,0-1.6,0.7-1.6,1.6 - C143.7,32,144.4,32.7,145.3,32.7z"/> - <path class="st2" d="M145.3,3.3h4.9v5l0,0l-5.8,4c-0.7,0.5-0.9,1.5-0.4,2.3c0.5,0.7,1.5,0.9,2.3,0.4l4.6-3.2c1.6,3.2,5.5,4.6,8.8,3 - c2.2-1.1,3.7-3.4,3.6-5.9V1.7l0,0c0-0.9-0.7-1.6-1.6-1.6l0,0h-16.4c-0.9,0-1.6,0.7-1.6,1.6C143.7,2.6,144.4,3.3,145.3,3.3 - L145.3,3.3z M160,8.9c0,1.8-1.5,3.3-3.3,3.3s-3.3-1.5-3.3-3.3V3.3h6.5V8.9z"/> - <path class="st2" d="M161.7,75.6c-0.9,0-1.6,0.7-1.6,1.6l0,0v4.9h-14.7c-0.9,0-1.6,0.7-1.6,1.6l0,0l0,0c0,0.9,0.7,1.6,1.6,1.6l0,0 - H160v5c0,0.9,0.7,1.6,1.6,1.6s1.6-0.7,1.6-1.6v-6.6l0,0v-6.5C163.4,76.4,162.6,75.7,161.7,75.6C161.7,75.6,161.7,75.6,161.7,75.6z" - /> - <path class="st2" d="M153.5,46.4c-5.5,0-10,4.5-10,10s4.5,10,10,10s10-4.5,10-10S159.1,46.4,153.5,46.4z M153.5,63.2 - c-3.7,0-6.7-3-6.7-6.7c0-3.7,3-6.7,6.7-6.7c3.7,0,6.7,3,6.7,6.7v0C160.2,60.2,157.2,63.2,153.5,63.2L153.5,63.2z"/> - <g class="st3"> - <path class="st2" d="M145.2,109h16.5c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7 - c-0.2,0.2-0.5,0.3-0.7,0.3h-16.5c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7 - C144.7,109.1,144.9,109,145.2,109z"/> - </g> - <g class="st3"> - <path class="st4" d="M145.2,109h16.5c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7 - c-0.2,0.2-0.5,0.3-0.7,0.3h-16.5c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7 - C144.7,109.1,144.9,109,145.2,109z"/> - </g> - <g class="st3"> - <path class="st2" d="M145.2,126h16.5c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7v0.2c0,0.4-0.2,0.7-0.5,1l-9.8,6.5l9.8,6.5 - c0.4,0.2,0.5,0.5,0.5,1v0.2c0,0.3-0.1,0.5-0.3,0.7c-0.2,0.2-0.4,0.3-0.7,0.3h-16.5c-0.3,0-0.5-0.1-0.7-0.3 - c-0.2-0.2-0.3-0.4-0.3-0.7s0.1-0.5,0.3-0.7c0.2-0.2,0.5-0.3,0.7-0.3h13.7l-8.6-5.9c-0.3-0.2-0.5-0.5-0.5-0.9 - c0-0.3,0.2-0.6,0.5-0.9l8.6-5.8h-13.7c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7 - C144.7,126.1,144.9,126,145.2,126z"/> - </g> - <g class="st3"> - <path class="st4" d="M145.2,126h16.5c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7v0.2c0,0.4-0.2,0.7-0.5,1l-9.8,6.5l9.8,6.5 - c0.4,0.2,0.5,0.5,0.5,1v0.2c0,0.3-0.1,0.5-0.3,0.7c-0.2,0.2-0.4,0.3-0.7,0.3h-16.5c-0.3,0-0.5-0.1-0.7-0.3 - c-0.2-0.2-0.3-0.4-0.3-0.7s0.1-0.5,0.3-0.7c0.2-0.2,0.5-0.3,0.7-0.3h13.7l-8.6-5.9c-0.3-0.2-0.5-0.5-0.5-0.9 - c0-0.3,0.2-0.6,0.5-0.9l8.6-5.8h-13.7c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7 - C144.7,126.1,144.9,126,145.2,126z"/> - </g> - <g class="st3"> - <path class="st2" d="M152.5,98.1c0.3,0,0.6,0.1,0.9,0.4s0.4,0.5,0.4,0.9c0,0.3-0.1,0.6-0.4,0.9c-0.2,0.2-0.5,0.4-0.9,0.4h-0.5 - c-0.3,0-0.6-0.1-0.9-0.4c-0.2-0.2-0.4-0.5-0.4-0.9c0-0.4,0.1-0.7,0.4-0.9s0.5-0.4,0.9-0.4H152.5z"/> - </g> - <g class="st3"> - <path class="st4" d="M152.5,98.1c0.3,0,0.6,0.1,0.9,0.4s0.4,0.5,0.4,0.9c0,0.3-0.1,0.6-0.4,0.9c-0.2,0.2-0.5,0.4-0.9,0.4h-0.5 - c-0.3,0-0.6-0.1-0.9-0.4c-0.2-0.2-0.4-0.5-0.4-0.9c0-0.4,0.1-0.7,0.4-0.9s0.5-0.4,0.9-0.4H152.5z"/> - </g> -</g> -</svg> diff --git a/res/home/rooms/bridging.png b/res/home/rooms/bridging.png deleted file mode 100644 index 6b3a55e7..00000000 Binary files a/res/home/rooms/bridging.png and /dev/null differ diff --git a/res/home/rooms/dendrite-dev.png b/res/home/rooms/dendrite-dev.png deleted file mode 100644 index 1d96bd84..00000000 Binary files a/res/home/rooms/dendrite-dev.png and /dev/null differ diff --git a/res/home/rooms/dendrite.png b/res/home/rooms/dendrite.png deleted file mode 100644 index 1d96bd84..00000000 Binary files a/res/home/rooms/dendrite.png and /dev/null differ diff --git a/res/home/rooms/e2e.png b/res/home/rooms/e2e.png deleted file mode 100644 index a2bda4bc..00000000 Binary files a/res/home/rooms/e2e.png and /dev/null differ diff --git a/res/home/rooms/homeowners.png b/res/home/rooms/homeowners.png deleted file mode 100644 index ed45f11c..00000000 Binary files a/res/home/rooms/homeowners.png and /dev/null differ diff --git a/res/home/rooms/identity.jpg b/res/home/rooms/identity.jpg deleted file mode 100644 index f2e15056..00000000 Binary files a/res/home/rooms/identity.jpg and /dev/null differ diff --git a/res/home/rooms/identity.png b/res/home/rooms/identity.png deleted file mode 100644 index de1ea60d..00000000 Binary files a/res/home/rooms/identity.png and /dev/null differ diff --git a/res/home/rooms/irc.png b/res/home/rooms/irc.png deleted file mode 100644 index 5f611d12..00000000 Binary files a/res/home/rooms/irc.png and /dev/null differ diff --git a/res/home/rooms/matrix-dev.png b/res/home/rooms/matrix-dev.png deleted file mode 100644 index fa54f00c..00000000 Binary files a/res/home/rooms/matrix-dev.png and /dev/null differ diff --git a/res/home/rooms/matrix.png b/res/home/rooms/matrix.png deleted file mode 100644 index fa54f00c..00000000 Binary files a/res/home/rooms/matrix.png and /dev/null differ diff --git a/res/home/rooms/riot-android.png b/res/home/rooms/riot-android.png deleted file mode 100644 index fa2bec8e..00000000 Binary files a/res/home/rooms/riot-android.png and /dev/null differ diff --git a/res/home/rooms/riot-bot.png b/res/home/rooms/riot-bot.png deleted file mode 100644 index 9efd4a3c..00000000 Binary files a/res/home/rooms/riot-bot.png and /dev/null differ diff --git a/res/home/rooms/riot-dev.png b/res/home/rooms/riot-dev.png deleted file mode 100644 index ff8b21ad..00000000 Binary files a/res/home/rooms/riot-dev.png and /dev/null differ diff --git a/res/home/rooms/riot-ios.png b/res/home/rooms/riot-ios.png deleted file mode 100644 index 6a0c598f..00000000 Binary files a/res/home/rooms/riot-ios.png and /dev/null differ diff --git a/res/home/rooms/riot-translations.png b/res/home/rooms/riot-translations.png deleted file mode 100644 index 2ae95836..00000000 Binary files a/res/home/rooms/riot-translations.png and /dev/null differ diff --git a/res/home/rooms/riot.png b/res/home/rooms/riot.png deleted file mode 100644 index 4daa2e4e..00000000 Binary files a/res/home/rooms/riot.png and /dev/null differ diff --git a/res/home/rooms/synapse.png b/res/home/rooms/synapse.png deleted file mode 100644 index ee0f8558..00000000 Binary files a/res/home/rooms/synapse.png and /dev/null differ diff --git a/res/home/rooms/vr.png b/res/home/rooms/vr.png deleted file mode 100644 index 98b77802..00000000 Binary files a/res/home/rooms/vr.png and /dev/null differ diff --git a/res/home/rooms/webrtc.png b/res/home/rooms/webrtc.png deleted file mode 100644 index 98b790f9..00000000 Binary files a/res/home/rooms/webrtc.png and /dev/null differ diff --git a/res/media/busy.mp3 b/res/media/busy.mp3 deleted file mode 100644 index fec27ba4..00000000 Binary files a/res/media/busy.mp3 and /dev/null differ diff --git a/res/media/busy.ogg b/res/media/busy.ogg deleted file mode 100644 index 5d64a7d0..00000000 Binary files a/res/media/busy.ogg and /dev/null differ diff --git a/res/media/callend.mp3 b/res/media/callend.mp3 deleted file mode 100644 index 50c34e56..00000000 Binary files a/res/media/callend.mp3 and /dev/null differ diff --git a/res/media/callend.ogg b/res/media/callend.ogg deleted file mode 100644 index 927ce1f6..00000000 Binary files a/res/media/callend.ogg and /dev/null differ diff --git a/res/media/message.mp3 b/res/media/message.mp3 deleted file mode 100644 index b87eeda7..00000000 Binary files a/res/media/message.mp3 and /dev/null differ diff --git a/res/media/message.ogg b/res/media/message.ogg deleted file mode 100644 index adc74437..00000000 Binary files a/res/media/message.ogg and /dev/null differ diff --git a/res/media/ring.mp3 b/res/media/ring.mp3 deleted file mode 100644 index 36200cd8..00000000 Binary files a/res/media/ring.mp3 and /dev/null differ diff --git a/res/media/ring.ogg b/res/media/ring.ogg deleted file mode 100644 index 708213bf..00000000 Binary files a/res/media/ring.ogg and /dev/null differ diff --git a/res/media/ringback.mp3 b/res/media/ringback.mp3 deleted file mode 100644 index 6ee34bf3..00000000 Binary files a/res/media/ringback.mp3 and /dev/null differ diff --git a/res/media/ringback.ogg b/res/media/ringback.ogg deleted file mode 100644 index 7dbfdcd0..00000000 Binary files a/res/media/ringback.ogg and /dev/null differ diff --git a/res/themes/riot/img/backgrounds/valley.jpg b/res/themes/riot/img/backgrounds/valley.jpg new file mode 100644 index 00000000..4779c9d7 Binary files /dev/null and b/res/themes/riot/img/backgrounds/valley.jpg differ diff --git a/res/themes/riot/img/logos/riot-im-logo-black-text.png b/res/themes/riot/img/logos/riot-im-logo-black-text.png new file mode 100644 index 00000000..2b433461 Binary files /dev/null and b/res/themes/riot/img/logos/riot-im-logo-black-text.png differ diff --git a/res/themes/riot/img/logos/riot-im-logo-black-text.svg b/res/themes/riot/img/logos/riot-im-logo-black-text.svg new file mode 100644 index 00000000..ce50d65d --- /dev/null +++ b/res/themes/riot/img/logos/riot-im-logo-black-text.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="334px" height="293px" viewBox="0 0 334 293" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch --> + <title>alt black logotype</title> + <desc>Created with Sketch.</desc> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="alt-black-logotype" transform="translate(-71.000000, -93.000000)"> + <g id="Group-17" transform="translate(75.000000, 97.000000)"> + <path d="M83.6089795,81.3669988 L83.6089795,122.62072 L125.566883,122.57759 C126.099705,122.57759 126.585875,122.563213 127.069589,122.532064 C138.101709,121.806044 146.725079,112.775129 146.725079,101.973492 C146.725079,90.6087715 137.254595,81.3669988 125.608625,81.3669988 L83.6089795,81.3669988 Z M42.1126914,285.126882 C19.1964277,285.126882 0.616403324,266.99796 0.616403324,244.632726 L0.616403324,167.456616 C0.466623823,166.057291 0.385595568,164.634005 0.385595568,163.193947 C0.383140166,161.727531 0.461713019,160.280285 0.616403324,158.852207 L0.616403324,40.8728429 C0.616403324,18.5076092 19.1964277,0.376291002 42.1126914,0.376291002 L125.608625,0.376291002 C183.015916,0.376291002 229.720111,45.9525832 229.720111,101.973492 C229.720111,155.236486 187.089427,199.758492 132.667905,203.333479 C130.354916,203.489226 127.970721,203.568297 125.608625,203.568297 L83.6089795,203.609031 L83.6089795,244.632726 C83.6089795,266.99796 65.0314105,285.126882 42.1126914,285.126882 Z" id="Fill-1" fill="#A2DDEF"></path> + <path d="M83.6089795,81.3669988 L83.6089795,122.62072 L125.566883,122.57759 C126.099705,122.57759 126.585875,122.563213 127.069589,122.532064 C138.101709,121.806044 146.725079,112.775129 146.725079,101.973492 C146.725079,90.6087715 137.254595,81.3669988 125.608625,81.3669988 L83.6089795,81.3669988 Z M42.1126914,285.126882 C19.1964277,285.126882 0.616403324,266.99796 0.616403324,244.632726 L0.616403324,167.456616 C0.466623823,166.057291 0.385595568,164.634005 0.385595568,163.193947 C0.383140166,161.727531 0.461713019,160.280285 0.616403324,158.852207 L0.616403324,40.8728429 C0.616403324,18.5076092 19.1964277,0.376291002 42.1126914,0.376291002 L125.608625,0.376291002 C183.015916,0.376291002 229.720111,45.9525832 229.720111,101.973492 C229.720111,155.236486 187.089427,199.758492 132.667905,203.333479 C130.354916,203.489226 127.970721,203.568297 125.608625,203.568297 L83.6089795,203.609031 L83.6089795,244.632726 C83.6089795,266.99796 65.0314105,285.126882 42.1126914,285.126882 Z" id="Stroke-3" stroke="#368BD6" stroke-width="7.31760436"></path> + <path d="M42.112937,244.632007 L42.112937,40.8721241 L125.60887,40.8721241 C160.188292,40.8721241 188.221613,68.2284423 188.221613,101.972773 C188.221613,134.31778 162.466905,160.792332 129.881269,162.932053 C128.466958,163.025501 127.04528,163.073423 125.60887,163.073423 L41.8821292,163.15489" id="Stroke-5" stroke="#368BD6" stroke-width="7.31760436" stroke-linecap="round"></path> + <path d="M76.3063694,17.6478871 C82.6683151,26.5062832 85.1114398,37.2552053 83.1864049,47.9010949 C81.2589146,58.5541728 75.1940725,67.8342832 66.1090863,74.0377962 C47.352273,86.8449715 21.4060437,82.3858222 8.27210017,64.0963611 C1.91015446,55.237965 -0.532970194,44.4914391 1.39452011,33.8407572 C3.31955501,23.1900754 9.38439712,13.9075689 18.4718387,7.70645204 C37.228652,-5.10072328 63.1724259,-0.641573933 76.3063694,17.6478871 Z M188.563159,285.10364 C175.48569,285.10364 162.619385,279.089419 154.543569,267.844503 L95.8963005,186.170906 C82.7451692,167.855088 87.2999393,142.602549 106.066574,129.771412 C124.833209,116.930692 150.710687,121.37786 163.861819,139.693679 L222.509087,221.367276 C235.662674,239.683094 231.107904,264.935633 212.341269,277.76677 C205.092923,282.724309 196.786299,285.10364 188.563159,285.10364 Z" id="Combined-Shape" fill="#368BD6"></path> + <path d="M292.369925,66.0049901 C290.529323,66.0049901 289.097744,64.6169023 289.097744,62.832218 C289.097744,61.0475337 290.529323,59.659446 292.369925,59.659446 L325.909774,59.659446 C327.750376,59.659446 329.181955,61.0475337 329.181955,62.832218 C329.181955,64.6169023 327.750376,66.0049901 325.909774,66.0049901 L292.369925,66.0049901 Z M292.369925,7.70530356 C290.529323,7.70530356 289.097744,6.31721579 289.506767,4.135935 C289.506767,2.35125072 290.938346,0.963162945 292.778947,0.963162945 L306.07218,0.963162945 L326.114286,0.963162945 C326.72782,0.963162945 327.341353,1.1614612 327.954887,1.55805771 C328.772932,2.15295247 329.386466,3.14444373 329.386466,4.33423325 L329.386466,18.6117075 C329.386466,25.7504446 323.251128,31.6993922 315.888722,31.6993922 C310.571429,31.6993922 306.07218,28.9232167 303.822556,24.5606551 L294.415038,30.9061992 C292.778947,31.8976905 290.733835,31.501094 289.711278,30.1130062 C288.688722,28.5266202 289.097744,26.5436376 290.529323,25.5521464 L302.390977,17.6202162 L302.390977,7.70530356 L292.369925,7.70530356 Z M322.433083,18.8100058 L322.228571,7.70530356 L308.935338,7.70530356 L308.935338,18.8100058 C308.935338,22.3793743 312.003008,25.3538481 315.684211,25.3538481 C319.365414,25.3538481 322.433083,22.3793743 322.433083,18.8100058 Z M325.909774,151.273239 C327.750376,151.273239 329.181955,152.661327 329.181955,154.446011 L329.181955,167.335398 L329.181955,180.423082 C329.181955,182.207767 327.750376,183.595854 325.909774,183.595854 C324.069173,183.595854 322.637594,182.207767 322.637594,180.423082 L322.637594,170.50817 L292.574436,170.50817 C290.733835,170.50817 289.302256,169.120082 289.302256,167.335398 C289.302256,165.550713 290.733835,164.162626 292.574436,164.162626 L322.637594,164.162626 L322.637594,154.446011 C322.637594,152.661327 324.069173,151.273239 325.909774,151.273239 Z M309.13985,93.3701491 C320.38797,93.3701491 329.590977,102.29357 329.590977,113.199974 C329.590977,124.106378 320.38797,133.0298 309.13985,133.0298 C297.891729,133.0298 288.688722,124.106378 288.688722,113.199974 C288.688722,102.29357 297.891729,93.3701491 309.13985,93.3701491 Z M309.13985,126.485957 C316.706767,126.485957 322.842105,120.53701 322.842105,113.199974 C322.842105,105.862939 316.706767,99.9139914 309.13985,99.9139914 C301.572932,99.9139914 295.437594,105.862939 295.437594,113.199974 C295.437594,120.53701 301.572932,126.485957 309.13985,126.485957 Z M328.159398,217.306557 C328.772932,217.901452 328.977444,218.694645 328.977444,219.487838 C328.977444,220.47933 328.772932,221.074224 328.159398,221.669119 C327.341353,222.264014 326.523308,222.462312 325.909774,222.462312 L292.165414,222.462312 C291.142857,222.462312 290.529323,222.462312 289.915789,221.669119 C289.302256,220.875926 289.097744,220.281031 289.097744,219.487838 C289.097744,218.496347 289.302256,217.901452 289.915789,217.306557 C290.733835,216.711663 291.347368,216.513364 292.165414,216.513364 L325.909774,216.513364 C326.932331,216.513364 327.545865,216.711663 328.159398,217.306557 Z M328.977444,253.595138 C328.977444,254.784927 328.36391,255.776419 327.545865,256.371313 L308.730827,268.467507 L327.545865,280.5637 C328.772932,281.158595 328.977444,282.348385 328.977444,283.339876 L328.977444,283.736472 C328.977444,284.727964 328.977444,285.322858 328.159398,285.917753 C327.341353,286.512648 326.72782,286.710946 325.909774,286.710946 L292.369925,286.710946 C291.347368,286.710946 290.733835,286.710946 290.120301,285.917753 C289.506767,285.12456 289.302256,284.727964 289.302256,283.736472 C289.302256,282.744981 289.506767,282.150086 290.120301,281.555192 C290.938346,280.960297 291.756391,280.761999 292.369925,280.761999 L317.115789,280.761999 L302.186466,270.847086 C301.368421,270.252191 300.754887,269.2607 300.754887,268.269209 C300.754887,267.277717 301.16391,266.484524 301.981955,265.691331 L316.911278,255.974717 L292.165414,255.974717 C291.142857,255.974717 290.529323,255.974717 289.915789,255.181524 C289.302256,254.388331 289.097744,253.991734 289.097744,253.000243 C289.097744,252.008752 289.302256,251.413857 289.915789,250.818962 C290.733835,250.224068 291.55188,250.224068 292.165414,250.224068 L325.909774,250.224068 C326.932331,250.224068 327.545865,250.422366 328.159398,251.017261 C328.772932,251.612155 328.977444,252.405348 328.977444,253.198541 L328.977444,253.595138 Z M306.890226,195.692048 C307.503759,195.692048 308.117293,195.890346 308.730827,196.485241 C309.13985,196.881837 309.548872,197.476732 309.548872,198.269925 C309.548872,198.86482 309.344361,199.459715 308.730827,200.054609 C308.321805,200.451206 307.708271,200.847802 306.890226,200.847802 L305.867669,200.847802 C305.254135,200.847802 304.640602,200.649504 304.027068,200.054609 C303.618045,199.658013 303.209023,199.063118 303.209023,198.269925 C303.209023,197.476732 303.413534,196.881837 304.027068,196.485241 C304.43609,196.088644 305.049624,195.692048 305.867669,195.692048 L306.890226,195.692048 Z" id="Combined-Shape" fill="#212121"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/res/themes/riot/img/logos/riot-im-logo.png b/res/themes/riot/img/logos/riot-im-logo.png new file mode 100644 index 00000000..66651582 Binary files /dev/null and b/res/themes/riot/img/logos/riot-im-logo.png differ diff --git a/res/themes/riot/img/logos/riot-im-logo.svg b/res/themes/riot/img/logos/riot-im-logo.svg new file mode 100644 index 00000000..8a7956cc --- /dev/null +++ b/res/themes/riot/img/logos/riot-im-logo.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="334px" height="293px" viewBox="0 0 334 293" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch --> + <title>animatedLogo-0</title> + <desc>Created with Sketch.</desc> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="animatedLogo-0" transform="translate(-71.000000, -93.000000)"> + <g id="Group-17" transform="translate(75.000000, 97.000000)"> + <path d="M83.6089795,81.3669988 L83.6089795,122.62072 L125.566883,122.57759 C126.099705,122.57759 126.585875,122.563213 127.069589,122.532064 C138.101709,121.806044 146.725079,112.775129 146.725079,101.973492 C146.725079,90.6087715 137.254595,81.3669988 125.608625,81.3669988 L83.6089795,81.3669988 Z M42.1126914,285.126882 C19.1964277,285.126882 0.616403324,266.99796 0.616403324,244.632726 L0.616403324,167.456616 C0.466623823,166.057291 0.385595568,164.634005 0.385595568,163.193947 C0.383140166,161.727531 0.461713019,160.280285 0.616403324,158.852207 L0.616403324,40.8728429 C0.616403324,18.5076092 19.1964277,0.376291002 42.1126914,0.376291002 L125.608625,0.376291002 C183.015916,0.376291002 229.720111,45.9525832 229.720111,101.973492 C229.720111,155.236486 187.089427,199.758492 132.667905,203.333479 C130.354916,203.489226 127.970721,203.568297 125.608625,203.568297 L83.6089795,203.609031 L83.6089795,244.632726 C83.6089795,266.99796 65.0314105,285.126882 42.1126914,285.126882 Z" id="Fill-1" fill="#A2DDEF"></path> + <path d="M83.6089795,81.3669988 L83.6089795,122.62072 L125.566883,122.57759 C126.099705,122.57759 126.585875,122.563213 127.069589,122.532064 C138.101709,121.806044 146.725079,112.775129 146.725079,101.973492 C146.725079,90.6087715 137.254595,81.3669988 125.608625,81.3669988 L83.6089795,81.3669988 Z M42.1126914,285.126882 C19.1964277,285.126882 0.616403324,266.99796 0.616403324,244.632726 L0.616403324,167.456616 C0.466623823,166.057291 0.385595568,164.634005 0.385595568,163.193947 C0.383140166,161.727531 0.461713019,160.280285 0.616403324,158.852207 L0.616403324,40.8728429 C0.616403324,18.5076092 19.1964277,0.376291002 42.1126914,0.376291002 L125.608625,0.376291002 C183.015916,0.376291002 229.720111,45.9525832 229.720111,101.973492 C229.720111,155.236486 187.089427,199.758492 132.667905,203.333479 C130.354916,203.489226 127.970721,203.568297 125.608625,203.568297 L83.6089795,203.609031 L83.6089795,244.632726 C83.6089795,266.99796 65.0314105,285.126882 42.1126914,285.126882 Z" id="Stroke-3" stroke="#368BD6" stroke-width="7.31760436"></path> + <path d="M42.112937,244.632007 L42.112937,40.8721241 L125.60887,40.8721241 C160.188292,40.8721241 188.221613,68.2284423 188.221613,101.972773 C188.221613,134.31778 162.466905,160.792332 129.881269,162.932053 C128.466958,163.025501 127.04528,163.073423 125.60887,163.073423 L41.8821292,163.15489" id="Stroke-5" stroke="#368BD6" stroke-width="7.31760436" stroke-linecap="round"></path> + <path d="M76.3063694,17.6478871 C82.6683151,26.5062832 85.1114398,37.2552053 83.1864049,47.9010949 C81.2589146,58.5541728 75.1940725,67.8342832 66.1090863,74.0377962 C47.352273,86.8449715 21.4060437,82.3858222 8.27210017,64.0963611 C1.91015446,55.237965 -0.532970194,44.4914391 1.39452011,33.8407572 C3.31955501,23.1900754 9.38439712,13.9075689 18.4718387,7.70645204 C37.228652,-5.10072328 63.1724259,-0.641573933 76.3063694,17.6478871 Z M188.563159,285.10364 C175.48569,285.10364 162.619385,279.089419 154.543569,267.844503 L95.8963005,186.170906 C82.7451692,167.855088 87.2999393,142.602549 106.066574,129.771412 C124.833209,116.930692 150.710687,121.37786 163.861819,139.693679 L222.509087,221.367276 C235.662674,239.683094 231.107904,264.935633 212.341269,277.76677 C205.092923,282.724309 196.786299,285.10364 188.563159,285.10364 Z" id="Combined-Shape" fill="#368BD6"></path> + <path d="M292.369925,66.0049901 C290.529323,66.0049901 289.097744,64.6169023 289.097744,62.832218 C289.097744,61.0475337 290.529323,59.659446 292.369925,59.659446 L325.909774,59.659446 C327.750376,59.659446 329.181955,61.0475337 329.181955,62.832218 C329.181955,64.6169023 327.750376,66.0049901 325.909774,66.0049901 L292.369925,66.0049901 Z M292.369925,7.70530356 C290.529323,7.70530356 289.097744,6.31721579 289.506767,4.135935 C289.506767,2.35125072 290.938346,0.963162945 292.778947,0.963162945 L306.07218,0.963162945 L326.114286,0.963162945 C326.72782,0.963162945 327.341353,1.1614612 327.954887,1.55805771 C328.772932,2.15295247 329.386466,3.14444373 329.386466,4.33423325 L329.386466,18.6117075 C329.386466,25.7504446 323.251128,31.6993922 315.888722,31.6993922 C310.571429,31.6993922 306.07218,28.9232167 303.822556,24.5606551 L294.415038,30.9061992 C292.778947,31.8976905 290.733835,31.501094 289.711278,30.1130062 C288.688722,28.5266202 289.097744,26.5436376 290.529323,25.5521464 L302.390977,17.6202162 L302.390977,7.70530356 L292.369925,7.70530356 Z M322.433083,18.8100058 L322.228571,7.70530356 L308.935338,7.70530356 L308.935338,18.8100058 C308.935338,22.3793743 312.003008,25.3538481 315.684211,25.3538481 C319.365414,25.3538481 322.433083,22.3793743 322.433083,18.8100058 Z M325.909774,151.273239 C327.750376,151.273239 329.181955,152.661327 329.181955,154.446011 L329.181955,167.335398 L329.181955,180.423082 C329.181955,182.207767 327.750376,183.595854 325.909774,183.595854 C324.069173,183.595854 322.637594,182.207767 322.637594,180.423082 L322.637594,170.50817 L292.574436,170.50817 C290.733835,170.50817 289.302256,169.120082 289.302256,167.335398 C289.302256,165.550713 290.733835,164.162626 292.574436,164.162626 L322.637594,164.162626 L322.637594,154.446011 C322.637594,152.661327 324.069173,151.273239 325.909774,151.273239 Z M309.13985,93.3701491 C320.38797,93.3701491 329.590977,102.29357 329.590977,113.199974 C329.590977,124.106378 320.38797,133.0298 309.13985,133.0298 C297.891729,133.0298 288.688722,124.106378 288.688722,113.199974 C288.688722,102.29357 297.891729,93.3701491 309.13985,93.3701491 Z M309.13985,126.485957 C316.706767,126.485957 322.842105,120.53701 322.842105,113.199974 C322.842105,105.862939 316.706767,99.9139914 309.13985,99.9139914 C301.572932,99.9139914 295.437594,105.862939 295.437594,113.199974 C295.437594,120.53701 301.572932,126.485957 309.13985,126.485957 Z M328.159398,217.306557 C328.772932,217.901452 328.977444,218.694645 328.977444,219.487838 C328.977444,220.47933 328.772932,221.074224 328.159398,221.669119 C327.341353,222.264014 326.523308,222.462312 325.909774,222.462312 L292.165414,222.462312 C291.142857,222.462312 290.529323,222.462312 289.915789,221.669119 C289.302256,220.875926 289.097744,220.281031 289.097744,219.487838 C289.097744,218.496347 289.302256,217.901452 289.915789,217.306557 C290.733835,216.711663 291.347368,216.513364 292.165414,216.513364 L325.909774,216.513364 C326.932331,216.513364 327.545865,216.711663 328.159398,217.306557 Z M328.977444,253.595138 C328.977444,254.784927 328.36391,255.776419 327.545865,256.371313 L308.730827,268.467507 L327.545865,280.5637 C328.772932,281.158595 328.977444,282.348385 328.977444,283.339876 L328.977444,283.736472 C328.977444,284.727964 328.977444,285.322858 328.159398,285.917753 C327.341353,286.512648 326.72782,286.710946 325.909774,286.710946 L292.369925,286.710946 C291.347368,286.710946 290.733835,286.710946 290.120301,285.917753 C289.506767,285.12456 289.302256,284.727964 289.302256,283.736472 C289.302256,282.744981 289.506767,282.150086 290.120301,281.555192 C290.938346,280.960297 291.756391,280.761999 292.369925,280.761999 L317.115789,280.761999 L302.186466,270.847086 C301.368421,270.252191 300.754887,269.2607 300.754887,268.269209 C300.754887,267.277717 301.16391,266.484524 301.981955,265.691331 L316.911278,255.974717 L292.165414,255.974717 C291.142857,255.974717 290.529323,255.974717 289.915789,255.181524 C289.302256,254.388331 289.097744,253.991734 289.097744,253.000243 C289.097744,252.008752 289.302256,251.413857 289.915789,250.818962 C290.733835,250.224068 291.55188,250.224068 292.165414,250.224068 L325.909774,250.224068 C326.932331,250.224068 327.545865,250.422366 328.159398,251.017261 C328.772932,251.612155 328.977444,252.405348 328.977444,253.198541 L328.977444,253.595138 Z M306.890226,195.692048 C307.503759,195.692048 308.117293,195.890346 308.730827,196.485241 C309.13985,196.881837 309.548872,197.476732 309.548872,198.269925 C309.548872,198.86482 309.344361,199.459715 308.730827,200.054609 C308.321805,200.451206 307.708271,200.847802 306.890226,200.847802 L305.867669,200.847802 C305.254135,200.847802 304.640602,200.649504 304.027068,200.054609 C303.618045,199.658013 303.209023,199.063118 303.209023,198.269925 C303.209023,197.476732 303.413534,196.881837 304.027068,196.485241 C304.43609,196.088644 305.049624,195.692048 305.867669,195.692048 L306.890226,195.692048 Z" id="Combined-Shape" fill="#368BD6"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/res/vector-icons/android-chrome-144x144.png b/res/vector-icons/android-chrome-144x144.png index 30c8cf18..5dbbd0ff 100644 Binary files a/res/vector-icons/android-chrome-144x144.png and b/res/vector-icons/android-chrome-144x144.png differ diff --git a/res/vector-icons/android-chrome-192x192.png b/res/vector-icons/android-chrome-192x192.png index 560e20ad..93a4e9c8 100644 Binary files a/res/vector-icons/android-chrome-192x192.png and b/res/vector-icons/android-chrome-192x192.png differ diff --git a/res/vector-icons/android-chrome-36x36.png b/res/vector-icons/android-chrome-36x36.png index ee41772f..344157fe 100644 Binary files a/res/vector-icons/android-chrome-36x36.png and b/res/vector-icons/android-chrome-36x36.png differ diff --git a/res/vector-icons/android-chrome-48x48.png b/res/vector-icons/android-chrome-48x48.png index 9cd225d4..70115c65 100644 Binary files a/res/vector-icons/android-chrome-48x48.png and b/res/vector-icons/android-chrome-48x48.png differ diff --git a/res/vector-icons/android-chrome-72x72.png b/res/vector-icons/android-chrome-72x72.png index d9de0c57..e61b36e2 100644 Binary files a/res/vector-icons/android-chrome-72x72.png and b/res/vector-icons/android-chrome-72x72.png differ diff --git a/res/vector-icons/android-chrome-96x96.png b/res/vector-icons/android-chrome-96x96.png index eb48c2c9..3a32b6c8 100644 Binary files a/res/vector-icons/android-chrome-96x96.png and b/res/vector-icons/android-chrome-96x96.png differ diff --git a/res/vector-icons/apple-touch-icon-114x114.png b/res/vector-icons/apple-touch-icon-114x114.png index e07fa437..019780fd 100644 Binary files a/res/vector-icons/apple-touch-icon-114x114.png and b/res/vector-icons/apple-touch-icon-114x114.png differ diff --git a/res/vector-icons/apple-touch-icon-120x120.png b/res/vector-icons/apple-touch-icon-120x120.png index 82650913..4979a63e 100644 Binary files a/res/vector-icons/apple-touch-icon-120x120.png and b/res/vector-icons/apple-touch-icon-120x120.png differ diff --git a/res/vector-icons/apple-touch-icon-144x144.png b/res/vector-icons/apple-touch-icon-144x144.png index 30c8cf18..5dbbd0ff 100644 Binary files a/res/vector-icons/apple-touch-icon-144x144.png and b/res/vector-icons/apple-touch-icon-144x144.png differ diff --git a/res/vector-icons/apple-touch-icon-152x152.png b/res/vector-icons/apple-touch-icon-152x152.png index 5bc63546..6aac2601 100644 Binary files a/res/vector-icons/apple-touch-icon-152x152.png and b/res/vector-icons/apple-touch-icon-152x152.png differ diff --git a/res/vector-icons/apple-touch-icon-180x180.png b/res/vector-icons/apple-touch-icon-180x180.png index 85e9f8ca..aacfc1a8 100644 Binary files a/res/vector-icons/apple-touch-icon-180x180.png and b/res/vector-icons/apple-touch-icon-180x180.png differ diff --git a/res/vector-icons/apple-touch-icon-57x57.png b/res/vector-icons/apple-touch-icon-57x57.png index 253c3db7..e52c99c6 100644 Binary files a/res/vector-icons/apple-touch-icon-57x57.png and b/res/vector-icons/apple-touch-icon-57x57.png differ diff --git a/res/vector-icons/apple-touch-icon-60x60.png b/res/vector-icons/apple-touch-icon-60x60.png index 192a3467..edaecda6 100644 Binary files a/res/vector-icons/apple-touch-icon-60x60.png and b/res/vector-icons/apple-touch-icon-60x60.png differ diff --git a/res/vector-icons/apple-touch-icon-72x72.png b/res/vector-icons/apple-touch-icon-72x72.png index d9de0c57..e61b36e2 100644 Binary files a/res/vector-icons/apple-touch-icon-72x72.png and b/res/vector-icons/apple-touch-icon-72x72.png differ diff --git a/res/vector-icons/apple-touch-icon-76x76.png b/res/vector-icons/apple-touch-icon-76x76.png index b9471645..1432fee3 100644 Binary files a/res/vector-icons/apple-touch-icon-76x76.png and b/res/vector-icons/apple-touch-icon-76x76.png differ diff --git a/res/vector-icons/apple-touch-icon-precomposed.png b/res/vector-icons/apple-touch-icon-precomposed.png index 85e9f8ca..aacfc1a8 100644 Binary files a/res/vector-icons/apple-touch-icon-precomposed.png and b/res/vector-icons/apple-touch-icon-precomposed.png differ diff --git a/res/vector-icons/apple-touch-icon.png b/res/vector-icons/apple-touch-icon.png index 85e9f8ca..aacfc1a8 100644 Binary files a/res/vector-icons/apple-touch-icon.png and b/res/vector-icons/apple-touch-icon.png differ diff --git a/res/vector-icons/favicon-16x16.png b/res/vector-icons/favicon-16x16.png index def4ec5e..c9b0f23e 100644 Binary files a/res/vector-icons/favicon-16x16.png and b/res/vector-icons/favicon-16x16.png differ diff --git a/res/vector-icons/favicon-32x32.png b/res/vector-icons/favicon-32x32.png index c999923a..48bf1dc8 100644 Binary files a/res/vector-icons/favicon-32x32.png and b/res/vector-icons/favicon-32x32.png differ diff --git a/res/vector-icons/favicon-96x96.png b/res/vector-icons/favicon-96x96.png index eb48c2c9..ea21306c 100644 Binary files a/res/vector-icons/favicon-96x96.png and b/res/vector-icons/favicon-96x96.png differ diff --git a/res/vector-icons/favicon.ico b/res/vector-icons/favicon.ico index 8f8ff94e..619b51aa 100644 Binary files a/res/vector-icons/favicon.ico and b/res/vector-icons/favicon.ico differ diff --git a/res/vector-icons/mstile-144x144.png b/res/vector-icons/mstile-144x144.png index 30c8cf18..5dbbd0ff 100644 Binary files a/res/vector-icons/mstile-144x144.png and b/res/vector-icons/mstile-144x144.png differ diff --git a/res/vector-icons/mstile-150x150.png b/res/vector-icons/mstile-150x150.png index 5b8fca8a..da0c101c 100644 Binary files a/res/vector-icons/mstile-150x150.png and b/res/vector-icons/mstile-150x150.png differ diff --git a/res/vector-icons/mstile-310x150.png b/res/vector-icons/mstile-310x150.png index d809f00a..c627adc2 100644 Binary files a/res/vector-icons/mstile-310x150.png and b/res/vector-icons/mstile-310x150.png differ diff --git a/res/vector-icons/mstile-310x310.png b/res/vector-icons/mstile-310x310.png index ec62f8ee..e9630029 100644 Binary files a/res/vector-icons/mstile-310x310.png and b/res/vector-icons/mstile-310x310.png differ diff --git a/res/vector-icons/mstile-70x70.png b/res/vector-icons/mstile-70x70.png index 820a909e..c4f306c5 100644 Binary files a/res/vector-icons/mstile-70x70.png and b/res/vector-icons/mstile-70x70.png differ diff --git a/res/welcome.html b/res/welcome.html new file mode 100644 index 00000000..5331a934 --- /dev/null +++ b/res/welcome.html @@ -0,0 +1,199 @@ +<style type="text/css"> + +/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid + * voodoo where we have to set display: none by default + */ + +h1::after { + content: "!"; +} + +.mx_Parent { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + text-align: center; + padding: 25px 35px; + color: #2e2f32; +} + +.mx_Logo { + height: 54px; + margin-top: 2px; +} + +.mx_ButtonGroup { + margin-top: 10px; +} + +.mx_ButtonRow { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + margin: 12px 0 0; +} + +.mx_ButtonRow > * { + margin: 0 10px; +} + +.mx_ButtonRow > *:first-child { + margin-left: 0; +} + +.mx_ButtonRow > *:last-child { + margin-right: 0; +} + +.mx_ButtonParent { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 10px 20px; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + border-radius: 4px; + width: 150px; + background-repeat: no-repeat; + background-position: 10px center; + text-decoration: none; + color: #2e2f32 !important; +} + +.mx_ButtonHeadline { + margin-bottom: 14px; +} + +.mx_ButtonLabel { + margin-left: 20px; +} + +.mx_ButtonWrapperText { + font-size: 13px; + margin-bottom: 10px; +} + +.mx_Header_title { + font-size: 24px; + font-weight: 600; + margin: 20px 0 0; +} + +.mx_Header_subtitle { + font-size: 12px; + font-weight: normal; + margin: 8px 0 0; +} + +.mx_ButtonSignIn { + background-color: #368BD6; + color: white !important; +} + +.mx_ButtonCreateAccount { + background-color: #03B381; + color: white !important; +} + +.mx_SecondaryButton { + background-color: #FFFFFF; + color: #2E2F32; +} + +.mx_Button_iconSignIn { + background-image: url('welcome/images/icon-sign-in.svg'); +} +.mx_Button_iconCreateAccount { + background-image: url('welcome/images/icon-create-account.svg'); +} +.mx_Button_iconHelp { + background-image: url('welcome/images/icon-help.svg'); +} +.mx_Button_iconRoomDirectory { + background-image: url('welcome/images/icon-room-directory.svg'); +} + +/* +.mx_WelcomePage_loggedIn is applied by EmbeddedPage from the Welcome component +If it is set on the page, we should show the buttons. Otherwise, we have to assume +we don't have an account and should hide them. No account == no guest account either. + */ +.mx_WelcomePage:not(.mx_WelcomePage_loggedIn) .mx_WelcomePage_guestFunctions { + display: none; +} + +</style> + +<div class="mx_Parent"> + <a href="https://riot.im" target="_blank" rel="noopener"> + <img src="welcome/images/logo.svg" alt="" class="mx_Logo"/> + </a> + <h1 class="mx_Header_title">_t("Welcome to Riot.im")</h1> + <h4 class="mx_Header_subtitle">_t("Decentralised, encrypted chat & collaboration powered by [matrix]")</h4> + <div class="mx_ButtonGroup"> + <div class="mx_ButtonRow"> + <a href="#/login" class="mx_ButtonParent mx_ButtonSignIn mx_Button_iconSignIn"> + <div class="mx_ButtonLabel">_t("Sign In")</div> + </a> + <a href="#/register" class="mx_ButtonParent mx_ButtonCreateAccount mx_Button_iconCreateAccount"> + <div class="mx_ButtonLabel">_t("Create Account")</div> + </a> + </div> + <!-- The comments below are meant to be used by Ansible as a quick way + to strip out the marked content when desired. + See https://github.com/vector-im/riot-web/issues/8622. + TODO: Strip out these comments and rely on the guest flag --> + <!-- BEGIN Ansible: Remove these lines when guest access is disabled --> + <div class="mx_ButtonRow mx_WelcomePage_guestFunctions"> + <div> + <div class="mx_ButtonWrapperText">_t("Need help?")</div> + <a href="#/user/@riot-bot:matrix.org?action=chat" class="mx_ButtonParent mx_SecondaryButton mx_Button_iconHelp"> + <div class="mx_ButtonLabel">_t("Chat with Riot Bot")</div> + </a> + </div> + <div> + <div class="mx_ButtonWrapperText">_t("Explore rooms")</div> + <a href="#/directory" class="mx_ButtonParent mx_SecondaryButton mx_Button_iconRoomDirectory"> + <div class="mx_ButtonLabel">_t("Room Directory")</div> + </a> + </div> + </div> + <!-- END Ansible: Remove these lines when guest access is disabled --> + </div> +</div> diff --git a/res/welcome/images/icon-create-account.svg b/res/welcome/images/icon-create-account.svg new file mode 100644 index 00000000..c9d25f2f --- /dev/null +++ b/res/welcome/images/icon-create-account.svg @@ -0,0 +1,17 @@ + +<svg width="24px" height="20px" viewBox="0 0 24 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> + <g id="Home" transform="translate(-880.000000, -478.000000)" stroke="#FFFFFF" stroke-width="1.6"> + <g id="Group-11" transform="translate(621.000000, 176.000000)"> + <g id="Group-7-Copy" transform="translate(243.000000, 290.000000)"> + <g id="user-plus" transform="translate(17.000000, 13.000000)"> + <path d="M15,18 L15,16 C15,13.790861 13.209139,12 11,12 L4,12 C1.790861,12 2.22044605e-16,13.790861 0,16 L0,18" id="Path"></path> + <circle id="Oval" cx="7.5" cy="4" r="4"></circle> + <path d="M19,5 L19,11" id="Path"></path> + <path d="M22,8 L16,8" id="Path"></path> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/welcome/images/icon-help.svg b/res/welcome/images/icon-help.svg new file mode 100644 index 00000000..dc96f8e0 --- /dev/null +++ b/res/welcome/images/icon-help.svg @@ -0,0 +1,16 @@ + +<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> + <g id="Home" transform="translate(-672.000000, -577.000000)" stroke="#000000" stroke-width="1.6"> + <g id="Group-11" transform="translate(621.000000, 176.000000)"> + <g id="Group-10" transform="translate(39.000000, 391.000000)"> + <g id="help-circle" transform="translate(13.000000, 11.000000)"> + <circle id="Oval" cx="10" cy="10" r="10"></circle> + <path d="M7.09,7 C7.57543688,5.62004444 8.98538362,4.79140632 10.4271763,5.0387121 C11.868969,5.28601788 12.9221794,6.53715293 12.92,8 C12.92,10 9.92,11 9.92,11" id="Path"></path> + <path d="M10,15 L10.0050017,15.0050017" id="Path"></path> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/welcome/images/icon-room-directory.svg b/res/welcome/images/icon-room-directory.svg new file mode 100644 index 00000000..6f888611 --- /dev/null +++ b/res/welcome/images/icon-room-directory.svg @@ -0,0 +1,19 @@ + +<svg width="20px" height="14px" viewBox="0 0 20 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> + <g id="Home" transform="translate(-880.000000, -581.000000)" stroke="#000000" stroke-width="1.6"> + <g id="Group-11" transform="translate(621.000000, 176.000000)"> + <g id="Group-8" transform="translate(243.000000, 391.000000)"> + <g id="list" transform="translate(15.000000, 14.000000)"> + <path d="M7,1 L20,1" id="Path"></path> + <path d="M7,7 L20,7" id="Path"></path> + <path d="M7,13 L20,13" id="Path"></path> + <path d="M2,1 L2.02063964,1.02063964" id="Path"></path> + <path d="M2,7 L2,7.03169624" id="Path"></path> + <path d="M2,13 L2,13.0336048" id="Path"></path> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/welcome/images/icon-sign-in.svg b/res/welcome/images/icon-sign-in.svg new file mode 100644 index 00000000..584b2f0a --- /dev/null +++ b/res/welcome/images/icon-sign-in.svg @@ -0,0 +1,16 @@ + +<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"> + <g id="Home" transform="translate(-673.000000, -478.000000)" stroke="#FFFFFF" stroke-width="1.6"> + <g id="Group-11" transform="translate(621.000000, 176.000000)"> + <g id="Group-7" transform="translate(40.000000, 283.000000)"> + <g id="log-in" transform="translate(13.000000, 20.000000)"> + <path d="M12,0 L16,0 C17.1045695,0 18,0.8954305 18,2 L18,16 C18,17.1045695 17.1045695,18 16,18 L12,18" id="Path"></path> + <polyline id="Path" points="7 14 12 9 7 4"></polyline> + <path d="M12,9 L0,9" id="Path"></path> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/welcome/images/logo.svg b/res/welcome/images/logo.svg new file mode 100644 index 00000000..79039b70 --- /dev/null +++ b/res/welcome/images/logo.svg @@ -0,0 +1,16 @@ + +<svg width="112px" height="104px" viewBox="0 0 112 104" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Home" transform="translate(-796.000000, -174.000000)"> + <g id="Group-11" transform="translate(621.000000, 193.000000)"> + <g id="Square-logo" transform="translate(177.000000, -17.000000)"> + <path d="M28.7405867,28.5813527 L28.7405867,43.0723278 L43.1636162,43.0571778 C43.3467737,43.0571778 43.5138944,43.0521278 43.6801712,43.0411861 C47.4724623,42.7861611 50.4367461,39.6139193 50.4367461,35.8196861 C50.4367461,31.8276611 47.1812672,28.5813527 43.1779648,28.5813527 L28.7405867,28.5813527 Z M14.4762377,100.155003 C6.59877202,100.155003 0.211888643,93.7869528 0.211888643,85.9308361 L0.211888643,58.8215943 C0.160401939,58.3300611 0.132548476,57.8301111 0.132548476,57.3242693 C0.131704432,56.8091693 0.158713851,56.3008028 0.211888643,55.7991693 L0.211888643,14.3571861 C0.211888643,6.5010694 6.59877202,0.132177738 14.4762377,0.132177738 L43.1779648,0.132177738 C62.9117211,0.132177738 78.9662882,16.1415194 78.9662882,35.8196861 C78.9662882,54.5290943 64.3119907,70.1681028 45.6045923,71.4238693 C44.8095024,71.4785778 43.9899356,71.5063528 43.1779648,71.5063528 L28.7405867,71.5206611 L28.7405867,85.9308361 C28.7405867,93.7869528 22.3545474,100.155003 14.4762377,100.155003 Z" id="Fill-1" fill="#A2DDEF" fill-rule="nonzero"></path> + <path d="M28.7405867,28.5813527 L28.7405867,43.0723278 L43.1636162,43.0571778 C43.3467737,43.0571778 43.5138944,43.0521278 43.6801712,43.0411861 C47.4724623,42.7861611 50.4367461,39.6139193 50.4367461,35.8196861 C50.4367461,31.8276611 47.1812672,28.5813527 43.1779648,28.5813527 L28.7405867,28.5813527 Z M14.4762377,100.155003 C6.59877202,100.155003 0.211888643,93.7869528 0.211888643,85.9308361 L0.211888643,58.8215943 C0.160401939,58.3300611 0.132548476,57.8301111 0.132548476,57.3242693 C0.131704432,56.8091693 0.158713851,56.3008028 0.211888643,55.7991693 L0.211888643,14.3571861 C0.211888643,6.5010694 6.59877202,0.132177738 14.4762377,0.132177738 L43.1779648,0.132177738 C62.9117211,0.132177738 78.9662882,16.1415194 78.9662882,35.8196861 C78.9662882,54.5290943 64.3119907,70.1681028 45.6045923,71.4238693 C44.8095024,71.4785778 43.9899356,71.5063528 43.1779648,71.5063528 L28.7405867,71.5206611 L28.7405867,85.9308361 C28.7405867,93.7869528 22.3545474,100.155003 14.4762377,100.155003 Z" id="Stroke-3" stroke="#368BD6" stroke-width="2.51086957"></path> + <path d="M14.4763221,85.9305836 L14.4763221,14.3569336 L43.1780493,14.3569336 C55.0647254,14.3569336 64.7011793,23.9662419 64.7011793,35.8194336 C64.7011793,47.1810918 55.8479984,56.4806668 44.6466862,57.2322753 C44.1605169,57.2651003 43.6718153,57.2819336 43.1780493,57.2819336 L14.3969819,57.3105503" id="Stroke-5" stroke="#368BD6" stroke-width="2.51086957" stroke-linecap="round"></path> + <path d="M26.2303145,6.1990794 C28.4172333,9.31072107 29.2570575,13.0864377 28.5953267,16.8259627 C27.9327519,20.5680127 25.8479624,23.8277877 22.7249984,26.0068627 C16.2773438,30.5055711 7.35832749,28.9392293 2.84353443,22.5147877 C0.656615595,19.4031461 -0.183208504,15.6282711 0.479366288,11.8870627 C1.14109704,8.1458544 3.22588652,4.88523775 6.34969454,2.7070044 C12.7973491,-1.79170393 21.7155214,-0.225362262 26.2303145,6.1990794 Z M64.8185861,100.146839 C60.323206,100.146839 55.9004137,98.0342553 53.1243518,94.0843136 L32.9643533,65.3952636 C28.4436519,58.9615636 30.0093542,50.0912386 36.4603849,45.5841136 C42.9114157,41.0736218 51.8067987,42.6357553 56.3275,49.0694553 L76.4874987,77.7585053 C81.0090441,84.1922053 79.443342,93.0625303 72.9923112,97.5696553 C70.5006923,99.3110636 67.6452906,100.146839 64.8185861,100.146839 Z" id="Combined-Shape" fill="#368BD6" fill-rule="nonzero"></path> + <path d="M97.0646617,23.1852217 C96.4319548,23.1852217 95.9398495,22.6976355 95.9398495,22.0707389 C95.9398495,21.4438424 96.4319548,20.9562562 97.0646617,20.9562562 L108.593985,20.9562562 C109.226692,20.9562562 109.718797,21.4438424 109.718797,22.0707389 C109.718797,22.6976355 109.226692,23.1852217 108.593985,23.1852217 L97.0646617,23.1852217 Z M97.0646617,2.70660098 C96.4319548,2.70660098 95.9398495,2.21901478 96.0804512,1.45280788 C96.0804512,0.825911331 96.5725565,0.338325122 97.2052632,0.338325122 L101.774812,0.338325122 L108.664286,0.338325122 C108.875188,0.338325122 109.08609,0.407980295 109.296993,0.547290639 C109.578195,0.756256159 109.789098,1.10453202 109.789098,1.52246305 L109.789098,6.53763546 C109.789098,9.04522168 107.680075,11.1348768 105.149248,11.1348768 C103.321428,11.1348768 101.774812,10.1597044 101.001504,8.62729063 L97.7676691,10.8562562 C97.2052632,11.204532 96.5022558,11.0652217 96.1507519,10.5776355 C95.7992481,10.0203941 95.9398495,9.32384236 96.4319548,8.97556651 L100.509399,6.18935962 L100.509399,2.70660098 L97.0646617,2.70660098 Z M107.398872,6.60729063 L107.328572,2.70660098 L102.759022,2.70660098 L102.759022,6.60729063 C102.759022,7.86108374 103.813534,8.90591134 105.078947,8.90591134 C106.344361,8.90591134 107.398872,7.86108374 107.398872,6.60729063 Z M108.593985,53.1369458 C109.226692,53.1369458 109.718797,53.624532 109.718797,54.2514286 L109.718797,58.7790147 L109.718797,63.3762563 C109.718797,64.0031526 109.226692,64.490739 108.593985,64.490739 C107.961278,64.490739 107.469173,64.0031526 107.469173,63.3762563 L107.469173,59.8934975 L97.1349624,59.8934975 C96.5022558,59.8934975 96.0101505,59.4059113 96.0101505,58.7790147 C96.0101505,58.1521181 96.5022558,57.664532 97.1349624,57.664532 L107.469173,57.664532 L107.469173,54.2514286 C107.469173,53.624532 107.961278,53.1369458 108.593985,53.1369458 Z M102.829323,32.7976353 C106.695865,32.7976353 109.859399,35.9321181 109.859399,39.7631526 C109.859399,43.5941873 106.695865,46.7286698 102.829323,46.7286698 C98.9627821,46.7286698 95.7992481,43.5941873 95.7992481,39.7631526 C95.7992481,35.9321181 98.9627821,32.7976353 102.829323,32.7976353 Z M102.829323,44.4300492 C105.430451,44.4300492 107.539474,42.3403941 107.539474,39.7631526 C107.539474,37.1859113 105.430451,35.0962563 102.829323,35.0962563 C100.228195,35.0962563 98.119173,37.1859113 98.119173,39.7631526 C98.119173,42.3403941 100.228195,44.4300492 102.829323,44.4300492 Z M109.367293,76.3321181 C109.578195,76.5410837 109.648496,76.8197046 109.648496,77.0983252 C109.648496,77.4466009 109.578195,77.6555664 109.367293,77.864532 C109.08609,78.0734975 108.804887,78.1431526 108.593985,78.1431526 L96.994361,78.1431526 C96.6428572,78.1431526 96.4319548,78.1431526 96.2210526,77.864532 C96.0101505,77.5859113 95.9398495,77.3769458 95.9398495,77.0983252 C95.9398495,76.7500492 96.0101505,76.5410837 96.2210526,76.3321181 C96.5022558,76.1231526 96.7131579,76.0534975 96.994361,76.0534975 L108.593985,76.0534975 C108.945489,76.0534975 109.156391,76.1231526 109.367293,76.3321181 Z M109.648496,89.0790147 C109.648496,89.4969458 109.437594,89.8452218 109.156391,90.0541873 L102.688722,94.3031526 L109.156391,98.5521181 C109.578195,98.7610837 109.648496,99.1790147 109.648496,99.5272907 L109.648496,99.6666009 C109.648496,100.014877 109.648496,100.223842 109.367293,100.432808 C109.08609,100.641773 108.875188,100.711429 108.593985,100.711429 L97.0646617,100.711429 C96.7131579,100.711429 96.5022558,100.711429 96.2913533,100.432808 C96.0804512,100.154187 96.0101505,100.014877 96.0101505,99.6666009 C96.0101505,99.3183252 96.0804512,99.1093596 96.2913533,98.9003941 C96.5725565,98.6914286 96.8537593,98.6217735 97.0646617,98.6217735 L105.571053,98.6217735 L100.439098,95.1390147 C100.157895,94.9300492 99.9469926,94.5817735 99.9469926,94.2334975 C99.9469926,93.8852218 100.087594,93.6066009 100.368797,93.3279803 L105.500752,89.9148769 L96.994361,89.9148769 C96.6428572,89.9148769 96.4319548,89.9148769 96.2210526,89.6362563 C96.0101505,89.3576353 95.9398495,89.2183252 95.9398495,88.8700492 C95.9398495,88.5217735 96.0101505,88.312808 96.2210526,88.1038424 C96.5022558,87.8948769 96.7834586,87.8948769 96.994361,87.8948769 L108.593985,87.8948769 C108.945489,87.8948769 109.156391,87.964532 109.367293,88.1734975 C109.578195,88.382463 109.648496,88.6610837 109.648496,88.9397046 L109.648496,89.0790147 Z M102.056015,68.7397046 C102.266917,68.7397046 102.47782,68.8093596 102.688722,69.0183252 C102.829323,69.1576353 102.969925,69.3666009 102.969925,69.6452218 C102.969925,69.8541873 102.899624,70.0631526 102.688722,70.2721181 C102.54812,70.4114286 102.337218,70.550739 102.056015,70.550739 L101.704511,70.550739 C101.493609,70.550739 101.282707,70.4810837 101.071805,70.2721181 C100.931203,70.132808 100.790601,69.9238424 100.790601,69.6452218 C100.790601,69.3666009 100.860902,69.1576353 101.071805,69.0183252 C101.212406,68.8790147 101.423308,68.7397046 101.704511,68.7397046 L102.056015,68.7397046 Z" id="Combined-Shape" fill="#212121" fill-rule="nonzero"></path> + </g> + </g> + </g> + </g> +</svg> diff --git a/res/home/images/matrix.svg b/res/welcome/images/matrix.svg similarity index 99% rename from res/home/images/matrix.svg rename to res/welcome/images/matrix.svg index 5c7dfbb5..13adcab2 100644 --- a/res/home/images/matrix.svg +++ b/res/welcome/images/matrix.svg @@ -1,153 +1,153 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="793.322px" height="340.809px" viewBox="0 0 793.322 340.809" enable-background="new 0 0 793.322 340.809" - xml:space="preserve"> -<path opacity="0.5" fill="#FFFFFF" d="M34.004,340.809H2c-1.104,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.004c1.104,0,2,0.896,2,2 - v7.71c0,1.104-0.896,2-2,2h-21.13v317.386h21.13c1.104,0,2,0.896,2,2.001v7.712C36.004,339.913,35.108,340.809,34.004,340.809 - L34.004,340.809z"/> -<path opacity="0.5" fill="#FFFFFF" d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/> -<path opacity="0.5" fill="#FFFFFF" d="M252.402,233.711h-32.993c-1.104,0-2-0.896-2-2v-68.073c0-3.949-0.154-7.722-0.457-11.213 - c-0.289-3.282-1.074-6.153-2.332-8.53c-1.204-2.276-3.017-4.119-5.384-5.476c-2.393-1.362-5.775-2.056-10.042-2.056 - c-4.238,0-7.674,0.798-10.213,2.371c-2.565,1.596-4.604,3.701-6.053,6.258c-1.498,2.643-2.51,5.694-3.013,9.067 - c-0.526,3.513-0.793,7.125-0.793,10.741v66.91c0,1.104-0.896,2-2,2h-32.991c-1.104,0-2-0.896-2-2v-67.373 - c0-3.435-0.078-6.964-0.228-10.485c-0.148-3.251-0.767-6.278-1.841-8.995c-1.018-2.571-2.667-4.584-5.047-6.153 - c-2.372-1.552-6.029-2.341-10.865-2.341c-1.372,0-3.265,0.328-5.629,0.976c-2.28,0.624-4.536,1.826-6.705,3.577 - c-2.152,1.732-4.036,4.306-5.605,7.655c-1.569,3.356-2.367,7.877-2.367,13.438v69.701c0,1.104-0.895,2-2,2H68.857 - c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.13c1.104,0,2,0.896,2,1.999v11.007 - c3.834-4.499,8.248-8.152,13.173-10.896c6.396-3.559,13.799-5.362,22.002-5.362c7.846,0,15.127,1.548,21.642,4.604 - c5.794,2.722,10.424,7.26,13.791,13.52c3.449-4.362,7.833-8.306,13.071-11.752c6.422-4.228,14.102-6.371,22.824-6.371 - c6.499,0,12.625,0.807,18.209,2.399c5.686,1.628,10.635,4.271,14.712,7.857c4.088,3.605,7.318,8.357,9.601,14.123 - c2.25,5.719,3.391,12.649,3.391,20.604v80.384C254.402,232.815,253.507,233.711,252.402,233.711L252.402,233.711z"/> -<path opacity="0.5" fill="#FFFFFF" d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406 - c6.117-3.402,13.129-5.11,21.027-5.11c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567 - c3.56-5.265,8.4-9.913,14.521-13.94c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325 - c5.418,1.549,10.065,4.027,13.938,7.434c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41 - v-68.074c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274 - c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971 - c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57 - c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671 - c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363 - c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/> -<path opacity="0.5" fill="#FFFFFF" d="M304.909,236.733c-5.883,0-11.46-0.729-16.574-2.163c-5.192-1.464-9.806-3.774-13.713-6.871 - c-3.944-3.117-7.068-7.111-9.282-11.871c-2.205-4.733-3.324-10.412-3.324-16.876c0-7.13,1.293-13.117,3.846-17.797 - c2.542-4.674,5.877-8.464,9.912-11.263c3.97-2.752,8.556-4.842,13.63-6.209c4.901-1.322,9.937-2.394,14.961-3.184 - c4.986-0.775,9.949-1.404,14.754-1.872c4.679-0.452,8.88-1.139,12.489-2.039c3.412-0.854,6.118-2.09,8.042-3.672 - c1.666-1.37,2.416-3.384,2.292-6.151c-0.002-3.289-0.502-5.816-1.492-7.595c-0.998-1.798-2.283-3.15-3.927-4.138 - c-1.703-1.02-3.725-1.713-6.012-2.062c-2.47-0.37-5.146-0.557-7.947-0.557c-6.034,0-10.789,1.271-14.135,3.783 - c-3.233,2.424-5.155,6.64-5.714,12.527c-0.098,1.026-0.961,1.812-1.992,1.812h-32.992c-0.552,0-1.079-0.229-1.457-0.629 - c-0.376-0.402-0.572-0.941-0.54-1.491c0.485-8.073,2.55-14.894,6.142-20.272c3.548-5.331,8.147-9.682,13.661-12.931 - c5.424-3.191,11.612-5.498,18.392-6.857c6.684-1.335,13.5-2.013,20.26-2.013c6.096,0,12.365,0.437,18.626,1.296 - c6.377,0.88,12.285,2.622,17.562,5.177c5.376,2.604,9.845,6.29,13.282,10.951c3.498,4.744,5.271,11.048,5.271,18.731v62.494 - c0,5.307,0.306,10.462,0.915,15.319c0.576,4.64,1.572,8.116,2.963,10.338c0.385,0.616,0.407,1.395,0.055,2.031 - c-0.353,0.635-1.022,1.03-1.75,1.03h-33.457c-0.861,0-1.624-0.55-1.898-1.367c-0.646-1.941-1.176-3.939-1.572-5.936 - c-0.141-0.696-0.267-1.402-0.38-2.12c-4.825,4.184-10.349,7.24-16.474,9.105C320.033,235.609,312.489,236.733,304.909,236.733 - L304.909,236.733z M341.941,176.661c-0.809,0.409-1.676,0.768-2.596,1.074c-2.161,0.72-4.511,1.326-6.988,1.807 - c-2.442,0.475-5.033,0.872-7.699,1.186c-2.631,0.311-5.251,0.697-7.784,1.146c-2.329,0.433-4.705,1.035-7.051,1.792 - c-2.194,0.711-4.114,1.667-5.699,2.842c-1.531,1.128-2.785,2.587-3.731,4.335c-0.917,1.709-1.385,3.97-1.385,6.719 - c0,2.598,0.465,4.778,1.385,6.481c0.928,1.722,2.142,3.035,3.716,4.018c1.644,1.026,3.601,1.757,5.816,2.17 - c2.344,0.439,4.799,0.663,7.297,0.663c6.105,0,10.836-0.996,14.063-2.961c3.244-1.973,5.666-4.349,7.199-7.062 - c1.568-2.78,2.542-5.62,2.892-8.436c0.376-3.019,0.565-5.436,0.565-7.187V176.661L341.941,176.661z"/> -<path opacity="0.5" fill="#FFFFFF" d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316 - c5.264-3.097,11.186-5.303,17.771-6.621c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277 - c6.195,0.855,11.85,2.522,16.962,4.997c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494 - c0,5.428,0.31,10.611,0.931,15.567c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693 - c-0.39-1.933-0.661-3.908-0.813-5.923c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251 - c-5.733,0-11.077-0.698-16.033-2.09c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147 - s-3.138-9.84-3.138-16.033c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575 - c3.793-2.632,8.129-4.607,13.01-5.923c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857 - c4.801-0.466,9.062-1.164,12.779-2.093c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785 - c0-3.56-0.58-6.389-1.742-8.479c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325 - c-2.557-0.382-5.309-0.58-8.248-0.58c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991 - C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741 - c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857 - c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668 - c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698 - c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174 - c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/> -<path opacity="0.5" fill="#FFFFFF" d="M444.542,234.874c-5.187,0-10.173-0.361-14.823-1.069c-4.802-0.732-9.104-2.183-12.779-4.313 - c-3.789-2.185-6.821-5.341-9.006-9.375c-2.163-3.986-3.26-9.232-3.26-15.59v-68.859h-17.981c-1.104,0-2-0.896-2-1.999v-22.073 - c0-1.104,0.896-1.999,2-1.999h17.981V75.582c0-1.104,0.896-2,2-2h32.992c1.104,0,2,0.896,2,2v34.014h22.162c1.104,0,2,0.896,2,1.999 - v22.073c0,1.104-0.896,1.999-2,1.999h-22.162v57.479c0,6.229,1.198,8.731,2.202,9.733c1.004,1.007,3.506,2.205,9.738,2.205 - c1.804,0,3.542-0.076,5.161-0.225c1.604-0.144,3.174-0.367,4.669-0.665c0.13-0.026,0.261-0.039,0.391-0.039 - c0.458,0,0.907,0.159,1.27,0.454c0.463,0.379,0.73,0.946,0.73,1.546v25.555c0,0.979-0.707,1.813-1.672,1.974 - c-2.834,0.472-6.041,0.794-9.527,0.957C451.015,234.798,447.718,234.874,444.542,234.874L444.542,234.874z"/> -<path opacity="0.5" fill="#FFFFFF" d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149 - c1.856,1.859,5.576,2.788,11.152,2.788c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557 - c-2.788,0.465-5.887,0.773-9.293,0.931c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048 - c-4.571-0.695-8.597-2.047-12.081-4.063c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98 - v-22.072h19.98V75.583h32.992v36.012H463.825z"/> -<path opacity="0.5" fill="#FFFFFF" d="M512.613,233.711h-32.991c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.366 - c1.104,0,2,0.896,2,1.999v15.069c0.967-1.516,2.034-2.978,3.199-4.382c2.754-3.312,5.949-6.182,9.496-8.522 - c3.545-2.332,7.385-4.169,11.415-5.462c4.056-1.298,8.327-1.954,12.691-1.954c2.341,0,4.953,0.418,7.766,1.243 - c0.852,0.25,1.437,1.032,1.437,1.92v30.67c0,0.6-0.269,1.167-0.732,1.547c-0.361,0.296-0.808,0.452-1.265,0.452 - c-0.133,0-0.265-0.013-0.398-0.039c-1.484-0.3-3.299-0.565-5.392-0.787c-2.098-0.224-4.136-0.339-6.062-0.339 - c-5.706,0-10.572,0.95-14.467,2.823c-3.862,1.86-7.012,4.428-9.361,7.629c-2.389,3.263-4.115,7.12-5.127,11.47 - c-1.043,4.479-1.574,9.409-1.574,14.647v54.132C514.613,232.815,513.717,233.711,512.613,233.711L512.613,233.711z"/> -<path opacity="0.5" fill="#FFFFFF" d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341 - c2.634-3.172,5.652-5.885,9.06-8.131c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859 - c2.168,0,4.566,0.39,7.202,1.163v30.67c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35 - c-6.041,0-11.152,1.01-15.332,3.021c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198 - c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991V111.595H510.988z"/> -<path opacity="0.5" fill="#FFFFFF" d="M603.923,233.711H570.93c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h32.994 - c1.104,0,2,0.896,2,1.999v120.117C605.923,232.815,605.027,233.711,603.923,233.711L603.923,233.711z M603.923,95.006H570.93 - c-1.104,0-2-0.896-2-1.999V65.825c0-1.104,0.896-2,2-2h32.994c1.104,0,2,0.896,2,2v27.182 - C605.923,94.11,605.027,95.006,603.923,95.006L603.923,95.006z"/> -<path opacity="0.5" fill="#FFFFFF" d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595 - H603.924z"/> -<path opacity="0.5" fill="#FFFFFF" d="M742.163,233.711h-37.64c-0.671,0-1.297-0.335-1.667-0.896l-23.426-35.352l-23.426,35.352 - c-0.369,0.561-0.995,0.896-1.667,0.896h-36.938c-0.741,0-1.424-0.411-1.77-1.067c-0.345-0.654-0.3-1.449,0.118-2.061l42.435-62.055 - l-38.71-55.793c-0.424-0.613-0.474-1.408-0.128-2.069c0.343-0.658,1.028-1.071,1.771-1.071h37.636c0.665,0,1.287,0.33,1.658,0.882 - l19.477,28.893l19.255-28.884c0.372-0.556,0.996-0.891,1.665-0.891h36.475c0.746,0,1.43,0.415,1.776,1.078 - c0.343,0.66,0.289,1.46-0.139,2.071l-38.69,55.082l43.578,62.744c0.424,0.61,0.474,1.408,0.128,2.066 - C743.591,233.298,742.908,233.711,742.163,233.711L742.163,233.711z"/> -<path opacity="0.5" fill="#FFFFFF" d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892 - h-37.64l-25.093-37.87l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/> -<path opacity="0.5" fill="#FFFFFF" d="M791.322,340.809h-32.008c-1.105,0-2-0.896-2-2v-7.712c0-1.105,0.896-2.001,2-2.001h21.13 - V11.71h-21.13c-1.105,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.008c1.104,0,2,0.896,2,2v336.809 - C793.322,339.913,792.426,340.809,791.322,340.809L791.322,340.809z"/> -<path opacity="0.5" fill="#FFFFFF" d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/> -<path d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/> -<path d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406c6.117-3.402,13.129-5.11,21.027-5.11 - c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567c3.56-5.265,8.4-9.913,14.521-13.94 - c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325c5.418,1.549,10.065,4.027,13.938,7.434 - c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41v-68.074 - c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274 - c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971 - c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57 - c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671 - c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363 - c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/> -<path d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316c5.264-3.097,11.186-5.303,17.771-6.621 - c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277c6.195,0.855,11.85,2.522,16.962,4.997 - c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494c0,5.428,0.31,10.611,0.931,15.567 - c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693c-0.39-1.933-0.661-3.908-0.813-5.923 - c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251c-5.733,0-11.077-0.698-16.033-2.09 - c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147s-3.138-9.84-3.138-16.033 - c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575c3.793-2.632,8.129-4.607,13.01-5.923 - c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857c4.801-0.466,9.062-1.164,12.779-2.093 - c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785c0-3.56-0.58-6.389-1.742-8.479 - c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325c-2.557-0.382-5.309-0.58-8.248-0.58 - c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991 - C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741 - c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857 - c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668 - c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698 - c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174 - c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/> -<path d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149c1.856,1.859,5.576,2.788,11.152,2.788 - c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557c-2.788,0.465-5.887,0.773-9.293,0.931 - c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048c-4.571-0.695-8.597-2.047-12.081-4.063 - c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98v-22.072h19.98V75.583h32.992v36.012 - H463.825z"/> -<path d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341c2.634-3.172,5.652-5.885,9.06-8.131 - c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859c2.168,0,4.566,0.39,7.202,1.163v30.67 - c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35c-6.041,0-11.152,1.01-15.332,3.021 - c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991 - V111.595H510.988z"/> -<path d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595H603.924z"/> -<path d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892h-37.64l-25.093-37.87 - l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/> -<path d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/> -</svg> +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="793.322px" height="340.809px" viewBox="0 0 793.322 340.809" enable-background="new 0 0 793.322 340.809" + xml:space="preserve"> +<path opacity="0.5" fill="#FFFFFF" d="M34.004,340.809H2c-1.104,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.004c1.104,0,2,0.896,2,2 + v7.71c0,1.104-0.896,2-2,2h-21.13v317.386h21.13c1.104,0,2,0.896,2,2.001v7.712C36.004,339.913,35.108,340.809,34.004,340.809 + L34.004,340.809z"/> +<path opacity="0.5" fill="#FFFFFF" d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/> +<path opacity="0.5" fill="#FFFFFF" d="M252.402,233.711h-32.993c-1.104,0-2-0.896-2-2v-68.073c0-3.949-0.154-7.722-0.457-11.213 + c-0.289-3.282-1.074-6.153-2.332-8.53c-1.204-2.276-3.017-4.119-5.384-5.476c-2.393-1.362-5.775-2.056-10.042-2.056 + c-4.238,0-7.674,0.798-10.213,2.371c-2.565,1.596-4.604,3.701-6.053,6.258c-1.498,2.643-2.51,5.694-3.013,9.067 + c-0.526,3.513-0.793,7.125-0.793,10.741v66.91c0,1.104-0.896,2-2,2h-32.991c-1.104,0-2-0.896-2-2v-67.373 + c0-3.435-0.078-6.964-0.228-10.485c-0.148-3.251-0.767-6.278-1.841-8.995c-1.018-2.571-2.667-4.584-5.047-6.153 + c-2.372-1.552-6.029-2.341-10.865-2.341c-1.372,0-3.265,0.328-5.629,0.976c-2.28,0.624-4.536,1.826-6.705,3.577 + c-2.152,1.732-4.036,4.306-5.605,7.655c-1.569,3.356-2.367,7.877-2.367,13.438v69.701c0,1.104-0.895,2-2,2H68.857 + c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.13c1.104,0,2,0.896,2,1.999v11.007 + c3.834-4.499,8.248-8.152,13.173-10.896c6.396-3.559,13.799-5.362,22.002-5.362c7.846,0,15.127,1.548,21.642,4.604 + c5.794,2.722,10.424,7.26,13.791,13.52c3.449-4.362,7.833-8.306,13.071-11.752c6.422-4.228,14.102-6.371,22.824-6.371 + c6.499,0,12.625,0.807,18.209,2.399c5.686,1.628,10.635,4.271,14.712,7.857c4.088,3.605,7.318,8.357,9.601,14.123 + c2.25,5.719,3.391,12.649,3.391,20.604v80.384C254.402,232.815,253.507,233.711,252.402,233.711L252.402,233.711z"/> +<path opacity="0.5" fill="#FFFFFF" d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406 + c6.117-3.402,13.129-5.11,21.027-5.11c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567 + c3.56-5.265,8.4-9.913,14.521-13.94c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325 + c5.418,1.549,10.065,4.027,13.938,7.434c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41 + v-68.074c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274 + c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971 + c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57 + c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671 + c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363 + c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/> +<path opacity="0.5" fill="#FFFFFF" d="M304.909,236.733c-5.883,0-11.46-0.729-16.574-2.163c-5.192-1.464-9.806-3.774-13.713-6.871 + c-3.944-3.117-7.068-7.111-9.282-11.871c-2.205-4.733-3.324-10.412-3.324-16.876c0-7.13,1.293-13.117,3.846-17.797 + c2.542-4.674,5.877-8.464,9.912-11.263c3.97-2.752,8.556-4.842,13.63-6.209c4.901-1.322,9.937-2.394,14.961-3.184 + c4.986-0.775,9.949-1.404,14.754-1.872c4.679-0.452,8.88-1.139,12.489-2.039c3.412-0.854,6.118-2.09,8.042-3.672 + c1.666-1.37,2.416-3.384,2.292-6.151c-0.002-3.289-0.502-5.816-1.492-7.595c-0.998-1.798-2.283-3.15-3.927-4.138 + c-1.703-1.02-3.725-1.713-6.012-2.062c-2.47-0.37-5.146-0.557-7.947-0.557c-6.034,0-10.789,1.271-14.135,3.783 + c-3.233,2.424-5.155,6.64-5.714,12.527c-0.098,1.026-0.961,1.812-1.992,1.812h-32.992c-0.552,0-1.079-0.229-1.457-0.629 + c-0.376-0.402-0.572-0.941-0.54-1.491c0.485-8.073,2.55-14.894,6.142-20.272c3.548-5.331,8.147-9.682,13.661-12.931 + c5.424-3.191,11.612-5.498,18.392-6.857c6.684-1.335,13.5-2.013,20.26-2.013c6.096,0,12.365,0.437,18.626,1.296 + c6.377,0.88,12.285,2.622,17.562,5.177c5.376,2.604,9.845,6.29,13.282,10.951c3.498,4.744,5.271,11.048,5.271,18.731v62.494 + c0,5.307,0.306,10.462,0.915,15.319c0.576,4.64,1.572,8.116,2.963,10.338c0.385,0.616,0.407,1.395,0.055,2.031 + c-0.353,0.635-1.022,1.03-1.75,1.03h-33.457c-0.861,0-1.624-0.55-1.898-1.367c-0.646-1.941-1.176-3.939-1.572-5.936 + c-0.141-0.696-0.267-1.402-0.38-2.12c-4.825,4.184-10.349,7.24-16.474,9.105C320.033,235.609,312.489,236.733,304.909,236.733 + L304.909,236.733z M341.941,176.661c-0.809,0.409-1.676,0.768-2.596,1.074c-2.161,0.72-4.511,1.326-6.988,1.807 + c-2.442,0.475-5.033,0.872-7.699,1.186c-2.631,0.311-5.251,0.697-7.784,1.146c-2.329,0.433-4.705,1.035-7.051,1.792 + c-2.194,0.711-4.114,1.667-5.699,2.842c-1.531,1.128-2.785,2.587-3.731,4.335c-0.917,1.709-1.385,3.97-1.385,6.719 + c0,2.598,0.465,4.778,1.385,6.481c0.928,1.722,2.142,3.035,3.716,4.018c1.644,1.026,3.601,1.757,5.816,2.17 + c2.344,0.439,4.799,0.663,7.297,0.663c6.105,0,10.836-0.996,14.063-2.961c3.244-1.973,5.666-4.349,7.199-7.062 + c1.568-2.78,2.542-5.62,2.892-8.436c0.376-3.019,0.565-5.436,0.565-7.187V176.661L341.941,176.661z"/> +<path opacity="0.5" fill="#FFFFFF" d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316 + c5.264-3.097,11.186-5.303,17.771-6.621c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277 + c6.195,0.855,11.85,2.522,16.962,4.997c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494 + c0,5.428,0.31,10.611,0.931,15.567c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693 + c-0.39-1.933-0.661-3.908-0.813-5.923c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251 + c-5.733,0-11.077-0.698-16.033-2.09c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147 + s-3.138-9.84-3.138-16.033c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575 + c3.793-2.632,8.129-4.607,13.01-5.923c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857 + c4.801-0.466,9.062-1.164,12.779-2.093c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785 + c0-3.56-0.58-6.389-1.742-8.479c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325 + c-2.557-0.382-5.309-0.58-8.248-0.58c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991 + C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741 + c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857 + c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668 + c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698 + c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174 + c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/> +<path opacity="0.5" fill="#FFFFFF" d="M444.542,234.874c-5.187,0-10.173-0.361-14.823-1.069c-4.802-0.732-9.104-2.183-12.779-4.313 + c-3.789-2.185-6.821-5.341-9.006-9.375c-2.163-3.986-3.26-9.232-3.26-15.59v-68.859h-17.981c-1.104,0-2-0.896-2-1.999v-22.073 + c0-1.104,0.896-1.999,2-1.999h17.981V75.582c0-1.104,0.896-2,2-2h32.992c1.104,0,2,0.896,2,2v34.014h22.162c1.104,0,2,0.896,2,1.999 + v22.073c0,1.104-0.896,1.999-2,1.999h-22.162v57.479c0,6.229,1.198,8.731,2.202,9.733c1.004,1.007,3.506,2.205,9.738,2.205 + c1.804,0,3.542-0.076,5.161-0.225c1.604-0.144,3.174-0.367,4.669-0.665c0.13-0.026,0.261-0.039,0.391-0.039 + c0.458,0,0.907,0.159,1.27,0.454c0.463,0.379,0.73,0.946,0.73,1.546v25.555c0,0.979-0.707,1.813-1.672,1.974 + c-2.834,0.472-6.041,0.794-9.527,0.957C451.015,234.798,447.718,234.874,444.542,234.874L444.542,234.874z"/> +<path opacity="0.5" fill="#FFFFFF" d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149 + c1.856,1.859,5.576,2.788,11.152,2.788c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557 + c-2.788,0.465-5.887,0.773-9.293,0.931c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048 + c-4.571-0.695-8.597-2.047-12.081-4.063c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98 + v-22.072h19.98V75.583h32.992v36.012H463.825z"/> +<path opacity="0.5" fill="#FFFFFF" d="M512.613,233.711h-32.991c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.366 + c1.104,0,2,0.896,2,1.999v15.069c0.967-1.516,2.034-2.978,3.199-4.382c2.754-3.312,5.949-6.182,9.496-8.522 + c3.545-2.332,7.385-4.169,11.415-5.462c4.056-1.298,8.327-1.954,12.691-1.954c2.341,0,4.953,0.418,7.766,1.243 + c0.852,0.25,1.437,1.032,1.437,1.92v30.67c0,0.6-0.269,1.167-0.732,1.547c-0.361,0.296-0.808,0.452-1.265,0.452 + c-0.133,0-0.265-0.013-0.398-0.039c-1.484-0.3-3.299-0.565-5.392-0.787c-2.098-0.224-4.136-0.339-6.062-0.339 + c-5.706,0-10.572,0.95-14.467,2.823c-3.862,1.86-7.012,4.428-9.361,7.629c-2.389,3.263-4.115,7.12-5.127,11.47 + c-1.043,4.479-1.574,9.409-1.574,14.647v54.132C514.613,232.815,513.717,233.711,512.613,233.711L512.613,233.711z"/> +<path opacity="0.5" fill="#FFFFFF" d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341 + c2.634-3.172,5.652-5.885,9.06-8.131c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859 + c2.168,0,4.566,0.39,7.202,1.163v30.67c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35 + c-6.041,0-11.152,1.01-15.332,3.021c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198 + c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991V111.595H510.988z"/> +<path opacity="0.5" fill="#FFFFFF" d="M603.923,233.711H570.93c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h32.994 + c1.104,0,2,0.896,2,1.999v120.117C605.923,232.815,605.027,233.711,603.923,233.711L603.923,233.711z M603.923,95.006H570.93 + c-1.104,0-2-0.896-2-1.999V65.825c0-1.104,0.896-2,2-2h32.994c1.104,0,2,0.896,2,2v27.182 + C605.923,94.11,605.027,95.006,603.923,95.006L603.923,95.006z"/> +<path opacity="0.5" fill="#FFFFFF" d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595 + H603.924z"/> +<path opacity="0.5" fill="#FFFFFF" d="M742.163,233.711h-37.64c-0.671,0-1.297-0.335-1.667-0.896l-23.426-35.352l-23.426,35.352 + c-0.369,0.561-0.995,0.896-1.667,0.896h-36.938c-0.741,0-1.424-0.411-1.77-1.067c-0.345-0.654-0.3-1.449,0.118-2.061l42.435-62.055 + l-38.71-55.793c-0.424-0.613-0.474-1.408-0.128-2.069c0.343-0.658,1.028-1.071,1.771-1.071h37.636c0.665,0,1.287,0.33,1.658,0.882 + l19.477,28.893l19.255-28.884c0.372-0.556,0.996-0.891,1.665-0.891h36.475c0.746,0,1.43,0.415,1.776,1.078 + c0.343,0.66,0.289,1.46-0.139,2.071l-38.69,55.082l43.578,62.744c0.424,0.61,0.474,1.408,0.128,2.066 + C743.591,233.298,742.908,233.711,742.163,233.711L742.163,233.711z"/> +<path opacity="0.5" fill="#FFFFFF" d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892 + h-37.64l-25.093-37.87l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/> +<path opacity="0.5" fill="#FFFFFF" d="M791.322,340.809h-32.008c-1.105,0-2-0.896-2-2v-7.712c0-1.105,0.896-2.001,2-2.001h21.13 + V11.71h-21.13c-1.105,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.008c1.104,0,2,0.896,2,2v336.809 + C793.322,339.913,792.426,340.809,791.322,340.809L791.322,340.809z"/> +<path opacity="0.5" fill="#FFFFFF" d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/> +<path d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/> +<path d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406c6.117-3.402,13.129-5.11,21.027-5.11 + c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567c3.56-5.265,8.4-9.913,14.521-13.94 + c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325c5.418,1.549,10.065,4.027,13.938,7.434 + c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41v-68.074 + c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274 + c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971 + c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57 + c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671 + c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363 + c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/> +<path d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316c5.264-3.097,11.186-5.303,17.771-6.621 + c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277c6.195,0.855,11.85,2.522,16.962,4.997 + c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494c0,5.428,0.31,10.611,0.931,15.567 + c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693c-0.39-1.933-0.661-3.908-0.813-5.923 + c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251c-5.733,0-11.077-0.698-16.033-2.09 + c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147s-3.138-9.84-3.138-16.033 + c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575c3.793-2.632,8.129-4.607,13.01-5.923 + c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857c4.801-0.466,9.062-1.164,12.779-2.093 + c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785c0-3.56-0.58-6.389-1.742-8.479 + c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325c-2.557-0.382-5.309-0.58-8.248-0.58 + c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991 + C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741 + c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857 + c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668 + c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698 + c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174 + c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/> +<path d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149c1.856,1.859,5.576,2.788,11.152,2.788 + c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557c-2.788,0.465-5.887,0.773-9.293,0.931 + c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048c-4.571-0.695-8.597-2.047-12.081-4.063 + c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98v-22.072h19.98V75.583h32.992v36.012 + H463.825z"/> +<path d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341c2.634-3.172,5.652-5.885,9.06-8.131 + c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859c2.168,0,4.566,0.39,7.202,1.163v30.67 + c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35c-6.041,0-11.152,1.01-15.332,3.021 + c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991 + V111.595H510.988z"/> +<path d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595H603.924z"/> +<path d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892h-37.64l-25.093-37.87 + l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/> +<path d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/> +</svg> diff --git a/riot.im/README b/riot.im/README new file mode 100644 index 00000000..2186e48d --- /dev/null +++ b/riot.im/README @@ -0,0 +1,11 @@ +This directory contains the config files and deployment scripts for the official +riot.im distribution of Riot Web at https://riot.im. + +You probably do not want to build with this config unless you're building the +official riot.im distribution, but these files may be useful if you want to +inspect the configuration used there. + +Riot Desktop uses a separate config (see electron_app/riot.im/config.json). + +Deployment scripts (such as app/deploy.py) are meant to be run on the web server +hosting the Riot installation. diff --git a/riot.im/app/config.json b/riot.im/app/config.json new file mode 100644 index 00000000..70ecddfd --- /dev/null +++ b/riot.im/app/config.json @@ -0,0 +1,49 @@ +{ + "default_server_name": "matrix.org", + "brand": "Riot", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_widgets_urls": [ + "https://scalar.vector.im/_matrix/integrations/v1", + "https://scalar.vector.im/api", + "https://scalar-staging.vector.im/_matrix/integrations/v1", + "https://scalar-staging.vector.im/api", + "https://scalar-staging.riot.im/scalar/api" + ], + "hosting_signup_link": "https://modular.im/?utm_source=riot-web&utm_medium=web", + "bug_report_endpoint_url": "https://riot.im/bugreports/submit", + "welcomeUserId": "@riot-bot:matrix.org", + "piwik": { + "url": "https://piwik.riot.im/", + "siteId": 1, + "policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy" + }, + "phasedRollOut": { + "feature_lazyloading": { + "offset": 1539684000000, + "period": 604800000 + } + }, + "features": { + "feature_lazyloading": "enable", + "feature_room_breadcrumbs": "labs" + }, + "roomDirectory": { + "servers": [ + "matrix.org" + ] + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false + }, + "terms_and_conditions_links": [ + { + "url": "https://riot.im/privacy", + "text": "Privacy Policy" + }, + { + "url": "https://matrix.org/docs/guides/riot_im_cookie_policy", + "text": "Cookie Policy" + } + ] +} diff --git a/riot.im/app/deploy.py b/riot.im/app/deploy.py new file mode 100755 index 00000000..33aa0af0 --- /dev/null +++ b/riot.im/app/deploy.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python +# +# download and unpack a riot-web tarball. +# +# Allows `bundles` to be extracted to a common directory, and a link to +# config.json to be added. + +from __future__ import print_function + +import argparse +import os +import os.path +import subprocess +import sys +import tarfile +import shutil +import glob + +try: + # python3 + from urllib.request import urlretrieve +except ImportError: + # python2 + from urllib import urlretrieve + +class DeployException(Exception): + pass + +def create_relative_symlink(linkname, target): + relpath = os.path.relpath(target, os.path.dirname(linkname)) + print ("Symlink %s -> %s" % (linkname, relpath)) + os.symlink(relpath, linkname) + + +def move_bundles(source, dest): + """Move the contents of the 'bundles' directory to a common dir + + We check that we will not be overwriting anything before we proceed. + + Args: + source (str): path to 'bundles' within the extracted tarball + dest (str): target common directory + """ + + if not os.path.isdir(dest): + os.mkdir(dest) + + # build a map from source to destination, checking for non-existence as we go. + renames = {} + for f in os.listdir(source): + dst = os.path.join(dest, f) + if os.path.exists(dst): + print ( + "Skipping bundle. The bundle includes '%s' which we have previously deployed." + % f + ) + else: + renames[os.path.join(source, f)] = dst + + for (src, dst) in renames.iteritems(): + print ("Move %s -> %s" % (src, dst)) + os.rename(src, dst) + +class Deployer: + def __init__(self): + self.packages_path = "." + self.bundles_path = None + self.should_clean = False + # filename -> symlink path e.g 'config.localhost.json' => '../localhost/config.json' + self.symlink_paths = {} + self.verify_signature = True + + def deploy(self, tarball, extract_path): + """Download a tarball if necessary, and unpack it + + Returns: + (str) the path to the unpacked deployment + """ + print("Deploying %s to %s" % (tarball, extract_path)) + + name_str = os.path.basename(tarball).replace(".tar.gz", "") + extracted_dir = os.path.join(extract_path, name_str) + if os.path.exists(extracted_dir): + raise DeployException('Cannot unpack %s: %s already exists' % ( + tarball, extracted_dir)) + + downloaded = False + if tarball.startswith("http://") or tarball.startswith("https://"): + tarball = self.download_and_verify(tarball) + print("Downloaded file: %s" % tarball) + downloaded = True + + try: + with tarfile.open(tarball) as tar: + tar.extractall(extract_path) + finally: + if self.should_clean and downloaded: + os.remove(tarball) + + print ("Extracted into: %s" % extracted_dir) + + if self.symlink_paths: + for link_path, file_path in self.symlink_paths.iteritems(): + create_relative_symlink( + target=file_path, + linkname=os.path.join(extracted_dir, link_path) + ) + + if self.bundles_path: + extracted_bundles = os.path.join(extracted_dir, 'bundles') + move_bundles(source=extracted_bundles, dest=self.bundles_path) + + # replace the extracted_bundles dir (which may not be empty if some + # bundles were skipped) with a symlink to the common dir. + shutil.rmtree(extracted_bundles) + create_relative_symlink( + target=self.bundles_path, + linkname=extracted_bundles, + ) + return extracted_dir + + def download_and_verify(self, url): + tarball = self.download_file(url) + + if self.verify_signature: + sigfile = self.download_file(url + ".asc") + subprocess.check_call(["gpg", "--verify", sigfile, tarball]) + + return tarball + + def download_file(self, url): + if not os.path.isdir(self.packages_path): + os.mkdir(self.packages_path) + local_filename = os.path.join(self.packages_path, + url.split('/')[-1]) + sys.stdout.write("Downloading %s -> %s..." % (url, local_filename)) + sys.stdout.flush() + urlretrieve(url, local_filename) + print ("Done") + return local_filename + +if __name__ == "__main__": + parser = argparse.ArgumentParser("Deploy a Riot build on a web server.") + parser.add_argument( + "-p", "--packages-dir", default="./packages", help=( + "The directory to download the tarball into. (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-e", "--extract-path", default="./deploys", help=( + "The location to extract .tar.gz files to. (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-b", "--bundles-dir", nargs='?', default="./bundles", help=( + "A directory to move the contents of the 'bundles' directory to. A \ + symlink to the bundles directory will also be written inside the \ + extracted tarball. Example: './bundles'. \ + (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-c", "--clean", action="store_true", default=False, help=( + "Remove .tar.gz files after they have been downloaded and extracted. \ + (Default: %(default)s)" + ) + ) + parser.add_argument( + "--include", nargs='*', default=['./config*.json'], help=( + "Symlink these files into the root of the deployed tarball. \ + Useful for config files and home pages. Supports glob syntax. \ + (Default: '%(default)s')" + ) + ) + parser.add_argument( + "tarball", help=( + "filename of tarball, or URL to download." + ), + ) + + args = parser.parse_args() + + deployer = Deployer() + deployer.packages_path = args.packages_dir + deployer.bundles_path = args.bundles_dir + deployer.should_clean = args.clean + + for include in args.include: + deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) }) + + deployer.deploy(args.tarball, args.extract_path) diff --git a/riot.im/develop/config.json b/riot.im/develop/config.json new file mode 100644 index 00000000..f028ab97 --- /dev/null +++ b/riot.im/develop/config.json @@ -0,0 +1,56 @@ +{ + "default_server_name": "matrix.org", + "brand": "Riot", + "integrations_ui_url": "https://scalar-staging.vector.im/", + "integrations_rest_url": "https://scalar-staging.vector.im/api", + "integrations_widgets_urls": [ + "https://scalar.vector.im/_matrix/integrations/v1", + "https://scalar.vector.im/api", + "https://scalar-staging.vector.im/_matrix/integrations/v1", + "https://scalar-staging.vector.im/api", + "https://scalar-staging.riot.im/scalar/api" + ], + "hosting_signup_link": "https://modular.im/?utm_source=riot-web&utm_medium=web", + "bug_report_endpoint_url": "https://riot.im/bugreports/submit", + "features": { + "feature_rich_quoting": "labs", + "feature_pinning": "labs", + "feature_presence_management": "labs", + "feature_sticker_messages": "labs", + "feature_jitsi": "labs", + "feature_tag_panel": "enable", + "feature_keybackup": "labs", + "feature_custom_status": "labs", + "feature_custom_tags": "labs", + "feature_lazyloading": "enable", + "feature_tabbed_settings": "labs", + "feature_sas": "labs", + "feature_room_breadcrumbs": "labs", + "feature_state_counters": "labs", + "feature_many_integration_managers": "labs" + }, + "welcomeUserId": "@riot-bot:matrix.org", + "piwik": { + "url": "https://piwik.riot.im/", + "siteId": 1, + "policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy" + }, + "roomDirectory": { + "servers": [ + "matrix.org" + ] + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false + }, + "terms_and_conditions_links": [ + { + "url": "https://riot.im/privacy", + "text": "Privacy Policy" + }, + { + "url": "https://matrix.org/docs/guides/riot_im_cookie_policy", + "text": "Cookie Policy" + } + ] +} diff --git a/scripts/ci_package.sh b/scripts/ci_package.sh new file mode 100755 index 00000000..b6daf052 --- /dev/null +++ b/scripts/ci_package.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Runs package.sh setting the version to git hashes of the riot-web, +# react-sdk & js-sdk checkouts, for the case where these dependencies +# are git checkouts. + +set -ex + +rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist + +# Since the deps are fetched from git, we can rev-parse +REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD) +JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD) + +VECTOR_SHA=$(git rev-parse --short=12 HEAD) # use the ACTUAL SHA rather than assume develop + +DIST_VERSION=$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA scripts/package.sh -d diff --git a/scripts/cleanup.sh b/scripts/cleanup.sh new file mode 100755 index 00000000..3e7923a5 --- /dev/null +++ b/scripts/cleanup.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# +# script to clean up the deployments made by redeploy.py for vectorwebdev and vectorwebexp +set -e + +# currently live deployment (full path) +live=`dirname $(readlink -f "$HOME/live")` + +# currently live bundle (just the name of the bundle) +live_bundle=`grep 'script src="bundles' live/index.html | sed -e 's#.*bundles/##' -e 's#/.*##'` + +# clean up 'extracted': find things which are older than 7 days, exclude the +# current live one, and remove +find $HOME/extracted -mindepth 1 -maxdepth 1 -type d -ctime +7 \ + \! -path "$live" -exec rm -r {} \; + +# clean up 'bundles': ditto +find $HOME/bundles -mindepth 1 -maxdepth 1 -type d -ctime +7 \ + \! -name "$live_bundle" -exec rm -r {} \; diff --git a/scripts/compare-file.js b/scripts/compare-file.js new file mode 100644 index 00000000..f53275eb --- /dev/null +++ b/scripts/compare-file.js @@ -0,0 +1,10 @@ +const fs = require("fs"); + +if (process.argv.length < 4) throw new Error("Missing source and target file arguments"); + +const sourceFile = fs.readFileSync(process.argv[2], 'utf8'); +const targetFile = fs.readFileSync(process.argv[3], 'utf8'); + +if (sourceFile !== targetFile) { + throw new Error("Files do not match"); +} diff --git a/scripts/copy-res.js b/scripts/copy-res.js index abfd18a2..aa4ece9f 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -1,5 +1,7 @@ #!/usr/bin/env node +const loaderUtils = require("loader-utils"); + // copies the resources into the webapp directory. // @@ -7,33 +9,42 @@ // a translation in the app (because having a translation with only // 3 strings translated is just frustrating) // This could readily be automated, but it's nice to explicitly -// control when we languages are available. +// control when new languages are available. const INCLUDE_LANGS = [ + {'value': 'bg', 'label': 'Български'}, {'value': 'ca', 'label': 'Català'}, + {'value': 'cs', 'label': 'čeština'}, {'value': 'da', 'label': 'Dansk'}, {'value': 'de_DE', 'label': 'Deutsch'}, + {'value': 'el', 'label': 'Ελληνικά'}, {'value': 'en_EN', 'label': 'English'}, {'value': 'en_US', 'label': 'English (US)'}, - {'value': 'el', 'label': 'Ελληνικά'}, {'value': 'eo', 'label': 'Esperanto'}, {'value': 'es', 'label': 'Español'}, {'value': 'eu', 'label': 'Euskara'}, {'value': 'fi', 'label': 'Suomi'}, {'value': 'fr', 'label': 'Français'}, + {'value': 'gl', 'label': 'Galego'}, {'value': 'hu', 'label': 'Magyar'}, + {'value': 'it', 'label': 'Italiano'}, + {'value': 'ja', 'label': '日本語'}, {'value': 'ko', 'label': '한국어'}, {'value': 'lv', 'label': 'Latviešu'}, {'value': 'nb_NO', 'label': 'Norwegian Bokmål'}, {'value': 'nl', 'label': 'Nederlands'}, + {'value': 'nn', 'label': 'Norsk Nynorsk'}, {'value': 'pl', 'label': 'Polski'}, {'value': 'pt', 'label': 'Português'}, {'value': 'pt_BR', 'label': 'Português do Brasil'}, {'value': 'ru', 'label': 'Русский'}, - {'value': 'sv', 'label': 'Svenska'}, {'value': 'sk', 'label': 'Slovenčina'}, - {'value': 'th', 'label': 'ไทย'}, + {'value': 'sq', 'label': 'Shqip'}, + {'value': 'sr', 'label': 'српски'}, + {'value': 'sv', 'label': 'Svenska'}, {'value': 'te', 'label': 'తెలుగు'}, - {'value': 'tr', 'label': 'Türk'}, + {'value': 'th', 'label': 'ไทย'}, + {'value': 'tr', 'label': 'Türkçe'}, + {'value': 'vls', 'label': 'West-Vlaams'}, {'value': 'zh_Hans', 'label': '简体中文'}, // simplified chinese {'value': 'zh_Hant', 'label': '繁體中文'}, // traditional chinese ]; @@ -43,23 +54,15 @@ const INCLUDE_LANGS = [ // "dest/b/...". const COPY_LIST = [ ["res/manifest.json", "webapp"], - ["res/home.html", "webapp"], - ["res/home-status.html", "webapp"], - ["res/home/**", "webapp/home"], - ["res/{media,vector-icons}/**", "webapp"], - ["res/flags/*", "webapp/flags/"], - ["src/skins/vector/{fonts,img,themes}/**", "webapp"], - ["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"], - ["node_modules/emojione/assets/png/*", "webapp/emojione/png/"], + ["res/welcome.html", "webapp"], + ["res/welcome/**", "webapp/welcome"], + ["res/themes/**", "webapp/themes"], + ["res/vector-icons/**", "webapp/vector-icons"], + ["node_modules/matrix-react-sdk/res/media/**", "webapp/media"], + ["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }], ["./config.json", "webapp", { directwatch: 1 }], ]; -INCLUDE_LANGS.forEach(function(l) { - COPY_LIST.push([ - l.value, "webapp/i18n/", { lang: 1 }, - ]); -}); - const parseArgs = require('minimist'); const Cpx = require('cpx'); const chokidar = require('chokidar'); @@ -70,8 +73,8 @@ const argv = parseArgs( process.argv.slice(2), {} ); -var watch = argv.w; -var verbose = argv.v; +const watch = argv.w; +const verbose = argv.v; function errCheck(err) { if (err) { @@ -129,28 +132,11 @@ function next(i, err) { .on('change', copy) .on('ready', cb) .on('error', errCheck); - } else if (opts.lang) { - const reactSdkFile = 'node_modules/matrix-react-sdk/src/i18n/strings/' + source + '.json'; - const riotWebFile = 'src/i18n/strings/' + source + '.json'; - - const translations = {}; - const makeLang = () => { genLangFile(source, dest) }; - [reactSdkFile, riotWebFile].forEach(function(f) { - chokidar.watch(f) - .on('add', makeLang) - .on('change', makeLang) - //.on('ready', cb) We'd have to do this when both files are ready - .on('error', errCheck); - }); - next(i + 1, err); } else { cpx.on('watch-ready', cb); cpx.on("watch-error", cb); cpx.watch(); } - } else if (opts.lang) { - genLangFile(source, dest); - next(i + 1, err); } else { cpx.copy(cb); } @@ -169,29 +155,36 @@ function genLangFile(lang, dest) { JSON.parse(fs.readFileSync(f).toString()) ); } catch (e) { - console.error("Failed: "+f, e); + console.error("Failed: " + f, e); throw e; } } }); - translations = weblateToCounterpart(translations) + translations = weblateToCounterpart(translations); - fs.writeFileSync(dest + lang + '.json', JSON.stringify(translations, null, 4)); + const json = JSON.stringify(translations, null, 4); + const jsonBuffer = Buffer.from(json); + const digest = loaderUtils.getHashDigest(jsonBuffer, null, null, 7); + const filename = `${lang}.${digest}.json`; + + fs.writeFileSync(dest + filename, json); if (verbose) { - console.log("Generated language file: " + lang); + console.log("Generated language file: " + filename); } + + return filename; } -function genLangList() { +function genLangList(langFileMap) { const languages = {}; INCLUDE_LANGS.forEach(function(lang) { const normalizedLanguage = lang.value.toLowerCase().replace("_", "-"); const languageParts = normalizedLanguage.split('-'); if (languageParts.length == 2 && languageParts[0] == languageParts[1]) { - languages[languageParts[0]] = {'fileName': lang.value + '.json', 'label': lang.label}; + languages[languageParts[0]] = {'fileName': langFileMap[lang.value], 'label': lang.label}; } else { - languages[normalizedLanguage] = {'fileName': lang.value + '.json', 'label': lang.label}; + languages[normalizedLanguage] = {'fileName': langFileMap[lang.value], 'label': lang.label}; } }); fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4), function(err) { @@ -239,5 +232,50 @@ function weblateToCounterpart(inTrs) { return outTrs; } -genLangList(); +/** +watch the input files for a given language, +regenerate the file, adding its content-hashed filename to langFileMap +and regenerating languages.json with the new filename +*/ +function watchLanguage(lang, dest, langFileMap) { + const reactSdkFile = 'node_modules/matrix-react-sdk/src/i18n/strings/' + lang + '.json'; + const riotWebFile = 'src/i18n/strings/' + lang + '.json'; + + // XXX: Use a debounce because for some reason if we read the language + // file immediately after the FS event is received, the file contents + // appears empty. Possibly https://github.com/nodejs/node/issues/6112 + let makeLangDebouncer; + const makeLang = () => { + if (makeLangDebouncer) { + clearTimeout(makeLangDebouncer); + } + makeLangDebouncer = setTimeout(() => { + const filename = genLangFile(lang, dest); + langFileMap[lang]=filename; + genLangList(langFileMap); + }, 500); + }; + + [reactSdkFile, riotWebFile].forEach(function(f) { + chokidar.watch(f) + .on('add', makeLang) + .on('change', makeLang) + .on('error', errCheck); + }); +} + +// language resources +const I18N_DEST = "webapp/i18n/"; +const I18N_FILENAME_MAP = INCLUDE_LANGS.reduce((m, l) => { + const filename = genLangFile(l.value, I18N_DEST); + m[l.value] = filename; + return m; +}, {}); +genLangList(I18N_FILENAME_MAP); + +if (watch) { + INCLUDE_LANGS.forEach(l => watchLanguage(l.value, I18N_DEST, I18N_FILENAME_MAP)); +} + +// non-language resources next(0); diff --git a/scripts/deploy.py b/scripts/deploy.py index e8fd9aa4..33aa0af0 100755 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -166,7 +166,7 @@ if __name__ == "__main__": ) ) parser.add_argument( - "--include", nargs='*', default='./config*.json', help=( + "--include", nargs='*', default=['./config*.json'], help=( "Symlink these files into the root of the deployed tarball. \ Useful for config files and home pages. Supports glob syntax. \ (Default: '%(default)s')" diff --git a/scripts/docker-link-repos.sh b/scripts/docker-link-repos.sh new file mode 100644 index 00000000..9f17188e --- /dev/null +++ b/scripts/docker-link-repos.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +set -ex + +if [ $USE_CUSTOM_SDKS == false ] +then + echo "skipping react-sdk and js-sdk installs: USE_CUSTOM_SDKS is false" + exit 0 +fi + +echo "Linking js-sdk" +git clone $JS_SDK_REPO js-sdk +cd js-sdk +git checkout $JS_SDK_BRANCH +yarn link +yarn --network-timeout=100000 install +cd ../ + +echo "Linking react-sdk" +git clone $REACT_SDK_REPO react-sdk +cd react-sdk +git checkout $REACT_SDK_BRANCH +yarn link +yarn link matrix-js-sdk +yarn --network-timeout=100000 install +cd ../ + +echo "Setting up riot-web with react-sdk and js-sdk packages" +yarn link matrix-js-sdk +yarn link matrix-react-sdk diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index f0ba9414..7a8a5ca7 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -1,26 +1,30 @@ #!/bin/bash -set -e - usage() { - echo "Usage: $0 -v <version> -c <config file> [-n]" + echo "Usage: $0 -v <version> -d <config directory> [-n]" echo echo "version: commit-ish to check out and build" - echo "config file: a path to a json config file to" - echo "ship with the build. In addition, update_base_url:" - echo "from this file is used to set up auto-update." + echo "config directory: a path to a directory containing" + echo "config.json, a json config file to ship with the build" + echo "and env.sh, a file to source environment variables" + echo "from." echo "-n: build with no config file." echo - echo "Values may also be passed as environment variables" + echo "The update_base_url value from config.json is used to set up auto-update." + echo + echo "Environment variables:" + echo " OSSLSIGNCODE_SIGNARGS: Arguments to pass to osslsigncode when signing" + echo " NOTARIZE_APPLE_ID: Apple ID to use for notarisation. The password for" + echo " this account must be set in NOTARIZE_CREDS in the keychain." } -conffile= +confdir= version= skipcfg=0 -while getopts "c:v:n" opt; do +while getopts "d:v:n" opt; do case $opt in - c) - conffile=$OPTARG + d) + confdir=$OPTARG ;; v) version=$OPTARG @@ -42,6 +46,8 @@ if [ -z "$version" ]; then exit fi +conffile="$confdir/config.json" + if [ -z "$conffile" ] && [ "$skipcfg" = 0 ]; then echo "No config file given. Use -c to supply a config file or" echo "-n to build with no config file (and no auto update)." @@ -67,6 +73,31 @@ if [ ! -f package.json ]; then exit fi +[ -f "$confdir/env.sh" ] && . "$confdir/env.sh" + +if [ -z "$NOTARIZE_APPLE_ID" ]; then + echo "NOTARIZE_APPLE_ID is not set" + exit +fi + +osslsigncode -h 2> /dev/null +if [ $? -ne 255 ]; then # osslsigncode exits with 255 after printing usage... + echo "osslsigncode not found" + exit +fi + +# Test that altool can get its credentials for notarising the mac app +xcrun altool -u "$NOTARIZE_APPLE_ID" -p '@keychain:NOTARIZE_CREDS' --list-apps || exit + +# Get the token password: we'll need it later, but get it now so we fail early if it's not there +token_password=`security find-generic-password -s riot_signing_token -w` +if [ $? -ne 0 ]; then + echo "riot_signing_token not found in keychain" + exit +fi + +set -e + echo "Building $version using Update base URL $update_base_url" projdir=`pwd` @@ -85,8 +116,13 @@ if [ -n "$conffile" ]; then pushd "$builddir" fi -npm install -npm run build:electron +# We use Git branch / commit dependencies for some packages, and Yarn seems +# to have a hard time getting that right. See also +# https://github.com/yarnpkg/yarn/issues/4734. As a workaround, we clean the +# global cache here to ensure we get the right thing. +yarn cache clean +yarn install +yarn build:electron popd @@ -100,34 +136,50 @@ mkdir -p "$projdir/electron_app/dist/unsigned/" # Install packages: what the user downloads the first time, # (DMGs for mac, exe installer for windows) mkdir -p "$pubdir/install/macos" -cp $distdir/mac/*.dmg "$pubdir/install/macos/" +cp $distdir/*.dmg "$pubdir/install/macos/" -# Windows installers go to the dist dir because they need signing +# Windows installers need signing, this comes later mkdir -p "$pubdir/install/win32/ia32/" -cp $distdir/win-ia32/*.exe "$projdir/electron_app/dist/unsigned/" +mkdir -p "$projdir/electron_app/dist/unsigned/ia32/" mkdir -p "$pubdir/install/win32/x64/" -cp $distdir/win/*.exe "$projdir/electron_app/dist/unsigned/" +mkdir -p "$projdir/electron_app/dist/unsigned/x64/" # Packages for auto-update mkdir -p "$pubdir/update/macos" -cp $distdir/mac/*.zip "$pubdir/update/macos/" +cp $distdir/*-mac.zip "$pubdir/update/macos/" echo "$vername" > "$pubdir/update/macos/latest" mkdir -p "$pubdir/update/win32/ia32/" -cp $distdir/win-ia32/*.nupkg "$pubdir/update/win32/ia32/" -cp $distdir/win-ia32/RELEASES "$pubdir/update/win32/ia32/" +cp $distdir/squirrel-windows-ia32/*.nupkg "$pubdir/update/win32/ia32/" +cp $distdir/squirrel-windows-ia32/RELEASES "$pubdir/update/win32/ia32/" mkdir -p "$pubdir/update/win32/x64/" -cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/" -cp $distdir/win/RELEASES "$pubdir/update/win32/x64/" +cp $distdir/squirrel-windows/*.nupkg "$pubdir/update/win32/x64/" +cp $distdir/squirrel-windows/RELEASES "$pubdir/update/win32/x64/" -# Move the debs to the main project dir's dist folder -cp $distdir/*.deb "$projdir/electron_app/dist/" +# Move the deb to the main project dir's dist folder +# (just the 64 bit one - the 32 bit one still gets built because +# it's one arch argument for all platforms and we still want 32 bit +# windows, but 32 bit linux is unsupported as of electron 4 and no +# longer appears to work). +cp $distdir/*_amd64.deb "$projdir/electron_app/dist/" + +# Now we sign the windows installer executables (as opposed to the main binary which +# is signed in the electron afteSign hook) +echo "Signing Windows installers..." + +exe32=( "$distdir"/squirrel-windows-ia32/*.exe ) +basename32=`basename "$exe32"` +osslsigncode sign $OSSLSIGNCODE_SIGNARGS -pass "$token_password" -in "$exe32" -out "$projdir/electron_app/pub/install/win32/ia32/$basename32" + +exe64=( "$distdir"/squirrel-windows/*.exe ) +basename64=`basename "$exe64"` +osslsigncode sign $OSSLSIGNCODE_SIGNARGS -pass "$token_password" -in "$exe64" -out "$projdir/electron_app/pub/install/win32/x64/$basename64" + +echo "Installers signed" rm -rf "$builddir" -echo "Unsigned Windows installers have been placed in electron_app/dist/unsigned/ - sign them," -echo "or just copy them to "$pubdir/install/win32/\<arch\>/"" -echo "Once you've done this, $pubdir can be hosted on your web server." +echo "$pubdir can now be hosted on your web server." echo "deb archives are in electron_app/dist/ - these should be added into your debian repository" diff --git a/scripts/electron_afterSign.js b/scripts/electron_afterSign.js new file mode 100644 index 00000000..8966ca7f --- /dev/null +++ b/scripts/electron_afterSign.js @@ -0,0 +1,76 @@ +const { notarize } = require('electron-notarize'); +const { exec, execFile } = require('child_process'); +const fs = require('fs'); +const shellescape = require('shell-escape'); + +exports.default = async function(context) { + const { electronPlatformName, appOutDir } = context; + + if (electronPlatformName === 'darwin') { + const appName = context.packager.appInfo.productFilename; + // We get the password from keychain. The keychain stores + // user IDs too, but apparently altool can't get the user ID + // from the keychain, so we need to get it from the environment. + const userId = process.env.NOTARIZE_APPLE_ID; + if (userId === undefined) { + throw new Exception("User ID not found. Set NOTARIZE_APPLE_ID."); + } + + console.log("Notarising macOS app. This may be some time."); + return await notarize({ + appBundleId: 'im.riot.app', + appPath: `${appOutDir}/${appName}.app`, + appleId: userId, + appleIdPassword: '@keychain:NOTARIZE_CREDS', + }); + } else if (electronPlatformName === 'win32') { + // This signs the actual Riot executable + const appName = context.packager.appInfo.productFilename; + + // get the token passphrase from the keychain + const tokenPassphrase = await new Promise((resolve, reject) => { + execFile( + 'security', + ['find-generic-password', '-s', 'riot_signing_token', '-w'], + {}, + (err, stdout) => { + if (err) { + reject(err); + } else { + resolve(stdout.trim()); + } + }, + ); + }); + + return new Promise((resolve, reject) => { + let cmdLine = 'osslsigncode sign '; + if (process.env.OSSLSIGNCODE_SIGNARGS) { + cmdLine += process.env.OSSLSIGNCODE_SIGNARGS + ' '; + } + const tmpFile = 'tmp_' + Math.random().toString(36).substring(2, 15) + '.exe'; + cmdLine += shellescape([ + '-pass', tokenPassphrase, + '-in', `${appOutDir}/${appName}.exe`, + '-out', `${appOutDir}/${tmpFile}`, + ]); + + const signproc = exec(cmdLine, {}, (error, stdout) => { + console.log(stdout); + }); + signproc.on('exit', (code) => { + if (code !== 0) { + reject("osslsigncode failed with code " + code); + return; + } + fs.rename(`${appOutDir}/${tmpFile}`, `${appOutDir}/${appName}.exe`, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + }); + } +}; diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh index e2d40341..e7419718 100755 --- a/scripts/fetch-develop.deps.sh +++ b/scripts/fetch-develop.deps.sh @@ -6,59 +6,66 @@ # the branch the current checkout is on, use that branch. Otherwise, # use develop. -set -e +set -ex GIT_CLONE_ARGS=("$@") - -# Look in the many different CI env vars for which branch we're -# building -if [[ "$TRAVIS" == true ]]; then - curbranch="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" -else - # ghprbSourceBranch for jenkins github pull request builder - # GIT_BRANCH for other jenkins builds - curbranch="${ghprbSourceBranch:-$GIT_BRANCH}" - # Otherwise look at the actual branch we're on - if [ -z "$curbranch" ] - then - curbranch=`git rev-parse --abbrev-ref HEAD` - fi -fi - -# Chop 'origin' off the start as jenkins ends up using -# branches on the origin, but this doesn't work if we -# specify the branch when cloning. -curbranch=${curbranch#origin/} - -echo "Determined branch to be $curbranch" +[ -z "$defbranch" ] && defbranch="develop" # clone a specific branch of a github repo function clone() { org=$1 repo=$2 branch=$3 - git clone https://github.com/$org/$repo.git $repo --branch $branch \ - "${GIT_CLONE_ARGS[@]}" + + # Chop 'origin' off the start as jenkins ends up using + # branches on the origin, but this doesn't work if we + # specify the branch when cloning. + branch=${branch#origin/} + + if [ -n "$branch" ] + then + echo "Trying to use $org/$repo#$branch" + git clone git://github.com/$org/$repo.git $repo --branch $branch \ + "${GIT_CLONE_ARGS[@]}" + return $? + fi + return 1 } function dodep() { - org=$1 - repo=$2 - rm -rf $repo - clone $org $repo $curbranch || { - [ "$curbranch" != 'develop' ] && clone $org $repo develop - } || return $? + deforg=$1 + defrepo=$2 + rm -rf $defrepo - echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD` + # Try the PR author's branch in case it exists on the deps as well. + # Try the target branch of the push or PR. + # Use the default branch as the last resort. + if [[ "$BUILDKITE" == true ]]; then + # If BUILDKITE_BRANCH is set, it will contain either: + # * "branch" when the author's branch and target branch are in the same repo + # * "author:branch" when the author's branch is in their fork + # We can split on `:` into an array to check. + BUILDKITE_BRANCH_ARRAY=(${BUILDKITE_BRANCH//:/ }) + if [[ "${#BUILDKITE_BRANCH_ARRAY[@]}" == "2" ]]; then + prAuthor=${BUILDKITE_BRANCH_ARRAY[0]} + prBranch=${BUILDKITE_BRANCH_ARRAY[1]} + else + prAuthor=$deforg + prBranch=$BUILDKITE_BRANCH + fi + clone $prAuthor $defrepo $prBranch || + clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH || + clone $deforg $defrepo $defbranch || + return $? + else + clone $deforg $defrepo $ghprbSourceBranch || + clone $deforg $defrepo $GIT_BRANCH || + clone $deforg $defrepo `git rev-parse --abbrev-ref HEAD` || + clone $deforg $defrepo $defbranch || + return $? + fi - mkdir -p node_modules - rm -r "node_modules/$repo" 2>/dev/null || true - ln -sv "../$repo" node_modules/ - - ( - cd $repo - npm install - ) + echo "$defrepo set to branch "`git -C "$defrepo" rev-parse --abbrev-ref HEAD` } ############################## @@ -68,6 +75,13 @@ echo 'Setting up matrix-js-sdk' dodep matrix-org matrix-js-sdk +pushd matrix-js-sdk +yarn link +yarn install +popd + +yarn link matrix-js-sdk + echo -en 'travis_fold:end:matrix-js-sdk\r' ############################## @@ -77,22 +91,21 @@ echo 'Setting up matrix-react-sdk' dodep matrix-org matrix-react-sdk -# replace the version of js-sdk that got pulled into react-sdk with a symlink -# to our version. Make sure to do this *after* doing 'npm i' in react-sdk, -# otherwise npm helpfully moves another-json from matrix-js-sdk/node_modules -# into matrix-react-sdk/node_modules. -# -# (note this matches the instructions in the README.) -rm -r node_modules/matrix-react-sdk/node_modules/matrix-js-sdk -ln -s ../../matrix-js-sdk node_modules/matrix-react-sdk/node_modules/ +pushd matrix-react-sdk +yarn link +yarn link matrix-js-sdk +yarn install +popd + +yarn link matrix-react-sdk echo -en 'travis_fold:end:matrix-react-sdk\r' ############################## -# Link the reskindex binary in place: if we used npm link, -# npm would do this for us, but we don't because we'd have -# to define the npm prefix somewhere so it could put the +# Link the reskindex binary in place: if we used `yarn link`, +# Yarn would do this for us, but we don't because we'd have +# to define the Yarn binary prefix somewhere so it could put the # intermediate symlinks there. Instead, we do it ourselves. mkdir -p node_modules/.bin ln -sfv ../matrix-react-sdk/scripts/reskindex.js node_modules/.bin/reskindex diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh deleted file mode 100755 index 7b5b4c8e..00000000 --- a/scripts/jenkins.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -e - -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" -nvm use 6 - -set -x - -# check out corresponding branches of dependencies. -# -# clone the deps with depth 1: we know we will only ever need that one -# commit. -`dirname $0`/fetch-develop.deps.sh --depth 1 - -npm install - -# apparently npm 3.10.3 on node 6.4.0 doesn't upgrade #develop target with npm install unless explicitly asked. -npm install olm - -# install olm. A naive 'npm i ./olm/olm-*.tgz' fails because it uses the url -# from our package.json (or even matrix-js-sdk's) in preference. -# -# disabled for now, to avoid the annoying scenario of a release doing something -# different to /develop. Instead, add it to the 'npm install' list above. -# -- rav 2016/02/03 -#tar -C olm -xz < olm/olm-*.tgz -#rm -r node_modules/olm -#cp -r olm/package node_modules/olm - -# run the mocha tests -npm run test - -# run eslint -npm run lintall -- -f checkstyle -o eslint.xml || true - -rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist - -# Since the deps are fetched from git, we can rev-parse -REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD) -JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD) - -VECTOR_SHA=$(git rev-parse --short=12 HEAD) # use the ACTUAL SHA rather than assume develop - -DIST_VERSION=$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA scripts/package.sh -d diff --git a/scripts/make-icons.sh b/scripts/make-icons.sh index 19e48895..2db5293d 100755 --- a/scripts/make-icons.sh +++ b/scripts/make-icons.sh @@ -1,4 +1,10 @@ #!/bin/bash +# +# Converts an svg logo into the various image resources required by +# the various platforms deployments. +# +# On debian-based systems you need these deps: +# apt-get install xmlstarlet python3-cairosvg icnsutils if [ $# != 1 ] then @@ -52,7 +58,23 @@ cp "$tmpdir/256.png" "$tmpdir/Riot.iconset/icon_256x256.png" cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_256x256@2x.png" cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_512x512.png" cp "$tmpdir/1024.png" "$tmpdir/Riot.iconset/icon_512x512@2x.png" -iconutil -c icns -o electron_app/build/icon.icns "$tmpdir/Riot.iconset" + +if [ -x "$(command -v iconutil)" ]; then + # available on macos + iconutil -c icns -o electron_app/build/icon.icns "$tmpdir/Riot.iconset" +elif [ -x "$(command -v png2icns)" ]; then + # available on linux + # png2icns is more finicky about its input than iconutil + # 1. it doesn't support a 64x64 (aka 32x32@2x) + # 2. it doesn't like duplicates (128x128@2x == 256x256) + rm "$tmpdir/Riot.iconset/icon_128x128@2x.png" + rm "$tmpdir/Riot.iconset/icon_256x256@2x.png" + rm "$tmpdir/Riot.iconset/icon_16x16@2x.png" + rm "$tmpdir/Riot.iconset/icon_32x32@2x.png" + png2icns electron_app/build/icon.icns "$tmpdir"/Riot.iconset/*png +else + echo "WARNING: Unsupported platform. Skipping icns build" +fi cp "$tmpdir/36.png" "res/vector-icons/android-chrome-36x36.png" cp "$tmpdir/48.png" "res/vector-icons/android-chrome-48x48.png" diff --git a/scripts/package.sh b/scripts/package.sh index 23d0925b..ce7e00c1 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -13,16 +13,19 @@ else version=`git describe --dirty --tags || echo unknown` fi -npm run clean -npm run build$dev +yarn clean +yarn build$dev # include the sample config in the tarball. Arguably this should be done by -# `npm run build`, but it's just too painful. +# `yarn build`, but it's just too painful. cp config.sample.json webapp/ mkdir -p dist cp -r webapp riot-$version +# Just in case you have a local config, remove it before packaging +rm riot-$version/config.json || true + # if $version looks like semver with leading v, strip it before writing to file if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then echo ${version:1} > riot-$version/version diff --git a/scripts/redeploy.py b/scripts/redeploy.py index 2dac2931..6e9d29c3 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -2,7 +2,8 @@ # # auto-deploy script for https://riot.im/develop # -# Listens for HTTP hits. When it gets one, downloads the artifact from jenkins +# Listens for buildkite webhook pokes (https://buildkite.com/docs/apis/webhooks) +# When it gets one, downloads the artifact from buildkite # and deploys it as the new version. # # Requires the following python packages: @@ -16,6 +17,10 @@ import time import traceback from urlparse import urljoin import glob +import re +import shutil +import threading +from Queue import Queue from flask import Flask, jsonify, request, abort @@ -23,10 +28,13 @@ from deploy import Deployer, DeployException app = Flask(__name__) -arg_jenkins_url = None deployer = None arg_extract_path = None arg_symlink = None +arg_webhook_token = None +arg_api_token = None + +workQueue = Queue() def create_symlink(source, linkname): try: @@ -39,81 +47,117 @@ def create_symlink(source, linkname): else: raise e +def req_headers(): + return { + "Authorization": "Bearer %s" % (arg_api_token,), + } + +# Buildkite considers a poke to have failed if it has to wait more than 10s for +# data (any data, not just the initial response) and it normally takes longer than +# that to download an artifact from buildkite. Apparently there is no way in flask +# to finish the response and then keep doing stuff, so instead this has to involve +# threading. Sigh. +def worker_thread(): + while True: + toDeploy = workQueue.get() + deploy_buildkite_artifact(*toDeploy) + @app.route("/", methods=["POST"]) -def on_receive_jenkins_poke(): - # { - # "name": "VectorWebDevelop", - # "build": { - # "number": 8 - # } - # } +def on_receive_buildkite_poke(): + got_webhook_token = request.headers.get('X-Buildkite-Token') + if got_webhook_token != arg_webbook_token: + print("Denying request with incorrect webhook token: %s" % (got_webhook_token,)) + abort(400, "Incorrect webhook token") + return + + required_api_prefix = None + if arg_buildkite_org is not None: + required_api_prefix = 'https://api.buildkite.com/v2/organizations/%s' % (arg_buildkite_org,) + incoming_json = request.get_json() if not incoming_json: abort(400, "No JSON provided!") return print("Incoming JSON: %s" % (incoming_json,)) - job_name = incoming_json.get("name") - if not isinstance(job_name, basestring): - abort(400, "Bad job name: %s" % (job_name,)) + event = incoming_json.get("event") + if event is None: + abort(400, "No 'event' specified") return - build_num = incoming_json.get("build", {}).get("number", 0) - if not build_num or build_num <= 0 or not isinstance(build_num, int): - abort(400, "Missing or bad build number") + if event == 'ping': + print("Got ping request - responding") + return jsonify({'response': 'pong!'}) + + if event != 'build.finished': + print("Rejecting '%s' event") + abort(400, "Unrecognised event") return - return fetch_jenkins_build(job_name, build_num) - -def fetch_jenkins_build(job_name, build_num): - artifact_url = urljoin( - arg_jenkins_url, "job/%s/%s/api/json" % (job_name, build_num) - ) - artifact_response = requests.get(artifact_url).json() - - # { - # "actions": [], - # "artifacts": [ - # { - # "displayPath": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz", - # "fileName": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz", - # "relativePath": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz" - # } - # ], - # "building": false, - # "description": null, - # "displayName": "#11", - # "duration": 137976, - # "estimatedDuration": 132008, - # "executor": null, - # "fullDisplayName": "VectorWebDevelop #11", - # "id": "11", - # "keepLog": false, - # "number": 11, - # "queueId": 12254, - # "result": "SUCCESS", - # "timestamp": 1454432640079, - # "url": "http://matrix.org/jenkins/job/VectorWebDevelop/11/", - # "builtOn": "", - # "changeSet": {}, - # "culprits": [] - # } - if artifact_response.get("result") != "SUCCESS": - abort(404, "Not deploying. Build was not marked as SUCCESS.") + build_obj = incoming_json.get("build") + if build_obj is None: + abort(400, "No 'build' object") return - if len(artifact_response.get("artifacts", [])) != 1: - abort(404, "Not deploying. Build has an unexpected number of artifacts.") + build_url = build_obj.get('url') + if build_url is None: + abort(400, "build has no url") return - tar_gz_path = artifact_response["artifacts"][0]["relativePath"] - if not tar_gz_path.endswith(".tar.gz"): - abort(404, "Not deploying. Artifact is not a .tar.gz file") + if required_api_prefix is not None and not build_url.startswith(required_api_prefix): + print("Denying poke for build url with incorrect prefix: %s" % (build_url,)) + abort(400, "Invalid build url") return - tar_gz_url = urljoin( - arg_jenkins_url, "job/%s/%s/artifact/%s" % (job_name, build_num, tar_gz_path) - ) + build_num = build_obj.get('number') + if build_num is None: + abort(400, "build has no number") + return + + pipeline_obj = incoming_json.get("pipeline") + if pipeline_obj is None: + abort(400, "No 'pipeline' object") + return + + pipeline_name = pipeline_obj.get('name') + if pipeline_name is None: + abort(400, "pipeline has no name") + return + + artifacts_url = build_url + "/artifacts" + artifacts_resp = requests.get(artifacts_url, headers=req_headers()) + artifacts_resp.raise_for_status() + artifacts_array = artifacts_resp.json() + + artifact_to_deploy = None + for artifact in artifacts_array: + if re.match(r"dist/.*.tar.gz", artifact['path']): + artifact_to_deploy = artifact + if artifact_to_deploy is None: + print("No suitable artifacts found") + return jsonify({}) + + # double paranoia check: make sure the artifact is on the right org too + if required_api_prefix is not None and not artifact_to_deploy['url'].startswith(required_api_prefix): + print("Denying poke for build url with incorrect prefix: %s" % (artifact_to_deploy['url'],)) + abort(400, "Refusing to deploy artifact from URL %s", artifact_to_deploy['url']) + return + + # there's no point building up a queue of things to deploy, so if there are any pending jobs, + # remove them + while not workQueue.empty(): + try: + workQueue.get(False) + except: + pass + workQueue.put([artifact_to_deploy, pipeline_name, build_num]) + + return jsonify({}) + +def deploy_buildkite_artifact(artifact, pipeline_name, build_num): + artifact_response = requests.get(artifact['url'], headers=req_headers()) + artifact_response.raise_for_status() + artifact_obj = artifact_response.json() # we extract into a directory based on the build number. This avoids the # problem of multiple builds building the same git version and thus having @@ -122,18 +166,16 @@ def fetch_jenkins_build(job_name, build_num): # a good deploy with a bad one # (b) we'll be overwriting the live deployment, which means people might # see half-written files. - build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num)) + build_dir = os.path.join(arg_extract_path, "%s-#%s" % (pipeline_name, build_num)) try: - extracted_dir = deploy_tarball(tar_gz_url, build_dir) + extracted_dir = deploy_tarball(artifact_obj, build_dir) except DeployException as e: traceback.print_exc() abort(400, e.message) create_symlink(source=extracted_dir, linkname=arg_symlink) - return jsonify({}) - -def deploy_tarball(tar_gz_url, build_dir): +def deploy_tarball(artifact, build_dir): """Download a tarball from jenkins and unpack it Returns: @@ -145,20 +187,25 @@ def deploy_tarball(tar_gz_url, build_dir): ) os.mkdir(build_dir) + print("Fetching artifact %s -> %s..." % (artifact['download_url'], artifact['filename'])) + + # Download the tarball here as buildkite needs auth to do this + # we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite + # not being evil. If that's not good enough for you, don't use riot.im/develop. + resp = requests.get(artifact['download_url'], stream=True, headers=req_headers()) + resp.raise_for_status() + with open(artifact['filename'], 'wb') as ofp: + shutil.copyfileobj(resp.raw, ofp) + print("...download complete. Deploying...") + # we rely on the fact that flask only serves one request at a time to # ensure that we do not overwrite a tarball from a concurrent request. - return deployer.deploy(tar_gz_url, build_dir) + return deployer.deploy(artifact['filename'], build_dir) if __name__ == "__main__": parser = argparse.ArgumentParser("Runs a Vector redeployment server.") - parser.add_argument( - "-j", "--jenkins", dest="jenkins", default="https://matrix.org/jenkins/", help=( - "The base URL of the Jenkins web server. This will be hit to get the\ - built artifacts (the .gz file) for redeploying." - ) - ) parser.add_argument( "-p", "--port", dest="port", default=4000, type=int, help=( "The port to listen on for requests from Jenkins." @@ -204,13 +251,33 @@ if __name__ == "__main__": ), ) + parser.add_argument( + "--webhook-token", dest="webhook_token", help=( + "Only accept pokes with this buildkite token." + ), required=True, + ) + + parser.add_argument( + "--api-token", dest="api_token", help=( + "API access token for buildkite. Require read_artifacts scope." + ), required=True, + ) + + # We require a matching webhook token, but because we take everything else + # about what to deploy from the poke body, we can be a little more paranoid + # and only accept builds / artifacts from a specific buildkite org + parser.add_argument( + "--org", dest="buildkite_org", help=( + "Lock down to this buildkite org" + ) + ) + args = parser.parse_args() - if args.jenkins.endswith("/"): # important for urljoin - arg_jenkins_url = args.jenkins - else: - arg_jenkins_url = args.jenkins + "/" arg_extract_path = args.extract arg_symlink = args.symlink + arg_webbook_token = args.webhook_token + arg_api_token = args.api_token + arg_buildkite_org = args.buildkite_org if not os.path.isdir(arg_extract_path): os.mkdir(arg_extract_path) @@ -222,25 +289,20 @@ if __name__ == "__main__": for include in args.include: deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) }) - - # we don't pgp-sign jenkins artifacts; instead we rely on HTTPS access to - # the jenkins server (and the jenkins server not being compromised and/or - # github not serving it compromised source). If that's not good enough for - # you, don't use riot.im/develop. - deployer.verify_signature = False - if args.tarball_uri is not None: build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time())) deploy_tarball(args.tarball_uri, build_dir) else: print( - "Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Include files: %s" % + "Listening on port %s. Extracting to %s%s. Symlinking to %s. Include files: %s" % (args.port, arg_extract_path, " (clean after)" if deployer.should_clean else "", arg_symlink, - arg_jenkins_url, deployer.symlink_paths, ) ) - app.run(host="0.0.0.0", port=args.port, debug=True) + fred = threading.Thread(target=worker_thread) + fred.daemon = True + fred.start() + app.run(port=args.port, debug=False) diff --git a/scripts/yarn-sub.js b/scripts/yarn-sub.js new file mode 100644 index 00000000..817ad33c --- /dev/null +++ b/scripts/yarn-sub.js @@ -0,0 +1,22 @@ +const path = require('path'); +const child_process = require('child_process'); + +const moduleName = process.argv[2]; +if (!moduleName) { + console.error("Expected module name"); + process.exit(1); +} + +const argString = process.argv.length > 3 ? process.argv.slice(3).join(" ") : ""; +if (!argString) { + console.error("Expected an yarn argument string to use"); + process.exit(1); +} + +const modulePath = path.dirname(require.resolve(`${moduleName}/package.json`)); + +child_process.execSync("yarn " + argString, { + env: process.env, + cwd: modulePath, + stdio: ['inherit', 'inherit', 'inherit'], +}); diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js deleted file mode 100644 index 933f5993..00000000 --- a/src/VectorConferenceHandler.js +++ /dev/null @@ -1,135 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -"use strict"; - -import Promise from 'bluebird'; -var Matrix = require("matrix-js-sdk"); -var Room = Matrix.Room; -var CallHandler = require('matrix-react-sdk/lib/CallHandler'); - -// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing. -// This is bad because it prevents people running their own ASes from being used. -// This isn't permanent and will be customisable in the future: see the proposal -// at docs/conferencing.md for more info. -var USER_PREFIX = "fs_"; -var DOMAIN = "matrix.org"; - -function ConferenceCall(matrixClient, groupChatRoomId) { - this.client = matrixClient; - this.groupRoomId = groupChatRoomId; - this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId); -} - -ConferenceCall.prototype.setup = function() { - var self = this; - return this._joinConferenceUser().then(function() { - return self._getConferenceUserRoom(); - }).then(function(room) { - // return a call for *this* room to be placed. We also tack on - // confUserId to speed up lookups (else we'd need to loop every room - // looking for a 1:1 room with this conf user ID!) - var call = Matrix.createNewMatrixCall(self.client, room.roomId); - call.confUserId = self.confUserId; - call.groupRoomId = self.groupRoomId; - return call; - }); -}; - -ConferenceCall.prototype._joinConferenceUser = function() { - // Make sure the conference user is in the group chat room - var groupRoom = this.client.getRoom(this.groupRoomId); - if (!groupRoom) { - return Promise.reject("Bad group room ID"); - } - var member = groupRoom.getMember(this.confUserId); - if (member && member.membership === "join") { - return Promise.resolve(); - } - return this.client.invite(this.groupRoomId, this.confUserId); -}; - -ConferenceCall.prototype._getConferenceUserRoom = function() { - // Use an existing 1:1 with the conference user; else make one - var rooms = this.client.getRooms(); - var confRoom = null; - for (var i = 0; i < rooms.length; i++) { - var confUser = rooms[i].getMember(this.confUserId); - if (confUser && confUser.membership === "join" && - rooms[i].getJoinedMembers().length === 2) { - confRoom = rooms[i]; - break; - } - } - if (confRoom) { - return Promise.resolve(confRoom); - } - return this.client.createRoom({ - preset: "private_chat", - invite: [this.confUserId] - }).then(function(res) { - return new Room(res.room_id); - }); -}; - -/** - * Check if this user ID is in fact a conference bot. - * @param {string} userId The user ID to check. - * @return {boolean} True if it is a conference bot. - */ -module.exports.isConferenceUser = function(userId) { - if (userId.indexOf("@" + USER_PREFIX) !== 0) { - return false; - } - var base64part = userId.split(":")[0].substring(1 + USER_PREFIX.length); - if (base64part) { - var decoded = new Buffer(base64part, "base64").toString(); - // ! $STUFF : $STUFF - return /^!.+:.+/.test(decoded); - } - return false; -}; - -module.exports.getConferenceUserIdForRoom = function(roomId) { - // abuse browserify's core node Buffer support (strip padding ='s) - var base64RoomId = new Buffer(roomId).toString("base64").replace(/=/g, ""); - return "@" + USER_PREFIX + base64RoomId + ":" + DOMAIN; -}; - -module.exports.createNewMatrixCall = function(client, roomId) { - var confCall = new ConferenceCall( - client, roomId - ); - return confCall.setup(); -}; - -module.exports.getConferenceCallForRoom = function(roomId) { - // search for a conference 1:1 call for this group chat room ID - var activeCall = CallHandler.getAnyActiveCall(); - if (activeCall && activeCall.confUserId) { - var thisRoomConfUserId = module.exports.getConferenceUserIdForRoom( - roomId - ); - if (thisRoomConfUserId === activeCall.confUserId) { - return activeCall; - } - } - return null; -}; - -module.exports.ConferenceCall = ConferenceCall; - -module.exports.slot = 'conference'; diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js deleted file mode 100644 index 5557e74b..00000000 --- a/src/components/structures/BottomLeftMenu.js +++ /dev/null @@ -1,192 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import ReactDOM from 'react-dom'; -import sdk from 'matrix-react-sdk'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import Velocity from 'velocity-vector'; -import 'velocity-vector/velocity.ui'; -import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; - -const CALLOUT_ANIM_DURATION = 1000; - -module.exports = React.createClass({ - displayName: 'BottomLeftMenu', - - propTypes: { - collapsed: React.PropTypes.bool.isRequired, - }, - - getInitialState: function() { - return({ - directoryHover : false, - roomsHover : false, - homeHover: false, - peopleHover : false, - settingsHover : false, - }); - }, - - componentWillMount: function() { - this._dispatcherRef = dis.register(this.onAction); - this._peopleButton = null; - this._directoryButton = null; - this._createRoomButton = null; - this._lastCallouts = {}; - }, - - componentWillUnmount: function() { - dis.unregister(this._dispatcherRef); - }, - - // Room events - onDirectoryClick: function() { - dis.dispatch({ action: 'view_room_directory' }); - }, - - onDirectoryMouseEnter: function() { - this.setState({ directoryHover: true }); - }, - - onDirectoryMouseLeave: function() { - this.setState({ directoryHover: false }); - }, - - onRoomsClick: function() { - dis.dispatch({ action: 'view_create_room' }); - }, - - onRoomsMouseEnter: function() { - this.setState({ roomsHover: true }); - }, - - onRoomsMouseLeave: function() { - this.setState({ roomsHover: false }); - }, - - // Home button events - onHomeClick: function() { - dis.dispatch({ action: 'view_home_page' }); - }, - - onHomeMouseEnter: function() { - this.setState({ homeHover: true }); - }, - - onHomeMouseLeave: function() { - this.setState({ homeHover: false }); - }, - - // People events - onPeopleClick: function() { - dis.dispatch({ action: 'view_create_chat' }); - }, - - onPeopleMouseEnter: function() { - this.setState({ peopleHover: true }); - }, - - onPeopleMouseLeave: function() { - this.setState({ peopleHover: false }); - }, - - // Settings events - onSettingsClick: function() { - dis.dispatch({ action: 'view_user_settings' }); - }, - - onSettingsMouseEnter: function() { - this.setState({ settingsHover: true }); - }, - - onSettingsMouseLeave: function() { - this.setState({ settingsHover: false }); - }, - - onAction: function(payload) { - let calloutElement; - switch (payload.action) { - // Incoming instruction: dance! - case 'callout_start_chat': - calloutElement = this._peopleButton; - break; - case 'callout_room_directory': - calloutElement = this._directoryButton; - break; - case 'callout_create_room': - calloutElement = this._createRoomButton; - break; - } - if (calloutElement) { - const lastCallout = this._lastCallouts[payload.action]; - const now = Date.now(); - if (lastCallout == undefined || lastCallout < now - CALLOUT_ANIM_DURATION) { - this._lastCallouts[payload.action] = now; - Velocity(ReactDOM.findDOMNode(calloutElement), "callout.bounce", CALLOUT_ANIM_DURATION); - } - } - }, - - // Get the label/tooltip to show - getLabel: function(label, show) { - if (show) { - var RoomTooltip = sdk.getComponent("rooms.RoomTooltip"); - return <RoomTooltip className="mx_BottomLeftMenu_tooltip" label={label} />; - } - }, - - _collectPeopleButton: function(e) { - this._peopleButton = e; - }, - - _collectDirectoryButton: function(e) { - this._directoryButton = e; - }, - - _collectCreateRoomButton: function(e) { - this._createRoomButton = e; - }, - - render: function() { - const HomeButton = sdk.getComponent('elements.HomeButton'); - const StartChatButton = sdk.getComponent('elements.StartChatButton'); - const RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton'); - const CreateRoomButton = sdk.getComponent('elements.CreateRoomButton'); - const SettingsButton = sdk.getComponent('elements.SettingsButton'); - - return ( - <div className="mx_BottomLeftMenu"> - <div className="mx_BottomLeftMenu_options"> - <HomeButton tooltip={true} /> - <div ref={this._collectPeopleButton}> - <StartChatButton tooltip={true} /> - </div> - <div ref={this._collectDirectoryButton}> - <RoomDirectoryButton tooltip={true} /> - </div> - <div ref={this._collectCreateRoomButton}> - <CreateRoomButton tooltip={true} /> - </div> - <span className="mx_BottomLeftMenu_settings"> - <SettingsButton tooltip={true} /> - </span> - </div> - </div> - ); - }, -}); diff --git a/src/components/structures/CompatibilityPage.js b/src/components/structures/CompatibilityPage.js deleted file mode 100644 index 10806f4f..00000000 --- a/src/components/structures/CompatibilityPage.js +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -module.exports = React.createClass({ - displayName: 'CompatibilityPage', - propTypes: { - onAccept: React.PropTypes.func - }, - - getDefaultProps: function() { - return { - onAccept: function() {} // NOP - }; - }, - - onAccept: function() { - this.props.onAccept(); - }, - - render: function() { - - return ( - <div className="mx_CompatibilityPage"> - <div className="mx_CompatibilityPage_box"> - <p>{ _t("Sorry, your browser is <b>not</b> able to run Riot.", {}, { 'b': (sub) => <b>{sub}</b> }) } </p> - <p> - { _t("Riot uses many advanced browser features, some of which are not available or experimental in your current browser.") } - </p> - <p> - { _t('Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.', - {}, - { - 'chromeLink': (sub) => <a href="https://www.google.com/chrome">{sub}</a>, - 'firefoxLink': (sub) => <a href="https://getfirefox.com">{sub}</a>, - }, - )} - { _t('<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.', - {}, - { - 'safariLink': (sub) => <a href="http://apple.com/safari">{sub}</a>, - 'operaLink': (sub) => <a href="http://opera.com">{sub}</a>, - }, - )} - </p> - <p> - { _t("With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!") } - </p> - <button onClick={this.onAccept}> - { _t("I understand the risks and wish to continue") } - </button> - </div> - </div> - ); - } -}); diff --git a/src/components/structures/HomePage.js b/src/components/structures/HomePage.js deleted file mode 100644 index bdba55eb..00000000 --- a/src/components/structures/HomePage.js +++ /dev/null @@ -1,110 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import GeminiScrollbar from 'react-gemini-scrollbar'; -import request from 'browser-request'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import sanitizeHtml from 'sanitize-html'; - -module.exports = React.createClass({ - displayName: 'HomePage', - - propTypes: { - // URL base of the team server. Optional. - teamServerUrl: React.PropTypes.string, - // Team token. Optional. If set, used to get the static homepage of the team - // associated. If unset, homePageUrl will be used. - teamToken: React.PropTypes.string, - // URL to use as the iFrame src. Defaults to /home.html. - homePageUrl: React.PropTypes.string, - }, - - getInitialState: function() { - return { - iframeSrc: '', - page: '', - }; - }, - - translate: function(s) { - s = sanitizeHtml(_t(s)); - // ugly fix for https://github.com/vector-im/riot-web/issues/4243 - s = s.replace(/Riot\.im/, '<a href="https://riot.im" target="_blank" rel="noopener">Riot.im</a>'); - s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="home/images/matrix.svg"/></a>'); - return s; - }, - - componentWillMount: function() { - this._unmounted = false; - - if (this.props.teamToken && this.props.teamServerUrl) { - this.setState({ - iframeSrc: `${this.props.teamServerUrl}/static/${this.props.teamToken}/home.html` - }); - } - else { - // we use request() to inline the homepage into the react component - // so that it can inherit CSS and theming easily rather than mess around - // with iframes and trying to synchronise document.stylesheets. - - let src = this.props.homePageUrl || 'home.html'; - - request( - { method: "GET", url: src }, - (err, response, body) => { - if (this._unmounted) { - return; - } - - if (err || response.status < 200 || response.status >= 300) { - console.warn(`Error loading home page: ${err}`); - this.setState({ page: _t("Couldn't load home page") }); - return; - } - - body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1)); - this.setState({ page: body }); - } - ); - } - }, - - componentWillUnmount: function() { - this._unmounted = true; - }, - - render: function() { - if (this.state.iframeSrc) { - return ( - <div className="mx_HomePage"> - <iframe src={ this.state.iframeSrc } /> - </div> - ); - } - else { - return ( - <GeminiScrollbar autoshow={true} className="mx_HomePage"> - <div className="mx_HomePage_body" dangerouslySetInnerHTML={{ __html: this.state.page }}> - </div> - </GeminiScrollbar> - ); - } - } -}); diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js deleted file mode 100644 index 7f59db7d..00000000 --- a/src/components/structures/LeftPanel.js +++ /dev/null @@ -1,226 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import PropTypes from 'prop-types'; -import classNames from 'classnames'; -import { MatrixClient } from 'matrix-js-sdk'; -import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; -import sdk from 'matrix-react-sdk'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import VectorConferenceHandler from '../../VectorConferenceHandler'; - -import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore'; - - -var LeftPanel = React.createClass({ - displayName: 'LeftPanel', - - // NB. If you add props, don't forget to update - // shouldComponentUpdate! - propTypes: { - collapsed: PropTypes.bool.isRequired, - }, - - contextTypes: { - matrixClient: PropTypes.instanceOf(MatrixClient), - }, - - getInitialState: function() { - return { - searchFilter: '', - }; - }, - - componentWillMount: function() { - this.focusedElement = null; - }, - - shouldComponentUpdate: function(nextProps, nextState) { - // MatrixChat will update whenever the user switches - // rooms, but propagating this change all the way down - // the react tree is quite slow, so we cut this off - // here. The RoomTiles listen for the room change - // events themselves to know when to update. - // We just need to update if any of these things change. - if ( - this.props.collapsed !== nextProps.collapsed || - this.props.disabled !== nextProps.disabled - ) { - return true; - } - - if (this.state.searchFilter !== nextState.searchFilter) { - return true; - } - - return false; - }, - - _onFocus: function(ev) { - this.focusedElement = ev.target; - }, - - _onBlur: function(ev) { - this.focusedElement = null; - }, - - _onKeyDown: function(ev) { - if (!this.focusedElement) return; - let handled = false; - - switch (ev.keyCode) { - case KeyCode.UP: - this._onMoveFocus(true); - handled = true; - break; - case KeyCode.DOWN: - this._onMoveFocus(false); - handled = true; - break; - } - - if (handled) { - ev.stopPropagation(); - ev.preventDefault(); - } - }, - - _onMoveFocus: function(up) { - var element = this.focusedElement; - - // unclear why this isn't needed - // var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending; - // this.focusDirection = up; - - var descending = false; // are we currently descending or ascending through the DOM tree? - var classes; - - do { - var child = up ? element.lastElementChild : element.firstElementChild; - var sibling = up ? element.previousElementSibling : element.nextElementSibling; - - if (descending) { - if (child) { - element = child; - } - else if (sibling) { - element = sibling; - } - else { - descending = false; - element = element.parentElement; - } - } - else { - if (sibling) { - element = sibling; - descending = true; - } - else { - element = element.parentElement; - } - } - - if (element) { - classes = element.classList; - if (classes.contains("mx_LeftPanel")) { // we hit the top - element = up ? element.lastElementChild : element.firstElementChild; - descending = true; - } - } - - } while(element && !( - classes.contains("mx_RoomTile") || - classes.contains("mx_SearchBox_search") || - classes.contains("mx_RoomSubList_ellipsis"))); - - if (element) { - element.focus(); - this.focusedElement = element; - this.focusedDescending = descending; - } - }, - - onHideClick: function() { - dis.dispatch({ - action: 'hide_left_panel', - }); - }, - - onSearch: function(term) { - this.setState({ searchFilter: term }); - }, - - collectRoomList: function(ref) { - this._roomList = ref; - }, - - render: function() { - const RoomList = sdk.getComponent('rooms.RoomList'); - const TagPanel = sdk.getComponent('structures.TagPanel'); - const BottomLeftMenu = sdk.getComponent('structures.BottomLeftMenu'); - const CallPreview = sdk.getComponent('voip.CallPreview'); - - let topBox; - if (this.context.matrixClient.isGuest()) { - const LoginBox = sdk.getComponent('structures.LoginBox'); - topBox = <LoginBox collapsed={ this.props.collapsed }/>; - } else { - const SearchBox = sdk.getComponent('structures.SearchBox'); - topBox = <SearchBox collapsed={ this.props.collapsed } onSearch={ this.onSearch } />; - } - - let classes = classNames( - "mx_LeftPanel", "mx_fadable", - { - "collapsed": this.props.collapsed, - "mx_fadable_faded": this.props.disabled, - } - ); - - const tagPanelEnabled = SettingsStore.isFeatureEnabled("feature_tag_panel"); - const tagPanel = tagPanelEnabled ? <TagPanel /> : <div />; - - const containerClasses = classNames( - "mx_LeftPanel_container", - { - "mx_LeftPanel_container_collapsed": this.props.collapsed, - "mx_LeftPanel_container_hasTagPanel": tagPanelEnabled, - }, - ); - - return ( - <div className={containerClasses}> - { tagPanel } - <aside className={classes} onKeyDown={ this._onKeyDown } onFocus={ this._onFocus } onBlur={ this._onBlur }> - { topBox } - <CallPreview ConferenceHandler={VectorConferenceHandler} /> - <RoomList - ref={this.collectRoomList} - collapsed={this.props.collapsed} - searchFilter={this.state.searchFilter} - ConferenceHandler={VectorConferenceHandler} /> - <BottomLeftMenu collapsed={this.props.collapsed}/> - </aside> - </div> - ); - } -}); - -module.exports = LeftPanel; diff --git a/src/components/structures/LoginBox.js b/src/components/structures/LoginBox.js deleted file mode 100644 index 7cacc14e..00000000 --- a/src/components/structures/LoginBox.js +++ /dev/null @@ -1,93 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -var sdk = require('matrix-react-sdk') -var dis = require('matrix-react-sdk/lib/dispatcher'); -var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); - -module.exports = React.createClass({ - displayName: 'LoginBox', - - propTypes: { - collapsed: React.PropTypes.bool, - }, - - onToggleCollapse: function(show) { - if (show) { - dis.dispatch({ - action: 'show_left_panel', - }); - } - else { - dis.dispatch({ - action: 'hide_left_panel', - }); - } - }, - - onLoginClick: function() { - dis.dispatch({ action: 'start_login' }); - }, - - onRegisterClick: function() { - dis.dispatch({ action: 'start_registration' }); - }, - - render: function() { - var TintableSvg = sdk.getComponent('elements.TintableSvg'); - - var toggleCollapse; - if (this.props.collapsed) { - toggleCollapse = - <AccessibleButton className="mx_SearchBox_maximise" onClick={ this.onToggleCollapse.bind(this, true) }> - <TintableSvg src="img/maximise.svg" width="10" height="16" alt="Expand panel"/> - </AccessibleButton> - } - else { - toggleCollapse = - <AccessibleButton className="mx_SearchBox_minimise" onClick={ this.onToggleCollapse.bind(this, false) }> - <TintableSvg src="img/minimise.svg" width="10" height="16" alt="Collapse panel"/> - </AccessibleButton> - } - - var loginButton; - if (!this.props.collapsed) { - loginButton = ( - <div className="mx_LoginBox_loginButton_wrapper"> - <AccessibleButton className="mx_LoginBox_loginButton" element="button" onClick={this.onLoginClick}> - { _t("Login") } - </AccessibleButton> - <AccessibleButton className="mx_LoginBox_registerButton" element="button" onClick={this.onRegisterClick}> - { _t("Register") } - </AccessibleButton> - </div> - ); - } - - var self = this; - return ( - <div className="mx_SearchBox mx_LoginBox"> - { loginButton } - { toggleCollapse } - </div> - ); - } -}); diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js deleted file mode 100644 index 55f588f2..00000000 --- a/src/components/structures/RightPanel.js +++ /dev/null @@ -1,414 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import classNames from 'classnames'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import sdk from 'matrix-react-sdk'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import { MatrixClient } from 'matrix-js-sdk'; -import Analytics from 'matrix-react-sdk/lib/Analytics'; -import RateLimitedFunc from 'matrix-react-sdk/lib/ratelimitedfunc'; -import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; -import { showGroupInviteDialog, showGroupAddRoomDialog } from 'matrix-react-sdk/lib/GroupAddressPicker'; -import GroupStoreCache from 'matrix-react-sdk/lib/stores/GroupStoreCache'; - -import { formatCount } from 'matrix-react-sdk/lib/utils/FormattingUtils'; - -class HeaderButton extends React.Component { - constructor() { - super(); - this.onClick = this.onClick.bind(this); - } - - onClick(ev) { - Analytics.trackEvent(...this.props.analytics); - dis.dispatch({ - action: 'view_right_panel_phase', - phase: this.props.clickPhase, - }); - } - - render() { - const TintableSvg = sdk.getComponent("elements.TintableSvg"); - const AccessibleButton = sdk.getComponent("elements.AccessibleButton"); - - return <AccessibleButton - aria-label={this.props.title} - title={this.props.title} - className="mx_RightPanel_headerButton" - onClick={this.onClick} > - - <div className="mx_RightPanel_headerButton_badge"> - { this.props.badge ? this.props.badge : <span> </span> } - </div> - <TintableSvg src={this.props.iconSrc} width="25" height="25" /> - { this.props.isHighlighted ? <div className="mx_RightPanel_headerButton_highlight" /> : <div /> } - - </AccessibleButton>; - } -} - -HeaderButton.propTypes = { - // Whether this button is highlighted - isHighlighted: PropTypes.bool.isRequired, - // The phase to swap to when the button is clicked - clickPhase: PropTypes.string.isRequired, - // The source file of the icon to display - iconSrc: PropTypes.string.isRequired, - - // The badge to display above the icon - badge: PropTypes.node, - // The parameters to track the click event - analytics: PropTypes.arrayOf(PropTypes.string).isRequired, - - // Button title - title: PropTypes.string.isRequired, -}; - -module.exports = React.createClass({ - displayName: 'RightPanel', - - propTypes: { - // TODO: We're trying to move away from these being props, but we need to know - // whether we should be displaying a room or group member list - roomId: React.PropTypes.string, // if showing panels for a given room, this is set - groupId: React.PropTypes.string, // if showing panels for a given group, this is set - collapsed: React.PropTypes.bool, // currently unused property to request for a minimized view of the panel - }, - - contextTypes: { - matrixClient: PropTypes.instanceOf(MatrixClient), - }, - - Phase: { - RoomMemberList: 'RoomMemberList', - GroupMemberList: 'GroupMemberList', - GroupRoomList: 'GroupRoomList', - GroupRoomInfo: 'GroupRoomInfo', - FilePanel: 'FilePanel', - NotificationPanel: 'NotificationPanel', - RoomMemberInfo: 'RoomMemberInfo', - GroupMemberInfo: 'GroupMemberInfo', - }, - - componentWillMount: function() { - this.dispatcherRef = dis.register(this.onAction); - const cli = this.context.matrixClient; - cli.on("RoomState.members", this.onRoomStateMember); - this._initGroupStore(this.props.groupId); - }, - - componentWillUnmount: function() { - dis.unregister(this.dispatcherRef); - if (this.context.matrixClient) { - this.context.matrixClient.removeListener("RoomState.members", this.onRoomStateMember); - } - this._unregisterGroupStore(); - }, - - getInitialState: function() { - return { - phase: this.props.groupId ? this.Phase.GroupMemberList : this.Phase.RoomMemberList, - isUserPrivilegedInGroup: null, - }; - }, - - componentWillReceiveProps(newProps) { - if (newProps.groupId !== this.props.groupId) { - this._unregisterGroupStore(); - this._initGroupStore(newProps.groupId); - } - }, - - _initGroupStore(groupId) { - if (!groupId) return; - this._groupStore = GroupStoreCache.getGroupStore(groupId); - this._groupStore.registerListener(this.onGroupStoreUpdated); - }, - - _unregisterGroupStore() { - if (this._groupStore) { - this._groupStore.unregisterListener(this.onGroupStoreUpdated); - } - }, - - onGroupStoreUpdated: function() { - this.setState({ - isUserPrivilegedInGroup: this._groupStore.isUserPrivileged(), - }); - }, - - onCollapseClick: function() { - dis.dispatch({ - action: 'hide_right_panel', - }); - }, - - onInviteButtonClick: function() { - if (this.context.matrixClient.isGuest()) { - dis.dispatch({action: 'view_set_mxid'}); - return; - } - - if (this.state.phase === this.Phase.GroupMemberList) { - showGroupInviteDialog(this.props.groupId); - } else if (this.state.phase === this.Phase.GroupRoomList) { - showGroupAddRoomDialog(this.props.groupId).then(() => { - this.forceUpdate(); - }); - } else { - // call AddressPickerDialog - dis.dispatch({ - action: 'view_invite', - roomId: this.props.roomId, - }); - } - }, - - onRoomStateMember: function(ev, state, member) { - // redraw the badge on the membership list - if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) { - this._delayedUpdate(); - } else if (this.state.phase === this.Phase.RoomMemberInfo && member.roomId === this.props.roomId && - member.userId === this.state.member.userId) { - // refresh the member info (e.g. new power level) - this._delayedUpdate(); - } - }, - - _delayedUpdate: new RateLimitedFunc(function() { - this.forceUpdate(); // eslint-disable-line babel/no-invalid-this - }, 500), - - onAction: function(payload) { - if (payload.action === "view_user") { - dis.dispatch({ - action: 'show_right_panel', - }); - if (payload.member) { - this.setState({ - phase: this.Phase.RoomMemberInfo, - member: payload.member, - }); - } else { - if (this.props.roomId) { - this.setState({ - phase: this.Phase.RoomMemberList, - }); - } else if (this.props.groupId) { - this.setState({ - phase: this.Phase.GroupMemberList, - member: payload.member, - }); - } - } - } else if (payload.action === "view_group") { - this.setState({ - phase: this.Phase.GroupMemberList, - member: null, - }); - } else if (payload.action === "view_group_room") { - this.setState({ - phase: this.Phase.GroupRoomInfo, - groupRoomId: payload.groupRoomId, - }); - } else if (payload.action === "view_group_room_list") { - this.setState({ - phase: this.Phase.GroupRoomList, - }); - } else if (payload.action === "view_group_user") { - this.setState({ - phase: this.Phase.GroupMemberInfo, - member: payload.member, - }); - } else if (payload.action === "view_room") { - this.setState({ - phase: this.Phase.RoomMemberList, - }); - } else if (payload.action === "view_right_panel_phase") { - this.setState({ - phase: payload.phase, - }); - } - }, - - render: function() { - const MemberList = sdk.getComponent('rooms.MemberList'); - const MemberInfo = sdk.getComponent('rooms.MemberInfo'); - const NotificationPanel = sdk.getComponent('structures.NotificationPanel'); - const FilePanel = sdk.getComponent('structures.FilePanel'); - - const GroupMemberList = sdk.getComponent('groups.GroupMemberList'); - const GroupMemberInfo = sdk.getComponent('groups.GroupMemberInfo'); - const GroupRoomList = sdk.getComponent('groups.GroupRoomList'); - const GroupRoomInfo = sdk.getComponent('groups.GroupRoomInfo'); - - const TintableSvg = sdk.getComponent("elements.TintableSvg"); - - let inviteGroup; - - let membersBadge; - let membersTitle = _t('Members'); - if ((this.state.phase === this.Phase.RoomMemberList || this.state.phase === this.Phase.RoomMemberInfo) - && this.props.roomId - ) { - const cli = this.context.matrixClient; - const room = cli.getRoom(this.props.roomId); - let isUserInRoom; - if (room) { - const numMembers = room.getJoinedMembers().length; - membersTitle = _t('%(count)s Members', { count: numMembers }); - membersBadge = <div title={membersTitle}>{ formatCount(numMembers) }</div>; - isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join'); - } - - if (isUserInRoom) { - inviteGroup = - <AccessibleButton className="mx_RightPanel_invite" onClick={this.onInviteButtonClick}> - <div className="mx_RightPanel_icon" > - <TintableSvg src="img/icon-invite-people.svg" width="35" height="35" /> - </div> - <div className="mx_RightPanel_message">{ _t('Invite to this room') }</div> - </AccessibleButton>; - } - } - - const isPhaseGroup = [ - this.Phase.GroupMemberInfo, - this.Phase.GroupMemberList, - ].includes(this.state.phase); - - let headerButtons = []; - if (this.props.roomId) { - headerButtons = [ - <HeaderButton key="_membersButton" title={membersTitle} iconSrc="img/icons-people.svg" - isHighlighted={[this.Phase.RoomMemberList, this.Phase.RoomMemberInfo].includes(this.state.phase)} - clickPhase={this.Phase.RoomMemberList} - badge={membersBadge} - analytics={['Right Panel', 'Member List Button', 'click']} - />, - <HeaderButton key="_filesButton" title={_t('Files')} iconSrc="img/icons-files.svg" - isHighlighted={this.state.phase === this.Phase.FilePanel} - clickPhase={this.Phase.FilePanel} - analytics={['Right Panel', 'File List Button', 'click']} - />, - <HeaderButton key="_notifsButton" title={_t('Notifications')} iconSrc="img/icons-notifications.svg" - isHighlighted={this.state.phase === this.Phase.NotificationPanel} - clickPhase={this.Phase.NotificationPanel} - analytics={['Right Panel', 'Notification List Button', 'click']} - />, - ]; - } else if (this.props.groupId) { - headerButtons = [ - <HeaderButton key="_groupMembersButton" title={_t('Members')} iconSrc="img/icons-people.svg" - isHighlighted={isPhaseGroup} - clickPhase={this.Phase.GroupMemberList} - analytics={['Right Panel', 'Group Member List Button', 'click']} - />, - <HeaderButton key="_roomsButton" title={_t('Rooms')} iconSrc="img/icons-room.svg" - isHighlighted={[this.Phase.GroupRoomList, this.Phase.GroupRoomInfo].includes(this.state.phase)} - clickPhase={this.Phase.GroupRoomList} - analytics={['Right Panel', 'Group Room List Button', 'click']} - />, - ]; - } - - if (this.props.roomId || this.props.groupId) { - // Hiding the right panel hides it completely and relies on an 'expand' button - // being put in the RoomHeader or GroupView header, so only show the minimise - // button on these 2 screens or you won't be able to re-expand the panel. - headerButtons.push( - <div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" key="_minimizeButton" - title={_t("Hide panel")} aria-label={_t("Hide panel")} onClick={this.onCollapseClick} - > - <TintableSvg src="img/minimise.svg" width="10" height="16" /> - </div>, - ); - } - - let panel = <div />; - if (!this.props.collapsed) { - if (this.props.roomId && this.state.phase === this.Phase.RoomMemberList) { - panel = <MemberList roomId={this.props.roomId} key={this.props.roomId} />; - } else if (this.props.groupId && this.state.phase === this.Phase.GroupMemberList) { - panel = <GroupMemberList groupId={this.props.groupId} key={this.props.groupId} />; - } else if (this.state.phase === this.Phase.GroupRoomList) { - panel = <GroupRoomList groupId={this.props.groupId} key={this.props.groupId} />; - } else if (this.state.phase === this.Phase.RoomMemberInfo) { - panel = <MemberInfo member={this.state.member} key={this.props.roomId || this.state.member.userId} />; - } else if (this.state.phase === this.Phase.GroupMemberInfo) { - panel = <GroupMemberInfo - groupMember={this.state.member} - groupId={this.props.groupId} - key={this.state.member.user_id} />; - } else if (this.state.phase === this.Phase.GroupRoomInfo) { - panel = <GroupRoomInfo - groupRoomId={this.state.groupRoomId} - groupId={this.props.groupId} - key={this.state.groupRoomId} />; - } else if (this.state.phase === this.Phase.NotificationPanel) { - panel = <NotificationPanel />; - } else if (this.state.phase === this.Phase.FilePanel) { - panel = <FilePanel roomId={this.props.roomId} />; - } - } - - if (!panel) { - panel = <div className="mx_RightPanel_blank" />; - } - - if (this.props.groupId && this.state.isUserPrivilegedInGroup) { - inviteGroup = isPhaseGroup ? ( - <AccessibleButton className="mx_RightPanel_invite" onClick={this.onInviteButtonClick}> - <div className="mx_RightPanel_icon" > - <TintableSvg src="img/icon-invite-people.svg" width="35" height="35" /> - </div> - <div className="mx_RightPanel_message">{ _t('Invite to this community') }</div> - </AccessibleButton> - ) : ( - <AccessibleButton className="mx_RightPanel_invite" onClick={this.onInviteButtonClick}> - <div className="mx_RightPanel_icon" > - <TintableSvg src="img/icons-room-add.svg" width="35" height="35" /> - </div> - <div className="mx_RightPanel_message">{ _t('Add rooms to this community') }</div> - </AccessibleButton> - ); - } - - const classes = classNames("mx_RightPanel", "mx_fadable", { - "collapsed": this.props.collapsed, - "mx_fadable_faded": this.props.disabled, - }); - - return ( - <aside className={classes}> - <div className="mx_RightPanel_header"> - <div className="mx_RightPanel_headerButtonGroup"> - { headerButtons } - </div> - </div> - { panel } - <div className="mx_RightPanel_footer"> - { inviteGroup } - </div> - </aside> - ); - }, -}); diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js deleted file mode 100644 index 126ae404..00000000 --- a/src/components/structures/RoomDirectory.js +++ /dev/null @@ -1,587 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); - -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var ContentRepo = require("matrix-js-sdk").ContentRepo; -var Modal = require('matrix-react-sdk/lib/Modal'); -var sdk = require('matrix-react-sdk'); -var dis = require('matrix-react-sdk/lib/dispatcher'); - -var linkify = require('linkifyjs'); -var linkifyString = require('linkifyjs/string'); -var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix'); -var sanitizeHtml = require('sanitize-html'); -import Promise from 'bluebird'; - -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -import {instanceForInstanceId, protocolNameForInstanceId} from '../../utils/DirectoryUtils'; - -linkifyMatrix(linkify); - -module.exports = React.createClass({ - displayName: 'RoomDirectory', - - propTypes: { - config: React.PropTypes.object, - }, - - getDefaultProps: function() { - return { - config: {}, - } - }, - - getInitialState: function() { - return { - publicRooms: [], - loading: true, - protocolsLoading: true, - instanceId: null, - includeAll: false, - roomServer: null, - filterString: null, - } - }, - - componentWillMount: function() { - this._unmounted = false; - this.nextBatch = null; - this.filterTimeout = null; - this.scrollPanel = null; - this.protocols = null; - - this.setState({protocolsLoading: true}); - MatrixClientPeg.get().getThirdpartyProtocols().done((response) => { - this.protocols = response; - this.setState({protocolsLoading: false}); - }, (err) => { - console.warn(`error loading thirdparty protocols: ${err}`); - this.setState({protocolsLoading: false}); - if (MatrixClientPeg.get().isGuest()) { - // Guests currently aren't allowed to use this API, so - // ignore this as otherwise this error is literally the - // thing you see when loading the client! - return; - } - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to get protocol list from Home Server', '', ErrorDialog, { - title: _t('Failed to get protocol list from Home Server'), - description: _t('The Home Server may be too old to support third party networks'), - }); - }); - - // dis.dispatch({ - // action: 'panel_disable', - // sideDisabled: true, - // middleDisabled: true, - // }); - }, - - componentWillUnmount: function() { - // dis.dispatch({ - // action: 'panel_disable', - // sideDisabled: false, - // middleDisabled: false, - // }); - if (this.filterTimeout) { - clearTimeout(this.filterTimeout); - } - this._unmounted = true; - }, - - refreshRoomList: function() { - this.nextBatch = null; - this.setState({ - publicRooms: [], - loading: true, - }); - this.getMoreRooms().done(); - }, - - getMoreRooms: function() { - if (!MatrixClientPeg.get()) return Promise.resolve(); - - const my_filter_string = this.state.filterString; - const my_server = this.state.roomServer; - // remember the next batch token when we sent the request - // too. If it's changed, appending to the list will corrupt it. - const my_next_batch = this.nextBatch; - const opts = {limit: 20}; - if (my_server != MatrixClientPeg.getHomeServerName()) { - opts.server = my_server; - } - if (this.state.instanceId) { - opts.third_party_instance_id = this.state.instanceId; - } else if (this.state.includeAll) { - opts.include_all_networks = true; - } - if (this.nextBatch) opts.since = this.nextBatch; - if (my_filter_string) opts.filter = { generic_search_term: my_filter_string } ; - return MatrixClientPeg.get().publicRooms(opts).then((data) => { - if ( - my_filter_string != this.state.filterString || - my_server != this.state.roomServer || - my_next_batch != this.nextBatch) - { - // if the filter or server has changed since this request was sent, - // throw away the result (don't even clear the busy flag - // since we must still have a request in flight) - return; - } - - if (this._unmounted) { - // if we've been unmounted, we don't care either. - return; - } - - this.nextBatch = data.next_batch; - this.setState((s) => { - s.publicRooms.push(...data.chunk); - s.loading = false; - return s; - }); - return Boolean(data.next_batch); - }, (err) => { - if ( - my_filter_string != this.state.filterString || - my_server != this.state.roomServer || - my_next_batch != this.nextBatch) - { - // as above: we don't care about errors for old - // requests either - return; - } - - if (this._unmounted) { - // if we've been unmounted, we don't care either. - return; - } - - this.setState({ loading: false }); - console.error("Failed to get publicRooms: %s", JSON.stringify(err)); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, { - title: _t('Failed to get public room list'), - description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) - }); - }); - }, - - /** - * A limited interface for removing rooms from the directory. - * Will set the room to not be publicly visible and delete the - * default alias. In the long term, it would be better to allow - * HS admins to do this through the RoomSettings interface, but - * this needs SPEC-417. - */ - removeFromDirectory: function(room) { - var alias = get_display_alias_for_room(room); - var name = room.name || alias || _t('Unnamed room'); - - var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - - var desc; - if (alias) { - desc = _t('Delete the room alias %(alias)s and remove %(name)s from the directory?', {alias: alias, name: name}); - } else { - desc = _t('Remove %(name)s from the directory?', {name: name}); - } - - Modal.createTrackedDialog('Remove from Directory', '', QuestionDialog, { - title: _t('Remove from Directory'), - description: desc, - onFinished: (should_delete) => { - if (!should_delete) return; - - var Loader = sdk.getComponent("elements.Spinner"); - var modal = Modal.createDialog(Loader); - var step = _t('remove %(name)s from the directory.', {name: name}); - - MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => { - if (!alias) return; - step = _t('delete the alias.'); - return MatrixClientPeg.get().deleteAlias(alias); - }).done(() => { - modal.close(); - this.refreshRoomList(); - }, (err) => { - modal.close(); - this.refreshRoomList(); - console.error("Failed to " + step + ": " + err); - Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, { - title: _t('Error'), - description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) - }); - }); - } - }); - }, - - onRoomClicked: function(room, ev) { - if (ev.shiftKey) { - ev.preventDefault(); - this.removeFromDirectory(room); - } else { - this.showRoom(room); - } - }, - - onOptionChange: function(server, instanceId, includeAll) { - // clear next batch so we don't try to load more rooms - this.nextBatch = null; - this.setState({ - // Clear the public rooms out here otherwise we needlessly - // spend time filtering lots of rooms when we're about to - // to clear the list anyway. - publicRooms: [], - roomServer: server, - instanceId: instanceId, - includeAll: includeAll, - }, this.refreshRoomList); - // We also refresh the room list each time even though this - // filtering is client-side. It hopefully won't be client side - // for very long, and we may have fetched a thousand rooms to - // find the five gitter ones, at which point we do not want - // to render all those rooms when switching back to 'all networks'. - // Easiest to just blow away the state & re-fetch. - }, - - onFillRequest: function(backwards) { - if (backwards || !this.nextBatch) return Promise.resolve(false); - - return this.getMoreRooms(); - }, - - onFilterChange: function(alias) { - this.setState({ - filterString: alias || null, - }); - - // don't send the request for a little bit, - // no point hammering the server with a - // request for every keystroke, let the - // user finish typing. - if (this.filterTimeout) { - clearTimeout(this.filterTimeout); - } - this.filterTimeout = setTimeout(() => { - this.filterTimeout = null; - this.refreshRoomList(); - }, 700); - }, - - onFilterClear: function() { - // update immediately - this.setState({ - filterString: null, - }, this.refreshRoomList); - - if (this.filterTimeout) { - clearTimeout(this.filterTimeout); - } - }, - - onJoinClick: function(alias) { - // If we don't have a particular instance id selected, just show that rooms alias - if (!this.state.instanceId) { - // If the user specified an alias without a domain, add on whichever server is selected - // in the dropdown - if (alias.indexOf(':') == -1) { - alias = alias + ':' + this.state.roomServer; - } - this.showRoomAlias(alias); - } else { - // This is a 3rd party protocol. Let's see if we can join it - const protocolName = protocolNameForInstanceId(this.protocols, this.state.instanceId); - const instance = instanceForInstanceId(this.protocols, this.state.instanceId); - const fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null; - if (!fields) { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Unable to join network', '', ErrorDialog, { - title: _t('Unable to join network'), - description: _t('Riot does not know how to join a room on this network'), - }); - return; - } - MatrixClientPeg.get().getThirdpartyLocation(protocolName, fields).done((resp) => { - if (resp.length > 0 && resp[0].alias) { - this.showRoomAlias(resp[0].alias); - } else { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Room not found', '', ErrorDialog, { - title: _t('Room not found'), - description: _t('Couldn\'t find a matching Matrix room'), - }); - } - }, (e) => { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Fetching third party location failed', '', ErrorDialog, { - title: _t('Fetching third party location failed'), - description: _t('Unable to look up room ID from server'), - }); - }); - } - }, - - showRoomAlias: function(alias) { - this.showRoom(null, alias); - }, - - showRoom: function(room, room_alias) { - var payload = {action: 'view_room'}; - if (room) { - // Don't let the user view a room they won't be able to either - // peek or join: fail earlier so they don't have to click back - // to the directory. - if (MatrixClientPeg.get().isGuest()) { - if (!room.world_readable && !room.guest_can_join) { - dis.dispatch({action: 'view_set_mxid'}); - return; - } - } - - if (!room_alias) { - room_alias = get_display_alias_for_room(room); - } - - payload.oob_data = { - avatarUrl: room.avatar_url, - // XXX: This logic is duplicated from the JS SDK which - // would normally decide what the name is. - name: room.name || room_alias || _t('Unnamed room'), - }; - } - // It's not really possible to join Matrix rooms by ID because the HS has no way to know - // which servers to start querying. However, there's no other way to join rooms in - // this list without aliases at present, so if roomAlias isn't set here we have no - // choice but to supply the ID. - if (room_alias) { - payload.room_alias = room_alias; - } else { - payload.room_id = room.room_id; - } - dis.dispatch(payload); - }, - - getRows: function() { - var BaseAvatar = sdk.getComponent('avatars.BaseAvatar'); - - if (!this.state.publicRooms) return []; - - var rooms = this.state.publicRooms; - var rows = []; - var self = this; - var guestRead, guestJoin, perms; - for (var i = 0; i < rooms.length; i++) { - var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || _t('Unnamed room'); - guestRead = null; - guestJoin = null; - - if (rooms[i].world_readable) { - guestRead = ( - <div className="mx_RoomDirectory_perm">{ _t('World readable') }</div> - ); - } - if (rooms[i].guest_can_join) { - guestJoin = ( - <div className="mx_RoomDirectory_perm">{ _t('Guests can join') }</div> - ); - } - - perms = null; - if (guestRead || guestJoin) { - perms = <div className="mx_RoomDirectory_perms">{guestRead}{guestJoin}</div>; - } - - var topic = rooms[i].topic || ''; - topic = linkifyString(sanitizeHtml(topic)); - - rows.push( - <tr key={ rooms[i].room_id } - onClick={self.onRoomClicked.bind(self, rooms[i])} - // cancel onMouseDown otherwise shift-clicking highlights text - onMouseDown={(ev) => {ev.preventDefault();}} - > - <td className="mx_RoomDirectory_roomAvatar"> - <BaseAvatar width={24} height={24} resizeMethod='crop' - name={ name } idName={ name } - url={ ContentRepo.getHttpUriForMxc( - MatrixClientPeg.get().getHomeserverUrl(), - rooms[i].avatar_url, 24, 24, "crop") } /> - </td> - <td className="mx_RoomDirectory_roomDescription"> - <div className="mx_RoomDirectory_name">{ name }</div> - { perms } - <div className="mx_RoomDirectory_topic" - onClick={ function(e) { e.stopPropagation() } } - dangerouslySetInnerHTML={{ __html: topic }}/> - <div className="mx_RoomDirectory_alias">{ get_display_alias_for_room(rooms[i]) }</div> - </td> - <td className="mx_RoomDirectory_roomMemberCount"> - { rooms[i].num_joined_members } - </td> - </tr> - ); - } - return rows; - }, - - collectScrollPanel: function(element) { - this.scrollPanel = element; - }, - - _stringLooksLikeId: function(s, field_type) { - let pat = /^#[^\s]+:[^\s]/; - if (field_type && field_type.regexp) { - pat = new RegExp(field_type.regexp); - } - - return pat.test(s); - }, - - _getFieldsForThirdPartyLocation: function(userInput, protocol, instance) { - // make an object with the fields specified by that protocol. We - // require that the values of all but the last field come from the - // instance. The last is the user input. - const requiredFields = protocol.location_fields; - if (!requiredFields) return null; - const fields = {}; - for (let i = 0; i < requiredFields.length - 1; ++i) { - const thisField = requiredFields[i]; - if (instance.fields[thisField] === undefined) return null; - fields[thisField] = instance.fields[thisField]; - } - fields[requiredFields[requiredFields.length - 1]] = userInput; - return fields; - }, - - /** - * called by the parent component when PageUp/Down/etc is pressed. - * - * We pass it down to the scroll panel. - */ - handleScrollKey: function(ev) { - if (this.scrollPanel) { - this.scrollPanel.handleScrollKey(ev); - } - }, - - render: function() { - const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); - const Loader = sdk.getComponent("elements.Spinner"); - - if (this.state.protocolsLoading) { - return ( - <div className="mx_RoomDirectory"> - <SimpleRoomHeader title={ _t('Directory') } /> - <Loader /> - </div> - ); - } - - let content; - if (this.state.loading) { - content = <div className="mx_RoomDirectory"> - <Loader /> - </div>; - } else { - const rows = this.getRows(); - // we still show the scrollpanel, at least for now, because - // otherwise we don't fetch more because we don't get a fill - // request from the scrollpanel because there isn't one - let scrollpanel_content; - if (rows.length == 0) { - scrollpanel_content = <i>{ _t('No rooms to show') }</i>; - } else { - scrollpanel_content = <table ref="directory_table" className="mx_RoomDirectory_table"> - <tbody> - { this.getRows() } - </tbody> - </table>; - } - const ScrollPanel = sdk.getComponent("structures.ScrollPanel"); - content = <ScrollPanel ref={this.collectScrollPanel} - className="mx_RoomDirectory_tableWrapper" - onFillRequest={ this.onFillRequest } - stickyBottom={false} - startAtBottom={false} - onResize={function(){}} - > - { scrollpanel_content } - </ScrollPanel>; - } - - const protocolName = protocolNameForInstanceId(this.protocols, this.state.instanceId); - let instance_expected_field_type; - if ( - protocolName && - this.protocols && - this.protocols[protocolName] && - this.protocols[protocolName].location_fields.length > 0 && - this.protocols[protocolName].field_types - ) { - const last_field = this.protocols[protocolName].location_fields.slice(-1)[0]; - instance_expected_field_type = this.protocols[protocolName].field_types[last_field]; - } - - - let placeholder = _t('Search for a room'); - if (!this.state.instanceId) { - placeholder = _t('#example') + ':' + this.state.roomServer; - } else if (instance_expected_field_type) { - placeholder = instance_expected_field_type.placeholder; - } - - let showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type); - if (protocolName) { - const instance = instanceForInstanceId(this.protocols, this.state.instanceId); - if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocolName], instance) === null) { - showJoinButton = false; - } - } - - const NetworkDropdown = sdk.getComponent('directory.NetworkDropdown'); - const DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox'); - return ( - <div className="mx_RoomDirectory"> - <SimpleRoomHeader title={ _t('Directory') } icon="img/icons-directory.svg" /> - <div className="mx_RoomDirectory_list"> - <div className="mx_RoomDirectory_listheader"> - <DirectorySearchBox - className="mx_RoomDirectory_searchbox" - onChange={this.onFilterChange} onClear={this.onFilterClear} onJoinClick={this.onJoinClick} - placeholder={placeholder} showJoinButton={showJoinButton} - /> - <NetworkDropdown config={this.props.config} protocols={this.protocols} onOptionChange={this.onOptionChange} /> - </div> - {content} - </div> - </div> - ); - } -}); - -// Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom -// but works with the objects we get from the public room list -function get_display_alias_for_room(room) { - return room.canonical_alias || (room.aliases ? room.aliases[0] : ""); -} diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js deleted file mode 100644 index d119e271..00000000 --- a/src/components/structures/RoomSubList.js +++ /dev/null @@ -1,380 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -var ReactDOM = require('react-dom'); -var classNames = require('classnames'); -var sdk = require('matrix-react-sdk'); -import { Droppable } from 'react-beautiful-dnd'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -var dis = require('matrix-react-sdk/lib/dispatcher'); -var Unread = require('matrix-react-sdk/lib/Unread'); -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs'); -var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); -import Modal from 'matrix-react-sdk/lib/Modal'; -import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; - - -// turn this on for drop & drag console debugging galore -var debug = false; - -const TRUNCATE_AT = 10; - -var RoomSubList = React.createClass({ - displayName: 'RoomSubList', - - debug: debug, - - propTypes: { - list: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, - label: React.PropTypes.string.isRequired, - tagName: React.PropTypes.string, - editable: React.PropTypes.bool, - - order: React.PropTypes.string.isRequired, - - // passed through to RoomTile and used to highlight room with `!` regardless of notifications count - isInvite: React.PropTypes.bool, - - startAsHidden: React.PropTypes.bool, - showSpinner: React.PropTypes.bool, // true to show a spinner if 0 elements when expanded - collapsed: React.PropTypes.bool.isRequired, // is LeftPanel collapsed? - onHeaderClick: React.PropTypes.func, - alwaysShowHeader: React.PropTypes.bool, - incomingCall: React.PropTypes.object, - onShowMoreRooms: React.PropTypes.func, - searchFilter: React.PropTypes.string, - emptyContent: React.PropTypes.node, // content shown if the list is empty - headerItems: React.PropTypes.node, // content shown in the sublist header - extraTiles: React.PropTypes.arrayOf(React.PropTypes.node), // extra elements added beneath tiles - }, - - getInitialState: function() { - return { - hidden: this.props.startAsHidden || false, - truncateAt: TRUNCATE_AT, - sortedList: [], - }; - }, - - getDefaultProps: function() { - return { - onHeaderClick: function() {}, // NOP - onShowMoreRooms: function() {}, // NOP - extraTiles: [], - isInvite: false, - }; - }, - - componentWillMount: function() { - this.setState({ - sortedList: this.applySearchFilter(this.props.list, this.props.searchFilter), - }); - }, - - componentWillReceiveProps: function(newProps) { - // order the room list appropriately before we re-render - //if (debug) console.log("received new props, list = " + newProps.list); - this.setState({ - sortedList: this.applySearchFilter(newProps.list, newProps.searchFilter), - }); - }, - - applySearchFilter: function(list, filter) { - if (filter === "") return list; - return list.filter((room) => { - return room.name && room.name.toLowerCase().indexOf(filter.toLowerCase()) >= 0 - }); - }, - - // The header is collapsable if it is hidden or not stuck - // The dataset elements are added in the RoomList _initAndPositionStickyHeaders method - isCollapsableOnClick: function() { - var stuck = this.refs.header.dataset.stuck; - if (this.state.hidden || stuck === undefined || stuck === "none") { - return true; - } else { - return false; - } - }, - - onClick: function(ev) { - if (this.isCollapsableOnClick()) { - // The header isCollapsable, so the click is to be interpreted as collapse and truncation logic - var isHidden = !this.state.hidden; - this.setState({ hidden : isHidden }); - - if (isHidden) { - // as good a way as any to reset the truncate state - this.setState({ truncateAt : TRUNCATE_AT }); - } - - this.props.onShowMoreRooms(); - this.props.onHeaderClick(isHidden); - } else { - // The header is stuck, so the click is to be interpreted as a scroll to the header - this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition); - } - }, - - onRoomTileClick(roomId, ev) { - dis.dispatch({ - action: 'view_room', - room_id: roomId, - clear_search: (ev && (ev.keyCode == KeyCode.ENTER || ev.keyCode == KeyCode.SPACE)), - }); - }, - - _shouldShowNotifBadge: function(roomNotifState) { - const showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD]; - return showBadgeInStates.indexOf(roomNotifState) > -1; - }, - - _shouldShowMentionBadge: function(roomNotifState) { - return roomNotifState != RoomNotifs.MUTE; - }, - - /** - * Total up all the notification counts from the rooms - * - * @param {Number} If supplied will only total notifications for rooms outside the truncation number - * @returns {Array} The array takes the form [total, highlight] where highlight is a bool - */ - roomNotificationCount: function(truncateAt) { - var self = this; - - if (this.props.isInvite) { - return [0, true]; - } - - return this.props.list.reduce(function(result, room, index) { - if (truncateAt === undefined || index >= truncateAt) { - var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId); - var highlight = room.getUnreadNotificationCount('highlight') > 0; - var notificationCount = room.getUnreadNotificationCount(); - - const notifBadges = notificationCount > 0 && self._shouldShowNotifBadge(roomNotifState); - const mentionBadges = highlight && self._shouldShowMentionBadge(roomNotifState); - const badges = notifBadges || mentionBadges; - - if (badges) { - result[0] += notificationCount; - if (highlight) { - result[1] = true; - } - } - } - return result; - }, [0, false]); - }, - - _updateSubListCount: function() { - // Force an update by setting the state to the current state - // Doing it this way rather than using forceUpdate(), so that the shouldComponentUpdate() - // method is honoured - this.setState(this.state); - }, - - makeRoomTiles: function() { - var self = this; - var DNDRoomTile = sdk.getComponent("rooms.DNDRoomTile"); - return this.state.sortedList.map(function(room, index) { - // XXX: is it evil to pass in self as a prop to RoomTile? - return ( - <DNDRoomTile - index={index} // For DND - room={ room } - roomSubList={ self } - tagName={self.props.tagName} - key={ room.roomId } - collapsed={ self.props.collapsed || false} - unread={ Unread.doesRoomHaveUnreadMessages(room) } - highlight={ room.getUnreadNotificationCount('highlight') > 0 || self.props.isInvite } - isInvite={ self.props.isInvite } - refreshSubList={ self._updateSubListCount } - incomingCall={ null } - onClick={ self.onRoomTileClick } - /> - ); - }); - }, - - _getHeaderJsx: function() { - var TintableSvg = sdk.getComponent("elements.TintableSvg"); - - var subListNotifications = this.roomNotificationCount(); - var subListNotifCount = subListNotifications[0]; - var subListNotifHighlight = subListNotifications[1]; - - var totalTiles = this.props.list.length + (this.props.extraTiles || []).length; - var roomCount = totalTiles > 0 ? totalTiles : ''; - - var chevronClasses = classNames({ - 'mx_RoomSubList_chevron': true, - 'mx_RoomSubList_chevronRight': this.state.hidden, - 'mx_RoomSubList_chevronDown': !this.state.hidden, - }); - - var badgeClasses = classNames({ - 'mx_RoomSubList_badge': true, - 'mx_RoomSubList_badgeHighlight': subListNotifHighlight, - }); - - var badge; - if (subListNotifCount > 0) { - badge = <div className={badgeClasses}>{ FormattingUtils.formatCount(subListNotifCount) }</div>; - } else if (this.props.isInvite) { - // no notifications but highlight anyway because this is an invite badge - badge = <div className={badgeClasses}>!</div>; - } - - // When collapsed, allow a long hover on the header to show user - // the full tag name and room count - var title; - if (this.props.collapsed) { - title = this.props.label; - if (roomCount !== '') { - title += " [" + roomCount + "]"; - } - } - - var incomingCall; - if (this.props.incomingCall) { - var self = this; - // Check if the incoming call is for this section - var incomingCallRoom = this.props.list.filter(function(room) { - return self.props.incomingCall.roomId === room.roomId; - }); - - if (incomingCallRoom.length === 1) { - var IncomingCallBox = sdk.getComponent("voip.IncomingCallBox"); - incomingCall = <IncomingCallBox className="mx_RoomSubList_incomingCall" incomingCall={ this.props.incomingCall }/>; - } - } - - var tabindex = this.props.searchFilter === "" ? "0" : "-1"; - - return ( - <div className="mx_RoomSubList_labelContainer" title={ title } ref="header"> - <AccessibleButton onClick={ this.onClick } className="mx_RoomSubList_label" tabIndex={tabindex}> - { this.props.collapsed ? '' : this.props.label } - <div className="mx_RoomSubList_roomCount">{ roomCount }</div> - <div className={chevronClasses}></div> - { badge } - { incomingCall } - </AccessibleButton> - </div> - ); - }, - - _createOverflowTile: function(overflowCount, totalCount) { - var content = <div className="mx_RoomSubList_chevronDown"></div>; - - var overflowNotifications = this.roomNotificationCount(TRUNCATE_AT); - var overflowNotifCount = overflowNotifications[0]; - var overflowNotifHighlight = overflowNotifications[1]; - if (overflowNotifCount && !this.props.collapsed) { - content = FormattingUtils.formatCount(overflowNotifCount); - } - - var badgeClasses = classNames({ - 'mx_RoomSubList_moreBadge': true, - 'mx_RoomSubList_moreBadgeNotify': overflowNotifCount && !this.props.collapsed, - 'mx_RoomSubList_moreBadgeHighlight': overflowNotifHighlight && !this.props.collapsed, - }); - - return ( - <AccessibleButton className="mx_RoomSubList_ellipsis" onClick={this._showFullMemberList}> - <div className="mx_RoomSubList_line"></div> - <div className="mx_RoomSubList_more">{ _t("more") }</div> - <div className={ badgeClasses }>{ content }</div> - </AccessibleButton> - ); - }, - - _showFullMemberList: function() { - this.setState({ - truncateAt: -1 - }); - - this.props.onShowMoreRooms(); - this.props.onHeaderClick(false); - }, - - render: function() { - var connectDropTarget = this.props.connectDropTarget; - var TruncatedList = sdk.getComponent('elements.TruncatedList'); - - var label = this.props.collapsed ? null : this.props.label; - - let content; - if (this.state.sortedList.length === 0 && !this.props.searchFilter && this.props.extraTiles.length === 0) { - content = this.props.emptyContent; - } else { - content = this.makeRoomTiles(); - content.push(...this.props.extraTiles); - } - - if (this.state.sortedList.length > 0 || this.props.extraTiles.length > 0 || this.props.editable) { - var subList; - var classes = "mx_RoomSubList"; - - if (!this.state.hidden) { - subList = <TruncatedList className={ classes } truncateAt={this.state.truncateAt} - createOverflowElement={this._createOverflowTile} > - { content } - </TruncatedList>; - } - else { - subList = <TruncatedList className={ classes }> - </TruncatedList>; - } - - const subListContent = <div> - { this._getHeaderJsx() } - { subList } - </div>; - - return this.props.editable ? - <Droppable - droppableId={"room-sub-list-droppable_" + this.props.tagName} - type="draggable-RoomTile" - > - { (provided, snapshot) => ( - <div ref={provided.innerRef}> - { subListContent } - </div> - ) } - </Droppable> : subListContent; - } - else { - var Loader = sdk.getComponent("elements.Spinner"); - return ( - <div className="mx_RoomSubList"> - { this.props.alwaysShowHeader ? this._getHeaderJsx() : undefined } - { (this.props.showSpinner && !this.state.hidden) ? <Loader /> : undefined } - </div> - ); - } - } -}); - -module.exports = RoomSubList; diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js deleted file mode 100644 index 2d6e6ae0..00000000 --- a/src/components/structures/SearchBox.js +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import { KeyCode } from 'matrix-react-sdk/lib/Keyboard'; -import sdk from 'matrix-react-sdk'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc'; -import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; - -module.exports = React.createClass({ - displayName: 'SearchBox', - - propTypes: { - collapsed: React.PropTypes.bool, - onSearch: React.PropTypes.func, - }, - - getInitialState: function() { - return { - searchTerm: "", - }; - }, - - componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); - }, - - componentWillUnmount: function() { - dis.unregister(this.dispatcherRef); - }, - - onAction: function(payload) { - switch (payload.action) { - case 'view_room': - if (this.refs.search && payload.clear_search) { - this._clearSearch(); - } - break; - case 'focus_room_filter': - if (this.refs.search) { - this.refs.search.focus(); - this.refs.search.select(); - } - break; - } - }, - - onChange: function() { - if (!this.refs.search) return; - this.setState({ searchTerm: this.refs.search.value }); - this.onSearch(); - }, - - onSearch: new rate_limited_func( - function() { - this.props.onSearch(this.refs.search.value); - }, - 100 - ), - - onToggleCollapse: function(show) { - if (show) { - dis.dispatch({ - action: 'show_left_panel', - }); - } - else { - dis.dispatch({ - action: 'hide_left_panel', - }); - } - }, - - _onKeyDown: function(ev) { - switch (ev.keyCode) { - case KeyCode.ESCAPE: - this._clearSearch(); - dis.dispatch({action: 'focus_composer'}); - break; - } - }, - - _clearSearch: function() { - this.refs.search.value = ""; - this.onChange(); - }, - - render: function() { - var TintableSvg = sdk.getComponent('elements.TintableSvg'); - - var collapseTabIndex = this.refs.search && this.refs.search.value !== "" ? "-1" : "0"; - - var toggleCollapse; - if (this.props.collapsed) { - toggleCollapse = - <AccessibleButton className="mx_SearchBox_maximise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, true) }> - <TintableSvg src="img/maximise.svg" width="10" height="16" alt={ _t("Expand panel") }/> - </AccessibleButton> - } - else { - toggleCollapse = - <AccessibleButton className="mx_SearchBox_minimise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, false) }> - <TintableSvg src="img/minimise.svg" width="10" height="16" alt={ _t("Collapse panel") }/> - </AccessibleButton> - } - - var searchControls; - if (!this.props.collapsed) { - searchControls = [ - this.state.searchTerm.length > 0 ? - <AccessibleButton key="button" - className="mx_SearchBox_closeButton" - onClick={ ()=>{ this._clearSearch(); } }> - <TintableSvg - className="mx_SearchBox_searchButton" - src="img/icons-close.svg" width="24" height="24" - /> - </AccessibleButton> - : - <TintableSvg - key="button" - className="mx_SearchBox_searchButton" - src="img/icons-search-copy.svg" width="13" height="13" - />, - <input - key="searchfield" - type="text" - ref="search" - className="mx_SearchBox_search" - value={ this.state.searchTerm } - onChange={ this.onChange } - onKeyDown={ this._onKeyDown } - placeholder={ _t('Filter room names') } - /> - ]; - } - - var self = this; - return ( - <div className="mx_SearchBox"> - { searchControls } - { toggleCollapse } - </div> - ); - } -}); diff --git a/src/components/structures/VectorEmbeddedPage.js b/src/components/structures/VectorEmbeddedPage.js new file mode 100644 index 00000000..ab093135 --- /dev/null +++ b/src/components/structures/VectorEmbeddedPage.js @@ -0,0 +1,35 @@ +/* +Copyright 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd +Copyright 2019 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +import EmbeddedPage from 'matrix-react-sdk/lib/components/structures/EmbeddedPage'; +import sanitizeHtml from 'sanitize-html'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; + +export default class VectorEmbeddedPage extends EmbeddedPage { + static replaces = 'EmbeddedPage'; + + // we're overriding the base component here, for Riot-specific tweaks + translate(s) { + s = sanitizeHtml(_t(s)); + // ugly fix for https://github.com/vector-im/riot-web/issues/4243 + s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>'); + return s; + } +} diff --git a/src/components/structures/ViewSource.js b/src/components/structures/ViewSource.js deleted file mode 100644 index 3a5d35a5..00000000 --- a/src/components/structures/ViewSource.js +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import PropTypes from 'prop-types'; -import SyntaxHighlight from '../views/elements/SyntaxHighlight'; - - -module.exports = React.createClass({ - displayName: 'ViewSource', - - propTypes: { - content: PropTypes.object.isRequired, - onFinished: PropTypes.func.isRequired, - }, - - componentDidMount: function() { - document.addEventListener("keydown", this.onKeyDown); - }, - - componentWillUnmount: function() { - document.removeEventListener("keydown", this.onKeyDown); - }, - - onKeyDown: function(ev) { - if (ev.keyCode == 27) { // escape - ev.stopPropagation(); - ev.preventDefault(); - this.props.onFinished(); - } - }, - - render: function() { - return ( - <div className="mx_ViewSource"> - <SyntaxHighlight className="json"> - { JSON.stringify(this.props.content, null, 2) } - </SyntaxHighlight> - </div> - ); - } -}); diff --git a/src/components/views/auth/VectorAuthFooter.js b/src/components/views/auth/VectorAuthFooter.js new file mode 100644 index 00000000..a5f27350 --- /dev/null +++ b/src/components/views/auth/VectorAuthFooter.js @@ -0,0 +1,53 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2019 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from 'react'; +import SdkConfig from 'matrix-react-sdk/lib/SdkConfig'; + +import { _t } from 'matrix-react-sdk/lib/languageHandler'; + +module.exports = () => { + const brandingConfig = SdkConfig.get().branding; + let links = [ + {"text": "blog", "url": "https://medium.com/@RiotChat"}, + {"text": "twitter", "url": "https://twitter.com/@RiotChat"}, + {"text": "github", "url": "https://github.com/vector-im/riot-web"}, + ]; + + if (brandingConfig && brandingConfig.authFooterLinks) { + links = brandingConfig.authFooterLinks; + } + + const authFooterLinks = []; + for (const linkEntry of links) { + authFooterLinks.push( + <a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noopener"> + {linkEntry.text} + </a>, + ); + } + + return ( + <div className="mx_AuthFooter"> + {authFooterLinks} + <a href="https://matrix.org" target="_blank" rel="noopener">{ _t('powered by Matrix') }</a> + </div> + ); +}; +module.exports.statics = { + replaces: 'AuthFooter', +}; diff --git a/src/components/views/login/VectorLoginHeader.js b/src/components/views/auth/VectorAuthHeaderLogo.js similarity index 54% rename from src/components/views/login/VectorLoginHeader.js rename to src/components/views/auth/VectorAuthHeaderLogo.js index 71093a96..0161fc3f 100644 --- a/src/components/views/login/VectorLoginHeader.js +++ b/src/components/views/auth/VectorAuthHeaderLogo.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2019 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -18,26 +19,26 @@ limitations under the License. import React from 'react'; import PropTypes from 'prop-types'; +import SdkConfig from 'matrix-react-sdk/lib/SdkConfig'; -const i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)]; -const DEFAULT_LOGO_URI = "img/logos/riot-im-logo-" + i + ".svg"; +export default class VectorAuthHeaderLogo extends React.PureComponent { + static replaces = 'AuthHeaderLogo' -module.exports = React.createClass({ - displayName: 'VectorLoginHeader', - statics: { - replaces: 'LoginHeader', - }, - propTypes: { + static propTypes = { icon: PropTypes.string, - }, + } + + render() { + const brandingConfig = SdkConfig.get().branding; + let logoUrl = "themes/riot/img/logos/riot-im-logo-black-text.svg"; + if (brandingConfig && brandingConfig.authHeaderLogoUrl) { + logoUrl = brandingConfig.authHeaderLogoUrl; + } - render: function() { return ( - <div className="mx_Login_header"> - <div className="mx_Login_logo"> - <img src={this.props.icon || DEFAULT_LOGO_URI} alt="Riot"/> - </div> + <div className="mx_AuthHeaderLogo"> + <img src={logoUrl} alt="Riot" /> </div> ); } -}); +} diff --git a/src/components/views/auth/VectorAuthPage.js b/src/components/views/auth/VectorAuthPage.js new file mode 100644 index 00000000..bae685b9 --- /dev/null +++ b/src/components/views/auth/VectorAuthPage.js @@ -0,0 +1,73 @@ +/* +Copyright 2019 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +import React from 'react'; +import sdk from 'matrix-react-sdk/lib/index'; +import SdkConfig from 'matrix-react-sdk/lib/SdkConfig'; + +export default class VectorAuthPage extends React.PureComponent { + static replaces = 'AuthPage' + + render() { + const AuthFooter = sdk.getComponent('auth.AuthFooter'); + + const brandingConfig = SdkConfig.get().branding; + let backgroundUrl = "themes/riot/img/backgrounds/valley.jpg"; + if (brandingConfig && brandingConfig.welcomeBackgroundUrl) { + backgroundUrl = brandingConfig.welcomeBackgroundUrl; + } + + const pageStyle = { + background: `center/cover fixed url(${backgroundUrl})`, + }; + + const modalStyle = { + position: 'relative', + background: 'initial', + }; + + const blurStyle = { + position: 'absolute', + top: 0, + right: 0, + bottom: 0, + left: 0, + filter: 'blur(10px)', + background: pageStyle.background, + }; + + const modalContentStyle = { + display: 'flex', + zIndex: 1, + background: 'rgba(255, 255, 255, 0.59)', + borderRadius: '4px', + }; + + return ( + <div className="mx_AuthPage" style={pageStyle}> + <div className="mx_AuthPage_modal" style={modalStyle}> + <div className="mx_AuthPage_modalBlur" style={blurStyle}></div> + <div className="mx_AuthPage_modalContent" style={modalContentStyle}> + { this.props.children } + </div> + </div> + <AuthFooter /> + </div> + ); + } +} diff --git a/src/components/views/auth/VectorCustomServerDialog.js b/src/components/views/auth/VectorCustomServerDialog.js new file mode 100644 index 00000000..5dc3c271 --- /dev/null +++ b/src/components/views/auth/VectorCustomServerDialog.js @@ -0,0 +1,54 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from "react"; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; + +/** + * This is identical to `CustomServerDialog` except for replacing "this app" + * with "Riot". + */ +module.exports = ({onFinished}) => { + return ( + <div className="mx_ErrorDialog"> + <div className="mx_Dialog_title"> + { _t('Custom Server Options') } + </div> + <div className="mx_Dialog_content"> + <p>{_t( + "You can use the custom server options to sign into other " + + "Matrix servers by specifying a different homeserver URL. This " + + "allows you to use Riot with an existing Matrix account on a " + + "different homeserver.", + )}</p> + <p>{_t( + "You can also set a custom identity server, but you won't be " + + "able to invite users by email address, or be invited by email " + + "address yourself.", + )}</p> + </div> + <div className="mx_Dialog_buttons"> + <button onClick={onFinished} autoFocus={true}> + { _t('Dismiss') } + </button> + </div> + </div> + ); +}; +module.exports.statics = { + replaces: 'CustomServerDialog', +}; diff --git a/src/components/views/context_menus/GenericTextContextMenu.js b/src/components/views/context_menus/GenericTextContextMenu.js deleted file mode 100644 index 2319fe05..00000000 --- a/src/components/views/context_menus/GenericTextContextMenu.js +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import PropTypes from 'prop-types'; - -export default class GenericTextContextMenu extends React.Component { - static PropTypes = { - message: PropTypes.string.isRequired, - }; - - render() { - return <div>{ this.props.message }</div>; - } -} diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js deleted file mode 100644 index 11f14f36..00000000 --- a/src/components/views/context_menus/MessageContextMenu.js +++ /dev/null @@ -1,326 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2018 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; - -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import sdk from 'matrix-react-sdk'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import Modal from 'matrix-react-sdk/lib/Modal'; -import Resend from "matrix-react-sdk/lib/Resend"; -import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; -import {makeEventPermalink} from 'matrix-react-sdk/lib/matrix-to'; -import { isUrlPermitted } from 'matrix-react-sdk/lib/HtmlUtils'; - -module.exports = React.createClass({ - displayName: 'MessageContextMenu', - - propTypes: { - /* the MatrixEvent associated with the context menu */ - mxEvent: React.PropTypes.object.isRequired, - - /* an optional EventTileOps implementation that can be used to unhide preview widgets */ - eventTileOps: React.PropTypes.object, - - /* callback called when the menu is dismissed */ - onFinished: React.PropTypes.func, - }, - - getInitialState: function() { - return { - canRedact: false, - canPin: false, - }; - }, - - componentWillMount: function() { - MatrixClientPeg.get().on('RoomMember.powerLevel', this._checkPermissions); - this._checkPermissions(); - }, - - componentWillUnmount: function() { - const cli = MatrixClientPeg.get(); - if (cli) { - cli.removeListener('RoomMember.powerLevel', this._checkPermissions); - } - }, - - _checkPermissions: function() { - const cli = MatrixClientPeg.get(); - const room = cli.getRoom(this.props.mxEvent.getRoomId()); - - const canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId); - let canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli); - - // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality - if (!SettingsStore.isFeatureEnabled("feature_pinning")) canPin = false; - - this.setState({canRedact, canPin}); - }, - - _isPinned: function() { - const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); - const pinnedEvent = room.currentState.getStateEvents('m.room.pinned_events', ''); - if (!pinnedEvent) return false; - return pinnedEvent.getContent().pinned.includes(this.props.mxEvent.getId()); - }, - - onResendClick: function() { - Resend.resend(this.props.mxEvent); - this.closeMenu(); - }, - - onViewSourceClick: function() { - const ViewSource = sdk.getComponent('structures.ViewSource'); - Modal.createTrackedDialog('View Event Source', '', ViewSource, { - content: this.props.mxEvent.event, - }, 'mx_Dialog_viewsource'); - this.closeMenu(); - }, - - onViewClearSourceClick: function() { - const ViewSource = sdk.getComponent('structures.ViewSource'); - Modal.createTrackedDialog('View Clear Event Source', '', ViewSource, { - // FIXME: _clearEvent is private - content: this.props.mxEvent._clearEvent, - }, 'mx_Dialog_viewsource'); - this.closeMenu(); - }, - - onRedactClick: function() { - const ConfirmRedactDialog = sdk.getComponent("dialogs.ConfirmRedactDialog"); - Modal.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, { - onFinished: (proceed) => { - if (!proceed) return; - - const cli = MatrixClientPeg.get(); - cli.redactEvent(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId()).catch(function(e) { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - // display error message stating you couldn't delete this. - const code = e.errcode || e.statusCode; - Modal.createTrackedDialog('You cannot delete this message', '', ErrorDialog, { - title: _t('Error'), - description: _t('You cannot delete this message. (%(code)s)', {code}), - }); - }).done(); - }, - }, 'mx_Dialog_confirmredact'); - this.closeMenu(); - }, - - onCancelSendClick: function() { - Resend.removeFromQueue(this.props.mxEvent); - this.closeMenu(); - }, - - onForwardClick: function() { - dis.dispatch({ - action: 'forward_event', - event: this.props.mxEvent, - }); - this.closeMenu(); - }, - - onPinClick: function() { - MatrixClientPeg.get().getStateEvent(this.props.mxEvent.getRoomId(), 'm.room.pinned_events', '') - .catch((e) => { - // Intercept the Event Not Found error and fall through the promise chain with no event. - if (e.errcode === "M_NOT_FOUND") return null; - throw e; - }) - .then((event) => { - const eventIds = (event ? event.pinned : []) || []; - if (!eventIds.includes(this.props.mxEvent.getId())) { - // Not pinned - add - eventIds.push(this.props.mxEvent.getId()); - } else { - // Pinned - remove - eventIds.splice(eventIds.indexOf(this.props.mxEvent.getId()), 1); - } - - const cli = MatrixClientPeg.get(); - cli.sendStateEvent(this.props.mxEvent.getRoomId(), 'm.room.pinned_events', {pinned: eventIds}, ''); - }); - this.closeMenu(); - }, - - closeMenu: function() { - if (this.props.onFinished) this.props.onFinished(); - }, - - onUnhidePreviewClick: function() { - if (this.props.eventTileOps) { - this.props.eventTileOps.unhideWidget(); - } - this.closeMenu(); - }, - - onQuoteClick: function() { - dis.dispatch({ - action: 'quote', - text: this.props.eventTileOps.getInnerText(), - }); - this.closeMenu(); - }, - - onReplyClick: function() { - dis.dispatch({ - action: 'quote_event', - event: this.props.mxEvent, - }); - this.closeMenu(); - }, - - render: function() { - const eventStatus = this.props.mxEvent.status; - let resendButton; - let redactButton; - let cancelButton; - let forwardButton; - let pinButton; - let viewClearSourceButton; - let unhidePreviewButton; - let externalURLButton; - let quoteButton; - let replyButton; - - if (eventStatus === 'not_sent') { - resendButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onResendClick}> - { _t('Resend') } - </div> - ); - } - - if (!eventStatus && this.state.canRedact) { - redactButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onRedactClick}> - { _t('Remove') } - </div> - ); - } - - if (eventStatus === "queued" || eventStatus === "not_sent") { - cancelButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onCancelSendClick}> - { _t('Cancel Sending') } - </div> - ); - } - - if (!eventStatus && this.props.mxEvent.getType() === 'm.room.message') { - const content = this.props.mxEvent.getContent(); - if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) { - forwardButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onForwardClick}> - { _t('Forward Message') } - </div> - ); - - if (SettingsStore.isFeatureEnabled("feature_rich_quoting")) { - replyButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onReplyClick}> - { _t('Reply') } - </div> - ); - } - - if (this.state.canPin) { - pinButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onPinClick}> - { this._isPinned() ? _t('Unpin Message') : _t('Pin Message') } - </div> - ); - } - } - } - - const viewSourceButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onViewSourceClick}> - { _t('View Source') } - </div> - ); - - if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) { - viewClearSourceButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onViewClearSourceClick}> - { _t('View Decrypted Source') } - </div> - ); - } - - if (this.props.eventTileOps) { - if (this.props.eventTileOps.isWidgetHidden()) { - unhidePreviewButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onUnhidePreviewClick}> - { _t('Unhide Preview') } - </div> - ); - } - } - - // XXX: if we use room ID, we should also include a server where the event can be found (other than in the domain of the event ID) - const permalinkButton = ( - <div className="mx_MessageContextMenu_field"> - <a href={makeEventPermalink(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId())} - target="_blank" rel="noopener" onClick={this.closeMenu}>{ _t('Permalink') }</a> - </div> - ); - - if (this.props.eventTileOps && this.props.eventTileOps.getInnerText) { - quoteButton = ( - <div className="mx_MessageContextMenu_field" onClick={this.onQuoteClick}> - { _t('Quote') } - </div> - ); - } - - // Bridges can provide a 'external_url' to link back to the source. - if ( - typeof(this.props.mxEvent.event.content.external_url) === "string" && - isUrlPermitted(this.props.mxEvent.event.content.external_url) - ) { - externalURLButton = ( - <div className="mx_MessageContextMenu_field"> - <a href={this.props.mxEvent.event.content.external_url} - rel="noopener" target="_blank" onClick={this.closeMenu}>{ _t('Source URL') }</a> - </div> - ); - } - - - return ( - <div> - { resendButton } - { redactButton } - { cancelButton } - { forwardButton } - { pinButton } - { viewSourceButton } - { viewClearSourceButton } - { unhidePreviewButton } - { permalinkButton } - { quoteButton } - { replyButton } - { externalURLButton } - </div> - ); - }, -}); diff --git a/src/components/views/context_menus/PresenceContextMenu.js b/src/components/views/context_menus/PresenceContextMenu.js deleted file mode 100644 index 3a3dc2fa..00000000 --- a/src/components/views/context_menus/PresenceContextMenu.js +++ /dev/null @@ -1,101 +0,0 @@ -/* -Copyright 2017 Travis Ralston - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import { _t, _td } from 'matrix-react-sdk/lib/languageHandler'; -import sdk from 'matrix-react-sdk'; - -const STATUS_LABELS = { - "online": _td("Online"), - "unavailable": _td("Away"), - "offline": _td("Appear Offline"), -}; - -const PresenceContextMenuOption = React.createClass({ - displayName: 'PresenceContextMenuOption', - - propTypes: { - forStatus: React.PropTypes.string.isRequired, - isCurrent: React.PropTypes.bool, - onChange: React.PropTypes.func.isRequired, - }, - - onClick: function() { - if (this.isCurrent) return; - this.props.onChange(this.props.forStatus); - }, - - render: function() { - const AccessibleButton = sdk.getComponent("elements.AccessibleButton"); - - const indicatorClasses = "mx_PresenceContextMenuOption_indicator " - + "mx_PresenceContextMenuOption_indicator_" + this.props.forStatus; - - let classNames = "mx_PresenceContextMenuOption"; - if (this.props.isCurrent) classNames += " mx_PresenceContextMenuOption_current"; - - return ( - <AccessibleButton className={classNames} element="div" onClick={this.onClick}> - <div className={indicatorClasses}></div> - { _t(STATUS_LABELS[this.props.forStatus]) } - </AccessibleButton> - ); - }, -}); - -module.exports = React.createClass({ - displayName: 'PresenceContextMenu', - - propTypes: { - // "online", "unavailable", or "offline" - currentStatus: React.PropTypes.string.isRequired, - - // Called when the user wants to change their status. - // Args: (newStatus:string) - onChange: React.PropTypes.func.isRequired, - - // callback called when the menu is dismissed - onFinished: React.PropTypes.func, - }, - - getInitialState() { - return { - currentStatus: this.props.currentStatus, - }; - }, - - onChange: function(newStatus) { - this.props.onChange(newStatus); - this.setState({currentStatus: newStatus}); - }, - - render: function() { - const statusElements = []; - for (let status of Object.keys(STATUS_LABELS)) { - statusElements.push(( - <PresenceContextMenuOption forStatus={status} key={status} - onChange={this.onChange} - isCurrent={status === this.state.currentStatus} /> - )); - } - - return ( - <div> - { statusElements } - </div> - ); - }, -}); diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js deleted file mode 100644 index 06eb347d..00000000 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ /dev/null @@ -1,368 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import Promise from 'bluebird'; -import React from 'react'; -import classNames from 'classnames'; -import PropTypes from 'prop-types'; -import sdk from 'matrix-react-sdk'; -import { _t, _td } from 'matrix-react-sdk/lib/languageHandler'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import DMRoomMap from 'matrix-react-sdk/lib/utils/DMRoomMap'; -import * as Rooms from 'matrix-react-sdk/lib/Rooms'; -import * as RoomNotifs from 'matrix-react-sdk/lib/RoomNotifs'; -import Modal from 'matrix-react-sdk/lib/Modal'; -import RoomListActions from 'matrix-react-sdk/lib/actions/RoomListActions'; - -module.exports = React.createClass({ - displayName: 'RoomTileContextMenu', - - propTypes: { - room: PropTypes.object.isRequired, - /* callback called when the menu is dismissed */ - onFinished: PropTypes.func, - }, - - getInitialState() { - const dmRoomMap = new DMRoomMap(MatrixClientPeg.get()); - return { - roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId), - isFavourite: this.props.room.tags.hasOwnProperty("m.favourite"), - isLowPriority: this.props.room.tags.hasOwnProperty("m.lowpriority"), - isDirectMessage: Boolean(dmRoomMap.getUserIdForRoomId(this.props.room.roomId)), - }; - }, - - componentWillMount: function() { - this._unmounted = false; - }, - - componentWillUnmount: function() { - this._unmounted = true; - }, - - _toggleTag: function(tagNameOn, tagNameOff) { - if (!MatrixClientPeg.get().isGuest()) { - Promise.delay(500).then(() => { - dis.dispatch(RoomListActions.tagRoom( - MatrixClientPeg.get(), - this.props.room, - tagNameOff, tagNameOn, - undefined, 0, - ), true); - - this.props.onFinished(); - }); - } - }, - - _onClickFavourite: function() { - // Tag room as 'Favourite' - if (!this.state.isFavourite && this.state.isLowPriority) { - this.setState({ - isFavourite: true, - isLowPriority: false, - }); - this._toggleTag("m.favourite", "m.lowpriority"); - } else if (this.state.isFavourite) { - this.setState({isFavourite: false}); - this._toggleTag(null, "m.favourite"); - } else if (!this.state.isFavourite) { - this.setState({isFavourite: true}); - this._toggleTag("m.favourite"); - } - }, - - _onClickLowPriority: function() { - // Tag room as 'Low Priority' - if (!this.state.isLowPriority && this.state.isFavourite) { - this.setState({ - isFavourite: false, - isLowPriority: true, - }); - this._toggleTag("m.lowpriority", "m.favourite"); - } else if (this.state.isLowPriority) { - this.setState({isLowPriority: false}); - this._toggleTag(null, "m.lowpriority"); - } else if (!this.state.isLowPriority) { - this.setState({isLowPriority: true}); - this._toggleTag("m.lowpriority"); - } - }, - - _onClickDM: function() { - if (MatrixClientPeg.get().isGuest()) return; - - const newIsDirectMessage = !this.state.isDirectMessage; - this.setState({ - isDirectMessage: newIsDirectMessage, - }); - - Rooms.guessAndSetDMRoom( - this.props.room, newIsDirectMessage, - ).delay(500).finally(() => { - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, (err) => { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, { - title: _t('Failed to set Direct Message status of room'), - description: ((err && err.message) ? err.message : _t('Operation failed')), - }); - }); - }, - - _onClickLeave: function() { - // Leave room - dis.dispatch({ - action: 'leave_room', - room_id: this.props.room.roomId, - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _onClickReject: function() { - dis.dispatch({ - action: 'reject_invite', - room_id: this.props.room.roomId, - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _onClickForget: function() { - // FIXME: duplicated with RoomSettings (and dead code in RoomView) - MatrixClientPeg.get().forget(this.props.room.roomId).done(function() { - dis.dispatch({ action: 'view_next_room' }); - }, function(err) { - const errCode = err.errcode || _td("unknown error code"); - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, { - title: _t('Failed to forget room %(errCode)s', {errCode: errCode}), - description: ((err && err.message) ? err.message : _t('Operation failed')), - }); - }); - - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }, - - _saveNotifState: function(newState) { - if (MatrixClientPeg.get().isGuest()) return; - - const oldState = this.state.roomNotifState; - const roomId = this.props.room.roomId; - - this.setState({ - roomNotifState: newState, - }); - RoomNotifs.setRoomNotifsState(roomId, newState).done(() => { - // delay slightly so that the user can see their state change - // before closing the menu - return Promise.delay(500).then(() => { - if (this._unmounted) return; - // Close the context menu - if (this.props.onFinished) { - this.props.onFinished(); - } - }); - }, (error) => { - // TODO: some form of error notification to the user - // to inform them that their state change failed. - // For now we at least set the state back - if (this._unmounted) return; - this.setState({ - roomNotifState: oldState, - }); - }); - }, - - _onClickAlertMe: function() { - this._saveNotifState(RoomNotifs.ALL_MESSAGES_LOUD); - }, - - _onClickAllNotifs: function() { - this._saveNotifState(RoomNotifs.ALL_MESSAGES); - }, - - _onClickMentions: function() { - this._saveNotifState(RoomNotifs.MENTIONS_ONLY); - }, - - _onClickMute: function() { - this._saveNotifState(RoomNotifs.MUTE); - }, - - _renderNotifMenu: function() { - const alertMeClasses = classNames({ - 'mx_RoomTileContextMenu_notif_field': true, - 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES_LOUD, - }); - - const allNotifsClasses = classNames({ - 'mx_RoomTileContextMenu_notif_field': true, - 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES, - }); - - const mentionsClasses = classNames({ - 'mx_RoomTileContextMenu_notif_field': true, - 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MENTIONS_ONLY, - }); - - const muteNotifsClasses = classNames({ - 'mx_RoomTileContextMenu_notif_field': true, - 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MUTE, - }); - - return ( - <div> - <div className="mx_RoomTileContextMenu_notif_picker" > - <img src="img/notif-slider.svg" width="20" height="107" /> - </div> - <div className={alertMeClasses} onClick={this._onClickAlertMe} > - <img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-off-copy.svg" width="16" height="12" /> - { _t('All messages (noisy)') } - </div> - <div className={allNotifsClasses} onClick={this._onClickAllNotifs} > - <img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-off.svg" width="16" height="12" /> - { _t('All messages') } - </div> - <div className={mentionsClasses} onClick={this._onClickMentions} > - <img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute-mentions.svg" width="16" height="12" /> - { _t('Mentions only') } - </div> - <div className={muteNotifsClasses} onClick={this._onClickMute} > - <img className="mx_RoomTileContextMenu_notif_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_RoomTileContextMenu_notif_icon mx_filterFlipColor" src="img/icon-context-mute.svg" width="16" height="12" /> - { _t('Mute') } - </div> - </div> - ); - }, - - _renderLeaveMenu: function(membership) { - if (!membership) { - return null; - } - - let leaveClickHandler = null; - let leaveText = null; - - switch (membership) { - case "join": - leaveClickHandler = this._onClickLeave; - leaveText = _t('Leave'); - break; - case "leave": - case "ban": - leaveClickHandler = this._onClickForget; - leaveText = _t('Forget'); - break; - case "invite": - leaveClickHandler = this._onClickReject; - leaveText = _t('Reject'); - break; - } - - return ( - <div> - <div className="mx_RoomTileContextMenu_leave" onClick={leaveClickHandler} > - <img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_delete.svg" width="15" height="15" /> - { leaveText } - </div> - </div> - ); - }, - - _renderRoomTagMenu: function() { - const favouriteClasses = classNames({ - 'mx_RoomTileContextMenu_tag_field': true, - 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isFavourite, - 'mx_RoomTileContextMenu_tag_fieldDisabled': false, - }); - - const lowPriorityClasses = classNames({ - 'mx_RoomTileContextMenu_tag_field': true, - 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isLowPriority, - 'mx_RoomTileContextMenu_tag_fieldDisabled': false, - }); - - const dmClasses = classNames({ - 'mx_RoomTileContextMenu_tag_field': true, - 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isDirectMessage, - 'mx_RoomTileContextMenu_tag_fieldDisabled': false, - }); - - return ( - <div> - <div className={favouriteClasses} onClick={this._onClickFavourite} > - <img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_fave.svg" width="15" height="15" /> - <img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_fave_on.svg" width="15" height="15" /> - { _t('Favourite') } - </div> - <div className={lowPriorityClasses} onClick={this._onClickLowPriority} > - <img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_low.svg" width="15" height="15" /> - <img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_low_on.svg" width="15" height="15" /> - { _t('Low Priority') } - </div> - <div className={dmClasses} onClick={this._onClickDM} > - <img className="mx_RoomTileContextMenu_tag_icon" src="img/icon_context_person.svg" width="15" height="15" /> - <img className="mx_RoomTileContextMenu_tag_icon_set" src="img/icon_context_person_on.svg" width="15" height="15" /> - { _t('Direct Chat') } - </div> - </div> - ); - }, - - render: function() { - const myMember = this.props.room.getMember( - MatrixClientPeg.get().credentials.userId, - ); - - // Can't set notif level or tags on non-join rooms - if (myMember.membership !== 'join') { - return this._renderLeaveMenu(myMember.membership); - } - - return ( - <div> - { this._renderNotifMenu() } - <hr className="mx_RoomTileContextMenu_separator" /> - { this._renderLeaveMenu(myMember.membership) } - <hr className="mx_RoomTileContextMenu_separator" /> - { this._renderRoomTagMenu() } - </div> - ); - }, -}); diff --git a/src/components/views/context_menus/TagTileContextMenu.js b/src/components/views/context_menus/TagTileContextMenu.js deleted file mode 100644 index 4ec6c515..00000000 --- a/src/components/views/context_menus/TagTileContextMenu.js +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2018 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import TagOrderActions from 'matrix-react-sdk/lib/actions/TagOrderActions'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; - -export default class TagTileContextMenu extends React.Component { - static propTypes = { - tag: PropTypes.string.isRequired, - /* callback called when the menu is dismissed */ - onFinished: PropTypes.func.isRequired, - }; - - constructor() { - super(); - - this._onViewCommunityClick = this._onViewCommunityClick.bind(this); - this._onRemoveClick = this._onRemoveClick.bind(this); - } - - _onViewCommunityClick() { - dis.dispatch({ - action: 'view_group', - group_id: this.props.tag, - }); - this.props.onFinished(); - } - - _onRemoveClick() { - dis.dispatch(TagOrderActions.removeTag( - // XXX: Context menus don't have a MatrixClient context - MatrixClientPeg.get(), - this.props.tag, - )); - this.props.onFinished(); - } - - render() { - return <div> - <div className="mx_TagTileContextMenu_item" onClick={this._onViewCommunityClick} > - <img className="mx_TagTileContextMenu_item_icon" src="img/icons-groups.svg" width="15" height="15" /> - { _t('View Community') } - </div> - <hr className="mx_TagTileContextMenu_separator" /> - <div className="mx_TagTileContextMenu_item" onClick={this._onRemoveClick} > - <img className="mx_TagTileContextMenu_item_icon" src="img/icon_context_delete.svg" width="15" height="15" /> - { _t('Remove') } - </div> - </div>; - } -} diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js deleted file mode 100644 index 849d32f8..00000000 --- a/src/components/views/dialogs/BugReportDialog.js +++ /dev/null @@ -1,176 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import sdk from 'matrix-react-sdk'; -import SdkConfig from 'matrix-react-sdk/lib/SdkConfig'; -import Modal from 'matrix-react-sdk/lib/Modal'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -export default class BugReportDialog extends React.Component { - constructor(props, context) { - super(props, context); - this.state = { - sendLogs: true, - busy: false, - err: null, - text: "", - progress: null, - }; - this._unmounted = false; - this._onSubmit = this._onSubmit.bind(this); - this._onCancel = this._onCancel.bind(this); - this._onTextChange = this._onTextChange.bind(this); - this._onSendLogsChange = this._onSendLogsChange.bind(this); - this._sendProgressCallback = this._sendProgressCallback.bind(this); - } - - componentWillUnmount() { - this._unmounted = true; - } - - _onCancel(ev) { - this.props.onFinished(false); - } - - _onSubmit(ev) { - const sendLogs = this.state.sendLogs; - const userText = this.state.text; - if (!sendLogs && userText.trim().length === 0) { - this.setState({ - err: _t("Please describe the bug and/or send logs."), - }); - return; - } - this.setState({ busy: true, progress: null, err: null }); - this._sendProgressCallback(_t("Loading bug report module")); - - require(['../../../vector/submit-rageshake'], (s) => { - s(SdkConfig.get().bug_report_endpoint_url, { - userText: userText, - sendLogs: sendLogs, - progressCallback: this._sendProgressCallback, - }).then(() => { - if (!this._unmounted) { - this.props.onFinished(false); - const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - Modal.createTrackedDialog('Bug report sent', '', QuestionDialog, { - title: _t('Bug report sent'), - description: _t('Thank you!'), - hasCancelButton: false, - }); - } - }, (err) => { - if (!this._unmounted) { - this.setState({ - busy: false, - progress: null, - err: _t("Failed to send report: ") + `${err.message}`, - }); - } - }); - }); - } - - _onTextChange(ev) { - this.setState({ text: ev.target.value }); - } - - _onSendLogsChange(ev) { - this.setState({ sendLogs: ev.target.checked }); - } - - _sendProgressCallback(progress) { - if (this._unmounted) { - return; - } - this.setState({progress: progress}); - } - - render() { - const Loader = sdk.getComponent("elements.Spinner"); - - let error = null; - if (this.state.err) { - error = <div className="error"> - {this.state.err} - </div>; - } - - let cancelButton = null; - if (!this.state.busy) { - cancelButton = <button onClick={this._onCancel}> - { _t("Cancel") } - </button>; - } - - let progress = null; - if (this.state.busy) { - progress = ( - <div className="progress"> - <Loader /> - {this.state.progress} ... - </div> - ); - } - - return ( - <div className="mx_BugReportDialog"> - <div className="mx_Dialog_title"> - { _t("Report a bug") } - </div> - <div className="mx_Dialog_content"> - <p> - { _t("Please describe the bug. What did you do? What did you expect to happen? What actually happened?") } - </p> - <textarea - className="mx_BugReportDialog_input" - rows={5} - onChange={this._onTextChange} - value={this.state.text} - placeholder={_t("Describe your problem here.")} - /> - <p> - { _t("In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:") } - </p> - <input type="checkbox" checked={this.state.sendLogs} - onChange={this._onSendLogsChange} id="mx_BugReportDialog_logs"/> - <label htmlFor="mx_BugReportDialog_logs"> - { _t("Send logs") } - </label> - {progress} - {error} - </div> - <div className="mx_Dialog_buttons"> - <button - className="mx_Dialog_primary danger" - onClick={this._onSubmit} - autoFocus={true} - disabled={this.state.busy} - > - { _t("Send") } - </button> - - {cancelButton} - </div> - </div> - ); - } -} - -BugReportDialog.propTypes = { - onFinished: React.PropTypes.func.isRequired, -}; diff --git a/src/components/views/dialogs/ChangelogDialog.js b/src/components/views/dialogs/ChangelogDialog.js deleted file mode 100644 index c42833d7..00000000 --- a/src/components/views/dialogs/ChangelogDialog.js +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright 2016 Aviral Dasgupta - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -import React from 'react'; -import sdk from 'matrix-react-sdk'; -import request from 'browser-request'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -const REPOS = ['vector-im/vector-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk']; - -export default class ChangelogDialog extends React.Component { - constructor(props) { - super(props); - - this.state = {}; - } - - componentDidMount() { - const version = this.props.newVersion.split('-'); - const version2 = this.props.version.split('-'); - if(version == null || version2 == null) return; - // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version] - for(let i=0; i<REPOS.length; i++) { - const oldVersion = version2[2*i]; - const newVersion = version[2*i]; - request(`https://api.github.com/repos/${REPOS[i]}/compare/${oldVersion}...${newVersion}`, (a, b, body) => { - if(body == null) return; - this.setState({[REPOS[i]]: JSON.parse(body).commits}); - }); - } - } - - _elementsForCommit(commit) { - return ( - <li key={commit.sha} className="mx_ChangelogDialog_li"> - <a href={commit.html_url} target="_blank" rel="noopener"> - {commit.commit.message} - </a> - </li> - ); - } - - render() { - const Spinner = sdk.getComponent('views.elements.Spinner'); - const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog'); - - const logs = REPOS.map(repo => { - if (this.state[repo] == null) return <Spinner key={repo} />; - return ( - <div key={repo}> - <h2>{repo}</h2> - <ul> - {this.state[repo].map(this._elementsForCommit)} - </ul> - </div> - ) - }); - - const content = ( - <div className="mx_ChangelogDialog_content"> - {this.props.version == null || this.props.newVersion == null ? <h2>{_t("Unavailable")}</h2> : logs} - </div> - ); - - - return ( - <QuestionDialog - title={_t("Changelog")} - description={content} - button={_t("Update")} - onFinished={this.props.onFinished} - /> - ) - } -} - -ChangelogDialog.propTypes = { - version: React.PropTypes.string.isRequired, - newVersion: React.PropTypes.string.isRequired, - onFinished: React.PropTypes.func.isRequired, -}; diff --git a/src/components/views/dialogs/DevtoolsDialog.js b/src/components/views/dialogs/DevtoolsDialog.js deleted file mode 100644 index 3ce1dfe7..00000000 --- a/src/components/views/dialogs/DevtoolsDialog.js +++ /dev/null @@ -1,623 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import sdk from 'matrix-react-sdk'; -import SyntaxHighlight from '../elements/SyntaxHighlight'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; - -class DevtoolsComponent extends React.Component { - static contextTypes = { - roomId: PropTypes.string.isRequired, - }; -} - -class GenericEditor extends DevtoolsComponent { - // static propTypes = {onBack: PropTypes.func.isRequired}; - - constructor(props, context) { - super(props, context); - this._onChange = this._onChange.bind(this); - this.onBack = this.onBack.bind(this); - } - - onBack() { - if (this.state.message) { - this.setState({ message: null }); - } else { - this.props.onBack(); - } - } - - _onChange(e) { - this.setState({[e.target.id]: e.target.type === 'checkbox' ? e.target.checked : e.target.value}); - } - - _buttons() { - return <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - { !this.state.message && <button onClick={this._send}>{ _t('Send') }</button> } - </div>; - } - - textInput(id, label) { - return <div className="mx_DevTools_inputRow"> - <div className="mx_DevTools_inputLabelCell"> - <label htmlFor={id}>{ label }</label> - </div> - <div className="mx_DevTools_inputCell"> - <input id={id} className="mx_TextInputDialog_input" onChange={this._onChange} value={this.state[id]} size="32" /> - </div> - </div>; - } -} - -class SendCustomEvent extends GenericEditor { - static getLabel() { return _t('Send Custom Event'); } - - static propTypes = { - onBack: PropTypes.func.isRequired, - forceStateEvent: PropTypes.bool, - inputs: PropTypes.object, - }; - - constructor(props, context) { - super(props, context); - this._send = this._send.bind(this); - - const {eventType, stateKey, evContent} = Object.assign({ - eventType: '', - stateKey: '', - evContent: '{\n\n}', - }, this.props.inputs); - - this.state = { - isStateEvent: Boolean(this.props.forceStateEvent), - - eventType, - stateKey, - evContent, - }; - } - - send(content) { - const cli = MatrixClientPeg.get(); - if (this.state.isStateEvent) { - return cli.sendStateEvent(this.context.roomId, this.state.eventType, content, this.state.stateKey); - } else { - return cli.sendEvent(this.context.roomId, this.state.eventType, content); - } - } - - async _send() { - if (this.state.eventType === '') { - this.setState({ message: _t('You must specify an event type!') }); - return; - } - - let message; - try { - const content = JSON.parse(this.state.evContent); - await this.send(content); - message = _t('Event sent!'); - } catch (e) { - message = _t('Failed to send custom event.') + ' (' + e.toString() + ')'; - } - this.setState({ message }); - } - - render() { - if (this.state.message) { - return <div> - <div className="mx_Dialog_content"> - { this.state.message } - </div> - { this._buttons() } - </div>; - } - - return <div> - <div className="mx_Dialog_content"> - { this.textInput('eventType', _t('Event Type')) } - { this.state.isStateEvent && this.textInput('stateKey', _t('State Key')) } - - <br /> - - <div className="mx_UserSettings_profileLabelCell"> - <label htmlFor="evContent"> { _t('Event Content') } </label> - </div> - <div> - <textarea id="evContent" onChange={this._onChange} value={this.state.evContent} className="mx_TextInputDialog_input" cols="63" rows="5" /> - </div> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - { !this.state.message && <button onClick={this._send}>{ _t('Send') }</button> } - { !this.state.message && !this.props.forceStateEvent && <div style={{float: "right"}}> - <input id="isStateEvent" className="mx_DevTools_tgl mx_DevTools_tgl-flip" type="checkbox" onChange={this._onChange} checked={this.state.isStateEvent} /> - <label className="mx_DevTools_tgl-btn" data-tg-off="Event" data-tg-on="State Event" htmlFor="isStateEvent" /> - </div> } - </div> - </div>; - } -} - -class SendAccountData extends GenericEditor { - static getLabel() { return _t('Send Account Data'); } - - static propTypes = { - isRoomAccountData: PropTypes.bool, - forceMode: PropTypes.bool, - inputs: PropTypes.object, - }; - - constructor(props, context) { - super(props, context); - this._send = this._send.bind(this); - - const {eventType, evContent} = Object.assign({ - eventType: '', - evContent: '{\n\n}', - }, this.props.inputs); - - this.state = { - isRoomAccountData: Boolean(this.props.isRoomAccountData), - - eventType, - evContent, - }; - } - - send(content) { - const cli = MatrixClientPeg.get(); - if (this.state.isRoomAccountData) { - return cli.setRoomAccountData(this.context.roomId, this.state.eventType, content); - } - return cli.setAccountData(this.state.eventType, content); - } - - async _send() { - if (this.state.eventType === '') { - this.setState({ message: _t('You must specify an event type!') }); - return; - } - - let message; - try { - const content = JSON.parse(this.state.evContent); - await this.send(content); - message = _t('Event sent!'); - } catch (e) { - message = _t('Failed to send custom event.') + ' (' + e.toString() + ')'; - } - this.setState({ message }); - } - - render() { - if (this.state.message) { - return <div> - <div className="mx_Dialog_content"> - { this.state.message } - </div> - { this._buttons() } - </div>; - } - - return <div> - <div className="mx_Dialog_content"> - { this.textInput('eventType', _t('Event Type')) } - <br /> - - <div className="mx_UserSettings_profileLabelCell"> - <label htmlFor="evContent"> { _t('Event Content') } </label> - </div> - <div> - <textarea id="evContent" onChange={this._onChange} value={this.state.evContent} className="mx_TextInputDialog_input" cols="63" rows="5" /> - </div> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - { !this.state.message && <button onClick={this._send}>{ _t('Send') }</button> } - { !this.state.message && <div style={{float: "right"}}> - <input id="isRoomAccountData" className="mx_DevTools_tgl mx_DevTools_tgl-flip" type="checkbox" onChange={this._onChange} checked={this.state.isRoomAccountData} disabled={this.props.forceMode} /> - <label className="mx_DevTools_tgl-btn" data-tg-off="Account Data" data-tg-on="Room Data" htmlFor="isRoomAccountData" /> - </div> } - </div> - </div>; - } -} - -class FilteredList extends React.Component { - static propTypes = { - children: PropTypes.any, - query: PropTypes.string, - onChange: PropTypes.func, - }; - - constructor(props, context) { - super(props, context); - this.onQuery = this.onQuery.bind(this); - } - - onQuery(ev) { - if (this.props.onChange) this.props.onChange(ev.target.value); - } - - filterChildren() { - if (this.props.query) { - const lowerQuery = this.props.query.toLowerCase(); - return this.props.children.filter((child) => child.key.toLowerCase().includes(lowerQuery)); - } - return this.props.children; - } - - render() { - return <div> - <input size="64" - onChange={this.onQuery} - value={this.props.query} - placeholder={_t('Filter results')} - className="mx_TextInputDialog_input mx_DevTools_RoomStateExplorer_query" /> - { this.filterChildren() } - </div>; - } -} - -class RoomStateExplorer extends DevtoolsComponent { - static getLabel() { return _t('Explore Room State'); } - - - static propTypes = { - onBack: PropTypes.func.isRequired, - }; - - constructor(props, context) { - super(props, context); - - const room = MatrixClientPeg.get().getRoom(this.context.roomId); - this.roomStateEvents = room.currentState.events; - - this.onBack = this.onBack.bind(this); - this.editEv = this.editEv.bind(this); - this.onQueryEventType = this.onQueryEventType.bind(this); - this.onQueryStateKey = this.onQueryStateKey.bind(this); - - this.state = { - eventType: null, - event: null, - editing: false, - - queryEventType: '', - queryStateKey: '', - }; - } - - browseEventType(eventType) { - return () => { - this.setState({ eventType }); - }; - } - - onViewSourceClick(event) { - return () => { - this.setState({ event }); - }; - } - - onBack() { - if (this.state.editing) { - this.setState({ editing: false }); - } else if (this.state.event) { - this.setState({ event: null }); - } else if (this.state.eventType) { - this.setState({ eventType: null }); - } else { - this.props.onBack(); - } - } - - editEv() { - this.setState({ editing: true }); - } - - onQueryEventType(filterEventType) { - this.setState({ queryEventType: filterEventType }); - } - - onQueryStateKey(filterStateKey) { - this.setState({ queryStateKey: filterStateKey }); - } - - render() { - if (this.state.event) { - if (this.state.editing) { - return <SendCustomEvent forceStateEvent={true} onBack={this.onBack} inputs={{ - eventType: this.state.event.getType(), - evContent: JSON.stringify(this.state.event.getContent(), null, '\t'), - stateKey: this.state.event.getStateKey(), - }} />; - } - - return <div className="mx_ViewSource"> - <div className="mx_Dialog_content"> - <SyntaxHighlight className="json"> - { JSON.stringify(this.state.event.event, null, 2) } - </SyntaxHighlight> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - <button onClick={this.editEv}>{ _t('Edit') }</button> - </div> - </div>; - } - - let list = null; - - const classes = 'mx_DevTools_RoomStateExplorer_button'; - if (this.state.eventType === null) { - list = <FilteredList query={this.state.queryEventType} onChange={this.onQueryEventType}> - { - Object.keys(this.roomStateEvents).map((evType) => { - const stateGroup = this.roomStateEvents[evType]; - const stateKeys = Object.keys(stateGroup); - - let onClickFn; - if (stateKeys.length > 1) { - onClickFn = this.browseEventType(evType); - } else if (stateKeys.length === 1) { - onClickFn = this.onViewSourceClick(stateGroup[stateKeys[0]]); - } - - return <button className={classes} key={evType} onClick={onClickFn}> - { evType } - </button>; - }) - } - </FilteredList>; - } else { - const stateGroup = this.roomStateEvents[this.state.eventType]; - - list = <FilteredList query={this.state.queryStateKey} onChange={this.onQueryStateKey}> - { - Object.keys(stateGroup).map((stateKey) => { - const ev = stateGroup[stateKey]; - return <button className={classes} key={stateKey} onClick={this.onViewSourceClick(ev)}> - { stateKey } - </button>; - }) - } - </FilteredList>; - } - - return <div> - <div className="mx_Dialog_content"> - { list } - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - </div> - </div>; - } -} - -class AccountDataExplorer extends DevtoolsComponent { - static getLabel() { return _t('Explore Account Data'); } - - static propTypes = { - onBack: PropTypes.func.isRequired, - }; - - constructor(props, context) { - super(props, context); - - this.onBack = this.onBack.bind(this); - this.editEv = this.editEv.bind(this); - this._onChange = this._onChange.bind(this); - this.onQueryEventType = this.onQueryEventType.bind(this); - - this.state = { - isRoomAccountData: false, - event: null, - editing: false, - - queryEventType: '', - }; - } - - getData() { - const cli = MatrixClientPeg.get(); - if (this.state.isRoomAccountData) { - return cli.getRoom(this.context.roomId).accountData; - } - return cli.store.accountData; - } - - onViewSourceClick(event) { - return () => { - this.setState({ event }); - }; - } - - onBack() { - if (this.state.editing) { - this.setState({ editing: false }); - } else if (this.state.event) { - this.setState({ event: null }); - } else { - this.props.onBack(); - } - } - - _onChange(e) { - this.setState({[e.target.id]: e.target.type === 'checkbox' ? e.target.checked : e.target.value}); - } - - editEv() { - this.setState({ editing: true }); - } - - onQueryEventType(queryEventType) { - this.setState({ queryEventType }); - } - - render() { - if (this.state.event) { - if (this.state.editing) { - return <SendAccountData isRoomAccountData={this.state.isRoomAccountData} onBack={this.onBack} inputs={{ - eventType: this.state.event.getType(), - evContent: JSON.stringify(this.state.event.getContent(), null, '\t'), - }} forceMode={true} />; - } - - return <div className="mx_ViewSource"> - <div className="mx_Dialog_content"> - <SyntaxHighlight className="json"> - { JSON.stringify(this.state.event.event, null, 2) } - </SyntaxHighlight> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - <button onClick={this.editEv}>{ _t('Edit') }</button> - </div> - </div>; - } - - const rows = []; - - const classes = 'mx_DevTools_RoomStateExplorer_button'; - - const data = this.getData(); - Object.keys(data).forEach((evType) => { - const ev = data[evType]; - rows.push(<button className={classes} key={evType} onClick={this.onViewSourceClick(ev)}> - { evType } - </button>); - }); - - return <div> - <div className="mx_Dialog_content"> - <FilteredList query={this.state.queryEventType} onChange={this.onQueryEventType}> - { rows } - </FilteredList> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onBack}>{ _t('Back') }</button> - { !this.state.message && <div style={{float: "right"}}> - <input id="isRoomAccountData" className="mx_DevTools_tgl mx_DevTools_tgl-flip" type="checkbox" onChange={this._onChange} checked={this.state.isRoomAccountData} /> - <label className="mx_DevTools_tgl-btn" data-tg-off="Account Data" data-tg-on="Room Data" htmlFor="isRoomAccountData" /> - </div> } - </div> - </div>; - } -} - -const Entries = [ - SendCustomEvent, - RoomStateExplorer, - SendAccountData, - AccountDataExplorer, -]; - -export default class DevtoolsDialog extends React.Component { - static childContextTypes = { - roomId: PropTypes.string.isRequired, - // client: PropTypes.instanceOf(MatixClient), - }; - - static propTypes = { - roomId: PropTypes.string.isRequired, - onFinished: PropTypes.func.isRequired, - }; - - constructor(props, context) { - super(props, context); - this.onBack = this.onBack.bind(this); - this.onCancel = this.onCancel.bind(this); - - this.state = { - mode: null, - }; - } - - componentWillUnmount() { - this._unmounted = true; - } - - getChildContext() { - return { roomId: this.props.roomId }; - } - - _setMode(mode) { - return () => { - this.setState({ mode }); - }; - } - - onBack() { - if (this.prevMode) { - this.setState({ mode: this.prevMode }); - this.prevMode = null; - } else { - this.setState({ mode: null }); - } - } - - onCancel() { - this.props.onFinished(false); - } - - render() { - let body; - - if (this.state.mode) { - body = <div> - <div className="mx_DevTools_label_left">{ this.state.mode.getLabel() }</div> - <div className="mx_DevTools_label_right">Room ID: { this.props.roomId }</div> - <div className="mx_DevTools_label_bottom" /> - <this.state.mode onBack={this.onBack} /> - </div>; - } else { - const classes = "mx_DevTools_RoomStateExplorer_button"; - body = <div> - <div> - <div className="mx_DevTools_label_left">{ _t('Toolbox') }</div> - <div className="mx_DevTools_label_right">Room ID: { this.props.roomId }</div> - <div className="mx_DevTools_label_bottom" /> - - <div className="mx_Dialog_content"> - { Entries.map((Entry) => { - const label = Entry.getLabel(); - const onClick = this._setMode(Entry); - return <button className={classes} key={label} onClick={onClick}>{ label }</button>; - }) } - </div> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.onCancel}>{ _t('Cancel') }</button> - </div> - </div>; - } - - const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - return ( - <BaseDialog className="mx_QuestionDialog" onFinished={this.props.onFinished} title={_t('Developer Tools')}> - { body } - </BaseDialog> - ); - } -} diff --git a/src/components/views/dialogs/SetPasswordDialog.js b/src/components/views/dialogs/SetPasswordDialog.js deleted file mode 100644 index b82d0346..00000000 --- a/src/components/views/dialogs/SetPasswordDialog.js +++ /dev/null @@ -1,137 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import sdk from 'matrix-react-sdk'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import Modal from 'matrix-react-sdk/lib/Modal'; - -const WarmFuzzy = function(props) { - const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - let title = _t('You have successfully set a password!'); - if (props.didSetEmail) { - title = _t('You have successfully set a password and an email address!'); - } - const advice = _t('You can now return to your account after signing out, and sign in on other devices.'); - let extraAdvice = null; - if (!props.didSetEmail) { - extraAdvice = _t('Remember, you can always set an email address in user settings if you change your mind.'); - } - - return <BaseDialog className="mx_SetPasswordDialog" - onFinished={props.onFinished} - title={ title } - > - <div className="mx_Dialog_content"> - <p> - { advice } - </p> - <p> - { extraAdvice } - </p> - </div> - <div className="mx_Dialog_buttons"> - <button - className="mx_Dialog_primary" - autoFocus={true} - onClick={props.onFinished}> - { _t('Continue') } - </button> - </div> - </BaseDialog>; -}; - -/** - * Prompt the user to set a password - * - * On success, `onFinished()` when finished - */ -export default React.createClass({ - displayName: 'SetPasswordDialog', - propTypes: { - onFinished: React.PropTypes.func.isRequired, - }, - - getInitialState: function() { - return { - error: null, - }; - }, - - componentWillMount: function() { - console.info('SetPasswordDialog component will mount'); - }, - - _onPasswordChanged: function(res) { - Modal.createDialog(WarmFuzzy, { - didSetEmail: res.didSetEmail, - onFinished: () => { - this._onContinueClicked(); - }, - }); - }, - - _onContinueClicked: function() { - this.props.onFinished(true); - }, - - _onPasswordChangeError: function(err) { - let errMsg = err.error || ""; - if (err.httpStatus === 403) { - errMsg = _t('Failed to change password. Is your password correct?'); - } else if (err.httpStatus) { - errMsg += ' ' + _t( - '(HTTP status %(httpStatus)s)', - { httpStatus: err.httpStatus }, - ); - } - this.setState({ - error: errMsg, - }); - }, - - render: function() { - const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - const ChangePassword = sdk.getComponent('views.settings.ChangePassword'); - - return ( - <BaseDialog className="mx_SetPasswordDialog" - onFinished={this.props.onFinished} - title={ _t('Please set a password!') } - > - <div className="mx_Dialog_content"> - <p> - { _t('This will allow you to return to your account after signing out, and sign in on other devices.') } - </p> - <ChangePassword - className="mx_SetPasswordDialog_change_password" - rowClassName="" - rowLabelClassName="" - rowInputClassName="" - buttonClassName="mx_Dialog_primary mx_SetPasswordDialog_change_password_button" - confirm={false} - autoFocusNewPasswordInput={true} - shouldAskForEmail={true} - onError={this._onPasswordChangeError} - onFinished={this._onPasswordChanged} /> - <div className="error"> - { this.state.error } - </div> - </div> - </BaseDialog> - ); - }, -}); diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js deleted file mode 100644 index 9c19cdbc..00000000 --- a/src/components/views/directory/NetworkDropdown.js +++ /dev/null @@ -1,254 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import {instanceForInstanceId} from '../../../utils/DirectoryUtils'; - -const DEFAULT_ICON_URL = "img/network-matrix.svg"; - -export default class NetworkDropdown extends React.Component { - constructor(props) { - super(props); - - this.dropdownRootElement = null; - this.ignoreEvent = null; - - this.onInputClick = this.onInputClick.bind(this); - this.onRootClick = this.onRootClick.bind(this); - this.onDocumentClick = this.onDocumentClick.bind(this); - this.onMenuOptionClick = this.onMenuOptionClick.bind(this); - this.onInputKeyUp = this.onInputKeyUp.bind(this); - this.collectRoot = this.collectRoot.bind(this); - this.collectInputTextBox = this.collectInputTextBox.bind(this); - - this.inputTextBox = null; - - const server = MatrixClientPeg.getHomeServerName(); - this.state = { - expanded: false, - selectedServer: server, - selectedInstance: null, - includeAllNetworks: false, - }; - } - - componentWillMount() { - // Listen for all clicks on the document so we can close the - // menu when the user clicks somewhere else - document.addEventListener('click', this.onDocumentClick, false); - - // fire this now so the defaults can be set up - this.props.onOptionChange(this.state.selectedServer, this.state.selectedInstance, this.state.includeAllNetworks); - } - - componentWillUnmount() { - document.removeEventListener('click', this.onDocumentClick, false); - } - - componentDidUpdate() { - if (this.state.expanded && this.inputTextBox) { - this.inputTextBox.focus(); - } - } - - onDocumentClick(ev) { - // Close the dropdown if the user clicks anywhere that isn't - // within our root element - if (ev !== this.ignoreEvent) { - this.setState({ - expanded: false, - }); - } - } - - onRootClick(ev) { - // This captures any clicks that happen within our elements, - // such that we can then ignore them when they're seen by the - // click listener on the document handler, ie. not close the - // dropdown immediately after opening it. - // NB. We can't just stopPropagation() because then the event - // doesn't reach the React onClick(). - this.ignoreEvent = ev; - } - - onInputClick(ev) { - this.setState({ - expanded: !this.state.expanded, - }); - ev.preventDefault(); - } - - onMenuOptionClick(server, instance, includeAll) { - this.setState({ - expanded: false, - selectedServer: server, - selectedInstanceId: instance ? instance.instance_id : null, - includeAll: includeAll, - }); - this.props.onOptionChange(server, instance ? instance.instance_id : null, includeAll); - } - - onInputKeyUp(e) { - if (e.key == 'Enter') { - this.setState({ - expanded: false, - selectedServer: e.target.value, - selectedNetwork: null, - }); - this.props.onOptionChange(e.target.value, null); - } - } - - collectRoot(e) { - if (this.dropdownRootElement) { - this.dropdownRootElement.removeEventListener('click', this.onRootClick, false); - } - if (e) { - e.addEventListener('click', this.onRootClick, false); - } - this.dropdownRootElement = e; - } - - collectInputTextBox(e) { - this.inputTextBox = e; - } - - _getMenuOptions() { - const options = []; - - let servers = []; - if (this.props.config.servers) { - servers = servers.concat(this.props.config.servers); - } - - if (servers.indexOf(MatrixClientPeg.getHomeServerName()) == -1) { - servers.unshift(MatrixClientPeg.getHomeServerName()); - } - - // For our own HS, we can use the instance_ids given in the third party protocols - // response to get the server to filter the room list by network for us. - // We can't get thirdparty protocols for remote server yet though, so for those - // we can only show the default room list. - for (const server of servers) { - options.push(this._makeMenuOption(server, null, true)); - if (server == MatrixClientPeg.getHomeServerName()) { - options.push(this._makeMenuOption(server, null, false)); - if (this.props.protocols) { - for (const proto of Object.keys(this.props.protocols)) { - if (!this.props.protocols[proto].instances) continue; - - const sortedInstances = this.props.protocols[proto].instances; - sortedInstances.sort(function(x, y) { - const a = x.desc - const b = y.desc - if (a < b) { - return -1; - } else if (a > b) { - return 1; - } else { - return 0; - } - }); - - for (const instance of sortedInstances) { - if (!instance.instance_id) continue; - options.push(this._makeMenuOption(server, instance, false)); - } - } - } - } - } - - return options; - } - - _makeMenuOption(server, instance, includeAll, handleClicks) { - if (handleClicks === undefined) handleClicks = true; - - let icon; - let name; - let span_class; - let key; - - if (!instance && includeAll) { - key = server; - name = server; - span_class = 'mx_NetworkDropdown_menu_all'; - } else if (!instance) { - key = server + '_all'; - name = 'Matrix'; - icon = <img src="img/network-matrix.svg" />; - span_class = 'mx_NetworkDropdown_menu_network'; - } else { - key = server + '_inst_' + instance.instance_id; - const imgUrl = instance.icon ? - MatrixClientPeg.get().mxcUrlToHttp(instance.icon, 25, 25, 'crop', true) : - DEFAULT_ICON_URL; - icon = <img src={imgUrl} />; - name = instance.desc; - span_class = 'mx_NetworkDropdown_menu_network'; - } - - const click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, instance, includeAll) : null; - - return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> - {icon} - <span className="mx_NetworkDropdown_menu_network">{name}</span> - </div> - } - - render() { - let current_value; - - let menu; - if (this.state.expanded) { - const menu_options = this._getMenuOptions(); - menu = <div className="mx_NetworkDropdown_menu"> - {menu_options} - </div>; - current_value = <input type="text" className="mx_NetworkDropdown_networkoption" - ref={this.collectInputTextBox} onKeyUp={this.onInputKeyUp} - placeholder="matrix.org" // 'matrix.org' as an example of an HS name - /> - } else { - const instance = instanceForInstanceId(this.props.protocols, this.state.selectedInstanceId); - current_value = this._makeMenuOption( - this.state.selectedServer, instance, this.state.includeAll, false - ); - } - - return <div className="mx_NetworkDropdown" ref={this.collectRoot}> - <div className="mx_NetworkDropdown_input" onClick={this.onInputClick}> - {current_value} - <span className="mx_NetworkDropdown_arrow"></span> - {menu} - </div> - </div>; - } -} - -NetworkDropdown.propTypes = { - onOptionChange: React.PropTypes.func.isRequired, - protocols: React.PropTypes.object, - // The room directory config. May have a 'servers' key that is a list of server names to include in the dropdown - config: React.PropTypes.object, -}; - -NetworkDropdown.defaultProps = { - protocols: {}, - config: {}, -}; diff --git a/src/components/views/elements/ImageView.js b/src/components/views/elements/ImageView.js deleted file mode 100644 index d1a34d02..00000000 --- a/src/components/views/elements/ImageView.js +++ /dev/null @@ -1,205 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); - -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); - -import {formatDate} from 'matrix-react-sdk/lib/DateUtils'; -var filesize = require('filesize'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); -const Modal = require('matrix-react-sdk/lib/Modal'); -const sdk = require('matrix-react-sdk'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -module.exports = React.createClass({ - displayName: 'ImageView', - - propTypes: { - src: React.PropTypes.string.isRequired, // the source of the image being displayed - name: React.PropTypes.string, // the main title ('name') for the image - link: React.PropTypes.string, // the link (if any) applied to the name of the image - width: React.PropTypes.number, // width of the image src in pixels - height: React.PropTypes.number, // height of the image src in pixels - fileSize: React.PropTypes.number, // size of the image src in bytes - onFinished: React.PropTypes.func.isRequired, // callback when the lightbox is dismissed - - // the event (if any) that the Image is displaying. Used for event-specific stuff like - // redactions, senders, timestamps etc. Other descriptors are taken from the explicit - // properties above, which let us use lightboxes to display images which aren't associated - // with events. - mxEvent: React.PropTypes.object, - }, - - // XXX: keyboard shortcuts for managing dialogs should be done by the modal - // dialog base class somehow, surely... - componentDidMount: function() { - document.addEventListener("keydown", this.onKeyDown); - }, - - componentWillUnmount: function() { - document.removeEventListener("keydown", this.onKeyDown); - }, - - onKeyDown: function(ev) { - if (ev.keyCode == 27) { // escape - ev.stopPropagation(); - ev.preventDefault(); - this.props.onFinished(); - } - }, - - onRedactClick: function() { - const ConfirmRedactDialog = sdk.getComponent("dialogs.ConfirmRedactDialog"); - Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, { - onFinished: (proceed) => { - if (!proceed) return; - var self = this; - MatrixClientPeg.get().redactEvent( - this.props.mxEvent.getRoomId(), this.props.mxEvent.getId() - ).catch(function(e) { - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - // display error message stating you couldn't delete this. - var code = e.errcode || e.statusCode; - Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, { - title: _t('Error'), - description: _t('You cannot delete this image. (%(code)s)', {code: code}) - }); - }).done(); - } - }); - }, - - getName: function () { - var name = this.props.name; - if (name && this.props.link) { - name = <a href={ this.props.link } target="_blank" rel="noopener">{ name }</a>; - } - return name; - }, - - render: function() { - -/* - // In theory max-width: 80%, max-height: 80% on the CSS should work - // but in practice, it doesn't, so do it manually: - - var width = this.props.width || 500; - var height = this.props.height || 500; - - var maxWidth = document.documentElement.clientWidth * 0.8; - var maxHeight = document.documentElement.clientHeight * 0.8; - - var widthFrac = width / maxWidth; - var heightFrac = height / maxHeight; - - var displayWidth; - var displayHeight; - if (widthFrac > heightFrac) { - displayWidth = Math.min(width, maxWidth); - displayHeight = (displayWidth / width) * height; - } else { - displayHeight = Math.min(height, maxHeight); - displayWidth = (displayHeight / height) * width; - } - - var style = { - width: displayWidth, - height: displayHeight - }; -*/ - var style, res; - - if (this.props.width && this.props.height) { - style = { - width: this.props.width, - height: this.props.height, - }; - res = style.width + "x" + style.height + "px"; - } - - var size; - if (this.props.fileSize) { - size = filesize(this.props.fileSize); - } - - var size_res; - if (size && res) { - size_res = size + ", " + res; - } - else { - size_res = size || res; - } - - var showEventMeta = !!this.props.mxEvent; - - var eventMeta; - if(showEventMeta) { - // Figure out the sender, defaulting to mxid - let sender = this.props.mxEvent.getSender(); - const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); - if (room) { - const member = room.getMember(sender); - if (member) sender = member.name; - } - - eventMeta = (<div className="mx_ImageView_metadata"> - { _t('Uploaded on %(date)s by %(user)s', {date: formatDate(new Date(this.props.mxEvent.getTs())), user: sender}) } - </div>); - } - - var eventRedact; - if(showEventMeta) { - eventRedact = (<div className="mx_ImageView_button" onClick={this.onRedactClick}> - { _t('Remove') } - </div>); - } - - return ( - <div className="mx_ImageView"> - <div className="mx_ImageView_lhs"> - </div> - <div className="mx_ImageView_content"> - <img src={this.props.src} style={style}/> - <div className="mx_ImageView_labelWrapper"> - <div className="mx_ImageView_label"> - <AccessibleButton className="mx_ImageView_cancel" onClick={ this.props.onFinished }><img src="img/cancel-white.svg" width="18" height="18" alt={ _t('Close') }/></AccessibleButton> - <div className="mx_ImageView_shim"> - </div> - <div className="mx_ImageView_name"> - { this.getName() } - </div> - { eventMeta } - <a className="mx_ImageView_link" href={ this.props.src } download={ this.props.name } target="_blank" rel="noopener"> - <div className="mx_ImageView_download"> - { _t('Download this file') }<br/> - <span className="mx_ImageView_size">{ size_res }</span> - </div> - </a> - { eventRedact } - <div className="mx_ImageView_shim"> - </div> - </div> - </div> - </div> - <div className="mx_ImageView_rhs"> - </div> - </div> - ); - } -}); diff --git a/src/components/views/elements/InlineSpinner.js b/src/components/views/elements/InlineSpinner.js deleted file mode 100644 index adb916fc..00000000 --- a/src/components/views/elements/InlineSpinner.js +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -const React = require('react'); - -module.exports = React.createClass({ - displayName: 'InlineSpinner', - - render: function() { - var w = this.props.w || 16; - var h = this.props.h || 16; - var imgClass = this.props.imgClassName || ""; - - return ( - <div className="mx_InlineSpinner"> - <img src="img/spinner.gif" width={w} height={h} className={imgClass}/> - </div> - ); - } -}); diff --git a/src/components/views/elements/Spinner.js b/src/components/views/elements/Spinner.js deleted file mode 100644 index 2b620f12..00000000 --- a/src/components/views/elements/Spinner.js +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); - -module.exports = React.createClass({ - displayName: 'Spinner', - - render: function() { - var w = this.props.w || 32; - var h = this.props.h || 32; - var imgClass = this.props.imgClassName || ""; - return ( - <div className="mx_Spinner"> - <img src="img/spinner.gif" width={w} height={h} className={imgClass}/> - </div> - ); - } -}); diff --git a/src/components/views/elements/SyntaxHighlight.js b/src/components/views/elements/SyntaxHighlight.js deleted file mode 100644 index 82b5ae57..00000000 --- a/src/components/views/elements/SyntaxHighlight.js +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import {highlightBlock} from 'highlight.js'; - -export default class SyntaxHighlight extends React.Component { - static propTypes = { - className: PropTypes.string, - children: PropTypes.node, - }; - - constructor(props, context) { - super(props, context); - - this._ref = this._ref.bind(this); - } - - // componentDidUpdate used here for reusability - // componentWillReceiveProps fires too early to call highlightBlock on. - componentDidUpdate() { - if (this._el) highlightBlock(this._el); - } - - // call componentDidUpdate because _ref is fired on initial render - // which does not fire componentDidUpdate - _ref(el) { - this._el = el; - this.componentDidUpdate(); - } - - render() { - const { className, children } = this.props; - - return <pre className={`${className} mx_SyntaxHighlight`} ref={this._ref}> - <code>{ children }</code> - </pre>; - } -} diff --git a/src/components/views/globals/MatrixToolbar.js b/src/components/views/globals/MatrixToolbar.js deleted file mode 100644 index 06bfa36e..00000000 --- a/src/components/views/globals/MatrixToolbar.js +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import Notifier from 'matrix-react-sdk/lib/Notifier'; -import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; - -module.exports = React.createClass({ - displayName: 'MatrixToolbar', - - hideToolbar: function() { - Notifier.setToolbarHidden(true); - }, - - onClick: function() { - Notifier.setEnabled(true); - }, - - render: function() { - return ( - <div className="mx_MatrixToolbar"> - <img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning"/> - <div className="mx_MatrixToolbar_content"> - { _t('You are not receiving desktop notifications') } <a className="mx_MatrixToolbar_link" onClick={ this.onClick }> { _t('Enable them now') }</a> - </div> - <AccessibleButton className="mx_MatrixToolbar_close" onClick={ this.hideToolbar } ><img src="img/cancel.svg" width="18" height="18" /></AccessibleButton> - </div> - ); - }, -}); diff --git a/src/components/views/globals/NewVersionBar.js b/src/components/views/globals/NewVersionBar.js deleted file mode 100644 index 2aedf392..00000000 --- a/src/components/views/globals/NewVersionBar.js +++ /dev/null @@ -1,107 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import sdk from 'matrix-react-sdk'; -import Modal from 'matrix-react-sdk/lib/Modal'; -import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -/** - * Check a version string is compatible with the Changelog - * dialog ([vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]) - */ -function checkVersion(ver) { - const parts = ver.split('-'); - return parts.length == 5 && parts[1] == 'react' && parts[3] == 'js'; -} - -export default React.createClass({ - propTypes: { - version: React.PropTypes.string.isRequired, - newVersion: React.PropTypes.string.isRequired, - releaseNotes: React.PropTypes.string, - }, - - displayReleaseNotes: function(releaseNotes) { - const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog'); - Modal.createTrackedDialog('Display release notes', '', QuestionDialog, { - title: _t("What's New"), - description: <div className="mx_MatrixToolbar_changelog">{releaseNotes}</div>, - button: _t("Update"), - onFinished: (update) => { - if(update && PlatformPeg.get()) { - PlatformPeg.get().installUpdate(); - } - } - }); - }, - - displayChangelog: function() { - const ChangelogDialog = sdk.getComponent('dialogs.ChangelogDialog'); - Modal.createTrackedDialog('Display Changelog', '', ChangelogDialog, { - version: this.props.version, - newVersion: this.props.newVersion, - onFinished: (update) => { - if(update && PlatformPeg.get()) { - PlatformPeg.get().installUpdate(); - } - } - }); - }, - - onUpdateClicked: function() { - PlatformPeg.get().installUpdate(); - }, - - render: function() { - let action_button; - // If we have release notes to display, we display them. Otherwise, - // we display the Changelog Dialog which takes two versions and - // automatically tells you what's changed (provided the versions - // are in the right format) - if (this.props.releaseNotes) { - action_button = ( - <button className="mx_MatrixToolbar_action" onClick={this.displayReleaseNotes}> - { _t("What's new?") } - </button> - ); - } else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) { - action_button = ( - <button className="mx_MatrixToolbar_action" onClick={this.displayChangelog}> - { _t("What's new?") } - </button> - ); - } else if (PlatformPeg.get()) { - action_button = ( - <button className="mx_MatrixToolbar_action" onClick={this.onUpdateClicked}> - { _t("Update") } - </button> - ); - } - return ( - <div className="mx_MatrixToolbar"> - <img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning"/> - <div className="mx_MatrixToolbar_content"> - {_t("A new version of Riot is available.")} - </div> - {action_button} - </div> - ); - } -}); diff --git a/src/components/views/globals/PasswordNagBar.js b/src/components/views/globals/PasswordNagBar.js deleted file mode 100644 index a04d48e0..00000000 --- a/src/components/views/globals/PasswordNagBar.js +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import sdk from 'matrix-react-sdk'; -import Modal from 'matrix-react-sdk/lib/Modal'; -import dis from 'matrix-react-sdk/lib/dispatcher'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -export default React.createClass({ - onUpdateClicked: function() { - const SetPasswordDialog = sdk.getComponent('dialogs.SetPasswordDialog'); - Modal.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog, { - onFinished: (passwordChanged) => { - if (!passwordChanged) { - return; - } - // Notify SessionStore that the user's password was changed - dis.dispatch({ - action: 'password_changed', - }); - }, - }); - }, - - render: function() { - const toolbarClasses = "mx_MatrixToolbar mx_MatrixToolbar_clickable"; - return ( - <div className={toolbarClasses} onClick={this.onUpdateClicked}> - <img className="mx_MatrixToolbar_warning" - src="img/warning.svg" - width="24" - height="23" - alt="Warning" - /> - <div className="mx_MatrixToolbar_content"> - { _t( - "To return to your account in future you need to <u>set a password</u>", - {}, - { 'u': (sub) => <u>{ sub }</u> }, - ) } - </div> - <button className="mx_MatrixToolbar_action"> - { _t("Set Password") } - </button> - </div> - ); - }, -}); diff --git a/src/components/views/globals/UpdateCheckBar.js b/src/components/views/globals/UpdateCheckBar.js deleted file mode 100644 index 926ccbcc..00000000 --- a/src/components/views/globals/UpdateCheckBar.js +++ /dev/null @@ -1,85 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import React from 'react'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import {updateCheckStatusEnum} from '../../../vector/platform/VectorBasePlatform'; -import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; - -const doneStatuses = [ - updateCheckStatusEnum.ERROR, - updateCheckStatusEnum.NOTAVAILABLE, -]; - -export default React.createClass({ - propTypes: { - status: React.PropTypes.oneOf(Object.values(updateCheckStatusEnum)).isRequired, - // Currently for error detail but will be usable for download progress - // once that is a thing that squirrel passes through electron. - detail: React.PropTypes.string, - }, - - getDefaultProps: function() { - return { - detail: '', - } - }, - - getStatusText: function() { - switch(this.props.status) { - case updateCheckStatusEnum.ERROR: - return _t('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail }); - case updateCheckStatusEnum.CHECKING: - return _t('Checking for an update...'); - case updateCheckStatusEnum.NOTAVAILABLE: - return _t('No update available.'); - case updateCheckStatusEnum.DOWNLOADING: - return _t('Downloading update...'); - } - } - , - - hideToolbar: function() { - PlatformPeg.get().stopUpdateCheck(); - }, - - render: function() { - const message = this.getStatusText(); - const warning = _t('Warning'); - - let image; - if (doneStatuses.includes(this.props.status)) { - image = <img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt={warning}/>; - } else { - image = <img className="mx_MatrixToolbar_warning" src="img/spinner.gif" width="24" height="23" alt={message}/>; - } - - return ( - <div className="mx_MatrixToolbar"> - {image} - <div className="mx_MatrixToolbar_content"> - {message} - </div> - <AccessibleButton className="mx_MatrixToolbar_close" onClick={this.hideToolbar}> - <img src="img/cancel.svg" width="18" height="18" /> - </AccessibleButton> - </div> - ); - } -}); diff --git a/src/components/views/login/VectorCustomServerDialog.js b/src/components/views/login/VectorCustomServerDialog.js deleted file mode 100644 index 8395f139..00000000 --- a/src/components/views/login/VectorCustomServerDialog.js +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -var React = require("react"); -var sanitizeHtml = require("sanitize-html"); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -module.exports = React.createClass({ - displayName: 'VectorCustomServerDialog', - statics: { - replaces: 'CustomServerDialog', - }, - - render: function() { - return ( - <div className="mx_ErrorDialog"> - <div className="mx_Dialog_title"> - { _t('Custom Server Options') } - </div> - <div className="mx_Dialog_content"> - <span dangerouslySetInnerHTML={{__html: sanitizeHtml(_t( - "You can use the custom server options to sign into other Matrix "+ - "servers by specifying a different Home server URL.<br/>This allows "+ - "you to use Riot with an existing Matrix account on a different home "+ - "server.<br/><br/>You can also set a custom identity server but you won't "+ - "be able to invite users by email address, or be invited by email address yourself.", - ))}} /> - </div> - <div className="mx_Dialog_buttons"> - <button onClick={this.props.onFinished} autoFocus={true}> - { _t('Dismiss') } - </button> - </div> - </div> - ); - } -}); diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js deleted file mode 100644 index 1289e84b..00000000 --- a/src/components/views/login/VectorLoginFooter.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore'; - -module.exports = React.createClass({ - displayName: 'VectorLoginFooter', - statics: { - replaces: 'LoginFooter', - }, - - render: function() { - // FIXME: replace this with a proper Status skin - if (SettingsStore.getValue("theme") === 'status') return <div/>; - - return ( - <div className="mx_Login_links"> - <a href="https://medium.com/@RiotChat">blog</a> · - <a href="https://twitter.com/@RiotChat">twitter</a> · - <a href="https://github.com/vector-im/riot-web">github</a> · - <a href="https://matrix.org">{ _t('powered by Matrix') }</a> - </div> - ); - } -}); diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js deleted file mode 100644 index 2e081bc6..00000000 --- a/src/components/views/messages/DateSeparator.js +++ /dev/null @@ -1,61 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2018 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import {formatFullDateNoTime} from 'matrix-react-sdk/lib/DateUtils'; - -function getdaysArray() { - return [ - _t('Sunday'), - _t('Monday'), - _t('Tuesday'), - _t('Wednesday'), - _t('Thursday'), - _t('Friday'), - _t('Saturday'), - ]; -} - -export default class DateSeparator extends React.Component { - static propTypes = { - ts: PropTypes.number.isRequired, - }; - - getLabel() { - const date = new Date(this.props.ts); - const today = new Date(); - const yesterday = new Date(); - const days = getdaysArray(); - yesterday.setDate(today.getDate() - 1); - - if (date.toDateString() === today.toDateString()) { - return _t('Today'); - } else if (date.toDateString() === yesterday.toDateString()) { - return _t('Yesterday'); - } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { - return days[date.getDay()]; - } else { - return formatFullDateNoTime(date); - } - } - - render() { - return <h2 className="mx_DateSeparator">{ this.getLabel() }</h2>; - } -} diff --git a/src/components/views/messages/MessageTimestamp.js b/src/components/views/messages/MessageTimestamp.js deleted file mode 100644 index 6d433067..00000000 --- a/src/components/views/messages/MessageTimestamp.js +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2018 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import {formatFullDate, formatTime} from 'matrix-react-sdk/lib/DateUtils'; - -export default class MessageTimestamp extends React.Component { - static propTypes = { - ts: PropTypes.number.isRequired, - showTwelveHour: PropTypes.bool, - }; - - render() { - const date = new Date(this.props.ts); - return ( - <span className="mx_MessageTimestamp" title={formatFullDate(date, this.props.showTwelveHour)}> - { formatTime(date, this.props.showTwelveHour) } - </span> - ); - } -} diff --git a/src/components/views/rooms/DNDRoomTile.js b/src/components/views/rooms/DNDRoomTile.js deleted file mode 100644 index b8f8b402..00000000 --- a/src/components/views/rooms/DNDRoomTile.js +++ /dev/null @@ -1,65 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import { Draggable } from 'react-beautiful-dnd'; -import RoomTile from 'matrix-react-sdk/lib/components/views/rooms/RoomTile'; - -import classNames from 'classnames'; - -export default class DNDRoomTile extends React.Component { - constructor() { - super(); - this.getClassName = this.getClassName.bind(this); - } - - getClassName(isDragging) { - return classNames({ - "mx_DNDRoomTile": true, - "mx_DNDRoomTile_dragging": isDragging, - }); - } - - render() { - const props = this.props; - - return <div> - <Draggable - key={props.room.roomId} - draggableId={props.tagName + '_' + props.room.roomId} - index={props.index} - type="draggable-RoomTile" - > - { (provided, snapshot) => { - return ( - <div> - <div - ref={provided.innerRef} - {...provided.draggableProps} - {...provided.dragHandleProps} - > - <div className={this.getClassName(snapshot.isDragging)}> - <RoomTile {...props} /> - </div> - </div> - { provided.placeholder } - </div> - ); - } } - </Draggable> - </div>; - } -} diff --git a/src/components/views/rooms/RoomDropTarget.js b/src/components/views/rooms/RoomDropTarget.js deleted file mode 100644 index f5ca4f01..00000000 --- a/src/components/views/rooms/RoomDropTarget.js +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); - -module.exports = React.createClass({ - displayName: 'RoomDropTarget', - - render: function() { - return ( - <div className="mx_RoomDropTarget"> - <div className="mx_RoomDropTarget_label"> - { this.props.label } - </div> - </div> - ); - } -}); diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js deleted file mode 100644 index 714d57ca..00000000 --- a/src/components/views/rooms/RoomTooltip.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -var ReactDOM = require('react-dom'); -var dis = require('matrix-react-sdk/lib/dispatcher'); -import classNames from 'classnames'; - -module.exports = React.createClass({ - displayName: 'RoomTooltip', - - propTypes: { - // Class applied to the element used to position the tooltip - className: React.PropTypes.string.isRequired, - // Class applied to the tooltip itself - tooltipClassName: React.PropTypes.string, - // The tooltip is derived from either the room name or a label - room: React.PropTypes.object, - label: React.PropTypes.string, - }, - - // Create a wrapper for the tooltip outside the parent and attach it to the body element - componentDidMount: function() { - this.tooltipContainer = document.createElement("div"); - this.tooltipContainer.className = "mx_RoomTileTooltip_wrapper"; - document.body.appendChild(this.tooltipContainer); - - this._renderTooltip(); - }, - - componentDidUpdate: function() { - this._renderTooltip(); - }, - - // Remove the wrapper element, as the tooltip has finished using it - componentWillUnmount: function() { - dis.dispatch({ - action: 'view_tooltip', - tooltip: null, - parent: null, - }); - - ReactDOM.unmountComponentAtNode(this.tooltipContainer); - document.body.removeChild(this.tooltipContainer); - }, - - _renderTooltip: function() { - var label = this.props.room ? this.props.room.name : this.props.label; - - // Add the parent's position to the tooltips, so it's correctly - // positioned, also taking into account any window zoom - // NOTE: The additional 6 pixels for the left position, is to take account of the - // tooltips chevron - var parent = ReactDOM.findDOMNode(this); - var style = {}; - style.top = parent.getBoundingClientRect().top + window.pageYOffset; - style.left = 6 + parent.getBoundingClientRect().right + window.pageXOffset; - style.display = "block"; - - const tooltipClasses = classNames( - "mx_RoomTooltip", this.props.tooltipClassName, - ); - - var tooltip = ( - <div className={tooltipClasses} style={style} > - <div className="mx_RoomTooltip_chevron"></div> - { label } - </div> - ); - - // Render the tooltip manually, as we wish it not to be rendered within the parent - this.tooltip = ReactDOM.render(tooltip, this.tooltipContainer); - - // Tell the roomlist about us so it can manipulate us if it wishes - dis.dispatch({ - action: 'view_tooltip', - tooltip: this.tooltip, - parent: parent, - }); - }, - - render: function() { - // Render a placeholder - return ( - <div className={ this.props.className } > - </div> - ); - } -}); diff --git a/src/components/views/rooms/SearchBar.js b/src/components/views/rooms/SearchBar.js deleted file mode 100644 index 26bf81e4..00000000 --- a/src/components/views/rooms/SearchBar.js +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var sdk = require('matrix-react-sdk'); -var classNames = require('classnames'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); -import { _t } from "matrix-react-sdk/lib/languageHandler"; - -module.exports = React.createClass({ - displayName: 'SearchBar', - - getInitialState: function() { - return ({ - scope: 'Room' - }); - }, - - onThisRoomClick: function() { - this.setState({ scope: 'Room' }); - }, - - onAllRoomsClick: function() { - this.setState({ scope: 'All' }); - }, - - onSearchChange: function(e) { - if (e.keyCode === 13) { // on enter... - this.onSearch(); - } - if (e.keyCode === 27) { // escape... - this.props.onCancelClick(); - } - }, - - onSearch: function() { - this.props.onSearch(this.refs.search_term.value, this.state.scope); - }, - - render: function() { - var searchButtonClasses = classNames({ mx_SearchBar_searchButton : true, mx_SearchBar_searching: this.props.searchInProgress }); - var thisRoomClasses = classNames({ mx_SearchBar_button : true, mx_SearchBar_unselected : this.state.scope !== 'Room' }); - var allRoomsClasses = classNames({ mx_SearchBar_button : true, mx_SearchBar_unselected : this.state.scope !== 'All' }); - - return ( - <div className="mx_SearchBar"> - <input ref="search_term" className="mx_SearchBar_input" type="text" autoFocus={true} placeholder={_t("Search…")} onKeyDown={this.onSearchChange}/> - <AccessibleButton className={ searchButtonClasses } onClick={this.onSearch}><img src="img/search-button.svg" width="37" height="37" alt={_t("Search")}/></AccessibleButton> - <AccessibleButton className={ thisRoomClasses } onClick={this.onThisRoomClick}>{_t("This Room")}</AccessibleButton> - <AccessibleButton className={ allRoomsClasses } onClick={this.onAllRoomsClick}>{_t("All Rooms")}</AccessibleButton> - <AccessibleButton className="mx_SearchBar_cancel" onClick={this.props.onCancelClick}><img src="img/cancel.svg" width="18" height="18" /></AccessibleButton> - </div> - ); - } -}); diff --git a/src/components/views/settings/IntegrationsManager.js b/src/components/views/settings/IntegrationsManager.js deleted file mode 100644 index 4a2482f6..00000000 --- a/src/components/views/settings/IntegrationsManager.js +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var React = require('react'); -var sdk = require('matrix-react-sdk'); -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var dis = require('matrix-react-sdk/lib/dispatcher'); - -module.exports = React.createClass({ - displayName: 'IntegrationsManager', - - propTypes: { - src: React.PropTypes.string.isRequired, // the source of the integration manager being embedded - onFinished: React.PropTypes.func.isRequired, // callback when the lightbox is dismissed - }, - - // XXX: keyboard shortcuts for managing dialogs should be done by the modal - // dialog base class somehow, surely... - componentDidMount: function() { - this.dispatcherRef = dis.register(this.onAction); - document.addEventListener("keydown", this.onKeyDown); - }, - - componentWillUnmount: function() { - dis.unregister(this.dispatcherRef); - document.removeEventListener("keydown", this.onKeyDown); - }, - - onKeyDown: function(ev) { - if (ev.keyCode == 27) { // escape - ev.stopPropagation(); - ev.preventDefault(); - this.props.onFinished(); - } - }, - - onAction: function(payload) { - if (payload.action === 'close_scalar') { - this.props.onFinished(); - } - }, - - render: function() { - return ( - <iframe src={ this.props.src }></iframe> - ); - } -}); diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js deleted file mode 100644 index be03b4d7..00000000 --- a/src/components/views/settings/Notifications.js +++ /dev/null @@ -1,919 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import React from 'react'; -import Promise from 'bluebird'; -import sdk from 'matrix-react-sdk'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; -import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore"; -import Modal from 'matrix-react-sdk/lib/Modal'; -import { - NotificationUtils, - VectorPushRulesDefinitions, - PushRuleVectorState, - ContentRules -} from '../../../notifications'; - -// TODO: this "view" component still has far too much application logic in it, -// which should be factored out to other files. - -// TODO: this component also does a lot of direct poking into this.state, which -// is VERY NAUGHTY. - - -/** - * Rules that Vector used to set in order to override the actions of default rules. - * These are used to port peoples existing overrides to match the current API. - * These can be removed and forgotten once everyone has moved to the new client. - */ -const LEGACY_RULES = { - "im.vector.rule.contains_display_name": ".m.rule.contains_display_name", - "im.vector.rule.room_one_to_one": ".m.rule.room_one_to_one", - "im.vector.rule.room_message": ".m.rule.message", - "im.vector.rule.invite_for_me": ".m.rule.invite_for_me", - "im.vector.rule.call": ".m.rule.call", - "im.vector.rule.notices": ".m.rule.suppress_notices" -}; - -function portLegacyActions(actions) { - const decoded = NotificationUtils.decodeActions(actions); - if (decoded !== null) { - return NotificationUtils.encodeActions(decoded); - } else { - // We don't recognise one of the actions here, so we don't try to - // canonicalise them. - return actions; - } -} - -module.exports = React.createClass({ - displayName: 'Notifications', - - phases: { - LOADING: "LOADING", // The component is loading or sending data to the hs - DISPLAY: "DISPLAY", // The component is ready and display data - ERROR: "ERROR" // There was an error - }, - - propTypes: { - // The array of threepids from the JS SDK (required for email notifications) - threepids: React.PropTypes.array.isRequired, - // The brand string set when creating an email pusher - brand: React.PropTypes.string, - }, - - getDefaultProps: function() { - return { - threepids: [] - }; - }, - - getInitialState: function() { - return { - phase: this.phases.LOADING, - masterPushRule: undefined, // The master rule ('.m.rule.master') - vectorPushRules: [], // HS default push rules displayed in Vector UI - vectorContentRules: { // Keyword push rules displayed in Vector UI - vectorState: PushRuleVectorState.ON, - rules: [] - }, - externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI - externalContentRules: [] // Keyword push rules that have been defined outside Vector UI - }; - }, - - componentWillMount: function() { - this._refreshFromServer(); - }, - - onEnableNotificationsChange: function(event) { - const self = this; - this.setState({ - phase: this.phases.LOADING - }); - - MatrixClientPeg.get().setPushRuleEnabled('global', self.state.masterPushRule.kind, self.state.masterPushRule.rule_id, !event.target.checked).done(function() { - self._refreshFromServer(); - }); - }, - - onEnableDesktopNotificationsChange: function(event) { - SettingsStore.setValue( - "notificationsEnabled", null, - SettingLevel.DEVICE, - event.target.checked, - ).finally(() => { - this.forceUpdate(); - }); - }, - - onEnableDesktopNotificationBodyChange: function(event) { - SettingsStore.setValue( - "notificationBodyEnabled", null, - SettingLevel.DEVICE, - event.target.checked, - ).finally(() => { - this.forceUpdate(); - }); - }, - - onEnableAudioNotificationsChange: function(event) { - SettingsStore.setValue( - "audioNotificationsEnabled", null, - SettingLevel.DEVICE, - event.target.checked, - ).finally(() => { - this.forceUpdate(); - }); - }, - - onEnableEmailNotificationsChange: function(address, event) { - let emailPusherPromise; - if (event.target.checked) { - const data = {} - data['brand'] = this.props.brand || 'Riot'; - emailPusherPromise = UserSettingsStore.addEmailPusher(address, data); - } else { - const emailPusher = UserSettingsStore.getEmailPusher(this.state.pushers, address); - emailPusher.kind = null; - emailPusherPromise = MatrixClientPeg.get().setPusher(emailPusher); - } - emailPusherPromise.done(() => { - this._refreshFromServer(); - }, (error) => { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - Modal.createTrackedDialog('Error saving email notification preferences', '', ErrorDialog, { - title: _t('Error saving email notification preferences'), - description: _t('An error occurred whilst saving your email notification preferences.'), - }); - }); - }, - - onNotifStateButtonClicked: function(event) { - // FIXME: use .bind() rather than className metadata here surely - const vectorRuleId = event.target.className.split("-")[0]; - const newPushRuleVectorState = event.target.className.split("-")[1]; - - if ("_keywords" === vectorRuleId) { - this._setKeywordsPushRuleVectorState(newPushRuleVectorState) - } - else { - const rule = this.getRule(vectorRuleId); - if (rule) { - this._setPushRuleVectorState(rule, newPushRuleVectorState); - } - } - }, - - onKeywordsClicked: function(event) { - const self = this; - - // Compute the keywords list to display - let keywords = []; - for (let i in this.state.vectorContentRules.rules) { - const rule = this.state.vectorContentRules.rules[i]; - keywords.push(rule.pattern); - } - if (keywords.length) { - // As keeping the order of per-word push rules hs side is a bit tricky to code, - // display the keywords in alphabetical order to the user - keywords.sort(); - - keywords = keywords.join(", "); - } - else { - keywords = ""; - } - - const TextInputDialog = sdk.getComponent("dialogs.TextInputDialog"); - Modal.createTrackedDialog('Keywords Dialog', '', TextInputDialog, { - title: _t('Keywords'), - description: _t('Enter keywords separated by a comma:'), - button: _t('OK'), - value: keywords, - onFinished: function onFinished(should_leave, newValue) { - - if (should_leave && newValue !== keywords) { - let newKeywords = newValue.split(','); - for (let i in newKeywords) { - newKeywords[i] = newKeywords[i].trim(); - } - - // Remove duplicates and empty - newKeywords = newKeywords.reduce(function(array, keyword){ - if (keyword !== "" && array.indexOf(keyword) < 0) { - array.push(keyword); - } - return array; - },[]); - - self._setKeywords(newKeywords); - } - } - }); - }, - - getRule: function(vectorRuleId) { - for (let i in this.state.vectorPushRules) { - const rule = this.state.vectorPushRules[i]; - if (rule.vectorRuleId === vectorRuleId) { - return rule; - } - } - }, - - _setPushRuleVectorState: function(rule, newPushRuleVectorState) { - if (rule && rule.vectorState !== newPushRuleVectorState) { - - this.setState({ - phase: this.phases.LOADING - }); - - const self = this; - const cli = MatrixClientPeg.get(); - const deferreds = []; - const ruleDefinition = VectorPushRulesDefinitions[rule.vectorRuleId]; - - if (rule.rule) { - const actions = ruleDefinition.vectorStateToActions[newPushRuleVectorState]; - - if (!actions) { - // The new state corresponds to disabling the rule. - deferreds.push(cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false)); - } - else { - // The new state corresponds to enabling the rule and setting specific actions - deferreds.push(this._updatePushRuleActions(rule.rule, actions, true)); - } - } - - Promise.all(deferreds).done(function() { - self._refreshFromServer(); - }, function(error) { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - console.error("Failed to change settings: " + error); - Modal.createTrackedDialog('Failed to change settings', '', ErrorDialog, { - title: _t('Failed to change settings'), - description: ((error && error.message) ? error.message : _t('Operation failed')), - onFinished: self._refreshFromServer - }); - }); - } - }, - - _setKeywordsPushRuleVectorState: function(newPushRuleVectorState) { - // Is there really a change? - if (this.state.vectorContentRules.vectorState === newPushRuleVectorState - || this.state.vectorContentRules.rules.length === 0) { - return; - } - - const self = this; - const cli = MatrixClientPeg.get(); - - this.setState({ - phase: this.phases.LOADING - }); - - // Update all rules in self.state.vectorContentRules - const deferreds = []; - for (let i in this.state.vectorContentRules.rules) { - const rule = this.state.vectorContentRules.rules[i]; - - let enabled, actions; - switch (newPushRuleVectorState) { - case PushRuleVectorState.ON: - if (rule.actions.length !== 1) { - actions = PushRuleVectorState.actionsFor(PushRuleVectorState.ON); - } - - if (this.state.vectorContentRules.vectorState === PushRuleVectorState.OFF) { - enabled = true; - } - break; - - case PushRuleVectorState.LOUD: - if (rule.actions.length !== 3) { - actions = PushRuleVectorState.actionsFor(PushRuleVectorState.LOUD); - } - - if (this.state.vectorContentRules.vectorState === PushRuleVectorState.OFF) { - enabled = true; - } - break; - - case PushRuleVectorState.OFF: - enabled = false; - break; - } - - if (actions) { - // Note that the workaround in _updatePushRuleActions will automatically - // enable the rule - deferreds.push(this._updatePushRuleActions(rule, actions, enabled)); - } - else if (enabled != undefined) { - deferreds.push(cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled)); - } - } - - Promise.all(deferreds).done(function(resps) { - self._refreshFromServer(); - }, function(error) { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - console.error("Can't update user notification settings: " + error); - Modal.createTrackedDialog('Can\'t update user notifcation settings', '', ErrorDialog, { - title: _t('Can\'t update user notification settings'), - description: ((error && error.message) ? error.message : _t('Operation failed')), - onFinished: self._refreshFromServer - }); - }); - }, - - _setKeywords: function(newKeywords) { - this.setState({ - phase: this.phases.LOADING - }); - - const self = this; - const cli = MatrixClientPeg.get(); - const removeDeferreds = []; - - // Remove per-word push rules of keywords that are no more in the list - const vectorContentRulesPatterns = []; - for (let i in self.state.vectorContentRules.rules) { - const rule = self.state.vectorContentRules.rules[i]; - - vectorContentRulesPatterns.push(rule.pattern); - - if (newKeywords.indexOf(rule.pattern) < 0) { - removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id)); - } - } - - // If the keyword is part of `externalContentRules`, remove the rule - // before recreating it in the right Vector path - for (let i in self.state.externalContentRules) { - const rule = self.state.externalContentRules[i]; - - if (newKeywords.indexOf(rule.pattern) >= 0) { - removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id)); - } - } - - const onError = function(error) { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); - console.error("Failed to update keywords: " + error); - Modal.createTrackedDialog('Failed to update keywords', '', ErrorDialog, { - title: _t('Failed to update keywords'), - description: ((error && error.message) ? error.message : _t('Operation failed')), - onFinished: self._refreshFromServer - }); - } - - // Then, add the new ones - Promise.all(removeDeferreds).done(function(resps) { - const deferreds = []; - - let pushRuleVectorStateKind = self.state.vectorContentRules.vectorState; - if (pushRuleVectorStateKind === PushRuleVectorState.OFF) { - // When the current global keywords rule is OFF, we need to look at - // the flavor of rules in 'vectorContentRules' to apply the same actions - // when creating the new rule. - // Thus, this new rule will join the 'vectorContentRules' set. - if (self.state.vectorContentRules.rules.length) { - pushRuleVectorStateKind = PushRuleVectorState.contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]); - } - else { - // ON is default - pushRuleVectorStateKind = PushRuleVectorState.ON; - } - } - - for (let i in newKeywords) { - const keyword = newKeywords[i]; - - if (vectorContentRulesPatterns.indexOf(keyword) < 0) { - if (self.state.vectorContentRules.vectorState !== PushRuleVectorState.OFF) { - deferreds.push(cli.addPushRule - ('global', 'content', keyword, { - actions: PushRuleVectorState.actionsFor(pushRuleVectorStateKind), - pattern: keyword - })); - } - else { - deferreds.push(self._addDisabledPushRule('global', 'content', keyword, { - actions: PushRuleVectorState.actionsFor(pushRuleVectorStateKind), - pattern: keyword - })); - } - } - } - - Promise.all(deferreds).done(function(resps) { - self._refreshFromServer(); - }, onError); - }, onError); - }, - - // Create a push rule but disabled - _addDisabledPushRule: function(scope, kind, ruleId, body) { - const cli = MatrixClientPeg.get(); - return cli.addPushRule(scope, kind, ruleId, body).then(() => - cli.setPushRuleEnabled(scope, kind, ruleId, false) - ); - }, - - // Check if any legacy im.vector rules need to be ported to the new API - // for overriding the actions of default rules. - _portRulesToNewAPI: function(rulesets) { - const self = this; - const needsUpdate = []; - const cli = MatrixClientPeg.get(); - - for (let kind in rulesets.global) { - const ruleset = rulesets.global[kind]; - for (let i = 0; i < ruleset.length; ++i) { - const rule = ruleset[i]; - if (rule.rule_id in LEGACY_RULES) { - console.log("Porting legacy rule", rule); - needsUpdate.push( function(kind, rule) { - return cli.setPushRuleActions( - 'global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions) - ).then(() => - cli.deletePushRule('global', kind, rule.rule_id) - ).catch( (e) => { - console.warn(`Error when porting legacy rule: ${e}`); - }); - }(kind, rule)); - } - } - } - - if (needsUpdate.length > 0) { - // If some of the rules need to be ported then wait for the porting - // to happen and then fetch the rules again. - return Promise.all(needsUpdate).then(() => - cli.getPushRules() - ); - } else { - // Otherwise return the rules that we already have. - return rulesets; - } - }, - - _refreshFromServer: function() { - const self = this; - const pushRulesPromise = MatrixClientPeg.get().getPushRules().then(self._portRulesToNewAPI).then(function(rulesets) { - - /// XXX seriously? wtf is this? - MatrixClientPeg.get().pushRules = rulesets; - - // Get homeserver default rules and triage them by categories - const rule_categories = { - // The master rule (all notifications disabling) - '.m.rule.master': 'master', - - // The default push rules displayed by Vector UI - '.m.rule.contains_display_name': 'vector', - '.m.rule.contains_user_name': 'vector', - '.m.rule.room_one_to_one': 'vector', - '.m.rule.message': 'vector', - '.m.rule.invite_for_me': 'vector', - //'.m.rule.member_event': 'vector', - '.m.rule.call': 'vector', - '.m.rule.suppress_notices': 'vector' - - // Others go to others - }; - - // HS default rules - const defaultRules = {master: [], vector: {}, others: []}; - - for (let kind in rulesets.global) { - for (let i = 0; i < Object.keys(rulesets.global[kind]).length; ++i) { - const r = rulesets.global[kind][i]; - const cat = rule_categories[r.rule_id]; - r.kind = kind; - - if (r.rule_id[0] === '.') { - if (cat === 'vector') { - defaultRules.vector[r.rule_id] = r; - } - else if (cat === 'master') { - defaultRules.master.push(r); - } - else { - defaultRules['others'].push(r); - } - } - } - } - - // Get the master rule if any defined by the hs - if (defaultRules.master.length > 0) { - self.state.masterPushRule = defaultRules.master[0]; - } - - // parse the keyword rules into our state - const contentRules = ContentRules.parseContentRules(rulesets); - self.state.vectorContentRules = { - vectorState: contentRules.vectorState, - rules: contentRules.rules, - }; - self.state.externalContentRules = contentRules.externalRules; - - // Build the rules displayed in the Vector UI matrix table - self.state.vectorPushRules = []; - self.state.externalPushRules = []; - - const vectorRuleIds = [ - '.m.rule.contains_display_name', - '.m.rule.contains_user_name', - '_keywords', - '.m.rule.room_one_to_one', - '.m.rule.message', - '.m.rule.invite_for_me', - //'im.vector.rule.member_event', - '.m.rule.call', - '.m.rule.suppress_notices' - ]; - for (let i in vectorRuleIds) { - const vectorRuleId = vectorRuleIds[i]; - - if (vectorRuleId === '_keywords') { - // keywords needs a special handling - // For Vector UI, this is a single global push rule but translated in Matrix, - // it corresponds to all content push rules (stored in self.state.vectorContentRule) - self.state.vectorPushRules.push({ - "vectorRuleId": "_keywords", - "description" : ( - <span> - { _t('Messages containing <span>keywords</span>', - {}, - { 'span': (sub) => - <span className="mx_UserNotifSettings_keywords" onClick={ self.onKeywordsClicked }>{sub}</span> - }, - )} - </span> - ), - "vectorState": self.state.vectorContentRules.vectorState - }); - } - else { - const ruleDefinition = VectorPushRulesDefinitions[vectorRuleId]; - const rule = defaultRules.vector[vectorRuleId]; - - const vectorState = ruleDefinition.ruleToVectorState(rule); - - //console.log("Refreshing vectorPushRules for " + vectorRuleId +", "+ ruleDefinition.description +", " + rule +", " + vectorState); - - self.state.vectorPushRules.push({ - "vectorRuleId": vectorRuleId, - "description" : _t(ruleDefinition.description), // Text from VectorPushRulesDefinitions.js - "rule": rule, - "vectorState": vectorState, - }); - - // if there was a rule which we couldn't parse, add it to the external list - if (rule && !vectorState) { - rule.description = ruleDefinition.description; - self.state.externalPushRules.push(rule); - } - } - } - - // Build the rules not managed by Vector UI - const otherRulesDescriptions = { - '.m.rule.message': _t('Notify for all other messages/rooms'), - '.m.rule.fallback': _t('Notify me for anything else'), - }; - - for (let i in defaultRules.others) { - const rule = defaultRules.others[i]; - const ruleDescription = otherRulesDescriptions[rule.rule_id]; - - // Show enabled default rules that was modified by the user - if (ruleDescription && rule.enabled && !rule.default) { - rule.description = ruleDescription; - self.state.externalPushRules.push(rule); - } - } - }); - - const pushersPromise = MatrixClientPeg.get().getPushers().then(function(resp) { - self.setState({pushers: resp.pushers}); - }); - - Promise.all([pushRulesPromise, pushersPromise]).then(function() { - self.setState({ - phase: self.phases.DISPLAY - }); - }, function(error) { - console.error(error); - self.setState({ - phase: self.phases.ERROR - }); - }).finally(() => { - // actually explicitly update our state having been deep-manipulating it - self.setState({ - masterPushRule: self.state.masterPushRule, - vectorContentRules: self.state.vectorContentRules, - vectorPushRules: self.state.vectorPushRules, - externalContentRules: self.state.externalContentRules, - externalPushRules: self.state.externalPushRules, - }); - }).done(); - }, - - _updatePushRuleActions: function(rule, actions, enabled) { - const cli = MatrixClientPeg.get(); - - return cli.setPushRuleActions( - 'global', rule.kind, rule.rule_id, actions - ).then( function() { - // Then, if requested, enabled or disabled the rule - if (undefined != enabled) { - return cli.setPushRuleEnabled( - 'global', rule.kind, rule.rule_id, enabled - ); - } - }); - }, - - renderNotifRulesTableRow: function(title, className, pushRuleVectorState) { - return ( - <tr key={ className }> - <th> - { title } - </th> - - <th> - <input className= {className + "-" + PushRuleVectorState.OFF} - type="radio" - checked={ pushRuleVectorState === PushRuleVectorState.OFF } - onChange={ this.onNotifStateButtonClicked } /> - </th> - - <th> - <input className= {className + "-" + PushRuleVectorState.ON} - type="radio" - checked={ pushRuleVectorState === PushRuleVectorState.ON } - onChange={ this.onNotifStateButtonClicked } /> - </th> - - <th> - <input className= {className + "-" + PushRuleVectorState.LOUD} - type="radio" - checked={ pushRuleVectorState === PushRuleVectorState.LOUD } - onChange={ this.onNotifStateButtonClicked } /> - </th> - </tr> - ); - }, - - renderNotifRulesTableRows: function() { - const rows = []; - for (let i in this.state.vectorPushRules) { - const rule = this.state.vectorPushRules[i]; - //console.log("rendering: " + rule.description + ", " + rule.vectorRuleId + ", " + rule.vectorState); - rows.push(this.renderNotifRulesTableRow(rule.description, rule.vectorRuleId, rule.vectorState)); - } - return rows; - }, - - emailNotificationsRow: function(address, label) { - return (<div className="mx_UserNotifSettings_tableRow"> - <div className="mx_UserNotifSettings_inputCell"> - <input id="enableEmailNotifications_{address}" - ref="enableEmailNotifications_{address}" - type="checkbox" - checked={ UserSettingsStore.hasEmailPusher(this.state.pushers, address) } - onChange={ this.onEnableEmailNotificationsChange.bind(this, address) } - /> - </div> - <div className="mx_UserNotifSettings_labelCell"> - <label htmlFor="enableEmailNotifications_{address}"> - {label} - </label> - </div> - </div>); - }, - - render: function() { - const self = this; - - let spinner; - if (this.state.phase === this.phases.LOADING) { - const Loader = sdk.getComponent("elements.Spinner"); - spinner = <Loader />; - } - - let masterPushRuleDiv; - if (this.state.masterPushRule) { - masterPushRuleDiv = ( - <div className="mx_UserNotifSettings_tableRow"> - <div className="mx_UserNotifSettings_inputCell"> - <input id="enableNotifications" - ref="enableNotifications" - type="checkbox" - checked={ !this.state.masterPushRule.enabled } - onChange={ this.onEnableNotificationsChange } - /> - </div> - <div className="mx_UserNotifSettings_labelCell"> - <label htmlFor="enableNotifications"> - { _t('Enable notifications for this account') } - </label> - </div> - </div> - ); - } - - // When enabled, the master rule inhibits all existing rules - // So do not show all notification settings - if (this.state.masterPushRule && this.state.masterPushRule.enabled) { - return ( - <div> - {masterPushRuleDiv} - - <div className="mx_UserSettings_notifTable"> - { _t('All notifications are currently disabled for all targets.') }. - </div> - </div> - ); - } - - const emailThreepids = this.props.threepids.filter((tp) => tp.medium === "email"); - let emailNotificationsRow; - if (emailThreepids.length === 0) { - emailNotificationsRow = <div> - { _t('Add an email address above to configure email notifications') } - </div>; - } else { - // This only supports the first email address in your profile for now - emailNotificationsRow = this.emailNotificationsRow( - emailThreepids[0].address, - `${_t('Enable email notifications')} (${emailThreepids[0].address})` - ); - } - - // Build external push rules - const externalRules = []; - for (let i in this.state.externalPushRules) { - const rule = this.state.externalPushRules[i]; - externalRules.push(<li>{ _t(rule.description) }</li>); - } - - // Show keywords not displayed by the vector UI as a single external push rule - let externalKeywords = []; - for (let i in this.state.externalContentRules) { - const rule = this.state.externalContentRules[i]; - externalKeywords.push(rule.pattern); - } - if (externalKeywords.length) { - externalKeywords = externalKeywords.join(", "); - externalRules.push(<li>{ _t('Notifications on the following keywords follow rules which can’t be displayed here:') } { externalKeywords }</li>); - } - - let devicesSection; - if (this.state.pushers === undefined) { - devicesSection = <div className="error">{ _t('Unable to fetch notification target list') }</div> - } else if (this.state.pushers.length == 0) { - devicesSection = null; - } else { - // TODO: It would be great to be able to delete pushers from here too, - // and this wouldn't be hard to add. - const rows = []; - for (let i = 0; i < this.state.pushers.length; ++i) { - rows.push(<tr key={ i }> - <td>{this.state.pushers[i].app_display_name}</td> - <td>{this.state.pushers[i].device_display_name}</td> - </tr>); - } - devicesSection = (<table className="mx_UserSettings_devicesTable"> - <tbody> - {rows} - </tbody> - </table>); - } - if (devicesSection) { - devicesSection = (<div> - <h3>{ _t('Notification targets') }</h3> - { devicesSection } - </div>); - } - - let advancedSettings; - if (externalRules.length) { - advancedSettings = ( - <div> - <h3>{ _t('Advanced notification settings') }</h3> - { _t('There are advanced notifications which are not shown here') }.<br/> - { _t('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply') }. - <ul> - { externalRules } - </ul> - </div> - ); - } - - return ( - <div> - - {masterPushRuleDiv} - - <div className="mx_UserSettings_notifTable"> - - { spinner } - - <div className="mx_UserNotifSettings_tableRow"> - <div className="mx_UserNotifSettings_inputCell"> - <input id="enableDesktopNotifications" - ref="enableDesktopNotifications" - type="checkbox" - checked={ SettingsStore.getValue("notificationsEnabled") } - onChange={ this.onEnableDesktopNotificationsChange } /> - </div> - <div className="mx_UserNotifSettings_labelCell"> - <label htmlFor="enableDesktopNotifications"> - { _t('Enable desktop notifications') } - </label> - </div> - </div> - - <div className="mx_UserNotifSettings_tableRow"> - <div className="mx_UserNotifSettings_inputCell"> - <input id="enableDesktopNotificationBody" - ref="enableDesktopNotificationBody" - type="checkbox" - checked={ SettingsStore.getValue("notificationBodyEnabled") } - onChange={ this.onEnableDesktopNotificationBodyChange } /> - </div> - <div className="mx_UserNotifSettings_labelCell"> - <label htmlFor="enableDesktopNotificationBody"> - { _t('Show message in desktop notification') } - </label> - </div> - </div> - - <div className="mx_UserNotifSettings_tableRow"> - <div className="mx_UserNotifSettings_inputCell"> - <input id="enableDesktopAudioNotifications" - ref="enableDesktopAudioNotifications" - type="checkbox" - checked={ SettingsStore.getValue("audioNotificationsEnabled") } - onChange={ this.onEnableAudioNotificationsChange } /> - </div> - <div className="mx_UserNotifSettings_labelCell"> - <label htmlFor="enableDesktopAudioNotifications"> - { _t('Enable audible notifications in web client') } - </label> - </div> - </div> - - { emailNotificationsRow } - - <div className="mx_UserNotifSettings_pushRulesTableWrapper"> - <table className="mx_UserNotifSettings_pushRulesTable"> - <thead> - <tr> - <th width="55%"></th> - <th width="15%">{ _t('Off') }</th> - <th width="15%">{ _t('On') }</th> - <th width="15%">{ _t('Noisy') }</th> - </tr> - </thead> - <tbody> - - { this.renderNotifRulesTableRows() } - - </tbody> - </table> - </div> - - { advancedSettings } - - { devicesSection } - - </div> - - </div> - ); - } -}); diff --git a/src/header b/src/header index 6d367b04..e80658c1 100644 --- a/src/header +++ b/src/header @@ -1,5 +1,5 @@ /* -Copyright 2017 New Vector Ltd +Copyright 2018 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index edd99017..96702c4d 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -1,32 +1,37 @@ { - "All messages": "كل الرسائل", - "Continue": "استمر", - "Please set a password!": "يرجى تعيين كلمة مرور!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "سيسمح لك هذا بالعودة إلى حسابك بعد الخروج، وتسجيل الدخول على الأجهزة الأخرى.", - "Advanced notification settings": "إعدادات متقدمة للرسائل", - "A new version of Riot is available.": "نسخة جديدة من رايوت متوفرة.", - "All Rooms": "كل الغُرف", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">متصفح سافاري</a> و <a href=\"http://opera.com\">متصفح أوبرا</a> يعملان أيضاً.", - "Add an email address above to configure email notifications": "أضف بريداً إلكترونياً أعلاه من أجل تعديل إعدادت تنبيهات البريد الإلكتروني", - "All messages (noisy)": "كل الرسائل (صوت مرتفع)", - "All notifications are currently disabled for all targets.": "كل التنبيهات غير مفعلة حالياً للجميع.", - "An error occurred whilst saving your email notification preferences.": "حدث خطأ ما خلال حفظ إعدادات التنبيهات للبريد الإلكتروني.", - "Call invitation": "دعوة لمحادثة", - "Cancel": "إلغاء", - "Cancel Sending": "إلغاء الإرسال", - "Can't update user notification settings": "لا يمكن تحديث إعدادات التنبيهات للمستخدم", - "Changelog": "سِجل التغييرات", - "Close": "إغلاق", - "Collapse panel": "طي الجدول", - "Collecting app version information": "إستعادة معلومات النسخة للتطبيق", - "Collecting logs": "إستعادة السجلات", - "Couldn't find a matching Matrix room": "لا يمكن إيجاد غرفة مايتركس متطابقة", - "Custom Server Options": "إعدادات السيرفر خاصة", - "delete the alias.": "إلغاء المُعرف.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "إلغاء مُعرف الغرفة %(alias)s وحذف %(name)s من الدليل؟", - "Describe your problem here.": "صِف مشكلتك هنا.", - "Direct Chat": "دردشة مباشرة", - "Directory": "دليل", - "Dismiss": "صرف النظر", - "Download this file": "تحميل هذا الملف" + "Custom Server Options": "الإعدادات الشخصية للخادوم", + "Dismiss": "تجاهل", + "Riot is not supported on mobile web. Install the app?": "رايوت غير مدعوم في وضعية الويب على الهاتف. هل تريد تثبيت التطبيق ؟", + "Riot Desktop on %(platformName)s": "الواجهة المكتبية لرايوت على %(platformName)s", + "Unknown device": "جهاز مجهول", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s عبر %(browserName)s على %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "تحتاج الى استخدام الاتصال الآمن (HTTPS) للسماح بمشاركة الشاشة.", + "Co-ordination for Riot translators": "التنسيق لمترجمين Riot", + "powered by Matrix": "مشغل بواسطة Matrix", + "Welcome to Riot.im": "مرحبا بك في Riot.im", + "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", + "Implementing VoIP services with Matrix": "تنفيذ خدمات VoIP مع Matrix", + "Discussion of the Identity Service API": "مناقشة واجهة برمجة التطبيقات لخدمة الهوية", + "Support for those using, running and writing other bridges": "دعم لأولئك الذين يستخدمون الجسور الأخرى ويديرونها وكتابتهم", + "Implementing VR services with Matrix": "تنفيذ خدمات الواقع الافتراضي مع Matrix", + "Search the room directory": "ابحث في دليل الغرفة", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "توجد بالفعل الكثير من الغرف في Matrix ، مرتبطة بالشبكات القائمة (Slack، IRC، Gitter الخ) أو مستقلة. تحقق من الدليل!", + "Chat with Riot Bot": "الدردشة مع Riot Bot", + "Get started with some tips from Riot Bot!": "ابدأ ببعض النصائح من Riot Bot!", + "General discussion about Matrix and Riot": "مناقشة عامة حول Matrix و Riot", + "Discussion of all things Matrix!": "مناقشة كل شيء Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & دردشة سطح المكتب", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "تستطيع استخدام الخدما.يمكنك استخدام خيارات الخادم المخصص لتسجيل الدخول إلى خوادم Matrix الأخرى عن طريق تحديد عنوان URL لخادم Home آخر.<br/>هذا يسمح لك باستخدام Riot مع حساب Matrix موجود على خادم منزل مختلف.<br/><br/>يمكنك أيضًا تعيين خادم هوية مخصص ولكنك لن تتمكن من دعوة المستخدمين عن طريق عنوان البريد الإلكتروني ، أو دعوتك عبر عنوان البريد الإلكتروني بنفسك.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "[matrix] تعاون مدعوم مواسطة & دردشة لا مركزية ومشفرة", + "Matrix technical discussions": "مناقشات تقنية Matrix", + "Running Matrix services": "تشغيل خدمات Matrix", + "Community-run support for Synapse": "الدعم المجتمعي لـ Synapse", + "Admin support for Dendrite": "الدعم الاداري لـDendrite", + "Announcements about Synapse releases": "إعلانات حول إصدارات Synaps", + "Create Account": "انشاء حساب", + "Need help?": "بحاجة إلى مساعدة؟", + "Explore rooms": "استكشف غرف المحادثات", + "Room Directory": "دليل غرف المحادثات", + "Sign In": "التسجيل" } diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json new file mode 100644 index 00000000..3a85dd3a --- /dev/null +++ b/src/i18n/strings/az.json @@ -0,0 +1,18 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot mobil qurğular üçün veb-saytın versiyasını dəstəkləmir. Proqramı qurmaq?", + "Riot Desktop on %(platformName)s": "%(platformName)s-da Riot Desktop", + "Unknown device": "Naməlum qurğu", + "You need to be using HTTPS to place a screen-sharing call.": "İş stolunun birgə istifadəsi üçün HTTPS-dan istifadə tələb olunur.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot konfiqurasiyanızda yanlış JSON var. Lütfən, xətanı düzəldin və səhifəni yeniləyin", + "Invalid JSON": "Yanlış JSON", + "Sign In": "Daxil ol", + "Create Account": "Hesab Aç", + "Need help?": "Kömək lazımdır?", + "Chat with Riot Bot": "Riot Bot-la söhbət edin", + "Explore rooms": "Otaqları kəşf edin", + "Your Riot is misconfigured": "Riot yanlış quraşdırılıb", + "Unexpected error preparing the app. See console for details.": "Proqramı başladarkən gözlənilməz xəta. Ətraflı məlumat üçün konsola baxın.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Yanlış konfiqurasiya: default_server_config, default_server_name, və ya default_hs_url-dən yalnız birini təyin etməlisiniz.", + "Invalid configuration: no default server specified.": "Yanlış konfiqurasiya: ilkin server təyin edilməyib.", + "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s-da %(browserName)s ilə %(appName)s" +} diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json index fe8cd434..c9ddc642 100644 --- a/src/i18n/strings/be.json +++ b/src/i18n/strings/be.json @@ -1,75 +1,5 @@ { - "Add an email address above to configure email notifications": "Дадайце адрас электроннай пошты вышэй, каб наладзіць апавяшчэнні", - "All messages": "Усе паведамленні", - "All messages (noisy)": "Усе паведамленні (гучна)", - "All notifications are currently disabled for all targets.": "Усе апавяшчэнні ў цяперашні час адключаныя для ўсіх мэтаў.", - "An error occurred whilst saving your email notification preferences.": "Адбылася памылка падчас захавання налады апавяшчэнняў па электроннай пошце.", - "Cancel Sending": "Адмяніць адпраўку", - "Can't update user notification settings": "Немагчыма абнавіць налады апавяшчэнняў карыстальніка", - "Close": "Зачыніць", - "Couldn't find a matching Matrix room": "Не атрымалася знайсці адпаведны пакой Matrix", "Custom Server Options": "Карыстальніцкія параметры сервера", - "delete the alias.": "выдаліць псеўданім.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Выдаліць псеўданім пакоя %(alias)s і выдаліць %(name)s з каталога?", - "Direct Chat": "Прамы чат", - "Directory": "Каталог", "Dismiss": "Aдхіліць", - "Download this file": "Спампаваць гэты файл", - "Enable audible notifications in web client": "Ўключыць гукавыя апавяшчэнні ў вэб-кліенце", - "Enable desktop notifications": "Ўключыць апавяшчэнні на працоўным стале", - "Enable email notifications": "Ўключыць паведамлення па электроннай пошце", - "Enable notifications for this account": "Ўключыць апавяшчэнні для гэтага ўліковага запісу", - "Enable them now": "Уключыць іх зараз", - "Enter keywords separated by a comma:": "Калі ласка, увядзіце ключавыя словы, падзеленыя коскамі:", - "Error": "Памылка", - "Error saving email notification preferences": "Памылка захавання налад апавяшчэнняў па электроннай пошце", - "#example": "#прыклад", - "Failed to add tag %(tagName)s to room": "Не атрымалася дадаць %(tagName)s ў пакоі", - "Failed to change settings": "Не атрымалася змяніць налады", - "Failed to forget room %(errCode)s": "Не атрымалася забыць пакой %(errCode)s", - "Failed to update keywords": "Не атрымалася абнавіць ключавыя словы", - "Failed to get protocol list from Home Server": "Не ўдалося атрымаць спіс пратаколаў ад хатняга сервера", - "Failed to get public room list": "Не ўдалося атрымаць спіс агульных пакояў", - "Failed to remove tag %(tagName)s from room": "Не ўдалося выдаліць %(tagName)s з пакоя", - "Failed to set direct chat tag": "Не ўдалося ўсталяваць тэг прамога чата", - "Failed to set Direct Message status of room": "Не ўдалося ўсталяваць статут прамога паведамлення пакою", - "Favourite": "Улюбёнае", - "Fetching third party location failed": "Не ўдалося атрымаць месцазнаходжанне трэцяга боку", - "Files": "Файлы", - "Filter room names": "Фільтр iмёнаў пакояў", - "Forget": "Забыць", - "Guests can join": "Госці могуць далучыцца", - "Invite to this room": "Запрасіць у гэты пакой", - "Keywords": "Ключавыя словы", - "Leave": "Пакінуць", - "Low Priority": "Нізкі прыярытэт", - "Members": "Удзельнікі", - "Mentions only": "Толькі згадкі", - "Mute": "Без гуку", - "No rooms to show": "Няма пакояў для паказу", - "Noisy": "Шумна", - "Notification targets": "Мэты апавяшчэння", - "Notifications": "Апавяшчэнні", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Апавяшчэнні па наступных ключавых словах прытрымліваюцца правілаў, якія не могуць быць адлюстраваны тут", - "Notify for all other messages/rooms": "Апавяшчаць для ўсіх іншых паведамленняў/пакояў", - "Notify me for anything else": "Паведаміць мне што-небудзь яшчэ", - "Off": "Выключыць", - "On": "Уключыць", - "Operation failed": "Не атрымалася выканаць аперацыю", - "Permalink": "Пастаянная спасылка", - "powered by Matrix": "працуе на Matrix", - "Quote": "Цытата", - "Reject": "Адхіліць", - "Remove %(name)s from the directory?": "Выдаліць %(name)s з каталога?", - "Remove": "Выдалiць", - "remove %(name)s from the directory.": "выдаліць %(name)s з каталога.", - "Remove from Directory": "Выдалiць з каталога", - "Resend": "Паўторна", - "Riot does not know how to join a room on this network": "Riot не ведае, як увайсці ў пакой у гэтай сетке", - "Room not found": "Пакой не знойдзены", - "Search for a room": "Пошук па пакоі", - "Source URL": "URL-адрас крыніцы", - "The Home Server may be too old to support third party networks": "Хатні сервер можа быць занадта стары для падтрымкі іншых сетак", - "There are advanced notifications which are not shown here": "Ёсць пашыраныя апавяшчэння, якія не паказаныя тут", - "The server may be unavailable or overloaded": "Сервер можа быць недаступны ці перагружаны" + "powered by Matrix": "працуе на Matrix" } diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json new file mode 100644 index 00000000..095dd4fd --- /dev/null +++ b/src/i18n/strings/bg.json @@ -0,0 +1,54 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot не поддържа мобилен уеб браузър. Инсталиране на приложението?", + "Riot Desktop on %(platformName)s": "Riot Desktop под %(platformName)s", + "Unknown device": "Непознато устройство", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s в %(browserName)s под %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Трябва да използвате HTTPS, за да споделите екрана си.", + "Custom Server Options": "Потребителски опции за сървър", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Може да използвате опциите за друг сървър, за да влезете в други Matrix сървъри като посочите различен Home сървър.<br/>Това Ви позволява да използвате Riot със съществуващ Matrix профил на различен Home сървър.<br/><br/> Възможно е и да зададете друг сървър за самоличност. В този случай обаче няма да бъде възможно да поканите други потребители по имейл адрес, както и самите Вие няма да можете да бъдете поканени по имейл адрес.", + "Dismiss": "Затвори", + "powered by Matrix": "базирано на Matrix", + "Welcome to Riot.im": "Добре дошли в Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализиран, шифрован чат и съвместна работа, базирани на [matrix]", + "Search the room directory": "Търсене в директорията със стаи", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix съществуват много стаи, свързани към вече съществуващи мрежи (Slack, IRC, Gitter и т.н.) или независими такива. Разгледайте директорията!", + "Chat with Riot Bot": "Чати с Riot Bot", + "Get started with some tips from Riot Bot!": "Започнете с някои съвети от Riot Bot!", + "General discussion about Matrix and Riot": "Обща дискусия относно Matrix и Riot", + "Discussion of all things Matrix!": "Дискусия за всичко свързано с Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop чат", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk чат", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk чат", + "Matrix technical discussions": "Технически дискусии в Matrix", + "Running Matrix services": "Хостинг на Matrix услуги", + "Community-run support for Synapse": "Поддръжка за Synapse от общността", + "Admin support for Dendrite": "Административна поддръжка за Dendrite", + "Announcements about Synapse releases": "Обявления за нови версии на Synapse", + "Support for those using and running matrix-appservice-irc": "Поддръжка за използващите и работещите с matrix-appservice-irc", + "Building services on Matrix": "Разработка на услуги в Matrix", + "Support for those using the Matrix spec": "Поддръжка за използващите Matrix спецификацията", + "Design and implementation of E2E in Matrix": "Разработване и внедряване на E2E шифроване в Matrix", + "Implementing VR services with Matrix": "Внедряване на VR услуги с Matrix", + "Implementing VoIP services with Matrix": "Внедряване на VoIP услуги с Matrix", + "Discussion of the Identity Service API": "Дискусия върху API услугата за самоличност", + "Support for those using, running and writing other bridges": "Поддръжка за тези, които използват, работят и пишат Matrix мостове", + "Contributing code to Matrix and Riot": "Допринасяне с код към Matrix и Riot", + "Dev chat for the Riot/Web dev team": "Чат за разработващия екип на Riot/Web", + "Dev chat for the Dendrite dev team": "Чат за разработващия екип на Dendrite", + "Co-ordination for Riot translators": "Координация за преводачи на Riot", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Може да настроите и собствен сървър за самоличност, но така няма да можете да каните потребители по имейл адрес или да бъдете поканени посредством вашия имейл адрес.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Може да използвате настройките за собствен сървър за да влезете в друг Matrix сървър, чрез указване на адреса му. Това ви позволява да използвате Riot със съществуващ Matrix акаунт, принадлежащ към друг сървър.", + "Sign In": "Вписване", + "Create Account": "Създай акаунт", + "Need help?": "Нужда от помощ?", + "Explore rooms": "Открий стаи", + "Room Directory": "Директория със стаи", + "Unexpected error preparing the app. See console for details.": "Неочаквана грешка при подготвянето на приложението. Вижте конзолата за подробности.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Невалидна конфигурация: може да е указано само едно от: default_server_config, default_server_name, или default_hs_url.", + "Invalid configuration: no default server specified.": "Невалидна конфигурация: не е указан сървър по подразбиране.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Тази инсталация на Riot изглежда няма валидна конфигурация за сървър. Ако сте администраторът, моля поправете грешката по-долу", + "Your Riot is misconfigured": "Riot не е конфигуриран правилно", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot конфигурацията ви съдържа невалиден JSON. Коригирайте проблема и презаредете страницата.", + "The message from the parser is: %(message)s": "Грешката от парсъра е: %(message)s", + "Invalid JSON": "Невалиден JSON" +} diff --git a/src/i18n/strings/bn_IN.json b/src/i18n/strings/bn_IN.json index 0967ef42..e2c37d43 100644 --- a/src/i18n/strings/bn_IN.json +++ b/src/i18n/strings/bn_IN.json @@ -1 +1,3 @@ -{} +{ + "Riot is not supported on mobile web. Install the app?": "মোবাইল ওয়েব রায়ট সমর্থন করে না. অ্য়াপ টি ইনস্টল করতে চান?" +} diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index e267d3ef..78173e06 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -1,199 +1,16 @@ { - "A new version of Riot is available.": "Hi ha una nova versió del Riot disponible.", - "All messages": "Tots els missatges", - "Cancel": "Cancel·la", - "Close": "Tanca", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s per a %(osName)s", - "Failed to change password. Is your password correct?": "Hi ha hagut un error al canviar la vostra contrasenya. És correcte la vostra contrasenya?", - "Continue": "Continua", - "All Rooms": "Totes les sales", - "Couldn't find a matching Matrix room": "No s'ha pogut trobar una sala de Matrix que coincideixi", - "Failed to add tag %(tagName)s to room": "No s'ha pogut afegir l'etiqueta %(tagName)s a la sala", - "Failed to forget room %(errCode)s": "No s'ha pogut oblidar la sala %(errCode)s", - "Failed to get public room list": "No s'ha pogut obtenir el llistat de sales públiques", - "Failed to remove tag %(tagName)s from room": "No s'ha pogut esborrar l'etiqueta %(tagName)s de la sala", - "Filter room names": "Filtra els noms de les sales", - "Couldn't load home page": "No s'ha pogut carregar la pàgina d'inici", - "All messages (noisy)": "Tots els missatges (sorollós)", - "Mentions only": "Només mencions", - "Mute": "Silencia", - "Direct Chat": "Xat directe", - "Directory": "Directori", - "Failed to set direct chat tag": "No s'ha pogut establir l'etiqueta del xat directe", - "Invite to this room": "Convida a aquesta sala", - "No rooms to show": "No hi ha cap sala per a mostrar", - "Riot does not know how to join a room on this network": "El Riot no sap com unir-se a una sala en aquesta xarxa", - "Room not found": "No s'ha trobat la sala", - "Unnamed room": "Sala sense nom", - "#example": "#exemple", - "Failed to change settings": "No s'han pogut modificar els paràmetres", - "Enable audible notifications in web client": "Habilita les notificacions d'àudio al client web", - "Enable desktop notifications": "Habilita les notificacions d'escriptori", - "Enable email notifications": "Habilita les notificacions per correu electrònic", - "Enable notifications for this account": "Habilita les notificacions per aquest compte", - "Low Priority": "Baixa prioritat", - "Members": "Membres", - "Changelog": "Registre de canvis", - "Describe your problem here.": "Descriu aquí el teu problema.", - "Download this file": "Descarrega aquest fitxer", - "Enable them now": "Habilita-ho ara", - "Error": "Error", - "Favourite": "Favorit", - "Files": "Fitxers", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "També funcionen el <a href=\"http://apple.com/safari\">Safari</a> i l'<a href=\"http://opera.com\">Opera</a>.", - "Add an email address above to configure email notifications": "Afegiu més amunt un correu electrònic per a configurar les notificacions", - "Advanced notification settings": "Paràmetres avançats de notificacions", - "All notifications are currently disabled for all targets.": "Actualment totes les notificacions estan inhabilitades per a tots els objectius.", - "An error occurred whilst saving your email notification preferences.": "S'ha produït un error en desar les vostres preferències de notificació per correu electrònic.", - "Bug report sent": "S'ha enviat l'informe d'error", - "Call invitation": "Invitació de trucada", - "Can't update user notification settings": "No es poden actualitzar els paràmetres de les notificacions de l'usuari", - "Collecting app version information": "S'està recollint la informació de la versió de l'aplicació", - "Collecting logs": "S'estan recopilant els registres", "Custom Server Options": "Opcions de servidor personalitzat", "Dismiss": "Omet", - "Enter keywords separated by a comma:": "Introduïu les paraules clau separades per una coma:", - "Login": "Inicia sessió", - "Leave": "Surt", - "Messages containing <span>keywords</span>": "Missatges que contenen <span>keywords</span>", - "Messages containing my user name": "Missatges que contenen el meu nom d'usuari", - "Messages in group chats": "Missatges en xats de grup", - "Messages containing my display name": "Missatges que contenen el meu nom visible", - "Messages in one-to-one chats": "Missatges en xats un a un", - "Messages sent by bot": "Missatges enviats pel bot", - "more": "més", - "Noisy": "Sorollós", - "Notification targets": "Objectius de les notificacions", - "Notifications": "Notificacions", - "Notify me for anything else": "Notifica'm per a qualsevol altra cosa", - "Notify for all other messages/rooms": "Notifica per a tots els altres missatges o sales", - "Off": "Apagat", - "On": "Engegat", - "Permalink": "Enllaç permanent", - "Remove": "Elimina", - "remove %(name)s from the directory.": "elimina %(name)s del directori.", - "Remove from Directory": "Elimina del directori", - "Report a bug": "Informa d'una errada", - "Resend": "Reenvia", - "Search…": "Cerca…", - "Send": "Envia", - "Source URL": "URL origen", - "The server may be unavailable or overloaded": "El servidor pot no estar disponible o sobrecarregat", - "This Room": "Aquesta sala", - "Unavailable": "No disponible", "Unknown device": "Dispositiu desconegut", - "unknown error code": "codi d'error desconegut", - "What's New": "Novetats", - "What's new?": "Què hi ha de nou?", - "Waiting for response from server": "S'està esperant una resposta del servidor", - "You cannot delete this image. (%(code)s)": "No podeu eliminar aquesta imatge. (%(code)s)", - "You cannot delete this message. (%(code)s)": "No podeu eliminar aquest missatge. (%(code)s)", - "You are not receiving desktop notifications": "No esteu rebent notificacions d'escriptori", - "Thank you!": "Gràcies!", - "Sunday": "Diumenge", - "Monday": "Dilluns", - "Tuesday": "Dimarts", - "Wednesday": "Dimecres", - "Thursday": "Dijous", - "Friday": "Divendres", - "Saturday": "Dissabte", - "Today": "Avui", - "Yesterday": "Ahir", - "OK": "D'acord", - "Warning": "Avís", - "Checking for an update...": "Comprovant si hi ha actualitzacions...", - "No update available.": "No hi ha cap actualització disponible.", - "Downloading update...": "Descarregant l'actualització...", - "Welcome to Riot.im": "Benvingut a Riot.im", + "Welcome to Riot.im": "Us donem la benvinguda a Riot.im", "Chat with Riot Bot": "Conversa amb el Bot de Riot", - "Back": "Enrere", - "Cancel Sending": "Cancel·la l'enviament", - "Collapse panel": "Col·lapsa el tauler", - "Developer Tools": "Eines de desenvolupador", - "Riot is not supported on mobile web. Install the app?": "Riot no és compatible amb la web per a mòbils. Voleu instal·lar l'aplicació per a mòbils?", - "Uploading report": "S'està enviant l'informe", + "Riot is not supported on mobile web. Install the app?": "El Riot no és compatible amb la web per a mòbils. Voleu instal·lar l'aplicació per a mòbils?", "Riot Desktop on %(platformName)s": "Riot d'escriptori per a %(platformName)s", "You need to be using HTTPS to place a screen-sharing call.": "Heu d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.", - "When I'm invited to a room": "Quan sóc convidat a una sala", - "Error saving email notification preferences": "No s'han pogut desar les preferències de les notificacions a causa d'un error", - "Keywords": "Paraules clau", - "Operation failed": "No s'ha pogut realitzar l'operació", - "Failed to update keywords": "No s'han pogut actualitzar les paraules clau", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notificacions sobre les següents paraules clau segueixen regles que no es poden mostrar aquí:", - "Unable to fetch notification target list": "No s'ha pogut obtenir la llista d'objectius de les notificacions", - "There are advanced notifications which are not shown here": "Hi ha notificacions avançades que no es mostren aquí", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "És possible que els hàgiu configurat en un client diferent de Riot. No podeu modificar-los amb Riot, però encara s'apliquen", - "Show message in desktop notification": "Mostra els missatges amb notificacions d'escriptori", - "Search": "Cerca", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Podeu utilitzar opcions de servidor personalitzades per iniciar sessió en altres servidors Matrix especificant una URL diferent a la del servidor principal. <br/> Això us permet utilitzar Riot amb un compte de Matrix existent en un servidor d'origen diferent. <br/> <br/> També podeu establir un servidor d'identitat personalitzat, però no podreu convidar o ser convidat per correu electrònic.", "powered by Matrix": "amb tecnologia de Matrix", - "Update": "Actualització", - "Appear Offline": "Apareix sense connexió", - "Away": "Absent", - "To return to your account in future you need to <u>set a password</u>": "Per poder tornar al vostre compte en un futur, heu de <u>set a password</u>", - "Set Password": "Establiu una contrasenya", - "Error encountered (%(errorDetail)s).": "S'ha trobat un error (%(errorDetail)s).", - "Uploaded on %(date)s by %(user)s": "Pujat el %(date)s per l'usuari %(user)s", - "Please describe the bug and/or send logs.": "Si us plau, descriviu l'error i/o envia els registres.", - "Loading bug report module": "S'està carregant l'informe del modul", - "Failed to send report: ": "No s'ha pogut enviar l'informe ", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Si us plau, descriviu l'error. Què heu fet, què esperàveu que passes i què sembla haver passat?", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Amb aquest informe d'error, alguns registres d'aquesta aplicació s'enviaran també per tal de fer un diagnostic del problema. Si preferiu enviar només el text anterior, desseleccioneu:", - "Send logs": "Envia els registres", - "Send Custom Event": "Envia els esdeveniments personalitzats", - "You must specify an event type!": "Heu d'especificar un tipus d'esdeveniment", - "Event sent!": "S'ha enviat l'esdeveniment", - "Failed to send custom event.": "No s'ha pogut enviar l'esdeveniment personalitzat.", - "Event Type": "Tipus d'esdeveniment", - "State Key": "Clau d'estat", - "Event Content": "Contingut de l'esdeveniment", - "Send Account Data": "Envia les dades del compte", - "Filter results": "Resultats del filtre", - "Explore Room State": "Esbrina els estats de les sales", - "Edit": "Edita", - "Explore Account Data": "Explora les dades del compte", - "Toolbox": "Caixa d'eines", - "You have successfully set a password!": "Heu establert correctament la contrasenya", - "You have successfully set a password and an email address!": "Heu establert correctament la vostra contrasenya i l'adreça de correu electrònic", - "You can now return to your account after signing out, and sign in on other devices.": "Ara podreu tornar a entrar al vostre compte des de altres dispositius.", - "Remember, you can always set an email address in user settings if you change your mind.": "Recordeu-ho, si canvieu d'idea, sempre podreu establir una adreça de correu electrònic a las vostra configuració d'usuari.", - "(HTTP status %(httpStatus)s)": "(Estat de l´HTTP %(httpStatus)s)", - "Please set a password!": "Si us plau, establiu una contrasenya", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Això farà possible que pugueu tronar al vostre compte des de qualsevol dispositiu.", - "Forward Message": "Reenvia el missatge", - "Unpin Message": "Desenganxa el missatge", - "Pin Message": "Enganxa el missatge", - "View Source": "Mostra el codi", - "View Decrypted Source": "Mostra el codi desencriptat", - "Unhide Preview": "Mostra la previsualització", - "Quote": "Cita", - "Failed to set Direct Message status of room": "No s'ha pogut establir l'estat del missatge directe de la sala", - "Forget": "Oblida", - "Reject": "Rebutja", - "Sorry, your browser is <b>not</b> able to run Riot.": "Disculpeu, el seu navegador <b>not</b> pot executar Riot.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilitza moltes funcions avançades del navegador, algunes de les quals no estan disponibles o són experimentals al vostre navegador actual.", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Si us plau, instal·leu <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> per gaudir d'una millor experiència.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> i <operaLink>Opera</operaLink> també fan la feina.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Amb el vostre navegador actual, l'aparença de l'aplicació pot ser completament incorrecta i algunes o totes les funcions poden no funcionar correctament. Si voleu provar-ho de totes maneres, podeu continuar, però esteu sols pel que fa als problemes que pugueu trobar!", - "I understand the risks and wish to continue": "Entenc el riscos i desitjo continuar", - "Register": "Registre", - "Rooms": "Sales", - "Hide panel": "Amaga el panel", - "Invite to this community": "Convida a aquesta comunitat", - "Add rooms to this community": "Afegeix sales a aquesta comunitat", - "Failed to get protocol list from Home Server": "No s'ha pogut obtenir la llista de protocols del servidor local", - "The Home Server may be too old to support third party networks": "El servidor local pot ser massa antic per a ser compatible amb xarxes de tercers", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Voleu esborrar de la sala l'alies %(alias)s i retirar %(name)s del directori?", - "Remove %(name)s from the directory?": "Voleu retirar %(name)s del directori?", - "delete the alias.": "esborra l'alies.", - "Unable to join network": "No s'ha pogut unir-se a la xarxa", - "Fetching third party location failed": "S'ha produït un error en obtenir la ubicació de tercers", - "Unable to look up room ID from server": "No s'ha pogut cercar l'ID de la sala en el servidor", - "World readable": "Llegible al món", - "Guests can join": "Els usuaris d'altres xarxes s'hi poden unir", - "Search for a room": "Busca una sala", - "Expand panel": "Expandeix el panel", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Xat descentralitzat, encriptat & col·laboració amb tecnologia de [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Xat descentralitzat, encriptat i col·laboratiu amb tecnologia de [matrix]", "Search the room directory": "Cerqueu el directori de sales", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Ja existeixen moltes sales a Matrix vinculades a xarxes existents (Slack, IRC, Gitter, etc.) o independents. Feu un cop d'ull al directori!", "Get started with some tips from Riot Bot!": "Comenceu amb alguns consells de Riot Bot!", @@ -203,21 +20,28 @@ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & Xat de matrix-ios-sdk", "Riot/Android & matrix-android-sdk chat": "Riot/Android & Xat matrix-android-sdk", "Matrix technical discussions": "Debats tècnics sobre Matrix", - "Reply": "Respon", "Running Matrix services": "Serveis de Matrix en marxa", - "Community-run support for Synapse": "Suport de la comunitat per a Synapse", - "Admin support for Dendrite": "Suport dels administrador per a Dendrite", + "Community-run support for Synapse": "Suport comunitari per a Synapse", + "Admin support for Dendrite": "Suport dels administradors per a Dendrite", "Announcements about Synapse releases": "Anuncis sobre llançaments de Synapse", "Support for those using and running matrix-appservice-irc": "Suport per a aquells que utilitzen i executen matrix-appservice-irc", - "Building services on Matrix": "Construir serveis a Matrix", - "Support for those using the Matrix spec": "Suport per a aquells que utilitzen l'especificació Matrix", + "Building services on Matrix": "Construcció de serveis a Matrix", + "Support for those using the Matrix spec": "Suport per a aquells que utilitzen l'especificació de Matrix", "Design and implementation of E2E in Matrix": "Disseny i implementació de l'E2E a Matrix", "Implementing VR services with Matrix": "Implementació de serveis VR amb Matrix", "Implementing VoIP services with Matrix": "Implementació de serveis VoIP amb Matrix", - "Discussion of the Identity Service API": "Debat sobre l'API Identity Service", + "Discussion of the Identity Service API": "Discussió sobre l'API Identity Service", "Support for those using, running and writing other bridges": "Suport per a aquells que utilitzen, executen i escriuen altres ponts", - "Contributing code to Matrix and Riot": "Contribuir amb codi a Matrix i Riot", - "Dev chat for the Riot/Web dev team": "Xat de l'equip de desenvolupadors Riot/Web per a desenvolupadors", + "Contributing code to Matrix and Riot": "Contribuir codi a Matrix i Riot", + "Dev chat for the Riot/Web dev team": "Xat de l'equip de desenvolupadors Riot/Web", "Dev chat for the Dendrite dev team": "Xat de l'equip Dendrite per a desenvolupadors", - "Co-ordination for Riot/Web translators": "Coordinació per a traductors de Riot/Web" + "Co-ordination for Riot translators": "Coordinació dels traductors del Riot", + "Create Account": "Crea un compte", + "Need help?": "Necessiteu ajuda?", + "Explore rooms": "Exploreu les sales", + "Room Directory": "Directori de sales", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Podeu emprar les opcions personalitzades del servidor per iniciar la sessió en altres servidors de Matrix especificant un URL de servidor personal diferent. Això us permet emprar el Riot amb un compte de Matrix existent en un servidor personal diferent.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "També podeu establir un servidor d'identitat personalitzat, però no podreu convidar usuaris o ser convidats vosaltres mateixos per adreça de correu electrònic.", + "Sign In": "Inicia la sessió", + "Invalid configuration: no default server specified.": "Configuració no vàlida: no s'ha especificat cap servidor per defecte." } diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index a92c01d7..a2ab2af4 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -1,150 +1,10 @@ { - "Close": "Zavřít", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> a <a href=\"http://opera.com\">Opera</a> fungují také.", - "A new version of Riot is available.": "Je dostupná nová verze Riotu.", - "Notifications": "Upozornění", - "Search": "Hledání", - "All Rooms": "Všechny místnosti", - "Files": "Soubory", - "Filter room names": "Filtrovat místnosti dle názvu", - "Forward Message": "Přeposlat zprávu", - "Invite to this room": "Pozvat do této místnosti", - "Members": "Členové", - "Permalink": "Trvalý odkaz", - "Search…": "Vyhledat…", - "This Room": "Tato místnost", - "View Source": "Zobrazit zdroj", - "Login": "Přihlásit", - "Advanced notification settings": "Pokročilé nastavení upozornění", - "All messages": "Všechny zprávy", - "Cancel": "Storno", - "Changelog": "Seznam změn", - "Describe your problem here.": "Popište zde svůj problém.", - "Direct Chat": "Přímý chat", - "Directory": "Adresář", - "Download this file": "Stáhnout tento soubor", - "Error": "Chyba", - "Failed to change settings": "Nepodařilo se změnit nastavení", - "Failed to get public room list": "Nepodařilo se získat seznam veřejných místností", - "Favourite": "V oblíbených", - "Guests can join": "Hosté mohou vstoupit", - "Hide panel": "Skrýt panel", - "I understand the risks and wish to continue": "Rozumím rizikům a přeji si pokračovat", - "Keywords": "Klíčová slova", - "Leave": "Odejít", - "Loading bug report module": "Nahrává se modul nahlašování chyb", - "Low Priority": "Nízká priorita", - "Mentions only": "Pouze zmínky", - "Messages containing my display name": "Zprávy obsahující mé zobrazované jméno", - "Messages containing <span>keywords</span>": "Zprávy obsahující <span>klíčová slova</span>", - "Messages containing my user name": "Zprávy obsahující mé uživatelské jméno", - "Messages in group chats": "Zprávy ve skupinových chatech", - "Messages sent by bot": "Zprávy poslané robotem", - "more": "více", - "Mute": "Ztlumit", - "All messages (noisy)": "Všechny zprávy (hlasitě)", - "Couldn't load home page": "Nepodařilo se nahrát úvodní stránku", - "All notifications are currently disabled for all targets.": "Veškeré notifikace jsou aktuálně pro všechny cíle vypnuty.", - "Cancel Sending": "Zrušit odesílání", - "Can't update user notification settings": "Nelze aktualizovat uživatelské nastavení upozornění", - "delete the alias.": "smazat alias.", - "Set Password": "Nastavit heslo", - "You have successfully set a password and an email address!": "Úspěšně jste si nastavili heslo a e-mailovou adresu!", - "Remember, you can always set an email address in user settings if you change your mind.": "Vězte, že kdybyste si to rozmysleli, e-mailovou adresu můžete kdykoliv doplnit v uživatelském nastavení.", - "Continue": "Pokračovat", - "Please set a password!": "Prosím nastavte si heslo!", - "You have successfully set a password!": "Úspěšně jste si nastavili heslo!", - "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Zadáváte své heslo správně?", - "No update available.": "Není dostupná žádná aktualizace.", - "Downloading update...": "Stahování aktualizace...", "Welcome to Riot.im": "Vítá vás Riot.im", - "Enable desktop notifications": "Zapnout upozornění na ploše", - "Enable email notifications": "Zapnout upozornění přes e-mail", - "Enable notifications for this account": "Zapnout upozornění na tomto účtu", - "#example": "#příklad", - "Off": "Vypnout", - "On": "Zapnout", - "Operation failed": "Operace se nezdařila", - "Remove %(name)s from the directory?": "Odebrat %(name)s z adresáře?", - "Remove": "Odebrat", - "remove %(name)s from the directory.": "odebrat %(name)s z adresáře.", - "Remove from Directory": "Odebrat z adresáře", - "Report a bug": "Nahlásit chybu", - "Resend": "Poslat znovu", - "Room not found": "Místnost nenalezena", - "Search for a room": "Hledat místnost", - "Send": "Odeslat", - "Send logs": "Odeslat záznamy", - "Source URL": "Zdrojová URL", - "The server may be unavailable or overloaded": "Server může být nedostupný nebo přetížený", - "Unable to join network": "Nelze se připojit k síti", - "Unable to look up room ID from server": "Nelze získat ID místnosti ze serveru", - "Unavailable": "Nedostupné", "Unknown device": "Neznámé zařízení", - "unknown error code": "neznámý kód chyby", - "Unnamed room": "Nepojmenovaná místnost", - "Update": "Aktualizace", - "What's New": "Co je nového", - "What's new?": "Co je nového?", - "Waiting for response from server": "Čekám na odezvu ze serveru", - "You cannot delete this image. (%(code)s)": "Tento obrázek nemůžete smazat. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Tuto zprávu nemůžete smazat. (%(code)s)", - "You are not receiving desktop notifications": "Nedostáváte upozornění na desktopu", - "Sunday": "Neděle", - "Monday": "Pondělí", - "Tuesday": "Úterý", - "Wednesday": "Středa", - "Thursday": "Čtvrtek", - "Friday": "Pátek", - "Saturday": "Sobota", - "Today": "Dnes", - "Yesterday": "Včera", - "OK": "OK", - "Warning": "Upozornění", - "Checking for an update...": "Kontrola aktualizací...", - "An error occurred whilst saving your email notification preferences.": "Při ukládání nastavení e-mailových upozornění nastala chyba.", - "Collecting app version information": "Sbírání informací o verzi aplikace", - "Collecting logs": "Sbírání logů", - "Couldn't find a matching Matrix room": "Odpovídající Matrix místost nenalezena", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Smazat alias místnosti %(alias)s a odstranit %(name)s z adresáře?", - "Enable audible notifications in web client": "Povolit zvuková upozornění ve webové aplikaci", - "Enable them now": "Povolit nyní", - "Enter keywords separated by a comma:": "Vložte klíčová slova oddělená čárkou:", - "Error saving email notification preferences": "Chyba při ukládání nastavení e-mailových upozornění", - "Failed to add tag %(tagName)s to room": "Nepodařilo se přidat štítek %(tagName)s k místnosti", - "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s", - "Failed to update keywords": "Nepodařilo se aktualizovat klíčová slova", - "Failed to get protocol list from Home Server": "Z domovského serveru se nepodařilo získat seznam protokolů", - "Failed to remove tag %(tagName)s from room": "Nepodařilo se odstranit štítek %(tagName)s z místnosti", - "Failed to send report: ": "Nepodařilo se odeslat hlášení: ", - "Forget": "Zapomenout", - "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Kvůli diagnostice budou spolu s tímto hlášením o chybě odeslány i záznamy z klienta. Chcete-li odeslat pouze text výše, prosím odškrtněte:", - "No rooms to show": "Žádné místnosti k zobrazení", - "Notify for all other messages/rooms": "Upozorni na všechny ostatní zprávy/místnosti", - "Notify me for anything else": "Upozorni mě na cokoliv jiného", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Prosím popište chybu. Co jste dělal/a? Co jste čekal/a, že se stane? Co se stalo?", - "Please describe the bug and/or send logs.": "Prosím popište chybu a/nebo pošlete záznamy.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Prosím nainstalujte si <a href=\"https://www.google.com/chrome\">Chrome</a> nebo <a href=\"https://getfirefox.com\">Firefox</a> pro nejlepší zážitek.", - "Quote": "Citace", - "Reject": "Odmítnout", - "Riot does not know how to join a room on this network": "Riot neví, jak vstoupit do místosti na této síti", "Riot is not supported on mobile web. Install the app?": "Riot není podporovaný na mobilním webu. Nainstalovat aplikaci?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot používá mnoho pokročilých funkcí, z nichž některé jsou ve vašem současném prohlížeči nedostupné nebo experimentální.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Omlouváme se, váš prohlížeč <b>není</b> schopný spustit Riot.", - "There are advanced notifications which are not shown here": "Jsou k dispozici pokročilá upozornění, která zde nejsou zobrazena", - "Unhide Preview": "Zobrazit náhled", - "Uploaded on %(date)s by %(user)s": "Nahráno %(date)s uživatelem %(user)s", - "Uploading report": "Nahrávám hlášení", - "View Decrypted Source": "Zobrazit dešifrovaný zdroj", - "When I'm invited to a room": "Pokud jsem pozván do místnosti", - "World readable": "Světu čitelné", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Snad jste je nastavili v jiném klientu než Riot. V Riotu je nemůžete upravit, ale přesto platí", - "Error encountered (%(errorDetail)s).": "Nastala chyba (%(errorDetail)s).", "You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Vzhled a chování aplikace může být ve vašem aktuální prohlížeči nesprávné a některé nebo všechny funkce mohou být chybné. Chcete-li i přes to pokračovat, nebudeme vám bránit, ale se všemi problémy, na které narazíte, si musíte poradit sami!", "Search the room directory": "Prohledat adresář místností", - "Chat with Riot Bot": "Chatujte s Riot Botem", + "Chat with Riot Bot": "Konverzovat s Riot Botem", "Get started with some tips from Riot Bot!": "Začněte s radami od Riot Bota!", "General discussion about Matrix and Riot": "Obecná diskuse o Matrixu a Riotu", "Discussion of all things Matrix!": "Diskuse o všem okolo Matrixu!", @@ -154,16 +14,9 @@ "Announcements about Synapse releases": "Oznámení o vydáních Synapse", "Support for those using and running matrix-appservice-irc": "Podpora pro používání matrix-appservice-irc", "Building services on Matrix": "Stavění služeb na Matrixu", - "Add an email address above to configure email notifications": "Abyste mohli nastavovat e-mailová upozornění, musíte uvést svoji e-mailovou adresu v kolonce výše", - "Call invitation": "Pozvánka k hovoru", - "Collapse panel": "Sbalit panel", "Dismiss": "Zahodit", - "Expand panel": "Rozbalit panel", - "Failed to set direct chat tag": "Nepodařilo se nastavit štítek přímého chatu", - "Failed to set Direct Message status of room": "Nepodařilo se přiřadit místnosti status Přímé zprávy", "powered by Matrix": "poháněno Matrixem", "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", - "The Home Server may be too old to support third party networks": "Tento domovský server může být příliš zastaralý na to, aby podporoval sítě třetích stran", "Admin support for Dendrite": "Správcovská podpora pro Dendrite", "Support for those using the Matrix spec": "Podpora pro uživatele Matrix specifikace", "Design and implementation of E2E in Matrix": "Návrh a implementace E2E v Matrixu", @@ -173,53 +26,21 @@ "Contributing code to Matrix and Riot": "Přispívaní kódem do Matrixu a Riotu", "Dev chat for the Riot/Web dev team": "Chat vývojového týmu Riot/Web", "Dev chat for the Dendrite dev team": "Chat vývojového týmu Dendrite", - "Co-ordination for Riot/Web translators": "Součinnost překladatelů Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "V Matrixu je spousta samostatných, nebo s jinými sítěmi (Slack, IRC, Gitter aj.) propojených místností. Prohlédněte si jejich adresář!", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s přes %(browserName)s na %(osName)s", - "customServer_text": "Ve vlastních serverových volbách se můžete přihlásit na ostatní Matrix servery, a to tak, že určíte URL jiného domovského serveru.<br/>To znamená, že můžete používat Riot s již existujícím Matrix účtem na jiném domovském serveru.<br/><br/>Taky můžete nastavit vlastní server identity, pak ale nebudete moci zvát ostatní nebo naopak být ostatními zván prostřednictvím e-mailové adresy.", "Custom Server Options": "Vlastní serverové volby", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]", "Riot/Web & Desktop chat": "Riot/Web a Desktop chat", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS a matrix-ios-sdk chat", "Riot/Android & matrix-android-sdk chat": "Riot/Android a matrix-android-sdk chat", - "To return to your account in future you need to <u>set a password</u>": "Abyste se mohli ke svému účtu v budoucnu vrátit, musíte si <u>nastavit heslo</u>", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Toto vám umožní vrátit se po odhlášení ke svému účtu a používat jej na ostatních zařízeních.", - "You can now return to your account after signing out, and sign in on other devices.": "Nyní se můžete ke svému účtu vrátit i po odhlášení a používat jej na ostatních zařízeních.", - "Fetching third party location failed": "Nepodařilo se zjistit umístění třetí strany", - "Messages in one-to-one chats": "Zprávy v individuálních chatech", - "Notification targets": "Cíle upozornění", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Upozornění na následující klíčová slova se řídí pravidly, která zde nelze zobrazit:", - "Unable to fetch notification target list": "Nepodařilo se získat seznam cílů upozornění", "Discussion of the Identity Service API": "Diskuze o API služby identity", - "Noisy": "Hlučný", - "Bug report sent": "Hlášení o chybě bylo odesláno", - "Thank you!": "Děkujeme vám!", - "Back": "Zpět", - "Event Type": "Typ události", - "Event Content": "Obsah události", - "Developer Tools": "Nástroje pro vývojáře", - "Filter results": "Filtrovat výsledky", - "You must specify an event type!": "Musíte určit typ události!", - "Event sent!": "Událost odeslána!", - "Failed to send custom event.": "Nepodařilo se odeslat vlastní událost.", - "Send Custom Event": "Odeslat vlastní událost", - "Show message in desktop notification": "Zobrazovat zprávu v upozornění na ploše", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.<br/>Díky tomu můžete v Riotu používat Matrix účet z jiného domovského serveru.<br/><br/>Můžete nastavit i vlastní server identity, ale pak už nebudete moci zvát ani být zván/a skrze e-mailovou adresu.", - "Edit": "Upravit", - "Pin Message": "Připíchnout zprávu", - "Register": "Zaregistrovat", - "Rooms": "Místnosti", - "Invite to this community": "Pozvat do této komunity", - "Add rooms to this community": "Přidat místnosti do této skupiny", - "State Key": "Stavový klíč", - "Send Custom State Event": "Poslat vlastní stavovou událost", - "Explore Room State": "Prohlížet stav místnosti", - "Unpin Message": "Odepnout zprávu", - "Toolbox": "Sada nástrojů", - "Send Account Data": "Poslat data o účtu", - "Explore Account Data": "Prozkoumat data o účtu", - "Appear Offline": "Jevit se offline", - "Away": "Pryč", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte <chromeLink>Chrome</chromeLink> nebo <firefoxLink>Firefox</firefoxLink>.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> a <operaLink>Opera</operaLink> fungují taky." + "Co-ordination for Riot translators": "Spolupráce pro překladatele Riot", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Také je možné nastavit vlastní server identity, ale pak nebude možné pozvat uživatele pomocí emailové adresy ani být pozván pomocí emailové adresy.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Ve vlastních serverových volbách si můžete nastavit použití vlastního domovského serveru. To Vám umožní používat Riot s existujícím Matrix účtem na jiném serveru.", + "Sign In": "Přihlásit se", + "Create Account": "Vytvořit účet", + "Need help?": "Chcete pomoct?", + "Explore rooms": "Objevit místnosti", + "Room Directory": "Adresář místností" } diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index f669b2f0..1f404351 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -1,195 +1,13 @@ { - "Add an email address above to configure email notifications": "Tilføj en emailadresse ovenfor for at konfigurere e-mail-underretninger", - "All notifications are currently disabled for all targets.": "Alle meddelelser er for øjeblikket deaktiveret for alle mål.", - "An error occurred whilst saving your email notification preferences.": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger.", - "Can't update user notification settings": "Kan ikke opdatere brugermeddelelsesindstillinger", - "Couldn't find a matching Matrix room": "Kunne ikke finde et matchende Matrix-rum", "Custom Server Options": "Brugerdefinerede serverindstillinger", - "delete the alias.": "Slet aliaset.", - "Direct Chat": "Personlig Chat", - "Directory": "Rum katalog", "Dismiss": "Afskedige", - "Enable audible notifications in web client": "Aktivér hørbare underretninger i webklienten", - "Enable desktop notifications": "Aktivér desktop meddelelser", - "Enable email notifications": "Aktivér e-mail-underretninger", - "Enable notifications for this account": "Aktivér underretninger for dette brugernavn", - "Enable them now": "Aktivér dem nu", - "Enter keywords separated by a comma:": "Indtast søgeord adskilt af et komma:", - "Error": "Fejl", - "Error saving email notification preferences": "Fejl ved at gemme e-mail-underretningsindstillinger", - "#example": "#eksempel", - "Failed to change settings": "Kunne ikke ændre indstillinger", - "Failed to update keywords": "Kunne ikke opdatere søgeord", - "Failed to get protocol list from Home Server": "Kunne ikke få protokolliste fra Home Server", - "Failed to get public room list": "Kunne ikke få offentlig rumliste", - "Failed to set Direct Message status of room": "Kunne ikke indstille Direkte Beskedstatus for rummet", - "Favourite": "Favorit", - "Fetching third party location failed": "Hentning af tredjeparts placering mislykkedes", - "Files": "Filer", - "Filter room names": "Filtrér rumnavne", - "Forget": "Glem", - "Guests can join": "Gæster kan deltage", - "Invite to this room": "Inviter til dette rum", - "Keywords": "Søgeord", - "Leave": "Forlad", - "Low Priority": "Lav prioritet", - "Members": "Medlemmer", - "No rooms to show": "Ingen rum at vise", - "Noisy": "Støjende", - "Notification targets": "Meddelelsesmål", - "Notifications": "Notifikationer", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her:", - "Notify for all other messages/rooms": "Underret om alle andre meddelelser / rum", - "Notify me for anything else": "Underret mig om noget andet", - "Off": "Slukket", - "On": "Tændt", - "Operation failed": "Operation mislykkedes", "powered by Matrix": "Drevet af Matrix", - "Reject": "Afvis", - "Remove": "Fjern", - "Remove from Directory": "Fjern fra Katalog", - "Riot does not know how to join a room on this network": "Riot ved ikke, hvordan man kan deltage i et rum på dette netværk", - "Room not found": "Rummet ikke fundet", - "Search for a room": "Søg efter et rum", - "The Home Server may be too old to support third party networks": "Hjemmeserveren kan være for gammel til at understøtte tredjepartsnetværk", - "There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her", - "The server may be unavailable or overloaded": "Serveren kan være utilgængelig eller overbelastet", - "Unable to fetch notification target list": "Kan ikke hente meddelelsesmålliste", - "Unable to join network": "Kan ikke forbinde til netværket", - "Unable to look up room ID from server": "Kunne ikke slå rum-id op på server", - "unknown error code": "Ukendt fejlkode", - "Unnamed room": "Unavngivet rum", - "World readable": "Læselig af alle", - "You are not receiving desktop notifications": "Du modtager ikke skrivebordsmeddelelser", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du har muligvis konfigureret dem i en anden klient end Riot. Du kan ikke tune dem i Riot, men de gælder stadig", - "Close": "Luk", "Riot is not supported on mobile web. Install the app?": "Riot understøtter ikke mobilhjemmesider. Vil du installere app'en?", - "Collecting app version information": "Indsamler app versionsoplysninger", - "Collecting logs": "Indsamler logfiler", - "Uploading report": "Uploader rapport", - "Waiting for response from server": "Venter på svar fra server", "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", "Unknown device": "Ukendt enhed", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", "You need to be using HTTPS to place a screen-sharing call.": "Du skal bruge HTTPS for at lave skærm-delings-opkald.", - "Messages containing my display name": "Beskeder der indeholder mit viste navn", - "Messages containing my user name": "Beskeder der indeholder mit brugernavn", - "Messages in one-to-one chats": "Beskeder i en-til-en chats", - "Messages in group chats": "Beskeder i gruppechats", - "When I'm invited to a room": "Når jeg bliver inviteret til et rum", - "Call invitation": "Opkalds invitation", - "Messages sent by bot": "Beskeder sendt af en bot", - "OK": "OK", - "Messages containing <span>keywords</span>": "Beskeder der indeholder <span>keywords</span>", - "Advanced notification settings": "Avancerede notifikationsindstillinger", - "Show message in desktop notification": "Vis besked i skrivebordsnotifikation", - "Failed to set direct chat tag": "Kunne ikke markere rummet som direkte chat", - "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tag(s): %(tagName)s fra rummet", - "Failed to add tag %(tagName)s to room": "Kunne ikke tilføje tag(s): %(tagName)s til rummet", - "Search…": "Søg…", - "Search": "Søg", - "This Room": "Dette rum", - "All Rooms": "Alle rum", - "Sunday": "Søndag", - "Monday": "Mandag", - "Tuesday": "Tirsdag", - "Wednesday": "Onsdag", - "Thursday": "Torsdag", - "Friday": "Fredag", - "Saturday": "Lørdag", - "Today": "I dag", - "Yesterday": "I går", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruge de brugerdefinerede server indstillinger til at logge ind på andre Matrix servere ved at skrive en anden Home Server adresse.<br/>Dette tillader dig at bruge Riot med en eksisterende Matrix konto på en anden home server.<br/><br/>Du kan også indstille en brugerdefineret identity server men så vil du ikke kunne invitere brugere ved hjælp af deres emailadresse eller selv blive inviteret med emailadresse.", - "What's New": "Hvad er nyt", - "Update": "Opdater", - "What's new?": "Hvad er nyt?", - "Appear Offline": "Fremstå Offline", - "Away": "Ikke til stede", - "A new version of Riot is available.": "En ny version a Riot er tilgængelig.", - "To return to your account in future you need to <u>set a password</u>": "For at komme ind på din konto i fremtiden skal du <u>indstille et password</u>", - "Set Password": "Indstil Password", - "Error encountered (%(errorDetail)s).": "En fejl er opstået (%(errorDetail)s).", - "Checking for an update...": "Checker om der er en opdatering...", - "No update available.": "Ingen opdatering tilgængelig.", - "Downloading update...": "Downloader opdatering...", - "Warning": "Advarsel", - "You cannot delete this image. (%(code)s)": "Du kan ikke slette dette billede. (%(code)s)", - "Uploaded on %(date)s by %(user)s": "Uploadet den %(date)s af %(user)s", - "Download this file": "Download denne fil", - "Please describe the bug and/or send logs.": "Beskriv venligst fejlen og/eller send logs.", - "Loading bug report module": "Indlæser fejlrepporterings modul", - "Bug report sent": "Fejl rapporteret", - "Thank you!": "Tak!", - "Failed to send report: ": "Kunne ikke sende rapport: ", - "Cancel": "Afbryd", - "Report a bug": "Rapportér en fejl", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Beskriv venlist fejlen. Hvad gjorde du? Hvad forventede du ville ske? Hvad skete rent faktisk?", - "Describe your problem here.": "Beskriv dit problem her.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "For at diagnosticere problemer vil logs fra denne klient blive sendt sammen med fejlrapporten. Hvis du vil foretrække kun at sende teksten foroven, bedes du fjerne fluebenet:", - "Send logs": "Send logs", - "Send": "Send", - "Unavailable": "Utilgængelig", - "Changelog": "Ændringslog", - "Back": "Tilbage", - "Send Custom Event": "Send Brugerdefineret Begivenhed", - "You must specify an event type!": "Du skal angive en begivenhedstype!", - "Event sent!": "Begivenhed sendt!", - "Failed to send custom event.": "Kunne ikke sende brugerdefinerede begivenhed.", - "Event Type": "Begivenhedstype", - "State Key": "Tilstandsnøgle", - "Event Content": "Begivenhedsindhold", - "Send Account Data": "Send Konto Data", - "Filter results": "Filtrér resultater", - "Explore Room State": "Udforsk Rum Tilstand", - "Edit": "Rediger", - "Explore Account Data": "Udforsk Konto Data", - "Toolbox": "Værktøjer", - "Developer Tools": "Udviklingsværktøjer", - "You have successfully set a password!": "Du har succesfuldt indstillet et password!", - "You have successfully set a password and an email address!": "Du har succesfuldt indstillet et password og en emailadresse!", - "You can now return to your account after signing out, and sign in on other devices.": "Du kan nu vende tilbage til din konto efter at have logget ud og logge ind på andre enheder.", - "Remember, you can always set an email address in user settings if you change your mind.": "Husk, du kan altid indstille en emailadresse i dine bruger indstillinger hvis du ombestemmer dig.", - "Continue": "Fortsæt", - "Failed to change password. Is your password correct?": "Kunne ikke ændre password. Er dit password korrekt?", - "(HTTP status %(httpStatus)s)": "(HTTP tilstand %(httpStatus)s)", - "Please set a password!": "Indstil venligst et password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Dette vil tillade dig at vende tilbage til din konto efter at have logget ud og at logge ind på andre enheder.", - "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne besked. (%(code)s)", - "Resend": "Send igen", - "Cancel Sending": "Stop Forsendelse", - "Forward Message": "Videresend Besked", - "Unpin Message": "Fasthold ikke længere Besked", - "Pin Message": "Fasthold Besked", - "View Source": "Se Kilde", - "View Decrypted Source": "Se Dekrypteret Kilde", - "Unhide Preview": "Vis Forhåndsvisning", - "Permalink": "Permanent link", - "Quote": "Citat", - "Source URL": "Kilde URL", - "Failed to forget room %(errCode)s": "Kunne ikke glemme rummet %(errCode)s", - "All messages (loud)": "Alle beskeder (høj)", - "All messages": "Alle beskeder", - "Mentions only": "Kun nævninger", - "Mute": "Sæt på lydløs", - "Sorry, your browser is <b>not</b> able to run Riot.": "Beklager, din browser kan <b>ikke</b> køre Riot.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot bruger mange avancerede browser funktioner, hvoraf nogle af dem ikke er tilgængelige eller er eksperimentelle i din browser.", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Installer venligst <chromeLink>Chrome</chromeLink> eller <firefoxLink>Firefox</firefoxLink> for den bedste oplevelse.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> og <operaLink>Opera</operaLink> virker også.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med din nuværnde broser kan udseendet og fornemmelsen af programmet være helt forkert og nogle funktioner virker måske ikke. Hvis du alligevel vil prøve så kan du fortsætte, men det er på egen risiko!", - "I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker at fortsætte", - "Couldn't load home page": "Kunne ikke indlæse startsiden", - "Login": "Log ind", - "Register": "Registrér", - "Rooms": "Rum", - "Hide panel": "Gem panel", - "Invite to this community": "Inviter til dette fællesskab", - "Add rooms to this community": "Tilføj rum til dette fællesskab", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slet rumaliaset %(alias)s og fjern %(name)s fra kataloget?", - "Remove %(name)s from the directory?": "Fjern %(name)s fra kataloget?", - "remove %(name)s from the directory.": "fjern %(name)s fra kataloget.", - "more": "mere", - "Expand panel": "Udvid panel", - "Collapse panel": "Slå panel sammen", "Welcome to Riot.im": "Velkommen til Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliseret, krypteret chat & samarbejde baseret på [matrix]", "Search the room directory": "Søg i rumkataloget", @@ -217,5 +35,18 @@ "Contributing code to Matrix and Riot": "Biddrag med kode til Matrix og Riot", "Dev chat for the Riot/Web dev team": "Udviklerchat til Riot/Web udviklerholdet", "Dev chat for the Dendrite dev team": "Udviklerchat til Dendrite udviklerholdet", - "Co-ordination for Riot/Web translators": "Co-ordination af Riot/Web oversættere" + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Din Riot konfiguration indeholder ugyldig JSON. Venligst korrigér problemet og opdatér siden.", + "The message from the parser is: %(message)s": "Beskeden fra parseren er: %(message)s", + "Invalid JSON": "Ugyldig JSON", + "Your Riot is misconfigured": "Din Riot er konfigureret forkert", + "Unexpected error preparing the app. See console for details.": "Uventet fejl ved forberedelse af appen. Se konsollen for detaljer.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfiguration: kan kun angive en af default_server_config, default_server_name eller default_hs_url.", + "Invalid configuration: no default server specified.": "Ugyldig konfiguration: ingen standardserver angivet.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan bruge de brugertilpassede serverindstillinger til at logge på andre Matrix servere ved at angive en anden homeserver URL. Dette giver dig mulighed for at bruge Riot med en eksisterende Matrix konto på en anden homeserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan også indstille en brugertilpasset identitetsserver, men så vil du ikke kunne invitere brugere pr. e-mail eller selv kunne inviteres pr. e-mail.", + "Sign In": "Log på", + "Create Account": "Opret konto", + "Need help?": "Brug for hjælp?", + "Explore rooms": "Udforsk rum", + "Room Directory": "Rumliste" } diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index b44e17cb..365f9ac1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1,156 +1,16 @@ { - "Members": "Mitglieder", - "Files": "Dateien", - "Notifications": "Benachrichtigungen", - "Invite to this room": "In diesen Raum einladen", - "Filter room names": "Raum-Namen filtern", "powered by Matrix": "betrieben mit Matrix", "Custom Server Options": "Benutzerdefinierte Server-Optionen", "Dismiss": "Ablehnen", - "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokoll-Liste vom Home-Server", - "The Home Server may be too old to support third party networks": "Der Home-Server ist eventuell zu alt, um Drittanbieter-Netzwerke zu unterstützen", - "Directory": "Raum-Verzeichnis", - "Search for a room": "Nach einem Raum suchen", - "No rooms to show": "Keine anzeigbaren Räume", - "World readable": "Lesbar für alle", - "Guests can join": "Gäste können beitreten", - "You are not receiving desktop notifications": "Du erhältst keine Desktop-Benachrichtigungen", - "Enable them now": "Aktiviere diese jetzt", - "Add an email address above to configure email notifications": "Füge oben eine E-Mail-Adresse hinzu, um die E-Mail-Benachrichtigungseinstellungen zu konfigurieren", - "All notifications are currently disabled for all targets.": "Aktuell sind alle Benachrichtigungen für alle Ziele deaktiviert.", - "An error occurred whilst saving your email notification preferences.": "Beim Speichern deiner E-Mail-Benachrichtigungseinstellungen ist ein Fehler aufgetreten.", - "Can't update user notification settings": "Benachrichtigungs-Einstellungen des Benutzers konnten nicht aktualisiert werden", - "Couldn't find a matching Matrix room": "Konnte keinen entsprechenden Matrix-Raum finden", - "delete the alias.": "Lösche den Alias.", - "Direct Chat": "Direkt-Chat", - "Enable audible notifications in web client": "Audio-Benachrichtigungen im Web-Client aktivieren", - "Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren", - "Enable email notifications": "E-Mail-Benachrichtigungen aktivieren", - "Enable notifications for this account": "Benachrichtigungen für dieses Benutzerkonto aktivieren", - "Enter keywords separated by a comma:": "Schlüsselwörter kommagetrennt eingeben:", - "Error": "Fehler", - "Error saving email notification preferences": "Fehler beim Speichern der E-Mail-Benachrichtigungseinstellungen", - "#example": "#Beispiel", - "Failed to change settings": "Einstellungen konnten nicht geändert werden", - "Failed to update keywords": "Schlüsselwörter konnten nicht aktualisiert werden", - "Failed to get public room list": "Die Liste der öffentlichen Räume konnte nicht geladen werden", - "Failed to set Direct Message status of room": "Konnte den direkten Benachrichtigungsstatus nicht setzen", - "Favourite": "Favorit", - "Fetching third party location failed": "Das Abrufen des Drittanbieterstandorts ist fehlgeschlagen", - "Forget": "Entfernen", - "Keywords": "Schlüsselwörter", - "Leave": "Verlassen", - "Low Priority": "Niedrige Priorität", - "Noisy": "Laut", - "Notification targets": "Benachrichtigungsziele", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Die Benachrichtigungen zu den folgenden Schlüsselwörtern folgen Regeln, die hier nicht angezeigt werden können:", - "Notify for all other messages/rooms": "Benachrichtigungen für alle anderen Mitteilungen/Räume aktivieren", - "Operation failed": "Aktion fehlgeschlagen", - "Reject": "Ablehnen", - "Remove": "Entfernen", - "Remove from Directory": "Aus dem Raum-Verzeichnis entfernen", - "Riot does not know how to join a room on this network": "Riot weiß nicht, wie es einem Raum auf diesem Netzwerk beitreten soll", - "Room not found": "Raum nicht gefunden", - "There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden", - "The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet", - "Unable to fetch notification target list": "Liste der Benachrichtigungsempfänger konnte nicht abgerufen werden", - "Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten", - "unknown error code": "Unbekannter Fehlercode", - "Unnamed room": "Unbenannter Raum", - "Notify me for anything else": "Über alles andere benachrichtigen", - "Off": "Aus", - "On": "An", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Matrix-Client und nicht in Riot konfiguriert. Sie können in Riot nicht verändert werden, gelten aber trotzdem", - "All messages": "Alle Nachrichten", - "All messages (noisy)": "Alle Nachrichten (laut)", - "Cancel Sending": "Senden abbrechen", - "Close": "Schließen", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raum-Alias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?", - "Download this file": "Datei herunterladen", - "Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen", - "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", - "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen", - "Failed to set direct chat tag": "Fehler beim Setzen der \"Direkter Chat\"-Kennzeichnung", - "Mentions only": "Nur, wenn du erwähnt wirst", - "Mute": "Stummschalten", - "Permalink": "Permanenter Link", - "Quote": "Zitat", - "Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?", - "remove %(name)s from the directory.": "entferne %(name)s aus dem Verzeichnis.", - "Resend": "Erneut senden", - "Source URL": "Quell-URL", - "Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen", - "Unhide Preview": "Vorschau wieder anzeigen", - "Uploaded on %(date)s by %(user)s": "Hochgeladen: %(date)s von %(user)s", - "View Decrypted Source": "Entschlüsselten Quellcode ansehen", - "View Source": "Quellcode ansehen", - "You cannot delete this image. (%(code)s)": "Das Bild kann nicht gelöscht werden. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Diese Nachricht kann nicht gelöscht werden. (%(code)s)", - "Today": "Heute", - "Wednesday": "Mittwoch", - "Thursday": "Donnerstag", - "Friday": "Freitag", - "Saturday": "Samstag", - "Tuesday": "Dienstag", - "Sunday": "Sonntag", - "Monday": "Montag", - "Yesterday": "Gestern", - "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", - "Call invitation": "Anruf-Einladung", - "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", - "Messages containing my user name": "Nachrichten, die meinen Benutzernamen enthalten", - "Messages in group chats": "Nachrichten in Gruppen-Chats", - "Messages in one-to-one chats": "Nachrichten in Einzel-Chats", - "Messages sent by bot": "Nachrichten von Bots", - "more": "mehr", - "When I'm invited to a room": "Wenn ich in einen Raum eingeladen werde", - "customServer_text": "Du kannst die erweiterten Server-Optionen nutzen, um dich auf anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL eingibst. <br/>Dies ermöglicht es dir, Riot mit einem bereits existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.<br/><br/>Du kannst auch einen benutzerdefinierten Identitäts-Server eingeben, allerdings wirst du dann nicht in der Lage sein, andere Benutzer per E-Mail-Adresse einzuladen oder selbst Einladungen per E-Mail-Adresse zu erhalten.", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> und <a href=\"http://opera.com\">Opera</a> funktionieren ebenfalls.", - "I understand the risks and wish to continue": "Ich verstehe das Risiko und möchte fortfahren", - "Messages containing <span>keywords</span>": "Nachrichten, die <span>Schlüsselwörter</span> enthalten", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Bitte installiere <a href=\"https://www.google.com/chrome\">Chrome</a> oder <a href=\"https://getfirefox.com\">Firefox</a> für die beste Erfahrung.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot nutzt zahlreiche fortgeschrittene Browser-Funktionen, die teilweise in deinem aktuell verwendeten Browser noch nicht verfügbar sind oder sich noch im experimentellen Status befinden.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Es tut uns leid, aber dein Browser kann Riot <b>nicht</b> ausführen.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "In deinem aktuell verwendeten Browser können Aussehen und Handhabung der Anwendung unter Umständen noch komplett fehlerhaft sein, so dass einige bzw. im Extremfall alle Funktionen nicht zur Verfügung stehen. Du kannst es trotzdem versuchen und fortfahren, bist dabei aber bezüglich aller auftretenden Probleme auf dich allein gestellt!", - "Expand panel": "Panel ausklappen", - "Collapse panel": "Panel einklappen", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s auf %(osName)s", - "A new version of Riot is available.": "Eine neue Version von Riot ist verfügbar.", - "All Rooms": "In allen Räumen", - "Cancel": "Abbrechen", - "Changelog": "Änderungsprotokoll", - "Collecting app version information": "App-Versionsinformationen werden abgerufen", - "Collecting logs": "Protokolle werden abgerufen", - "Describe your problem here.": "Beschreibe dein Problem hier.", - "Failed to send report: ": "Senden des Reports fehlgeschlagen: ", - "Forward Message": "Nachricht weiterleiten", - "Hide panel": "Panel verbergen", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Zur Diagnose von Softwareproblemen werden mit diesem Fehlerbericht auch Log-Dateien übermittelt. Wenn nur der oben eingegebene Text übermittelt werden soll, bitte die nachfolgende Auswahl entsprechend abwählen:", - "Loading bug report module": "Lade Fehlerbericht-Modul", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Bitte den Softwarefehler (vorzugsweise auf Englisch) beschreiben. Was hast du gemacht? Was sollte passieren? Was ist tatsächlich passiert?", - "Please describe the bug and/or send logs.": "Bitte den Fehler beschreiben und/oder Log-Dateien übermitteln.", - "Report a bug": "Einen Softwarefehler melden", "Riot Desktop on %(platformName)s": "Riot Desktop auf %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot wird im mobilen Web nicht unterstützt. App installieren?", - "Search": "Suchen", - "Search…": "Suchen…", - "Send": "Senden", - "Send logs": "Logdateien übermitteln", - "This Room": "In diesem Raum", - "Unavailable": "Nicht verfügbar", "Unknown device": "Unbekanntes Gerät", - "Update": "Aktualisieren", - "Uploading report": "Lade Bericht hoch", - "What's New": "Was ist neu", - "What's new?": "Was ist neu?", - "Waiting for response from server": "Auf Antwort vom Server warten", "You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.", - "OK": "OK", - "Login": "Anmeldung", "Welcome to Riot.im": "Willkommen bei Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung unterstützt von [matrix]", "Search the room directory": "Raum-Verzeichnis durchsuchen", - "Chat with Riot Bot": "Mit dem Riot-Bot chatten", + "Chat with Riot Bot": "Chatte mit dem Riot Bot", "Get started with some tips from Riot Bot!": "Lass Dir vom Riot-Bot eine Einführung geben!", "Discussion of all things Matrix!": "\"Diskussion über alle Dinge\"-Matrix!", "Riot/Web & Desktop chat": "Riot/Web & Desktop-Chat", @@ -171,56 +31,24 @@ "Support for those using, running and writing other bridges": "Unterstützung für die, die andere Matrix-Bridges nutzen, betreiben oder entwickeln", "Contributing code to Matrix and Riot": "Code zu Matrix und Riot beitragen", "Dev chat for the Riot/Web dev team": "Entwickler-Chat für das Riot/Web-Entwickler-Team", - "Co-ordination for Riot/Web translators": "Koordination für Riot/Web-Übersetzer", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Im Matrix-Netzwerk existieren bereits jetzt zahlreiche Räume, die entweder mit bekannten Netzwerken wie Slack, IRC, Gitter, usw. verknüpft sind oder auch komplett eigenständig betrieben werden. Einen genauen Überblick erhältst du im Raum-Verzeichnis!", - "Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?", - "You have successfully set a password!": "Du hast erfolgreich ein Passwort gesetzt!", - "You can now return to your account after signing out, and sign in on other devices.": "Du kannst nun zu deinem Benutzerkonto zurückkehren, nachdem du dich abgemeldet hast. Anschließend kannst du dich an anderen Geräten anmelden.", - "Continue": "Fortfahren", - "Please set a password!": "Bitte setze ein Passwort!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Dies erlaubt dir, dich wieder an deinem Konto anzumelden, nachdem du dich abgemeldet hast.", "Dev chat for the Dendrite dev team": "Entwickler-Chat für das Dendrite-Entwickler-Team", "General discussion about Matrix and Riot": "Allgemeine Diskussion über Matrix und Riot", - "(HTTP status %(httpStatus)s)": "(HTTP-Status %(httpStatus)s)", - "You have successfully set a password and an email address!": "Du hast erfolgreich ein Passwort und eine E-Mail-Adresse gesetzt!", - "Remember, you can always set an email address in user settings if you change your mind.": "Vergiss nicht, dass du in den Benutzereinstellungen jederzeit eine E-Mail-Adresse setzen kannst, wenn du deine Meinung änderst.", - "To return to your account in future you need to <u>set a password</u>": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du <u>ein Passwort setzen</u>", - "Set Password": "Passwort einrichten", - "Warning": "Warnung", - "Checking for an update...": "Nach Updates suchen...", - "Error encountered (%(errorDetail)s).": "Es ist ein Fehler aufgetreten (%(errorDetail)s).", - "No update available.": "Kein Update verfügbar.", - "Downloading update...": "Update wird heruntergeladen...", - "Couldn't load home page": "Startseite konnte nicht geladen werden", - "Bug report sent": "Fehlerbericht wurde gesendet", - "Thank you!": "Danke!", - "Back": "Zurück", - "Developer Tools": "Entwicklerwerkzeuge", - "Failed to send custom event.": "Senden des benutzerdefinierten Events fehlgeschlagen.", - "Send Custom Event": "Benutzerdefiniertes Event senden", - "Send Custom State Event": "Benutzerdefiniertes Status-Event senden", - "Explore Room State": "Raum-Status erkunden", - "Event sent!": "Event gesendet!", - "Event Type": "Event-Typ", - "Event Content": "Event-Inhalt", - "State Key": "Status-Schlüssel", - "Filter results": "Ergebnisse filtern", - "You must specify an event type!": "Du musst einen Event-Typ spezifizieren!", - "Show message in desktop notification": "Nachricht in der Desktop-Benachrichtigung anzeigen", - "Pin Message": "Nachricht anheften", - "Unpin Message": "Nachricht nicht mehr anheften", - "Add rooms to this community": "Räume zu dieser Community hinzufügen", - "Edit": "Editieren", - "Register": "Registrieren", - "Rooms": "Räume", - "Invite to this community": "In diese Community einladen", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Die benutzerdefinierten Server-Einstellungen kannst du verwenden, um dich auf anderen Matrix-Servern anzumelden, indem du eine abweichende Heimserver-URL eingibst.<br/>Somit ist es möglich, Riot mit einem bereits bestehendem Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.<br/><br/>Außerdem kannst du einen benutzerdefinierten Identitätsserver eingeben. Allerdings kannst du in diesem Fall Benutzer nicht mehr per E-Mail-Adresse einladen und auch selbst nicht mehr per E-Mail-Adresse eingeladen werden.", - "Toolbox": "Werkzeugkasten", - "Explore Account Data": "Benutzerkonto-Daten analysieren", - "Send Account Data": "Benutzerkonto-Daten senden", - "Away": "Abwesend", - "Appear Offline": "Als offline anzeigen", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> und <operaLink>Opera</operaLink> sind weitere Alternativen.", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Bitte installiere <chromeLink>Chrome</chromeLink> oder <firefoxLink>Firefox</firefoxLink> für ein optimales Anwendungsergebnis.", - "Reply": "Antworten" + "Co-ordination for Riot translators": "Koordination für Riot-Übersetzer", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kannst die erweiterte Serveroption nutzen um dich an einem anderen Matrixserver anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Sie können auch einen benutzerdefinierten Identitätsserver festlegen, aber Sie können keine Benutzer per E-Mail-Adresse einladen oder selbst per E-Mail-Adresse eingeladen werden.", + "Sign In": "Anmelden", + "Create Account": "Konto erstellen", + "Need help?": "Brauchst du Hilfe?", + "Explore rooms": "Räume erkunden", + "Room Directory": "Raumverzeichnis", + "Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.", + "Invalid configuration: no default server specified.": "Ungültige Konfiguration: Es wurde kein Standardserver angegeben.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Diese Installation von Riot scheint eine ungültige Serverkonfiguration zu haben. Wenn Sie der Administrator sind, korrigieren Sie bitte den folgenden Fehler", + "Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Riot Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.", + "The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s", + "Invalid JSON": "Ungültiges JSON" } diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 1e8cf01b..3a8d21d2 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -1,156 +1,18 @@ { - "A new version of Riot is available.": "Μία νέα έκδοση του Riot είναι διαθέσιμη.", - "Advanced notification settings": "Προχωρημένες ρυθμίσεις ειδοποιήσεων", - "All messages": "Όλα τα μηνύματα", - "All Rooms": "Όλα τα δωμάτια", - "All notifications are currently disabled for all targets.": "Όλες οι ειδοποιήσεις είναι προς το παρόν απενεργοποιημένες για όλες τις συσκευές.", - "An error occurred whilst saving your email notification preferences.": "Ένα σφάλμα προέκυψε κατά την αποθήκευση των ρυθμίσεων σας.", - "Call invitation": "Πρόσκληση σε κλήση", - "Cancel": "Ακύρωση", - "Cancel Sending": "Ακύρωση αποστολής", - "Can't update user notification settings": "Δεν είναι δυνατή η ενημέρωση των ρυθμίσεων ειδοποίησης χρήστη", - "Changelog": "Αλλαγές", - "Close": "Κλείσιμο", - "Collapse panel": "Ελαχιστοποίηση καρτέλας", "Custom Server Options": "Προσαρμοσμένες ρυθμίσεις διακομιστή", - "Describe your problem here.": "Περιγράψτε το πρόβλημα σας εδώ.", - "Direct Chat": "Απευθείας συνομιλία", - "Directory": "Ευρετήριο", - "Download this file": "Λήψη αρχείου", - "Enable audible notifications in web client": "Ενεργοποίηση ηχητικών ειδοποιήσεων", - "Enable email notifications": "Ενεργοποίηση ειδοποιήσεων μέσω μηνυμάτων ηλ. αλληλογραφίας", - "Enable notifications for this account": "Ενεργοποίηση ειδοποιήσεων για τον λογαριασμό", - "Enter keywords separated by a comma:": "Προσθέστε λέξεις κλειδιά χωρισμένες με κόμμα:", - "Error": "Σφάλμα", - "#example": "#παράδειγμα", - "Expand panel": "Μεγιστοποίηση καρτέλας", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> και <a href=\"http://opera.com\">Opera</a> λειτουργούν επίσης.", - "Add an email address above to configure email notifications": "Προσθέστε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στο παραπάνω πεδίο, για να έχετε τη δυνατότητα να λαμβάνετε ειδοποιήσεις", - "Collecting app version information": "Συγκέντρωση πληροφοριών σχετικά με την έκδοση της εφαρμογής", - "customServer_text": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις για να εισέλθετε σε άλλους διακομιστές Matrix επιλέγοντας μια διαφορετική διεύθυνση για το διακομιστή.<br/> Αυτό σας επιτρέπει να χρησιμοποιήσετε την εφαρμογή Riot με έναν υπάρχοντα λογαριασμό σε διαφορετικό διακομιστή.<br/><br/>Επίσης μπορείτε να επιλέξετε ένα διαφορετικό διακομιστή ταυτότητας αλλά δεν θα έχετε τη δυνατότητα να προσκαλέσετε άλλους χρήστες ή να σας προσκαλέσουν μέσω μηνυμάτων ηλεκτρονικής αλληλογραφίας.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s μέσω %(browserName)s σε %(osName)s", - "All messages (noisy)": "Όλα τα μηνύματα (δυνατά)", - "delete the alias.": "διέγραψε το ψευδώνυμο.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Διαγραφή του ψευδώνυμου %(alias)s και αφαίρεση του %(name)s από το ευρετήριο;", "Dismiss": "Απόρριψη", - "Failed to add tag %(tagName)s to room": "Δεν ήταν δυνατή η προσθήκη της ετικέτας %(tagName)s στο δωμάτιο", - "Failed to change settings": "Δεν ήταν δυνατή η αλλαγή των ρυθμίσεων", - "Favourite": "Αγαπημένο", - "Files": "Αρχεία", - "Filter room names": "Φιλτράρισμα δωματίων", - "Forward Message": "Προώθηση", - "Guests can join": "Επισκέπτες μπορούν να συνδεθούν", - "Hide panel": "Απόκρυψη καρτέλας", - "I understand the risks and wish to continue": "Κατανοώ του κινδύνους και επιθυμώ να συνεχίσω", - "Invite to this room": "Πρόσκληση σε αυτό το δωμάτιο", - "Keywords": "Λέξεις κλειδιά", - "Leave": "Αποχώρηση", - "Low Priority": "Χαμηλή προτεραιότητα", - "Members": "Μέλη", - "Messages containing <span>keywords</span>": "Μηνύματα που περιέχουν <span>λέξεις κλειδιά</span>", - "Messages containing my user name": "Μηνύματα που περιέχουν το ψευδώνυμο μου", - "Messages in group chats": "Μηνύματα σε ομαδικές συνομιλίες", - "Messages in one-to-one chats": "Μηνύματα σε 1-προς-1 συνομιλίες", - "Messages sent by bot": "Μηνύματα από bots", - "more": "περισσότερα", - "Mute": "Σίγαση", - "No rooms to show": "Δεν υπάρχουν δωμάτια για εμφάνιση", - "Noisy": "Δυνατά", - "Notifications": "Ειδοποιήσεις", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Οι ειδοποιήσεις για τις επόμενες λέξεις κλειδία ακολουθούν κανόνες που δεν είναι δυνατόν να εμφανιστούν εδώ:", - "Notify for all other messages/rooms": "Ειδοποίηση για όλα τα υπόλοιπα μηνύματα/δωμάτια", - "Notify me for anything else": "Ειδοποίηση για οτιδήποτε άλλο", - "Operation failed": "Η λειτουργία απέτυχε", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Παρακαλούμε περιγράψτε το σφάλμα. Τι κάνατε; Τι περιμένατε να συμβεί; Τι έγινε τελικά;", - "Reject": "Απόρριψη", - "Remove": "Αφαίρεση", - "Remove from Directory": "Αφαίρεση από το ευρετήριο", - "Resend": "Αποστολή ξανά", "Riot Desktop on %(platformName)s": "Riot Desktop σε %(platformName)s", - "Room not found": "Το δωμάτιο δεν βρέθηκε", - "Search": "Αναζήτηση", - "Search…": "Αναζήτηση…", - "Send": "Αποστολή", - "This Room": "Στο δωμάτιο", - "Unavailable": "Μη διαθέσιμο", "Unknown device": "Άγνωστη συσκευή", - "Update": "Ενημέρωση", - "Enable desktop notifications": "Ενεργοποίηση ειδοποιήσεων στην επιφάνεια εργασίας", - "Error saving email notification preferences": "Σφάλμα κατά την αποθήκευση των προτιμήσεων", - "Failed to send report: ": "Δεν ήταν δυνατή η αποστολή της αναφοράς: ", - "Loading bug report module": "Φόρτωση μονάδας αναφοράς σφαλμάτων", - "Mentions only": "Μόνο αναφορές", - "Messages containing my display name": "Μηνύματα που περιέχουν το όνομα μου", - "Off": "Ανενεργό", - "On": "Ενεργό", - "Permalink": "Μόνιμος σύνδεσμος", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Παρακαλούμε εγκαταστήστε έναν από τους περιηγητές <a href=\"https://www.google.com/chrome\">Chrome</a> ή <a href=\"https://getfirefox.com\">Firefox</a> για την καλύτερη δυνατή εμπειρία.", - "Report a bug": "Αναφορά σφάλματος", - "Riot does not know how to join a room on this network": "To Riot δεν γνωρίζει πως να συνδεθεί σε δωμάτια που ανήκουν σ' αυτό το δίκτυο", - "Search for a room": "Αναζήτηση δωματίου", - "Sorry, your browser is <b>not</b> able to run Riot.": "Λυπούμαστε, αλλά ο περιηγητές σας <b>δεν</b> υποστηρίζεται από το Riot.", - "There are advanced notifications which are not shown here": "Υπάρχουν προχωρημένες ειδοποιήσεις οι οποίες δεν εμφανίζονται εδώ", - "Unable to join network": "Δεν είναι δυνατή η σύνδεση στο δίκτυο", - "unknown error code": "άγνωστος κωδικός σφάλματος", - "Unnamed room": "Ανώνυμο δωμάτιο", - "Uploaded on %(date)s by %(user)s": "Απεστάλη στις %(date)s από %(user)s", - "Uploading report": "Αποστολή αναφοράς", - "What's New": "Τι νέο υπάρχει", - "What's new?": "Τι νέο υπάρχει;", - "When I'm invited to a room": "Όταν με προσκαλούν σ' ένα δωμάτιο", - "World readable": "Εμφανές σε όλους", - "You cannot delete this image. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτή την εικόνα. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτό το μήνυμα. (%(code)s)", - "You are not receiving desktop notifications": "Δεν λαμβάνετε ειδοποιήσεις στην επιφάνεια εργασίας", - "Sunday": "Κυριακή", - "Monday": "Δευτέρα", - "Tuesday": "Τρίτη", - "Wednesday": "Τετάρτη", - "Thursday": "Πέμπτη", - "Friday": "Παρασκευή", - "Saturday": "Σάββατο", - "Today": "Σήμερα", - "Yesterday": "Χθές", - "OK": "Εντάξει", "You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για το διαμοιρασμό της επιφάνειας εργασίας μέσω κλήσης.", - "Forget": "Παράλειψη", "Riot is not supported on mobile web. Install the app?": "Το Riot δεν υποστηρίζεται από περιηγητές κινητών. Θέλετε να εγκαταστήσετε την εφαρμογή;", - "Unhide Preview": "Προεπισκόπηση", - "Waiting for response from server": "Αναμονή απάντησης από τον διακομιστή", - "Collecting logs": "Συγκέντρωση πληροφοριών", - "Enable them now": "Ενεργοποίηση", - "Failed to forget room %(errCode)s": "Δεν ήταν δυνατή η διαγραφή του δωματίου (%(errCode)s)", - "Failed to update keywords": "Οι λέξεις κλειδιά δεν ενημερώθηκαν", - "Failed to get protocol list from Home Server": "Δεν ήταν δυνατή η εύρεση των διαθέσιμων πρωτοκόλλων από το διακομιστή", - "Failed to remove tag %(tagName)s from room": "Δεν ήταν δυνατή η διαγραφή της ετικέτας %(tagName)s από το δωμάτιο", - "Notification targets": "Στόχοι ειδοποιήσεων", - "Please describe the bug and/or send logs.": "Παρακαλούμε περιγράψτε το σφάλμα και/ή στείλτε πληροφορίες σχετικά με την εφαρμογή.", - "Remove %(name)s from the directory?": "Αφαίρεση του %(name)s από το ευρετήριο;", - "remove %(name)s from the directory.": "αφαίρεση του %(name)s από το ευρετήριο.", - "Send logs": "Αποστολή πληροφοριών", - "Source URL": "Πηγαίο URL", - "The server may be unavailable or overloaded": "Ο διακομιστής είναι μη διαθέσιμος ή υπερφορτωμένος", - "Unable to fetch notification target list": "Δεν ήταν δυνατή η εύρεση στόχων για τις ειδοποιήσεις", - "Unable to look up room ID from server": "Δεν είναι δυνατή η εύρεση του ID για το δωμάτιο", - "View Decrypted Source": "Προβολή του αποκρυπτογραφημένου κώδικα", - "View Source": "Προβολή κώδικα", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Ισως να έχετε κάνει τις ρυθμίσεις σε άλλη εφαρμογή εκτός του Riot. Δεν μπορείτε να τις αλλάξετε μέσω του Riot αλλά ισχύουν κανονικά", - "Couldn't find a matching Matrix room": "Δεν βρέθηκε κάποιο δωμάτιο", - "Failed to get public room list": "Δεν ήταν δυνατή η λήψη της λίστας με τα δημόσια δωμάτια", - "Failed to set direct chat tag": "Δεν ήταν δυνατός ο χαρακτηρισμός της συνομιλίας ως 1-προς-1", - "powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix", - "Quote": "Παράθεση", - "Fetching third party location failed": "Η λήψη τοποθεσίας απέτυχε", - "(HTTP status %(httpStatus)s)": "(Κατάσταση HTTP %(httpStatus)s)", - "Login": "Σύνδεση", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Το Riot χρησιμοποιεί αρκετά προχωρημένα χαρακτηριστικά των περιηγητών Ιστού, ορισμένα από τα οποία δεν είναι διαθέσιμα ή είναι σε πειραματικό στάδιο στον περιηγητή σας.", - "The Home Server may be too old to support third party networks": "Ο διακομιστής μπορεί να είναι αρκετά παλιός για να υποστηρίζει δίκτυα τρίτων", + "powered by Matrix": "με τη βοήθεια του Matrix", "Welcome to Riot.im": "Καλώς ήλθατε στο Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία & συνεργασία με τη βοήθεια του [matrix]", - "Search the room directory": "Αναζήτηση του ευρετηρίου δωματίων", + "Search the room directory": "Αναζήτηση στο ευρετήριο δωματίων", "Chat with Riot Bot": "Συνομιλία με το Riot Bot", "Get started with some tips from Riot Bot!": "Ξεκινήστε με μερικές συμβουλές από το Riot Bot!", - "General discussion about Matrix and Riot": "Γενική συζήτηση σχετικά με Matrix και Riot", + "General discussion about Matrix and Riot": "Γενική συζήτηση σχετικά με το Matrix και το Riot", "Discussion of all things Matrix!": "Συζήτηση για όλα τα πράγματα του Matrix!", "Riot/Web & Desktop chat": "Συζήτηση για το Riot/Web & Desktop", "Riot/iOS & matrix-ios-sdk chat": "Συζήτηση για το Riot/iOS & matrix-ios-sdk", @@ -160,35 +22,22 @@ "Community-run support for Synapse": "Κοινοτική υποστήριξη για το Synapse", "Admin support for Dendrite": "Υποστήριξη διαχειριστή για το Dendrite", "Announcements about Synapse releases": "Ανακοινώσεις σχετικά με τις εκδόσεις του Synapse", - "Support for those using and running matrix-appservice-irc": "Υποστήριξη για τους χρήστες που χρησιμοποιούν το matrix-appservice-irc", + "Support for those using and running matrix-appservice-irc": "Υποστήριξη για τους χρήστες του matrix-appservice-irc", "Building services on Matrix": "Ανάπτυξη υπηρεσιών στο Matrix", "Support for those using the Matrix spec": "Υποστήριξη για τους χρήστες που χρησιμοποιούν το Matrix spec", "Design and implementation of E2E in Matrix": "Σχεδιασμός και υλοποίηση του E2E στο Matrix", "Implementing VR services with Matrix": "Υλοποίηση υπηρεσίων VR με το Matrix", "Implementing VoIP services with Matrix": "Υλοποίηση υπηρεσίων VoIP με το Matrix", "Discussion of the Identity Service API": "Συζήτηση σχετικά με το Identity Service API", - "Contributing code to Matrix and Riot": "Συνεισφορά κώδικα στο Matrix και Riot", + "Contributing code to Matrix and Riot": "Συνεισφορά κώδικα στο Matrix και στο Riot", "Dev chat for the Riot/Web dev team": "Συζήτηση με την ομάδα ανάπτυξης του Riot/Web", "Dev chat for the Dendrite dev team": "Συζήτηση με την ομάδα ανάπτυξης του Dendrite", - "Co-ordination for Riot/Web translators": "Συντονισμός για μεταφραστές του Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Αρκετά δωμάτια υπάρχουν ήδη στο Matrix, συνδεδεμένα σε υπάρχοντα δίκτυα (Slack, IRC, Gitter κ.λπ) ή αυτόνομα. Ρίξτε μια ματιά στο ευρετήριο!", - "Failed to change password. Is your password correct?": "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης. Είναι σωστός ο κωδικός πρόσβασης;", - "You have successfully set a password!": "Ο κωδικός πρόσβασης ορίστηκε επιτυχώς!", - "You can now return to your account after signing out, and sign in on other devices.": "Μπορείτε να επιστρέψετε στον λογαριασμό σας αφού αποσυνδεθείτε και συνδεθείτε από άλλες συσκευές.", - "Continue": "Συνέχεια", - "Please set a password!": "Παρακαλούμε ορίστε έναν κωδικό πρόσβασης!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Αυτό θα σας επιτρέψει να επιστρέψετε στον λογαριασμό σας αφού αποσυνδεθείτε και συνδεθείτε από άλλες συσκευές.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Προκειμένου να διαγνωστούν προβλήματα, τα αρχεία καταγραφής από αυτόν τον πελάτη θα σταλούν με αυτήν την αναφορά σφάλματος. Αν προτιμάτε να στείλετε μόνο το παραπάνω κείμενο, απενεργοποιήστε:", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Με τον τρέχον περιηγητή, η εμφάνιση και η αίσθηση της εφαρμογής ενδέχεται να είναι εντελώς εσφαλμένη και ορισμένες ή όλες οι λειτουργίες ενδέχεται να μην λειτουργούν. Εάν θέλετε να το δοκιμάσετε ούτως ή άλλως μπορείτε να συνεχίσετε, αλλά είστε μόνοι σας σε ό, τι αφορά τα προβλήματα που μπορεί να αντιμετωπίσετε!", - "Failed to set Direct Message status of room": "Δεν ήταν δυνατός ο ορισμός της κατάστασης Direct Message του δωματίου", "Support for those using, running and writing other bridges": "Υποστήριξη για τους χρήστες που χρησιμοποιούν ή αναπτύσσουν εφαρμογές ενσωμάτωσης για το Matrix", - "You have successfully set a password and an email address!": "Ο κωδικός πρόσβασης και η διεύθυνση ηλεκτρονικής αλληλογραφίας ορίστηκαν επιτυχώς!", - "Remember, you can always set an email address in user settings if you change your mind.": "Να θυμάστε ότι μπορείτε πάντα να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στις ρυθμίσεις χρήστη αν αλλάξετε γνώμη.", - "To return to your account in future you need to <u>set a password</u>": "Για να επιστρέψετε στον λογαριασμό σας μελλοντικα πρέπει να ορίσετε έναν <u>κωδικό πρόσβασης</u>", - "Set Password": "Ορισμός κωδικού πρόσβασης", - "Warning": "Προειδοποίηση", - "Checking for an update...": "Γίνεται έλεγχος για ενημέρωση...", - "Error encountered (%(errorDetail)s).": "Παρουσιάστηκε σφάλμα (%(errorDetail)s).", - "No update available.": "Δεν υπάρχει διαθέσιμη ενημέρωση.", - "Downloading update...": "Γίνεται λήψη της ενημέρωσης..." + "Co-ordination for Riot translators": "Συντονισμός για μεταφραστές του Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις διακομιστή για να συνδεθείτε σε άλλους διακομιστές Matrix δίνοντας ένα διαφορετικό URL διακομιστή.<br/>Αυτό σας επιτρέπει να χρησιμοποιήσετε το Riot με έναν υπάρχοντα λογαριασμό Matrix σε έναν διαφορετικό διακομιστή.<br/><br/>Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο διακομιστή ταυτοποίησης αλλά δεν θα μπορείτε να προσκαλέσετε χρήστες ή να προσκληθείτε εσείς μέσω διεύθυνσης ηλεκτρονικού ταχυδρομίου.", + "Sign In": "Σύνδεση", + "Create Account": "Δημιουργία Λογαριασμού", + "Need help?": "Χρειάζεστε βοήθεια;", + "Room Directory": "Ευρετήριο δωματίων" } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index bbb94a60..8fc45a29 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,225 +1,26 @@ { - "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", - "Collecting app version information": "Collecting app version information", - "Collecting logs": "Collecting logs", - "Uploading report": "Uploading report", - "Waiting for response from server": "Waiting for response from server", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.", + "The message from the parser is: %(message)s": "The message from the parser is: %(message)s", + "Invalid JSON": "Invalid JSON", + "Your Riot is misconfigured": "Your Riot is misconfigured", + "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.", + "Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", "Unknown device": "Unknown device", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", - "Messages containing my display name": "Messages containing my display name", - "Messages containing my user name": "Messages containing my user name", - "Messages in one-to-one chats": "Messages in one-to-one chats", - "Messages in group chats": "Messages in group chats", - "When I'm invited to a room": "When I'm invited to a room", - "Call invitation": "Call invitation", - "Messages sent by bot": "Messages sent by bot", - "Error saving email notification preferences": "Error saving email notification preferences", - "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", - "Keywords": "Keywords", - "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", - "OK": "OK", - "Failed to change settings": "Failed to change settings", - "Operation failed": "Operation failed", - "Can't update user notification settings": "Can't update user notification settings", - "Failed to update keywords": "Failed to update keywords", - "Messages containing <span>keywords</span>": "Messages containing <span>keywords</span>", - "Notify for all other messages/rooms": "Notify for all other messages/rooms", - "Notify me for anything else": "Notify me for anything else", - "Enable notifications for this account": "Enable notifications for this account", - "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", - "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", - "Enable email notifications": "Enable email notifications", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", - "Unable to fetch notification target list": "Unable to fetch notification target list", - "Notification targets": "Notification targets", - "Advanced notification settings": "Advanced notification settings", - "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", - "Enable desktop notifications": "Enable desktop notifications", - "Show message in desktop notification": "Show message in desktop notification", - "Enable audible notifications in web client": "Enable audible notifications in web client", - "Off": "Off", - "On": "On", - "Noisy": "Noisy", - "Search…": "Search…", - "Search": "Search", - "This Room": "This Room", - "All Rooms": "All Rooms", - "Sunday": "Sunday", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Today": "Today", - "Yesterday": "Yesterday", - "Custom Server Options": "Custom Server Options", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", - "Dismiss": "Dismiss", "powered by Matrix": "powered by Matrix", - "You are not receiving desktop notifications": "You are not receiving desktop notifications", - "Enable them now": "Enable them now", - "What's New": "What's New", - "Update": "Update", - "What's new?": "What's new?", - "A new version of Riot is available.": "A new version of Riot is available.", - "To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>", - "Set Password": "Set Password", - "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", - "Checking for an update...": "Checking for an update...", - "No update available.": "No update available.", - "Downloading update...": "Downloading update...", - "Warning": "Warning", - "Error": "Error", - "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", - "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", - "Remove": "Remove", - "Close": "Close", - "Download this file": "Download this file", - "Please describe the bug and/or send logs.": "Please describe the bug and/or send logs.", - "Loading bug report module": "Loading bug report module", - "Bug report sent": "Bug report sent", - "Thank you!": "Thank you!", - "Failed to send report: ": "Failed to send report: ", - "Cancel": "Cancel", - "Report a bug": "Report a bug", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Please describe the bug. What did you do? What did you expect to happen? What actually happened?", - "Describe your problem here.": "Describe your problem here.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:", - "Send logs": "Send logs", - "Send": "Send", - "Unavailable": "Unavailable", - "Changelog": "Changelog", - "Back": "Back", - "Send Custom Event": "Send Custom Event", - "You must specify an event type!": "You must specify an event type!", - "Event sent!": "Event sent!", - "Failed to send custom event.": "Failed to send custom event.", - "Event Type": "Event Type", - "State Key": "State Key", - "Event Content": "Event Content", - "Send Account Data": "Send Account Data", - "Filter results": "Filter results", - "Explore Room State": "Explore Room State", - "Edit": "Edit", - "Explore Account Data": "Explore Account Data", - "Toolbox": "Toolbox", - "Developer Tools": "Developer Tools", - "You have successfully set a password!": "You have successfully set a password!", - "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", - "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", - "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", - "Continue": "Continue", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", - "Please set a password!": "Please set a password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", - "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", - "Resend": "Resend", - "Cancel Sending": "Cancel Sending", - "Forward Message": "Forward Message", - "Reply": "Reply", - "Unpin Message": "Unpin Message", - "Pin Message": "Pin Message", - "View Source": "View Source", - "View Decrypted Source": "View Decrypted Source", - "Unhide Preview": "Unhide Preview", - "Permalink": "Permalink", - "Quote": "Quote", - "Source URL": "Source URL", - "Online": "Online", - "Away": "Away", - "Appear Offline": "Appear Offline", - "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", - "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", - "unknown error code": "unknown error code", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "All messages (noisy)": "All messages (noisy)", - "All messages": "All messages", - "Mentions only": "Mentions only", - "Mute": "Mute", - "Leave": "Leave", - "Forget": "Forget", - "Reject": "Reject", - "Favourite": "Favourite", - "Low Priority": "Low Priority", - "Direct Chat": "Direct Chat", - "View Community": "View Community", - "Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, your browser is <b>not</b> able to run Riot.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", - "I understand the risks and wish to continue": "I understand the risks and wish to continue", - "Couldn't load home page": "Couldn't load home page", - "Login": "Login", - "Register": "Register", - "Members": "Members", - "%(count)s Members|other": "%(count)s Members", - "%(count)s Members|one": "%(count)s Member", - "Invite to this room": "Invite to this room", - "Files": "Files", - "Notifications": "Notifications", - "Rooms": "Rooms", - "Hide panel": "Hide panel", - "Invite to this community": "Invite to this community", - "Add rooms to this community": "Add rooms to this community", - "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", - "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", - "Failed to get public room list": "Failed to get public room list", - "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", - "Unnamed room": "Unnamed room", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", - "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", - "Remove from Directory": "Remove from Directory", - "remove %(name)s from the directory.": "remove %(name)s from the directory.", - "delete the alias.": "delete the alias.", - "Unable to join network": "Unable to join network", - "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", - "Room not found": "Room not found", - "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", - "Fetching third party location failed": "Fetching third party location failed", - "Unable to look up room ID from server": "Unable to look up room ID from server", - "World readable": "World readable", - "Guests can join": "Guests can join", - "Directory": "Directory", - "No rooms to show": "No rooms to show", - "Search for a room": "Search for a room", - "#example": "#example", - "more": "more", - "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", - "Expand panel": "Expand panel", - "Collapse panel": "Collapse panel", - "Filter room names": "Filter room names", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.", + "Dismiss": "Dismiss", "Welcome to Riot.im": "Welcome to Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", - "Search the room directory": "Search the room directory", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", + "Sign In": "Sign In", + "Create Account": "Create Account", + "Need help?": "Need help?", "Chat with Riot Bot": "Chat with Riot Bot", - "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!", - "General discussion about Matrix and Riot": "General discussion about Matrix and Riot", - "Discussion of all things Matrix!": "Discussion of all things Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", - "Matrix technical discussions": "Matrix technical discussions", - "Running Matrix services": "Running Matrix services", - "Community-run support for Synapse": "Community-run support for Synapse", - "Admin support for Dendrite": "Admin support for Dendrite", - "Announcements about Synapse releases": "Announcements about Synapse releases", - "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc", - "Building services on Matrix": "Building services on Matrix", - "Support for those using the Matrix spec": "Support for those using the Matrix spec", - "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix", - "Implementing VR services with Matrix": "Implementing VR services with Matrix", - "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix", - "Discussion of the Identity Service API": "Discussion of the Identity Service API", - "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges", - "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", - "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", - "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", - "Co-ordination for Riot/Web translators": "Co-ordination for Riot/Web translators" + "Explore rooms": "Explore rooms", + "Room Directory": "Room Directory" } diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 5d24c945..a4bb1cb2 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -1,155 +1,12 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.", - "A new version of Riot is available.": "A new version of Riot is available.", - "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", - "Advanced notification settings": "Advanced notification settings", - "All messages": "All messages", - "All messages (noisy)": "All messages (noisy)", - "All Rooms": "All Rooms", - "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", - "An error occurred whilst saving your email notification preferences.": "An error occurred while saving your email notification preferences.", - "Call invitation": "Call invitation", - "Cancel": "Cancel", - "Cancel Sending": "Cancel Sending", - "Can't update user notification settings": "Can't update user notification settings", - "Changelog": "Changelog", - "Close": "Close", - "Collapse panel": "Collapse panel", - "Collecting app version information": "Collecting app version information", - "Collecting logs": "Collecting logs", - "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", "Custom Server Options": "Custom Server Options", - "customServer_text": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", - "delete the alias.": "delete the alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", - "Describe your problem here.": "Describe your problem here.", - "Direct Chat": "Direct Chat", - "Directory": "Directory", "Dismiss": "Dismiss", - "Download this file": "Download this file", - "Enable audible notifications in web client": "Enable audible notifications in web client", - "Enable desktop notifications": "Enable desktop notifications", - "Enable email notifications": "Enable email notifications", - "Enable notifications for this account": "Enable notifications for this account", - "Enable them now": "Enable them now", - "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", - "Error": "Error", - "Error saving email notification preferences": "Error saving email notification preferences", - "#example": "#example", - "Expand panel": "Expand panel", - "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", - "Failed to change settings": "Failed to change settings", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Failed to update keywords": "Failed to update keywords", - "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", - "Failed to get public room list": "Failed to get public room list", - "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", - "Failed to send report: ": "Failed to send report: ", - "Failed to set direct chat tag": "Failed to set direct chat tag", - "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", - "Favourite": "Favorite", - "Fetching third party location failed": "Fetching third party location failed", - "Files": "Files", - "Filter room names": "Filter room names", - "Forget": "Forget", - "Forward Message": "Forward Message", - "Guests can join": "Guests can join", - "Hide panel": "Hide panel", - "I understand the risks and wish to continue": "I understand the risks and wish to continue", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please uncheck:", - "Invite to this room": "Invite to this room", - "Keywords": "Keywords", - "Leave": "Leave", - "Loading bug report module": "Loading bug report module", - "Low Priority": "Low Priority", - "Members": "Members", - "Mentions only": "Mentions only", - "Messages containing my display name": "Messages containing my display name", - "Messages containing <span>keywords</span>": "Messages containing <span>keywords</span>", - "Messages containing my user name": "Messages containing my user name", - "Messages in group chats": "Messages in group chats", - "Messages in one-to-one chats": "Messages in one-to-one chats", - "Messages sent by bot": "Messages sent by bot", - "more": "more", - "Mute": "Mute", - "No rooms to show": "No rooms to show", - "Noisy": "Noisy", - "Notification targets": "Notification targets", - "Notifications": "Notifications", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", - "Notify for all other messages/rooms": "Notify for all other messages/rooms", - "Notify me for anything else": "Notify me for anything else", - "Off": "Off", - "On": "On", - "Operation failed": "Operation failed", - "Permalink": "Permalink", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Please describe the bug. What did you do? What did you expect to happen? What actually happened?", - "Please describe the bug and/or send logs.": "Please describe the bug and/or send logs.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.", "powered by Matrix": "powered by Matrix", - "Quote": "Quote", - "Reject": "Reject", - "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", - "Remove": "Remove", - "remove %(name)s from the directory.": "remove %(name)s from the directory.", - "Remove from Directory": "Remove from Directory", - "Report a bug": "Report a bug", - "Resend": "Resend", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", - "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", - "Room not found": "Room not found", - "Search": "Search", - "Search…": "Search…", - "Search for a room": "Search for a room", - "Send": "Send", - "Send logs": "Send logs", - "Source URL": "Source URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, your browser is <b>not</b> able to run Riot.", - "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", - "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", - "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", - "This Room": "This Room", - "Unable to fetch notification target list": "Unable to fetch notification target list", - "Unable to join network": "Unable to join network", - "Unable to look up room ID from server": "Unable to look up room ID from server", - "Unavailable": "Unavailable", - "Unhide Preview": "Unhide Preview", "Unknown device": "Unknown device", - "unknown error code": "unknown error code", - "Unnamed room": "Unnamed room", - "Update": "Update", - "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", - "Uploading report": "Uploading report", - "View Decrypted Source": "View Decrypted Source", - "View Source": "View Source", - "What's New": "What's New", - "What's new?": "What's new?", - "Waiting for response from server": "Waiting for response from server", - "When I'm invited to a room": "When I'm invited to a room", - "World readable": "World readable", - "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", - "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", - "You are not receiving desktop notifications": "You are not receiving desktop notifications", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", - "Sunday": "Sunday", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Today": "Today", - "Yesterday": "Yesterday", - "OK": "OK", "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", - "Login": "Login", - "Continue": "Continue", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", "Welcome to Riot.im": "Welcome to Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", "Chat with Riot Bot": "Chat with Riot Bot", @@ -173,25 +30,24 @@ "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", - "Co-ordination for Riot/Web translators": "Co-ordination for Riot/Web translators", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", - "You have successfully set a password!": "You have successfully set a password!", - "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", - "Please set a password!": "Please set a password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", - "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", - "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", - "Warning": "Warning", - "Pin Message": "Pin Message", - "Unpin Message": "Unpin Message", - "Checking for an update...": "Checking for an update...", - "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", - "No update available.": "No update available.", - "Downloading update...": "Downloading update...", - "To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>", - "Set Password": "Set Password", - "Couldn't load home page": "Couldn't load home page" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", + "Co-ordination for Riot translators": "Co-ordination for Riot translators", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.", + "Sign In": "Sign In", + "Create Account": "Create Account", + "Need help?": "Need help?", + "Explore rooms": "Explore rooms", + "Room Directory": "Room Directory", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.", + "The message from the parser is: %(message)s": "The message from the parser is: %(message)s", + "Invalid JSON": "Invalid JSON", + "Your Riot is misconfigured": "Your Riot is misconfigured", + "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.", + "Invalid configuration: no default server specified.": "Invalid configuration: no default server specified." } diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index ecba1c95..622c79f0 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -1,151 +1,14 @@ { - "A new version of Riot is available.": "Nova versio de Riot haveblas.", - "All messages": "Ĉiuj mesaĝoj", - "All messages (noisy)": "Ĉiuj mesaĝoj (lauta)", - "All Rooms": "Ĉiuj babilejoj", - "Cancel": "Nuligi", - "delete the alias.": "forigi la kromnomon.", - "Describe your problem here.": "Priskribu vian problemon ĉi tie.", - "Direct Chat": "Rekta babilo", - "Directory": "Dosierujo", "Dismiss": "Rezigni", - "Download this file": "Elŝuti ĉi tiun dosieron", - "#example": "#ekzemplo", - "Files": "Dosieroj", - "Forget": "Forgesi", - "Guests can join": "Gastoj povas aliĝi", - "I understand the risks and wish to continue": "Mi komprenas la riskojn kaj volas daŭrigi", - "Invite to this room": "Inviti al ĉi tiu ĉambro", - "Keywords": "Ŝlosilvortoj", - "Leave": "Foriri", - "Low Priority": "Malalta prioritato", - "Messages containing my display name": "Mesaĝoj enhavantaj mian vidigan nomon", - "Messages containing <span>keywords</span>": "Mesaĝoj enhavantaj <span>ŝlosilovortojn</span>", - "Messages containing my user name": "Mesaĝoj enhavantaj mian salutnomon", - "Messages in group chats": "Mesaĝoj en grupaj babiloj", - "Mute": "Silentigi", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Bonvolu priskribi la cimon. Kion vi faris? Kion vi atendis? Kio fakte okazis?", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Bonvolu instali <a href=\"https://www.google.com/chrome\">\"Chrome\"</a> aŭ <a href=\"https://getfirefox.com\">\"Firefox\"</a> por la plej bona sperto.", - "powered by Matrix": "funkciigata de Matrix", - "Quote": "Citi", - "Reject": "Rifuzi", - "Resend": "Resendi", - "Room not found": "Ĉambro ne troviĝis", - "Search": "Serĉi", - "Search…": "Serĉi…", - "Search for a room": "Serĉi ĉambron", - "Send": "Sendi", - "This Room": "Ĉi tiu ĉambro", - "Add an email address above to configure email notifications": "Aldonu retadreson supre por agordi retpoŝtajn sciigojn", - "Advanced notification settings": "Specialaj agordoj de sciigoj", - "Call invitation": "Invito al voko", - "All notifications are currently disabled for all targets.": "Ĉiuj sciigoj nun estas malŝaltitaj por ĉiuj aparatoj.", - "An error occurred whilst saving your email notification preferences.": "Eraro okazis dum konservado de agordoj pri retpoŝtaj sciigoj.", - "Cancel Sending": "Nuligi sendon", - "Can't update user notification settings": "Agordoj de sciigoj al uzanto ne ĝisdatigeblas", - "Changelog": "Protokolo de ŝanĝoj", - "Close": "Fermi", - "Collapse panel": "Maletendi panelon", - "Collecting app version information": "Kolektanta informon pri versio de la aplikaĵo", - "Collecting logs": "Kolektante protokolon", - "Couldn't find a matching Matrix room": "Malsukcesis trovi kongruan ĉambron en Matrix", + "powered by Matrix": "povigita per Matrix", "Custom Server Options": "Propraj servilaj elektoj", - "customServer_text": "Vi povas uzi opciojn personigitajn de la servilo por ensaluti en aliajn servilojn Matrix specifante alian adreson URL-an de alia servilo Home.<br/>Tio permesas al vi uzi Riot per ekzistanta konto en alia Home servilo.<br/><br/>Vi povas ankaŭ agordi servilon identecan personigita, sed ne eblos inviti uzantojn pere de retpoŝtadreso, aŭ esti invitita pere de retpoŝtadreso vi mem.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Ĉu forigi la ĉambran kromnomon %(alias)s kaj forigi %(name)s de la ujo?", - "Enable audible notifications in web client": "Ŝalti aŭdeblajn sciigojn en la retkliento", - "Enable desktop notifications": "Ŝalti labortablajn sciigojn", - "Enable email notifications": "Ŝalti retpoŝtajn sciigojn", - "Enable notifications for this account": "Ŝalti sciigojn por tiu ĉi konto", - "Enable them now": "Ŝalti ilin nun", - "Enter keywords separated by a comma:": "Entajpu ŝlosilvortojn apartigitajn per komoj:", - "Error": "Eraro", - "Error saving email notification preferences": "Eraro konservante agordojn pri retpoŝtaj sciigoj", - "Expand panel": "Etendi panelon", - "Failed to add tag %(tagName)s to room": "Malsukcesis aldoni etikedon %(tagName)s al la ĉambro", - "Failed to change settings": "Malsukcesis ŝanĝi la agordojn", - "Failed to forget room %(errCode)s": "Malsukcesis forgesi ĉambron %(errCode)s", - "Failed to update keywords": "Malsukcesis ĝisdatigi la ŝlosilvortojn", - "Failed to get protocol list from Home Server": "Malsukcesis akiri liston de protokoloj el la hejmservilo", - "Failed to get public room list": "Malsukcesis akiri liston de publikaj ĉambroj", - "Failed to remove tag %(tagName)s from room": "Malsukcesis forigi etikedon %(tagName)s el la ĉambro", - "Failed to send report: ": "Malsukcesis sendi raporton: ", - "Failed to set direct chat tag": "Malsukcesis agordi la etikedon de rekta babilo", - "Failed to set Direct Message status of room": "Malsukcesis agordi staton de rekta mesaĝo al la ĉambro", - "Forward Message": "Plusendi mesaĝon", - "Hide panel": "Kaŝi panelon", - "(HTTP status %(httpStatus)s)": "(stato de HTTP %(httpStatus)s)", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Por diagnozi problemojn, protokoloj el tiu ĉi kliento sendiĝos kune kun tiu ĉi raporto de eraro. Se vi preferas sendi nur la supran tekston, bonvolu malŝalti:", - "Login": "Saluti", - "Loading bug report module": "Enleganta cimraportan modulon", - "Members": "Anoj", - "Mentions only": "Nur mencioj", - "Messages in one-to-one chats": "Mesaĝoj en duopaj babiloj", - "Messages sent by bot": "Mesaĝoj senditaj per roboto", - "more": "pli", - "No rooms to show": "Neniuj ĉambroj montreblas", - "Noisy": "Brua", - "Notification targets": "Celoj de sciigoj", - "Notifications": "Sciigoj", - "Notifications on the following keywords follow rules which can’t be displayed here:": "La sciigoj de la jenaj ŝlosilvortoj sekvas regulojn kiuj ne povas esti montrataj ĉi tie:", - "Notify for all other messages/rooms": "Sciigu min por ĉiu alia babilejo", - "Notify me for anything else": "Sciigu min pri ĉio alia", - "Off": "For", - "On": "Ek", - "Operation failed": "Ago malsukcesis", - "Permalink": "Konstanta ligilo", - "Please describe the bug and/or send logs.": "Bonvolu priskribi la cimon kaj/aŭ sendi protokolojn.", - "Remove %(name)s from the directory?": "Ĉu forigi %(name)s de la ujo?", - "Remove": "Forigi", - "remove %(name)s from the directory.": "forigi %(name)s de la ujo.", - "Remove from Directory": "Forigi de ujo", - "Report a bug": "Raporti cimon", "Riot Desktop on %(platformName)s": "Riot Labortablo sur %(platformName)s", - "Riot does not know how to join a room on this network": "Riot ne scias aliĝi al ĉambroj en tiu ĉi reto", "Riot is not supported on mobile web. Install the app?": "Riot ne estas subtenata sur poŝkomputila reto. Ĉu instali la aplikaĵon?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uzas multajn specialajn funkciojn, el kiuj kelkaj ne disponeblas aŭ estas eksperimentaj en via nuna foliumilo.", - "Send logs": "Sendi protokolojn", - "Source URL": "Fonta URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Pardonu, via foliumilo <b>ne kapablas</b> funkciigi klienton Riot.", - "The Home Server may be too old to support third party networks": "La hejmservilo povas esti tro malnova por subteni retojn de eksteraj liverantoj", - "There are advanced notifications which are not shown here": "Ekzistas specialaj sciigoj, kiuj ne montriĝas ĉi tie", - "The server may be unavailable or overloaded": "La servilo povas esti nedisponebla aŭ troŝarĝita", - "Unable to fetch notification target list": "Malsukcesis akiri la liston de celoj por sciigoj", - "Unable to join network": "Malsukcesis konektiĝi al la reto", - "Unable to look up room ID from server": "Ĉambra identigaĵo ne akireblas de la servilo", - "Unavailable": "Nedisponebla", - "Unhide Preview": "Malkaŝi antaŭrigardon", "Unknown device": "Nekonata aparato", - "unknown error code": "nekonata kodo de eraro", - "Unnamed room": "Sennoma ĉambro", - "Update": "Ĝisdatigi", - "Uploaded on %(date)s by %(user)s": "Alŝutita je %(date)s de %(user)s", - "Uploading report": "Alŝutante raporton", - "View Decrypted Source": "Vidi malĉifritan fonton", - "View Source": "Vidi fonton", - "What's New": "Kio novas", - "What's new?": "Kio novas?", - "Waiting for response from server": "Atendante respondon el la servilo", - "When I'm invited to a room": "Kiam mi estas invitita al ĉambro", - "World readable": "Legebla de ĉiuj", - "You cannot delete this image. (%(code)s)": "Vi ne povas forigi tiun ĉi bildon. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Vi ne povas forigi tiun ĉi mesaĝon. (%(code)s)", - "You are not receiving desktop notifications": "Vi ne ricevadas sciigojn labortablajn", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vi eble agordis ilin en alia kliento. Vi ne povas agordi ilin en Riot, sed ili ankoraŭ validas", - "Sunday": "Dimanĉo", - "Monday": "Lundo", - "Tuesday": "Mardo", - "Wednesday": "Merkredo", - "Thursday": "Ĵaŭdo", - "Friday": "Vendredo", - "Saturday": "Sabato", - "Today": "Hodiaŭ", - "Yesterday": "Hieraŭ", - "OK": "Bone", "You need to be using HTTPS to place a screen-sharing call.": "Vi devas uzi HTTPS por ekranvidadi.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Kun via nuna foliumilo, la aspekto kaj funkciado de la aplikaĵo povas esti tute malĝusta, kaj kelkaj aŭ ĉiu funkcioj eble ne tute funkcios. Se vi tamen volas provi, vi povas daŭrigi, sed vi ricevos nenian subtenon se vi renkontos problemojn!", - "Welcome to Riot.im": "Bonvenu al Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Malcentra, ĉifrita babilado & kunlaboro povigita de [matrix]", - "Search the room directory": "Serĉi en la ĉambrujo", + "Welcome to Riot.im": "Bonvenon al Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Malcentra, ĉifrita babilado & kunlaboro povigita per [matrix]", + "Search the room directory": "Serĉi en la ĉambra dosierujo", "Chat with Riot Bot": "Babilu kun la roboto Riot Bot", "Get started with some tips from Riot Bot!": "Komencu kun kelkaj sugestoj de la roboto Riot Bot!", "General discussion about Matrix and Riot": "Ĝenerala diskutado pri Matrix kaj Riot", @@ -169,56 +32,22 @@ "Contributing code to Matrix and Riot": "Kontribuado de kodo al Matrix kaj Riot", "Dev chat for the Riot/Web dev team": "Babilado por la programista skipo de Riot ĉe reto", "Dev chat for the Dendrite dev team": "Babilado por la programista skipo de Dendrite", - "Co-ordination for Riot/Web translators": "Kunordigado por tradukistoj de Riot ĉe reto", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!", - "Failed to change password. Is your password correct?": "Malsukcesis ŝanĝi la pasvorton. Ĉu via pasvorto estas ĝusta?", - "You have successfully set a password!": "Vi sukcese agordis pasvorton!", - "You can now return to your account after signing out, and sign in on other devices.": "Vi nun rajtas reveni al via konto post adiaŭo, kaj saluti per ĝi kun aliaj aparatoj.", - "Continue": "Daŭrigi", - "Please set a password!": "Bonvolu agordi pasvorton!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Tio ĉi permesos al vi reveni al via konto post adiaŭo, kaj saluti kun alia aparato.", - "You have successfully set a password and an email address!": "Vi sukcese agordis pasvorton kaj retpoŝtadreson!", - "Remember, you can always set an email address in user settings if you change your mind.": "Memoru: vi ĉiam povas agordi retpoŝtadreson en viaj agordoj por uzantoj.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> kaj <a href=\"http://opera.com\">Opera</a> ankaŭ funkcias.", - "Favourite": "Ŝatata", - "Fetching third party location failed": "Malsukcesis trovi lokon de ekstera liveranto", - "Filter room names": "Filtri nomojn de ĉambroj", - "Warning": "Averto", - "Checking for an update...": "Serĉanta ĝisdatigojn…", - "No update available.": "Neniuj ĝisdatigoj haveblas.", - "Unpin Message": "Malfiksi mesaĝon", - "Rooms": "Ĉambroj", - "Show message in desktop notification": "Montradi mesaĝojn en labortablaj sciigoj", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.", - "Appear Offline": "Montriĝi kiel eksterreta", - "Away": "Foresta", - "To return to your account in future you need to <u>set a password</u>": "Por reveni al via konto estonte, vi devas <u>agordi pasvorton</u>", - "Set Password": "Agordi pasvorton", - "Error encountered (%(errorDetail)s).": "Eraro okazis (%(errorDetail)s).", - "Downloading update...": "Elŝutanta ĝisdatigon…", - "Bug report sent": "Cimraporto sendiĝis", - "Thank you!": "Dankon!", - "Back": "Reen", - "Send Custom Event": "Sendi propran okazon", - "You must specify an event type!": "Vi devas specifi tipon de okazo!", - "Event sent!": "Okazo sendiĝis!", - "Failed to send custom event.": "Malsukcesis sendi propran okazon.", - "Event Type": "Tipo de okazo", - "State Key": "Stata ŝlosilo", - "Event Content": "Enhavo de okazo", - "Send Account Data": "Sendi kontajn informojn", - "Filter results": "Filtri rezultojn", - "Explore Room State": "Esplori staton de ĉambro", - "Edit": "Redakti", - "Explore Account Data": "Esplori kontajn datumojn", - "Toolbox": "Ilaro", - "Developer Tools": "Evoluigiloj", - "Pin Message": "Fiksi mesaĝon", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Bonvolu instali <chromeLink>Ĥromon</chromeLink> aŭ <firefoxLink>Fajrovulpon</firefoxLink> por plej bona sperto.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "Ankaŭ <safariLink>Safario</safariLink> kaj <operaLink>Opero</operaLink> funkcias.", - "Couldn't load home page": "Malsukcesis enlegi hejmpaĝon", - "Register": "Registriĝi", - "Invite to this community": "Inviti al tiu ĉi komunumo", - "Add rooms to this community": "Aldoni ĉambrojn al ĉi tiu komunumo" + "Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas ankaŭ agordi propran identigan servilon, sed vi ne eblos inviti uzantojn per retpoŝtadresoj, nek tiel invitiĝi.", + "Sign In": "Saluti", + "Create Account": "Krei konton", + "Need help?": "Ĉu vi bezonas helpon?", + "Explore rooms": "Esplori ĉambrojn", + "Room Directory": "Ĉambra dosierujo", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vi povas uzi proprajn servilajn elekteblojn por saluti al aliaj serviloj de Matrix per doni alian hejmeservilan URL-on. Tio povigos vin uzi Riot kun jama konto de Matrix en alia hejmservilo.", + "Unexpected error preparing the app. See console for details.": "Neatendita eraro okazis dum la preparado de la aplikaĵo. Rigardu la konzolon por detaloj.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Nevalida agordo: vi povas specifi nur unu elekteblon el « default_server_config », « default_server_name », aŭ « default_hs_url ».", + "Invalid configuration: no default server specified.": "Nevalida agordo: neniu implicita servilo estas specifita.", + "Your Riot is misconfigured": "Via kliento Riot estas misagordita", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Viaj Riot-agordoj enhavas nevalidan JSON-on. Bonvolu korekti la problemon kaj reŝarĝi la paĝon.", + "The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s", + "Invalid JSON": "Nevalida JSON" } diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index d73e936d..5e9fe006 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1,162 +1,16 @@ { - "Add an email address above to configure email notifications": "Añade una dirección de correo arriba para configurar las notificaciones por correo", - "Advanced notification settings": "Configuración avanzada de notificaciones", - "All messages": "Todos los mensajes", - "An error occurred whilst saving your email notification preferences.": "Se ha producido un error al guardar las preferencias de notificación por email.", - "Call invitation": "Invitación a la llamada", - "Cancel Sending": "Cancelar envío", - "Can't update user notification settings": "No se puede actualizar la configuración de notificaciones del usuario", - "Close": "Cerrar", - "Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida.", "Custom Server Options": "Opciones de Servidor Personalizado", - "customServer_text": "Puedes utilizar las opciones de servidor personalizadas para iniciar sesión en otros servidores Matrix especificando una URL de Home server distinta.<br/>Esto te permite usar Riot con una cuenta Matrix existente en un Home server distinto.<br/><br/>También puedes configurar un servidor de identidad personalizado, pero no podrás ni invitar usuarios ni ser invitado a través de tu dirección de correo electrónico.", - "delete the alias.": "borrar el alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?", - "Direct Chat": "Conversación directa", - "Directory": "Directorio", - "Download this file": "Descargar este archivo", - "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", - "Enable desktop notifications": "Habilitar notificaciones de escritorio", - "Enable email notifications": "Habilitar notificaciones por email", - "Enable notifications for this account": "Habilitar notificaciones para esta cuenta", - "Enable them now": "Habilitarlos ahora", - "Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:", - "Error": "Error", - "Error saving email notification preferences": "Error al guardar las preferencias de notificación por email", - "#example": "#ejemplo", - "Failed to add tag %(tagName)s to room": "Error al añadir la etiqueta %(tagName)s a la sala", - "Failed to change settings": "Error al cambiar la configuración", - "Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s", - "Failed to update keywords": "Error al actualizar las palabras clave", - "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Home Server", - "Failed to get public room list": "No se pudo obtener la lista de salas públicas", - "Failed to remove tag %(tagName)s from room": "Error al eliminar la etiqueta %(tagName)s de la sala", - "Failed to set direct chat tag": "Error al establecer la etiqueta de chat directo", - "Failed to set Direct Message status of room": "No se pudo establecer el estado de Mensaje Directo de la sala", - "Favourite": "Favorito", - "Fetching third party location failed": "Falló la obtención de la ubicación de un tercero", - "Files": "Archivos", - "Filter room names": "Filtrar los nombres de las salas", - "Forget": "Olvidar", - "Guests can join": "Los invitados se pueden unir", - "Invite to this room": "Invitar a esta sala", - "Keywords": "Palabras clave", - "Leave": "Salir", - "Low Priority": "Baja Prioridad", - "Members": "Miembros", - "Mentions only": "Sólo menciones", - "Messages containing my display name": "Mensajes que contienen mi nombre", - "Messages containing my user name": "Mensajes que contienen mi nombre de usuario", - "Messages in group chats": "Mensajes en chats de grupo", - "Messages in one-to-one chats": "Mensajes en chats uno a uno", - "Messages sent by bot": "Mensajes enviados por bot", - "more": "más", - "Mute": "Silenciar", - "No rooms to show": "Sin salas para mostrar", - "Noisy": "Ruidoso", - "Notification targets": "Objetivos de notificación", - "Notifications": "Notificaciones", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:", - "Notify me for anything else": "Notificarme para cualquier otra cosa", - "Off": "Apagado", - "On": "Encendido", - "Operation failed": "Falló la operación", - "Permalink": "Enlace permanente", - "Quote": "Citar", - "Reject": "Rechazar", - "Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?", - "Remove": "Eliminar", - "remove %(name)s from the directory.": "retirar %(name)s del directorio.", - "Remove from Directory": "Retirar del Directorio", - "Resend": "Reenviar", - "Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red", - "Room not found": "Sala no encontrada", - "Search for a room": "Buscar sala", - "Source URL": "URL de Origen", - "The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros", - "There are advanced notifications which are not shown here": "Hay notificaciones avanzadas que no se muestran aquí", - "The server may be unavailable or overloaded": "El servidor puede estar no disponible o sobrecargado", - "Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación", - "Unable to join network": "No se puede unir a la red", - "Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor", - "Unhide Preview": "Mostrar Vista Previa", - "unknown error code": "Código de error desconocido", - "Unnamed room": "Sala sin nombre", - "Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s", - "View Decrypted Source": "Ver Fuente Descifrada", - "View Source": "Ver Fuente", - "When I'm invited to a room": "Cuando estoy invitado a una sala", - "World readable": "Legible por todo el mundo", - "You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)", - "You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)", - "You are not receiving desktop notifications": "No estás recibiendo notificaciones de escritorio", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Es posible que los hayas configurado en un cliente que no sea Riot. No puedes ajustarlos en Riot, pero todavía se aplican", - "Sunday": "Domingo", - "Monday": "Lunes", - "Tuesday": "Martes", - "Wednesday": "Miércoles", - "Thursday": "Jueves", - "Friday": "Viernes", - "Saturday": "Sábado", - "Today": "Hoy", - "Yesterday": "Ayer", - "Continue": "Continuar", - "Search": "Búsqueda", - "OK": "Correcto", - "Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> y <a href=\"http://opera.com\">Opera</a> también funcionan.", - "A new version of Riot is available.": "Una nueva versión de Riot está disponible.", - "Cancel": "Cancelar", - "Describe your problem here.": "Describe el problema aquí.", - "Forward Message": "Reenviar mensaje", - "Hide panel": "Ocultar panel", - "(HTTP status %(httpStatus)s)": "(estado HTTP %(httpStatus)s)", - "I understand the risks and wish to continue": "Entiendo los riesgos y deseo continuar", - "Changelog": "Registro de cambios", - "Collapse panel": "Colapsar panel", - "Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en las preferencias de usuario.", - "All Rooms": "Todas las salas", - "Expand panel": "Expandir panel", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para diagnosticar los problemas, los registros de este cliente serán enviados adjuntos a este informe de fallo. Si quisieras enviar el texto anterior solamente, entonces desmarca:", - "Login": "Iniciar sesión", - "Report a bug": "Informar de un fallo", - "Search…": "Buscar…", - "Send": "Enviar", - "Send logs": "Enviar registros", - "Sorry, your browser is <b>not</b> able to run Riot.": "¡Lo sentimos! Su navegador <b>no puede</b> ejecutar Riot.", - "This Room": "Esta sala", - "Unavailable": "No disponible", "Unknown device": "Dispositivo desconocido", - "Update": "Actualizar", - "Uploading report": "Enviando informe", - "What's New": "Novedades", - "What's new?": "¿Qué hay de nuevo?", - "Waiting for response from server": "Esperando una respuesta del servidor", - "You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!", - "You have successfully set a password!": "¡Has establecido una nueva contraseña!", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s en %(osName)s", - "All messages (noisy)": "Todos los mensajes (ruidoso)", - "All notifications are currently disabled for all targets.": "Las notificaciones estan desactivadas para todos los objetivos.", - "Collecting app version information": "Recolectando información de la versión de la aplicación", - "Collecting logs": "Recolectando registros", "Dismiss": "Omitir", - "Failed to send report: ": "Error al enviar informe: ", - "Loading bug report module": "Cargando módulo de reporte de errores", - "Messages containing <span>keywords</span>": "Mensajes que contienen <span>palabras clave</span>", - "Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor describa el error. ¿Qué acción ejecutó? ¿Cuál era el resultado que esperaba? ¿Que pasó realmente?", - "Please describe the bug and/or send logs.": "Por favor describe el error y/o envía los registros.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Por favor instale <a href=\"https://www.google.com/chrome\">Google Chrome</a> o <a href=\"https://getfirefox.com\">Mozilla Firefox</a> para una mejor experiencia.", "powered by Matrix": "con el poder de Matrix", "Riot Desktop on %(platformName)s": "Riot Desktop en %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot no está soportado en navegadores Web móviles. ¿Quieres instalar la aplicación?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.", "You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "En su navegador actual, la apariencia y comportamiento de la aplicación puede ser completamente incorrecta, y algunas de las características podrían no funcionar. Si aún desea probarlo puede continuar, pero ¡no podremos ofrecer soporte por cualquier problema que pudiese tener!", "Welcome to Riot.im": "Bienvenido a Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas & colaboración con el poder de [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas y colaboración con el poder de [matrix]", "Search the room directory": "Buscar en el directorio de salas", - "Chat with Riot Bot": "Conversar con el Bot de Riot", + "Chat with Riot Bot": "Hablar con Riot Bot", "Get started with some tips from Riot Bot!": "¡Comenzar con algunos consejos de Riot Bot!", "General discussion about Matrix and Riot": "Discusión general sobre Matrix y Riot", "Discussion of all things Matrix!": "¡Discusión sobre todas las cosas de Matrix!", @@ -179,47 +33,21 @@ "Contributing code to Matrix and Riot": "Contribuciones de código para Matrix y Riot", "Dev chat for the Riot/Web dev team": "Conversaciones del equipo de desarrollo de Riot/Web", "Dev chat for the Dendrite dev team": "Conversaciones del equipo de desarrollo de Dendrite", - "Co-ordination for Riot/Web translators": "Coordinación para traductores de Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muchas salas ya están disponibles en Matrix, enlazadas a redes existentes (Slack, IRC, Gitter, etc) o independientes. ¡Revisa el directorio!", - "You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.", - "Please set a password!": "¡Por favor establece una contraseña!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.", - "Warning": "Advertencia", - "Checking for an update...": "Comprobando actualizaciones...", - "No update available.": "No hay actualizaciones disponibles.", - "Downloading update...": "Descargando actualizaciones...", - "To return to your account in future you need to <u>set a password</u>": "Para regresar a tu cuenta en el futuro debes <u>establecer una contraseña</u>", - "Set Password": "Establecer contraseña", - "Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).", - "Couldn't load home page": "No se puede cargar la página principal", - "Bug report sent": "Informe de fallo enviado", - "Thank you!": "¡Gracias!", - "Show message in desktop notification": "Mostrar mensaje en la notificación del escritorio", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puedes usar las opciones del servidor personalizado para acceder a otros servidores Matrix especificando su URL. <br/> Esto te permite usar Riot con una cuenta Matrix existente en un servidor doméstico distinto. <br/><br/>También puedes establecer un servidor de identidad personalizado pero no podrás invitar a otros usuarios usando su dirección de correo electrónico, y tampoco ser invitado por el tuyo.", - "Appear Offline": "Mostrarse Desconectado", - "Away": "Ausente", - "Back": "Atrás", - "Send Custom Event": "Enviar Evento Personalizado", - "You must specify an event type!": "Debes especificar un tipo de evento!", - "Event sent!": "Evento enviado!", - "Failed to send custom event.": "Ha fallado el envio del evento personalizado.", - "Event Type": "Tipo de Evento", - "State Key": "Clave de estado", - "Event Content": "Contenido del Evento", - "Send Account Data": "Enviar Datos de la Cuenta", - "Filter results": "Filtrar resultados", - "Explore Room State": "Explorar Estado de la Sala", - "Edit": "Editar", - "Explore Account Data": "Explorar Datos de la Cuenta", - "Toolbox": "Caja de Herramientas", - "Developer Tools": "Herramientas de Desarrollo", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Por favor instala <chromeLink>Chrome</chromeLink> o <firefoxLink>Firefox</firefoxLink> para una experiencia óptima.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> y <operaLink>Opera</operaLink> también funcionan.", - "Register": "Registro", - "Rooms": "Salas", - "Invite to this community": "Invitar a esta comunidad", - "Add rooms to this community": "Agregar salas a esta comunidad", - "Unpin Message": "Desmarcar Mensaje", - "Pin Message": "Marcar Mensaje", - "Reply": "Responder" + "Co-ordination for Riot translators": "Co-odinación de traductores de Riot", + "Sign In": "Iniciar sesión", + "Create Account": "Crear cuenta", + "Need help?": "Ayuda?", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "También puedes definir un servidor de identidad personalizado, pero no podrás invitar a usuarios o ser inivitado usando direcciones de correo.", + "Explore rooms": "Explorar salas", + "Room Directory": "Directorio de salas", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puedes usar la opción de servidor personalizado para iniciar sesión en otros servidores Matrix, especificando la dirección URL del servidor. Esto te permite usar una cuenta Matrix en un servidor diferente.", + "Unexpected error preparing the app. See console for details.": "Error inesperado preparando la aplicación. Vea la consola para más detalles.", + "Your Riot is misconfigured": "Riot tiene un error de configuración", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración errónea: sólo puede especificar uno de default_server_config, default_server_name, o default_hs_url.", + "Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Tu configuración de Riot contiene JSON inválido. Por favor corrige el error y recarga la página.", + "The message from the parser is: %(message)s": "El mensaje del parser es: %(message)s", + "Invalid JSON": "JSON inválido" } diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index bc5fb0e3..e880661b 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1,155 +1,11 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s bidez %(osName)s ostalarian", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> eta <a href=\"http://opera.com\">Opera</a> badabiltza ere.", - "A new version of Riot is available.": "Riot bertsio berri bat dago eskuragarri.", - "Add an email address above to configure email notifications": "Gehitu e-mail helbide bat goian e-mail bidezko jakinarazpenak konfiguratzeko", - "Advanced notification settings": "Jakinarazpen aurreratuen ezarpenak", - "All messages": "Mezu guztiak", - "All messages (noisy)": "Mezu guztiak (ozen)", - "All Rooms": "Gela guztiak", - "All notifications are currently disabled for all targets.": "Une honetan jakinarazpen guztiak helburu guztietarako desgaituta daude.", - "An error occurred whilst saving your email notification preferences.": "Errore bat gertatu da zure e-mail bidezko jakinarazpenen hobespenak gordetzean.", - "Call invitation": "Dei gonbidapena", - "Cancel": "Utzi", - "Cancel Sending": "Utzi bidaltzeari", - "Can't update user notification settings": "Ezin dira erabiltzailearen jakinarazpenen ezarpenak eguneratu", - "Changelog": "Aldaketa-egunkaria", - "Close": "Itxi", - "Collapse panel": "Tolestu panela", - "Collecting app version information": "Aplikazioaren bertsio-informazioa biltzen", - "Collecting logs": "Egunkariak biltzen", - "Couldn't find a matching Matrix room": "Ezin izan da bat datorren Matrix gela bat aurkitu", "Custom Server Options": "Zerbitzari pertsonalizatuaren aukerak", - "customServer_text": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste hasiera zerbitzari baten URLa jarrita beste Matrix zerbitzarietan saioa hasteko.<br/>Honek oraingo Matrix kontuarekin Riot beste hasiera zerbitzari batean erabiltzea ahalbidetzen dizu.<br/><br/>Identitate zerbitzari pertsonalizatu bat jar dezakezu ere baina ezin izango dituzu erabiltzaileak bere e-mail helbidea erabilita gonbidatu, edo besteek zu gonbidatu zure e-mail helbidea erabilita.", - "delete the alias.": "ezabatu ezizena.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Ezabatu gelaren %(alias)s ezizena eta kendu %(name)s direktoriotik?", - "Describe your problem here.": "Azaldu zure arazoa hemen.", - "Direct Chat": "Txat zuzena", - "Directory": "Direktorioa", "Dismiss": "Baztertu", - "Download this file": "Deskargatu fitxategi hau", - "Enable audible notifications in web client": "Gaitu jakinarazpen entzungarriak web bezeroan", - "Enable desktop notifications": "Gaitu mahaigaineko jakinarazpenak", - "Enable email notifications": "Gaitu e-mail bidezko jakinarazpenak", - "Enable notifications for this account": "Gaitu jakinarazpenak kontu honetarako", - "Enable them now": "Gaitu orain", - "Enter keywords separated by a comma:": "Idatzi hitz gakoak koma bidez banatuta:", - "Error": "Errorea", - "Error saving email notification preferences": "Errorea e-mail jakinarazpenen hobespenak gordetzean", - "#example": "#adibidea", - "Expand panel": "Hedatu panela", - "Failed to add tag %(tagName)s to room": "Huts egin du %(tagName)s etiketa gelara gehitzean", - "Failed to change settings": "Huts egin du ezarpenak aldatzean", - "Failed to forget room %(errCode)s": "Huts egin du %(errCode)s gela ahaztean", - "Failed to update keywords": "Huts egin du hitz gakoak eguneratzean", - "Failed to get protocol list from Home Server": "Huts egin du protokoloen zerrenda hasiera zerbitzaritik jasotzean", - "Failed to get public room list": "Huts egin du gela publikoen zerrenda jasotzean", - "Failed to remove tag %(tagName)s from room": "Huts egin du %(tagName)s etiketa gelatik kentzean", - "Failed to send report: ": "Huts egin du txostena bidaltzean: ", - "Failed to set direct chat tag": "Huts egin du txat zuzeneko etiketa jartzean", - "Failed to set Direct Message status of room": "Huts egin du Mezu Zuzena egoera gelan ezartzean", - "Favourite": "Gogokoa", - "Fetching third party location failed": "Huts egin du hirugarrengoen kokalekua eskuratzean", - "Files": "Fitxategiak", - "Filter room names": "Iragazi gelen izenak", - "Forget": "Ahaztu", - "Forward Message": "Birbidali mezua", - "Guests can join": "Bisitariak elkartu daitezke", - "Hide panel": "Ezkutatu panela", - "(HTTP status %(httpStatus)s)": "(HTTP egoera %(httpStatus)s)", - "I understand the risks and wish to continue": "Arriskua ulertzen dut eta jarraitu nahi dut", - "Invite to this room": "Gonbidatu gela honetara", - "Keywords": "Hitz gakoak", - "Leave": "Atera", - "Login": "Hasi saioa", - "Loading bug report module": "Arazte-txosten modulua kargatzen", - "Low Priority": "Lehentasun baxua", - "Members": "Kideak", - "Mentions only": "Aipamenak besterik ez", - "Messages containing my display name": "Nire pantaila-izena duten mezuak", - "Messages containing <span>keywords</span>": "<span>Hitz gakoak</span> dituzten mezuak", - "Messages containing my user name": "Nire erabiltzaile-izena duten mezuak", - "Messages in group chats": "Talde txatetako mezuak", - "Messages in one-to-one chats": "Biren arteko txatetako mezuak", - "Messages sent by bot": "Botak bidalitako mezuak", - "more": "gehiago", - "Mute": "Mututu", - "No rooms to show": "Ez dago gelarik erakusteko", - "Noisy": "Zaratatsua", - "Notification targets": "Jakinarazpenen helburuak", - "Notifications": "Jakinarazpenak", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Hitz gako hauen jakinarazpenak hemen bistaratu ezin daitezkeen arauak jarraitzen dituzte:", - "Notify for all other messages/rooms": "Jakinarazi beste mezu/gela guztiak", - "Notify me for anything else": "Jakinarazi beste edozer", - "Off": "Ez", - "On": "Bai", - "Operation failed": "Eragiketak huts egin du", - "Permalink": "Esteka iraunkorra", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Deskribatu akatsa. Zer egin duzu? Zer gertatuko zela uste zenuen? Zer gertatu da?", - "Please describe the bug and/or send logs.": "Deskribatu akatsa eta/edo bidali egunkariak.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Instalatu <a href=\"https://www.google.com/chrome\">Chrome</a> edo <a href=\"https://getfirefox.com\">Firefox</a> esperientzia on baterako.", "powered by Matrix": "Matrix mamian", - "Quote": "Aipua", - "Reject": "Baztertu", - "Remove %(name)s from the directory?": "Kendu %(name)s direktoriotik?", - "Remove": "Kendu", - "remove %(name)s from the directory.": "kendu %(name)s direktoriotik.", - "Remove from Directory": "Kendu direktoriotik", - "Report a bug": "Eman akats baten berri", - "Resend": "Birbidali", "Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s plataforman", - "Riot does not know how to join a room on this network": "Riotek ez daki nola elkartu gela batetara sare honetan", "Riot is not supported on mobile web. Install the app?": "Riotek ez du euskarririk mugikorrentzako webean. Instalatu aplikazioa?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riotek nabigatzaileen ezaugarri aurreratu ugari erabiltzen ditu, hauetako batzuk ez daude erabilgarri edo esperimentalak dira zure oraingo nabigatzailean.", - "Room not found": "Ez da gela aurkitu", - "Search": "Bilatu", - "Search…": "Bilatu…", - "Search for a room": "Bilatu gela bat", - "Send": "Bidali", - "Send logs": "Bidali egunkariak", - "Source URL": "Iturriaren URLa", - "Sorry, your browser is <b>not</b> able to run Riot.": "Zure nabigatzaileak <b>ez</b> du Riot erabiltzeko gaitasunik.", - "The Home Server may be too old to support third party networks": "Hasiera zerbitzaria zaharregia izan daiteke hirugarrengoen sarean onartzeko", - "There are advanced notifications which are not shown here": "Hemen erakusten ez diren jakinarazpen aurreratuak daude", - "The server may be unavailable or overloaded": "Zerbitzaria eskuraezin edo gainezka egon daiteke", - "This Room": "Gela hau", - "Unable to fetch notification target list": "Ezin izan da jakinarazpen helburuen zerrenda eskuratu", - "Unable to join network": "Ezin izan da sarera elkartu", - "Unable to look up room ID from server": "Ezin izan da gelaren IDa zerbitzarian bilatu", - "Unavailable": "Eskuraezina", - "Unhide Preview": "Ez ezkutatu aurrebista", "Unknown device": "Gailu ezezaguna", - "unknown error code": "errore kode ezezaguna", - "Unnamed room": "Izen gabeko gela", - "Update": "Eguneratu", - "Uploaded on %(date)s by %(user)s": "%(user)s erabiltzaileak %(date)s (e)an igota", - "Uploading report": "Igoera txostena", - "View Decrypted Source": "Ikusi deszifratutako iturria", - "View Source": "Ikusi iturria", - "What's New": "Zer dago berri", - "What's new?": "Zer dago berri?", - "Waiting for response from server": "Zerbitzariaren erantzunaren zain", - "When I'm invited to a room": "Gela batetara gonbidatzen nautenean", - "World readable": "Munduak irakurgarria", - "You cannot delete this image. (%(code)s)": "Ezin duzu irudi hau ezabatu. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Ezin duzu mezu hau ezabatu. (%(code)s)", - "You are not receiving desktop notifications": "Ez dituzu mahaigaineko jakinarazpenak jasotzen", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Agian Riot ez beste bezero batean konfiguratu dituzu. Ezin dituzu Riot bidez doitu, baina aplikagarriak dira", - "Sunday": "Igandea", - "Monday": "Astelehena", - "Tuesday": "Asteartea", - "Wednesday": "Asteazkena", - "Thursday": "Osteguna", - "Friday": "Ostirala", - "Saturday": "Larunbata", - "Today": "Gaur", - "Yesterday": "Atzo", - "OK": "Ados", - "Warning": "Abisua", - "Checking for an update...": "Eguneraketarik dagoen egiaztatzen...", - "Error encountered (%(errorDetail)s).": "Errorea aurkitu da (%(errorDetail)s).", - "No update available.": "Ez dago eguneraketarik eskuragarri.", - "Downloading update...": "Eguneraketa deskargatzen...", "You need to be using HTTPS to place a screen-sharing call.": "HTTPS erabili behar duzu sekretuak partekatzeko dei bat ezartzeko.", "Welcome to Riot.im": "Ongi etorri Riot.im mezularitzara", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Deszentralizatutako eta zifratutako txat eta elkarlana [matrix] sareari esker", @@ -177,49 +33,21 @@ "Contributing code to Matrix and Riot": "Kodearekin lagundu Matrix eta Riot", "Dev chat for the Riot/Web dev team": "Riot/web garapen taldearen txata", "Dev chat for the Dendrite dev team": "Dendrite garapen taldearen txata", - "Co-ordination for Riot/Web translators": "Riot/Web itzultzaileen arteko koordinazioa", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Badauden sareetara lotutako gela ugari daude Matrixen (Slack, IRC, Gitter eta abar), baita independienteak. Begiratu direktorioa!", - "Failed to change password. Is your password correct?": "Pasahitza aldatzean huts egin du. Zuzena da pasahitza?", - "You have successfully set a password!": "Ongi ezarri duzu pasahitza!", - "You can now return to your account after signing out, and sign in on other devices.": "Zure kontura itzuli zaitezke beste gailuetan saioa amaitu eta berriro hastean.", - "Continue": "Jarraitu", - "Please set a password!": "Ezarri pasahitza mesedez!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Honek zure kontura itzultzea ahalbidetuko dizu, beste gailuetan saioa amaitu eta berriro hasi eta gero.", - "You have successfully set a password and an email address!": "Ondo ezarri dituzu pasahitza eta e-mail helbidea!", - "Remember, you can always set an email address in user settings if you change your mind.": "Gogoratu, e-mail helbide bat ezarri dezakezu erabiltzaile-ezarpenetan iritzia aldatzen baduzu.", - "To return to your account in future you need to <u>set a password</u>": "Etorkizunean kontura itzuli ahal izateko <u>pasahitz bat ezarri</u> behar duzu", - "Set Password": "Ezarri pasahitza", - "Couldn't load home page": "Ezin izan da hasiera orria kargatu", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Arazoak diagnostikatzeko, bezero honen egunkariak bidaliko dira arazte-txosten honekin. Testua besterik ez baduzu bidali nahi, desmarkatu:", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Zure oraingo nabigatzailearekin aplikazioaren itxura eta portaera guztiz okerra izan daiteke, eta funtzio batzuk ez dira ibiliko. Hala ere aurrera jarraitu dezakezu saiatu nahi baduzu, baina zure erantzukizunaren menpe geratzen dira aurkitu ditzakezun arazoak!", - "Bug report sent": "Arazte-txostena bidali da", - "Thank you!": "Eskerrik asko!", - "Show message in desktop notification": "Erakutsi mezua mahaigaineko jakinarazpenean", - "Appear Offline": "Agertu deskonektatuta", - "Away": "Teklatutik at", - "Back": "Atzera", - "Send Custom Event": "Bidali gertaera pertsonalizatua", - "You must specify an event type!": "Gertaera mota bat zehaztu behar duzu!", - "Event sent!": "Gertaera bidalita!", - "Failed to send custom event.": "Huts egin du gertaera pertsonalizatua bidaltzean.", - "Event Type": "Gertaera mota", - "State Key": "Egoera gakoa", - "Event Content": "Gertaeraren edukia", - "Send Account Data": "Bidali kontuaren datuak", - "Filter results": "Iragazi emaitzak", - "Explore Room State": "Miatu gelaren egoera", - "Edit": "Editatu", - "Explore Account Data": "Miatu kantuaren datuak", - "Toolbox": "Tresna-kutxa", - "Developer Tools": "Garatzaile-tresnak", - "Unpin Message": "Desfinkatu mezua", - "Pin Message": "Finkatu mezua", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Instalatu <chromeLink>Chrome</chromeLink> edo <firefoxLink>Firefox</firefoxLink> esperientzia onena izateko.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> eta <operaLink>Opera</operaLink> badabiltza ere.", - "Register": "Eman izena", - "Rooms": "Gelak", - "Invite to this community": "Gonbidatu komunitate honetara", - "Add rooms to this community": "Gehitu gelak komunitate honetara", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste Matrix zerbitzarietan saioa hasteko, han beste hasiera-zerbitzari baten URLa sartuz.<br/>Horrela Riot aurretik duzun kontu batekin erabili dezakezu beste hasiera-zerbitzari batean.<br/><br/>Identitate-zerbitzari pertsonalizatu bat ezarri dezakezu ere, baina orduan ezin izango dituzu erabiltzaileak e-mail helbidea erabiliz gonbidatu, edo ezin izan izango zaituzte zu e-mail helbidea erabiliz gonbidatu.", - "Reply": "Erantzun" + "Co-ordination for Riot translators": "Riot itzultzaileen koordinazioa", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Zerbitzari pertsonalizatuaren aukera erabili dezakezu bestelako Matrix zerbitzari batera konektatzeko, bere URL-a adierazita. Honek Riot beste zerbitzari batean duzun Matrix kontuarekin erabiltzea ahalbidetzen dizu.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Identitate zerbitzari pertsonalizatu bat ere ezarri dezakezu, baina orduan ezin izango dituzu erabiltzaileak e-mail helbidearen bidez gonbidatu, edo ezin izango zaituzte e-mail helbidearen bidez zu gonbidatu.", + "Sign In": "Hasi saioa", + "Create Account": "Sortu kontua", + "Need help?": "Laguntza behar?", + "Explore rooms": "Arakatu gelak", + "Room Directory": "Gelen direktorioa", + "Unexpected error preparing the app. See console for details.": "Ustekabeko errorea aplikazioa prestatzean. Ikusi xehetasunak kontsolan.", + "Your Riot is misconfigured": "Zure Riot gaizki konfiguratuta dago", + "Invalid configuration: no default server specified.": "Konfigurazio baliogabea: Ez da lehenetsitako zerbitzaririk zehaztu.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurazio baliogabea: default_server_config, default_server_name, edo default_hs_url bat bakarra zehaztu daiteke.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Zure Riot konfigurazioak baliogabeko JSON kodea du. Zuzendu arazoa eta kargatu orria berriro.", + "The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s", + "Invalid JSON": "JSON baliogabea" } diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json index 6570b021..adcf0f90 100644 --- a/src/i18n/strings/fa.json +++ b/src/i18n/strings/fa.json @@ -1,136 +1,10 @@ { - "A new version of Riot is available.": "نسخهی جدید از رایوت موجود است.", - "All messages": "همهی پیامها", - "All messages (noisy)": "همهی پیامها(بلند)", - "All Rooms": "همهی گپها", - "Cancel Sending": "فرستادن را لغو کن", - "Changelog": "تغییراتِ بهوجودآمده", - "Close": "بستن", - "Collecting app version information": "درحال جمعآوری اطلاعات نسخهی برنامه", - "Couldn't find a matching Matrix room": "گپگاه مورد نظر در ماتریکس یافت نشد", - "Direct Chat": "چت مستقیم", - "Directory": "فهرست گپگاهها", - "Download this file": "بارگیری کن", - "Enable audible notifications in web client": "آگاهسازی صدادار را در کارگزار وب فعال کن", - "Enable email notifications": "آگاهسازی با رایانامه را فعال کن", - "Enable notifications for this account": "آگاه سازی با رایانامه را برای این اکانت فعال کن", - "Enable them now": "همین حالا فعالشان کن", - "Enter keywords separated by a comma:": "کلیدواژهها را وارد کنید؛ از کاما(,) برای جدا کردن آنها از یکدیگر استفاده کنید:", - "Error": "خطا", - "Error saving email notification preferences": "خطا در ذخیرهسازی ترجیحات آگاهسازی با ایمیل", - "#example": "#نمونه", - "Expand panel": "پنل را بگشا", - "Failed to add tag %(tagName)s to room": "در افزودن تگ %(tagName)s موفقیتآمیز نبود", - "Failed to change settings": "تغییر تنظیمات موفقیتآمیز نبود", - "Failed to forget room %(errCode)s": "فراموش کردن گپگاه %(errCode)s موفقیتآمیز نبود", - "Failed to update keywords": "بهروزرسانی کلیدواژهها موفقیتآمیز نبود", - "Failed to get protocol list from Home Server": "دریافت لیست پروتکلها از کارگزار مبدا موفقیتآمیز نبود", - "Failed to get public room list": "گرفتن لیست گپگاههای عمومی موفقیتآمیز نبود", - "Failed to remove tag %(tagName)s from room": "خطا در حذف کلیدواژهی %(tagName)s از گپ", - "Failed to send report: ": "فرستادن گزارش موفقیتآمیز نبود: ", - "Favourite": "علاقهمندیها", - "Files": "فایلها", - "Forget": "فراموش کن", - "Forward Message": "هدایت پیام", - "Guests can join": "میهمانها میتوانند بپیوندند", - "Hide panel": "پنل را پنهان کن", - "I understand the risks and wish to continue": "از خطرات این کار آگاهم و مایلم که ادامه بدهم", - "Invite to this room": "دعوت به این گپ", - "Keywords": "کلیدواژهها", - "Leave": "خروج", - "Login": "ورود", - "Loading bug report module": "درحال بارگذاری و اجرای ماژولِ گزارش باگ", - "Low Priority": "کم اهمیت", - "Members": "اعضا", - "Mentions only": "فقط نامبردنها", - "Please set a password!": "لطفا یک پسورد اختیار کنید!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "این به شما اجازه خواهد داد که پس از خروج به اکانت خود بازگردید و از سایر دستگاهها وارد شوید.", - "You have successfully set a password and an email address!": "تخصیص ایمیل و پسوردتان با موفقیت انجام شد!", - "Remember, you can always set an email address in user settings if you change your mind.": "به خاطر داشته باشید که اگر نظرتان عوض شد میتوانید از بخش تنظیمات یک ایمیل را به اکانتتان متصل کنید.", - "To return to your account in future you need to <u>set a password</u>": "برای بازگشتِ دوباره به اکانتان در آینده نیاز به <u> ثبت یک پسورد </u> دارید", - "Set Password": "پسوردتان را انتخاب کنید", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">سافاری</a> و <a href=\"http://opera.com\">اپرا</a> نیز کار میکنند.", - "Add an email address above to configure email notifications": "آدرس ایمیلتان را به بالا بیفزایید تا بتوانید آگاهسازی با ایمیل را مدیریت کنید", - "Advanced notification settings": "تنظیمات پیشرفته برای آگاهسازیها", - "Continue": "ادامه", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "بسیاری از گپگاههای موجود در فهرستِ گپها به شبکههای موجود(اسلک، آیآرسی، گلیتر و...) متصل و یا مستقلاند؛ به آنها نگاهی بیندازید!", - "Failed to change password. Is your password correct?": "خطا در تغییر گذرواژه. آیا از درستی گذرواژهتان اطمینان دارید؟", - "You can now return to your account after signing out, and sign in on other devices.": "اکنون میتوانید پس از خروج به اکانتتان بازگردید و با دستگاههای دیگری وارد شوید.", - "Co-ordination for Riot/Web translators": "هماهنگی برای مترجمان رایوت/وب", "Contributing code to Matrix and Riot": "کمک به برنامهنویسی در ماتریکس و رایوت", - "(HTTP status %(httpStatus)s)": "(HTTP وضعیت %(httpStatus)s)", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "برای بهبود و رفع مشکلات، گزارشهایی از این کارخواه به عنوان مستنداتی از یک باگ ارسال خوهند شد. اگر ترجیح میدهید که فقط متن بالا ارسال شود لطفا تیک را بردارید", - "Messages containing <span>keywords</span>": "پیامهای دارای <span> این کلیدواژهها </span>", - "Messages containing my user name": "پیامهای شامل نامِ کاربری من", - "Messages in group chats": "پیامهای درون چتهای گروهی", - "Messages in one-to-one chats": "پیامهای درون چتهای یکبهیک", - "Messages sent by bot": "پیامهای ارسال شده توسط ربات", - "more": "بیشتر", - "Mute": "سکوت", - "No rooms to show": "هیچ گپی برای نشان دادن موجود نیست", - "Noisy": "پرسروصدا", - "Notification targets": "هدفهای آگاهسازی", - "Notifications": "آگاهسازیها", - "Notify me for anything else": "مرا برای هرچیز دیگری باخبر کن", - "Off": "خاموش", - "On": "روشن", - "Operation failed": "عملیات شکست خورد", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "لطفا برای بهترین تجربهی کاربری از<a href=\"https://www.google.com/chrome\">کروم</a> یا <a href=\"https://getfirefox.com\">فایرفاکس</a> استفاده کنید", "powered by Matrix": "قدرتیافته از ماتریکس", - "Quote": "گفتآورد", - "Reject": "پس زدن", - "Remove": "حذف کن", - "Remove %(name)s from the directory?": "آیا مطمئنید میخواهید %(name)s را از فهرست گپها حذف کنید؟", - "remove %(name)s from the directory.": "%(name)s را از فهرست گپها حذف کن", - "Remove from Directory": "از فهرستِ گپها حذف کن", - "Report a bug": "باگها را گزارش کنید", - "Resend": "بازفرست", "Riot Desktop on %(platformName)s": "رایوت دسکتاپ بر %(platformName)s", - "Riot does not know how to join a room on this network": "رایوت از چگونگی ورود به یک گپ در این شبکه اطلاعی ندارد", "Riot is not supported on mobile web. Install the app?": "رایوت در موبایلها پشتیبانی نمیشود؛ تمایلی دارید که اپ را نصب کنید؟", - "Room not found": "گپ یافت نشد", - "Search": "جستجو", - "Search…": "جستجو…", - "Search for a room": "جستجوی برای یک گپ", - "Send": "ارسال", - "Send logs": "ارسال گزارشها", - "Sorry, your browser is <b>not</b> able to run Riot.": "متاسفانه مرورگر شما <b>نمیتواند</b> رایوت را اجرا کند.", - "There are advanced notifications which are not shown here": "آگاهسازیهای پیشرفتهای هستند که در اینجا نشان داده نشدهاند", - "The server may be unavailable or overloaded": "این سرور ممکن است ناموجود یا بسیار شلوغ باشد", - "This Room": "این گپ", - "Unable to join network": "خطا در ورود به شبکه", - "Unavailable": "غیرقابلدسترسی", "Unknown device": "دستگاه ناشناخته", - "unknown error code": "کد خطای ناشناخته", - "Unnamed room": "گپ نامگذاری نشده", - "Update": "بهروزرسانی", - "Uploading report": "در حال بارگذاری گزارش", - "Downloading update...": "در حال بارگیریِ بهروزرسانی...", - "Cancel": "لغو", - "Call invitation": "دعوت به تماس", - "An error occurred whilst saving your email notification preferences.": "خطایی در حین ذخیرهی ترجیجات شما دربارهی رایانامه رخ داد.", - "Describe your problem here.": "مشکلتان را در اینجا توضیح دهید.", - "Enable desktop notifications": "آگاهسازی دسکتاپ را فعال کن", - "Permalink": "پایاپیوند", - "Please describe the bug and/or send logs.": "لطفا باگ را توصیف کنید و یا گزارشها را بفرستید", - "Unhide Preview": "پیشنمایش را نمایان کن", - "View Source": "دیدن منبع", - "What's New": "تازهها", - "World readable": "خواندن جهانی", - "You cannot delete this image. (%(code)s)": "شما نمیتوانید این تصویر را پاک کنید. (%(code)s)", - "You cannot delete this message. (%(code)s)": "شما نمیتوانید این پیام را پاک کنید. (%(code)s)", - "Sunday": "یکشنبه", - "Monday": "دوشنبه", - "Tuesday": "سهشنبه", - "Wednesday": "چهارشنبه", - "Thursday": "پنجشنبه", - "Friday": "آدینه", - "Saturday": "شنبه", - "Today": "امروز", - "Yesterday": "دیروز", - "OK": "باشه", - "Warning": "هشدار", - "No update available.": "هیچ به روزرسانی جدیدی موجود نیست.", "Welcome to Riot.im": "به Riot.im خوشآمدید", "Chat with Riot Bot": "با رایوتبات چت کنید", "Get started with some tips from Riot Bot!": "با کمی راهنمایی از رایوتبات شروع کنید!", @@ -144,29 +18,9 @@ "Search the room directory": "در فهرست گپها جستجو کنید", "Decentralised, encrypted chat & collaboration powered by [matrix]": "چت مرکزگریز و رمزنگاریشده & ارائهای از ماتریکس", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s از طریق %(browserName)s بر %(osName)s", - "All notifications are currently disabled for all targets.": "همهی آگاهسازیها برای تمام هدفها غیرفعالاند.", - "Can't update user notification settings": "امکان بهروزرسانی تنظیمات آگاهسازی کاربر وجود ندارد", - "Collecting logs": "درحال جمعآوری گزارشها", "Custom Server Options": "تنظیمات سفارشی برای سرور", - "delete the alias.": "نام مستعار را پاک کن.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "آیا مطمئنید که میخواهید نام مستعار گپ %(alias)s را پاک و %(name)s را از فهرست حذف کنید؟", "Dismiss": "نادیده بگیر", - "Failed to set direct chat tag": "تنظیم تگ برای چت مستقیم موفقیتآمیز نبود", - "Filter room names": "جستجو در گپها", - "Notify for all other messages/rooms": "برای همهی پیامها/گپهای دیگر آگاهسازی کن", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "لطفا باگ را دقیقا تشریح کنید. چه کار کردید؟ انتظار داشتید چه اتفاقی بیفتد؟ دقیقا چه اتفاقی افتاد؟", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "رایوت از بسیاری از ویژگیهای پیشرفته در مروگرها استفاده میکند، برخی از این ویژگیها در مرورگر کنونی شما موجود نیستند و یا در حالت آزمایشی قرار دارند.", - "Source URL": "آدرس مبدا", - "Unable to fetch notification target list": "ناتوانی در تطبیق لیست آگاهسازیهای هدف", - "Uploaded on %(date)s by %(user)s": "آپلود شده در تاریخ %(date)s توسط %(user)s", - "View Decrypted Source": "دیدن منبع رمزگشایی شده", - "Waiting for response from server": "در انتظار پاسخی از سمت سرور", - "When I'm invited to a room": "وقتی من به گپی دعوت میشوم", - "You are not receiving desktop notifications": "شما آگاهسازیهای دسکتاپ را دریافت نمیکنید", - "Checking for an update...": "درحال بررسی بهروزرسانیها...", - "Error encountered (%(errorDetail)s).": "خطای رخ داده (%(errorDetail)s).", "You need to be using HTTPS to place a screen-sharing call.": "شما باید از ارتباط امن HTTPS برای بهراهاندازی یک چتِ شامل به اشتراکگذاری صفحهی کامیپوتر استفاده کنید.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "با مرورگر کنونی شما، ظاهر و حس استفاده از برنامه ممکن است کاملا اشتباه باشد و برخی یا همهی ویژگیها ممکن است کار نکنند. میتوانید به استفاده ادامه دهید اما مسئولیت هر مشکلی که به آن بربخورید بر عهدهی خودتان است!", "Discussion of all things Matrix!": "بحث درمورد تمام چیزهای مربوط به ماتریکس!", "Riot/Web & Desktop chat": "رایوت/وب & چت دسکتاپ", "Riot/iOS & matrix-ios-sdk chat": "رایوت/آیاواس & چت در مورد matrix-ios-sdk", @@ -178,13 +32,7 @@ "Implementing VR services with Matrix": "پیادهسازی سرویسهای VR با ماتریکس", "Implementing VoIP services with Matrix": "پیادهسازی سرویسهای VoIP با ماتریکس", "Discussion of the Identity Service API": "بحث درمورد API سرویس هویت", - "You have successfully set a password!": "شما با موفقیت رمزتان را انتخاب کردید!", - "Collapse panel": "پنل را ببند", - "Failed to set Direct Message status of room": "تنظیم حالت پیام مستقیم برای گپ موفقیتآمیز نبود", - "Fetching third party location failed": "تطبیق اطلاعات از منابع دسته سوم با شکست مواجه شد", - "Messages containing my display name": "پیامهای حاوی نماینامِ من", - "What's new?": "تازهها", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "ممکن است شما این تنظیمات را در کارخواهی به جز رایوت اعمال کرده باشید. شما نمیتوانید انها را تغییر دهید اما آنها همچنان تاثیر خود را دارند", "Building services on Matrix": "ساخت سرویس بر روی ماتریکس", - "Support for those using the Matrix spec": "پشتیبانی برای آنان که از مستندات ماتریکس استفاده میکنند" + "Support for those using the Matrix spec": "پشتیبانی برای آنان که از مستندات ماتریکس استفاده میکنند", + "Co-ordination for Riot translators": "هماهنگی برای مترجمان Riot" } diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 5602baec..4d9b8a0a 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1,156 +1,13 @@ { - "Sunday": "Sunnuntai", - "A new version of Riot is available.": "Uusi Riot-versio on saatavilla.", - "Add an email address above to configure email notifications": "Lisää sähköpostiosoite yllä saadaksesi ilmoituksia sähköpostiisi", - "Advanced notification settings": "Lisäasetukset ilmoituksille", - "All messages": "Kaikki viestit", - "All messages (noisy)": "Kaikki viestit (äänekkäästi)", - "All Rooms": "Kaikki huoneet", - "All notifications are currently disabled for all targets.": "Kaikki ilmoitukset on kytketty pois kaikilta kohteilta.", - "An error occurred whilst saving your email notification preferences.": "Sähköposti-ilmoitusasetuksia tallettaessa tapahtui virhe.", - "Call invitation": "Puhelukutsu", - "Cancel": "Peruuta", - "Cancel Sending": "Peruuta lähetys", - "Can't update user notification settings": "Käyttäjän ilmoitusasetusten päivittäminen epäonnistui", - "Changelog": "Muutosloki", - "Close": "Sulje", - "Couldn't find a matching Matrix room": "Vastaavaa Matrix-huonetta ei löytynyt", - "delete the alias.": "poista alias.", - "Describe your problem here.": "Kuvaa ongelmasi tähän.", - "Direct Chat": "Suora viestittely", - "Directory": "Hakemisto", "Dismiss": "Hylkää", - "Download this file": "Lataa tiedosto", - "Error": "Virhe", - "#example": "#esimerkki", - "Favourite": "Suosikki", - "Files": "Tiedostot", - "Forget": "Unohda", - "I understand the risks and wish to continue": "Ymmärrän riskit ja haluan jatkaa", - "Invite to this room": "Kutsu käyttäjiä", - "Keywords": "Avainsanat", - "Leave": "Poistu", - "Login": "Kirjaudu sisään", - "Low Priority": "Matala prioriteetti", - "Members": "Jäsenet", - "Mentions only": "Vain maininnat", - "more": "lisää", - "Mute": "Vaimenna", - "No rooms to show": "Ei huoneita näytettäväksi", - "Noisy": "Äänekäs", - "Notifications": "Ilmoitukset", - "Off": "Pois päältä", - "On": "Päällä", - "Operation failed": "Toiminto epäonnistui", - "Permalink": "Pysyvä linkki", - "Quote": "Lainaa", - "Reject": "Hylkää", - "Remove": "Poista", - "Report a bug": "Ilmoita ongelmasta", - "Resend": "Lähetä uudelleen", - "Room not found": "Huonetta ei löytynyt", - "Search": "Haku", - "Search…": "Haku…", - "Search for a room": "Hae huonetta", - "Send": "Lähetä", - "Send logs": "Lähetä lokit", - "Source URL": "Lähde URL", - "This Room": "Tämä huone", - "Unable to join network": "Verkkoon liittyminen epäonnistui", - "Unavailable": "Ei saatavilla", "Unknown device": "Tuntematon laite", - "unknown error code": "tuntematon virhekoodi", - "Unnamed room": "Nimeämätön huone", - "Update": "Päivitä", - "View Source": "Näytä lähde", - "Waiting for response from server": "Odotetaan vastausta palvelimelta", - "Monday": "Maanantai", - "Tuesday": "Tiistai", - "Wednesday": "Keskiviikko", - "Thursday": "Torstai", - "Friday": "Perjantai", - "Saturday": "Lauantai", - "Today": "Tänään", - "Yesterday": "Eilen", - "OK": "OK", - "Warning": "Varoitus", - "Checking for an update...": "Tarkistetaan päivityksen saatavuutta...", - "No update available.": "Ei päivityksiä saatavilla.", - "Downloading update...": "Ladataan päivitystä...", - "Welcome to Riot.im": "Tervetuloa Riot.im -palveluun", - "Search the room directory": "Hae hakemistosta", - "Continue": "Jatka", - "Set Password": "Aseta salasana", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> ja <a href=\"http://opera.com\">Opera</a> toimivat myös.", - "Collapse panel": "Piilota paneeli", - "Collecting app version information": "Haetaan versiotietoja", - "Collecting logs": "Haetaan lokitietoja", + "Welcome to Riot.im": "Tervetuloa Riot.im-palveluun", + "Search the room directory": "Hae luettelosta", "Custom Server Options": "Palvelinasetukset", - "customServer_text": "Voit käyttää palvelinasetuksia muille Matrix-palvelimille kirjautumiseen asettamalla oman kotipalvelinosoitteen.<br/>Näin voit käyttää Riotia toisella kotipalvelimella sijaitsevan Matrix-käyttäjän kanssa. <br/><br/>Voit myös asettaa oman tunnistautumispalvelimen, mutta sinua ei voi kutsua etkä voi kutsua muita sähköpostiosoitteella.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Poista huonetunnus %(alias)s ja poista %(name)s hakemistosta?", - "Enable them now": "Ota käyttöön nyt", - "Enter keywords separated by a comma:": "Anna avainsanat eroteltuna pilkuin:", - "Expand panel": "Avaa paneeli", - "Error saving email notification preferences": "Virhe tallennettaessa sähköposti-ilmoitusasetuksia", - "Failed to change settings": "Asetusten muuttaminen epäonnistui", - "Failed to forget room %(errCode)s": "Huoneen unohtaminen epäonnistui %(errCode)s", - "Failed to update keywords": "Avainsanojen päivittäminen epäonnistui", - "Enable audible notifications in web client": "Ota käyttöön äänelliset ilmoitukset", - "Enable desktop notifications": "Ota käyttöön työpöytäilmoitukset", - "Enable email notifications": "Ota käyttöön sähköposti-ilmoitukset", - "Enable notifications for this account": "Ota käyttöön ilmoitukset tälle tilille", - "Failed to add tag %(tagName)s to room": "Tagin %(tagName)s lisäämineen huoneelle ei onnistunut", - "Failed to get protocol list from Home Server": "Protokollalistan hakeminen Kotipalvelimelta ei onnistunut", - "Failed to get public room list": "Julkisten huoneiden listan hakeminen epäonnistui", - "Failed to remove tag %(tagName)s from room": "Tagin %(tagName)s poistaminen huoneelta epäonnistui", - "Failed to send report: ": "Raportin lähettäminen epäonnistui: ", - "Failed to set direct chat tag": "Suoran viestittelyn tagin asettaminen epäonnistui", - "Fetching third party location failed": "Kolmannen osapuolen paikan haku epäonnistui", - "Filter room names": "Suodata", - "Forward Message": "Edelleenlähetä viesti", - "Guests can join": "Vieraat voivat liittyä", - "Hide panel": "Piilota paneeli", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Diagnoosin helpottamiseksi lokitietoja tältä laitteelta lähetetään tämän bugiraportin mukana. Poista ruksi jos haluat lätettää vain ylläolevan tekstin:", - "Loading bug report module": "Ladataan bugiraportointimoduuli", - "Messages containing my display name": "Viestit joissa mainitaan nimimerkkini", - "Messages containing <span>keywords</span>": "<span>Avainsanoja</span> sisältävät viestit", - "Messages containing my user name": "Viestit joissa mainitaan käyttäjänimeni", - "Messages in group chats": "Viestit ryhmäkeskusteluissa", - "Messages in one-to-one chats": "Viestit henkilökohtaisissa keskusteluissa", - "Messages sent by bot": "Bottien lähettämät viestit", - "Notification targets": "Ilmoituksen kohteet", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Seuraaviin avainsanoihin liittyvät ilmoitukset seuraavat sääntöjä joita ei voida näyttää tässä:", - "Notify me for anything else": "Ilmoita minulle kaikesta muusta", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Ole hyvä ja kuvaile virhe. Mitä teit? Mitä oletit tapahtuvan? Mitä itse asiassa tapahtui?", - "Please describe the bug and/or send logs.": "Ole hyvä ja kuvaile virhe sekä/tai lähetä lokitiedot.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Ole hyvä ja asenna <a href=\"https://www.google.com/chrome\">Chrome</a> tai <a href=\"https://getfirefox.com\">Firefox</a> parhaan kokemuksen saavuttamiseksi.", - "Remove %(name)s from the directory?": "Poista %(name)s hakemistosta?", - "remove %(name)s from the directory.": "poista %(name)s hakemistosta.", - "Remove from Directory": "Poista hakemistosta", - "Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s", - "Riot does not know how to join a room on this network": "Riot ei tiedä miten liittya huoneeseen tässä verkossa", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot käyttää monia selainominaisuuksia, joista osa selaimesi ei tue tai ne ovat kokeellisia.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Valitettavasti Riot <b>ei</b> toimi selaimessasi.", - "The Home Server may be too old to support third party networks": "Kotipalvelin saattaa olla liian vanha tukeakseen kolmannen osapuolen verkkoja", - "The server may be unavailable or overloaded": "Palvelin saattaa olla saavuttamaton tai ylikuormitettu", - "Unable to fetch notification target list": "Ilmoituskohdelistan haku epäonnistui", - "Unable to look up room ID from server": "Huone-ID:n haku palvelimelta epäonnistui", - "Unhide Preview": "Näytä ennakkokatselu", - "Uploaded on %(date)s by %(user)s": "Ladattu %(date)s käyttäjän %(user)s toimesta", - "Uploading report": "Ladataan raporttia", - "View Decrypted Source": "Näytä purettu lähdekoodi", - "What's New": "Mikä on uutta", - "What's new?": "Mikä on uutta?", - "When I'm invited to a room": "Kun minut kutsutaan huoneeseen", - "World readable": "Kaikkien luettavissa", - "You cannot delete this image. (%(code)s)": "Et voi poistaa tätä kuvaa. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Et voi poistaa tätä viestiä. (%(code)s)", - "You are not receiving desktop notifications": "Et vastaanota työpöytäilmoituksia", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Olet saattanut muuttaa niitä toisessa asiakasohjelmassa kuin Riot. Et voi muuttaa niitä Riotissa mutta ne pätevät kuitenkin", - "You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS -yhteyttä, jotta voit jakaa ruudun.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Nykyisellä selaimellasi ohjelman ulkonäkö voi olla aivan virheellinen, ja jotkut ominaisuudet eivät saata toimia. Voit jatkaa jos haluat kokeilla mutta et voi odottaa saavasi apua mahdollisesti ilmeneviin ongelmiin!", - "Chat with Riot Bot": "Keskustele Riot Botin kanssa", - "Get started with some tips from Riot Bot!": "Aloita Riot Botin vinkkien avulla!", + "Riot Desktop on %(platformName)s": "Riot Desktop, %(platformName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS-yhteyttä, jotta voit jakaa ruudun puhelussa.", + "Chat with Riot Bot": "Keskustele Riot-botin kanssa", + "Get started with some tips from Riot Bot!": "Aloita Riot-botin vinkkien avulla!", "General discussion about Matrix and Riot": "Matrix- ja Riot keskustelut", "Discussion of all things Matrix!": "Keskustelu kaikesta Matrixiin liittyvästä!", "Riot/Web & Desktop chat": "Riot/Web & Työpöytä-keskustelu", @@ -161,7 +18,6 @@ "Community-run support for Synapse": "Yhteisön tarjoama Synapse-tuki", "Admin support for Dendrite": "Dendrite ylläpitotuki", "Announcements about Synapse releases": "Ilmoitukset uusista Synapse-julkaisuista", - "Error encountered (%(errorDetail)s).": "Virhe: %(errorDetail)s.", "Support for those using and running matrix-appservice-irc": "Tuki niille jotka käyttävät ja ajavat matrix-appservice-irc", "Building services on Matrix": "Palveluiden rakentaminen Matrixin avulla", "Support for those using the Matrix spec": "Tuki Matrix-spesifikaation käyttäjille", @@ -171,55 +27,26 @@ "Support for those using, running and writing other bridges": "Tuki niille jotka käyttävät, ajavat ja ohjelmoivat muita siltoja", "Dev chat for the Riot/Web dev team": "Kehittäjäkeskustelu Riot/Web kehitystiimille", "Dev chat for the Dendrite dev team": "Kehittäjäkeskustelu Dendrite kehitystiimille", - "Co-ordination for Riot/Web translators": "Riot/Web kääntäjien koordinointi", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrixissa on olemassa monia huoneita, jotka on linkitetty olemassa oleviin verkkoihin (Slack, IRC, Gitter yms.). Tutustu hakemistoon!", - "Failed to change password. Is your password correct?": "Salasanan muuttaminen epäonnistui. Onko salasanasi oikein?", - "You have successfully set a password!": "Olet onnistuneesti asettanut salasanan!", - "You can now return to your account after signing out, and sign in on other devices.": "Voit nyt palata tilillesi kirjauduttua ulos, sekä kirjautua muilla laitteilla.", - "Please set a password!": "Ole hyvä ja aseta salasana!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Tämä mahdollistaa sinut palamaan tilillesi uloskirjautumisen jälkeen sekä kirjautumaan muilla laitteilla.", - "You have successfully set a password and an email address!": "Olet onnistuneesti asettanut salasanan ja sähköpostiosoitteen!", - "Remember, you can always set an email address in user settings if you change your mind.": "Muista että voit aina asettaa sähköpostiosoitteen käyttäjäasetuksista jos muutat mielesi.", - "To return to your account in future you need to <u>set a password</u>": "Voidaksesi tulevaisuudessa palata tilillesi sinut pitää <u>asettaa salasana</u>", - "Couldn't load home page": "Kotisivun lataus epäonnistui", - "Bug report sent": "Virheraportti lähetetty", - "Failed to set Direct Message status of room": "Huoneen suoran viestittelyn tilan asettaminen epäonnistui", - "(HTTP status %(httpStatus)s)": "(HTTP tila %(httpStatus)s)", - "Notify for all other messages/rooms": "Ilmoita kaikista muista viesteistä/huoneista", - "powered by Matrix": "Matrix", + "powered by Matrix": "moottorina Matrix", "Riot is not supported on mobile web. Install the app?": "Riot ei tue laitettasi. Asenna mobiilisovellus?", - "Thank you!": "Kiitos!", "Design and implementation of E2E in Matrix": "Matrix päästä-päähän salauksen suunnittelu ja implementointi", "Contributing code to Matrix and Riot": "Osallistu kehitystyöhön", - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s %(osName)s", - "There are advanced notifications which are not shown here": "On kehittyneitä ilmoituksia joita ei näytetä tässä", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Salattua ja vikasietoista viestintää Matrix -teknologialla", - "Back": "Takaisin", - "Developer Tools": "Kehitystila", - "Failed to send custom event.": "Kustomoidun tapahtuman lähettäminen epäonnistui.", - "Filter results": "Suodata", - "Send Custom Event": "Lähetä kustomoitu tapahtuma", - "Send Custom State Event": "Lähetä kustomoitu tilatapahtuma", - "Explore Room State": "Huoneen tila", - "You must specify an event type!": "Sinun on määritettävä tapahtuman tyyppi!", - "Event sent!": "Tapahtuma lähetetty!", - "Event Type": "Tapahtuman tyyppi", - "Event Content": "Tapahtuman sisältö", - "State Key": "Tila-avain", - "Show message in desktop notification": "Näytä viestit ilmoituskeskuksessa", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s, %(browserName)s, %(osName)s", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Hajautettua ja salattua viestintää Matrix-teknologialla", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen.<br/>Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä.<br/><br/>Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi.", - "Appear Offline": "Offline-tila", - "Away": "Poissa", - "Send Account Data": "Lähetä tilin tiedot", - "Edit": "Muokkaa", - "Explore Account Data": "Tilitiedot", - "Toolbox": "Työkalut", - "Unpin Message": "Poista viestin kiinnitys", - "Pin Message": "Kiinnitä viesti", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Asenna <chromeLink>Chrome</chromeLink> tai <firefoxLink>Firefox</firefoxLink> parhaan käyttökokemuksen saavuttamiseksi.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> ja <operaLink>Opera</operaLink> ovat myös tuettuja.", - "Register": "Rekisteröidy", - "Rooms": "Huoneet", - "Invite to this community": "Kutsu käyttäjiä", - "Add rooms to this community": "Lisää huoneita yhteisöön" + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Voit käyttää mukautettuja palvelinasetuksia kirjautuaksesi muihin Matrix-palvelimiin. Tämä mahdollistaa Riotin käyttämisen toisella kotipalvelimella olevalla Matrix-tilillä.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit myös määrittää toisen identiteettipalvelimen, mutta et voi kutsua muita käyttäjiä sähköpostin perusteella tai saada itse kutsua sähköpostin perusteella.", + "Sign In": "Kirjaudu", + "Create Account": "Luo tili", + "Need help?": "Tarvitsetko apua?", + "Explore rooms": "Selaa huoneita", + "Room Directory": "Huoneluettelo", + "Unexpected error preparing the app. See console for details.": "Odottamaton virhe sovellusta valmisteltaessa. Katso konsolista lisätietoja.", + "Your Riot is misconfigured": "Riotin asetukset ovat pielessä", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Virheellinen asetus. Vain yhden seuraavista voi määrittää: default_server_config, default_server_name, tai default_hs_url.", + "Invalid configuration: no default server specified.": "Virheellinen asetus: oletuspalvelinta ei ole määritetty.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-asetuksissasi on virheellistä JSONia. Korjaa ongelma ja lataa sivu uudelleen.", + "The message from the parser is: %(message)s": "Viesti jäsentimeltä: %(message)s", + "Invalid JSON": "Virheellinen JSON" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 1e7d4b82..1006ec99 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1,161 +1,14 @@ { - "Add an email address above to configure email notifications": "Ajouter une adresse e-mail pour la configuration des notifications par e-mail", - "All messages": "Tous les messages", - "All messages (noisy)": "Tous les messages (fort)", - "All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.", - "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notification par e-mail.", - "Cancel Sending": "Annuler l'envoi", - "Can't update user notification settings": "Impossible de mettre à jour les paramètres de notification de l'utilisateur", - "Close": "Fermer", - "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix correspondant", "Custom Server Options": "Options de serveur personnalisées", - "delete the alias.": "supprimer l'alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?", - "Direct Chat": "Discussion directe", - "Directory": "Répertoire", "Dismiss": "Ignorer", - "Download this file": "Télécharger ce fichier", - "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", - "Enable desktop notifications": "Activer les notifications de bureau", - "Enable email notifications": "Activer les notifications par e-mail", - "Enable notifications for this account": "Activer les notifications pour ce compte", - "Enable them now": "Les activer maintenant", - "Enter keywords separated by a comma:": "Entrez les mots-clés séparés par une virgule :", - "Error": "Erreur", - "Error saving email notification preferences": "Erreur lors de la sauvegarde des préférences de notification par e-mail", - "#example": "#exemple", - "Failed to add tag %(tagName)s to room": "Échec lors de l'ajout de l’étiquette %(tagName)s au salon", - "Failed to change settings": "Échec de la mise à jour des paramètres", - "Failed to forget room %(errCode)s": "Échec lors de l'oubli du salon %(errCode)s", - "Failed to update keywords": "Échec dans la mise à jour des mots-clés", - "Failed to get protocol list from Home Server": "Échec lors de la récupération de la liste sur le serveur", - "Failed to get public room list": "Échec lors de la récupération de la liste des salons publics", - "Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(tagName)s du salon", - "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans la discussion directe", - "Favourite": "Favoris", - "Operation failed": "L'opération a échoué", "powered by Matrix": "propulsé par Matrix", - "Quote": "Citer", - "Reject": "Rejeter", - "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire ?", - "Remove": "Supprimer", - "Resend": "Renvoyer", - "unknown error code": "Code erreur inconnu", - "View Source": "Voir la source", - "You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", - "You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau", - "Sunday": "Dimanche", - "Monday": "Lundi", - "Tuesday": "Mardi", - "Wednesday": "Mercredi", - "Thursday": "Jeudi", - "Friday": "Vendredi", - "Saturday": "Samedi", - "Today": "Aujourd'hui", - "Yesterday": "Hier", - "Call invitation": "Appel entrant", - "Failed to set Direct Message status of room": "Échec du réglage de l'état du salon en Discussion directe", - "Fetching third party location failed": "Échec de la récupération de la localisation tierce", - "Files": "Fichiers", - "Filter room names": "Filtrer les salons par nom", - "Forget": "Oublier", - "Invite to this room": "Inviter dans ce salon", - "Keywords": "Mots-clés", - "Leave": "Quitter", - "Low Priority": "Priorité basse", - "Members": "Membres", - "Mentions only": "Seulement les mentions", - "Messages containing my display name": "Messages contenant mon nom affiché", - "Messages containing my user name": "Message contenant mon nom d'utilisateur", - "Messages in group chats": "Messages dans les discussions de groupe", - "Messages in one-to-one chats": "Messages dans les discussions directes", - "Messages sent by bot": "Messages envoyés par des robots", - "more": "plus", - "Mute": "Mettre en sourdine", - "No rooms to show": "Aucun salon à afficher", - "Noisy": "Bruyant", - "Notification targets": "Appareils recevant les notifications", - "Notifications": "Notifications", - "Notify for all other messages/rooms": "Me notifier pour tous les autres messages/salons", - "Notify me for anything else": "Me notifier pour tout le reste", - "Off": "Désactivé", - "On": "Activé", - "Permalink": "Permalien", - "remove %(name)s from the directory.": "supprimer %(name)s du répertoire.", - "Remove from Directory": "Supprimer du répertoire", - "Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau", - "Room not found": "Salon non trouvé", - "Search for a room": "Rechercher un salon", - "Source URL": "URL de la source", - "The Home Server may be too old to support third party networks": "Le serveur d'accueil semble trop ancien pour supporter des réseaux tiers", - "There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici", - "The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé", - "Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications", - "Unable to join network": "Impossible de rejoindre le réseau", - "Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur", - "Unhide Preview": "Dévoiler l'aperçu", - "Unnamed room": "Salon sans nom", - "Uploaded on %(date)s by %(user)s": "Téléchargé le %(date)s par %(user)s", - "View Decrypted Source": "Voir la source déchiffrée", - "When I'm invited to a room": "Quand je suis invité dans un salon", - "World readable": "Lisible publiquement", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même", - "Guests can join": "Les invités peuvent rejoindre le salon", - "Advanced notification settings": "Paramètres de notification avancés", - "customServer_text": "Vous pouvez utiliser les options de serveur personnalisées pour vous connecter à d'autres serveurs Matrix, en spécifiant une adresse de serveur d'accueil différente.<br/>Cela permet d'utiliser Riot avec un compte Matrix existant sur un serveur d'accueil différent.<br/><br/>Vous pouvez aussi indiquer un serveur d'identité personnalisé mais vous ne pourrez pas inviter d'utilisateurs par e-mail ou être invité par e-mail.", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots-clés suivant répondent à des critères qui ne peuvent pas être affichés ici :", - "Collapse panel": "Cacher le panneau", - "Expand panel": "Dévoiler le panneau", - "I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilise de nombreuses fonctionnalités avancées du navigateur, certaines ne sont pas disponibles ou expérimentales dans votre navigateur actuel.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Désolé, Riot <b>n'</b>est <b>pas</b> supporté par votre navigateur.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Depuis votre navigateur actuel, le visuel et le ressenti de l'application pourraient être complètement erronés, et certaines fonctionnalités pourraient ne pas être supportées. Vous pouvez continuer malgré tout, mais vous n'aurez aucune aide si vous rencontrez des problèmes !", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Veuillez installer <a href=\"https://www.google.com/chrome\">Chrome</a> ou <a href=\"https://getfirefox.com\">Firefox</a> pour une expérience optimale.", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> et <a href=\"http://opera.com\">Opera</a> fonctionnent aussi.", - "Messages containing <span>keywords</span>": "Messages contenant des <span>mots-clés</span>", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s dans %(browserName)s sous %(osName)s", - "A new version of Riot is available.": "Une nouvelle version de Riot est disponible.", - "All Rooms": "Tous les salons", - "Cancel": "Annuler", - "Changelog": "Journal des modifications", - "Collecting app version information": "Récupération des informations de version de l’application", - "Collecting logs": "Récupération des journaux", - "Describe your problem here.": "Décrivez votre problème ici.", - "Failed to send report: ": "Échec de l’envoi du rapport : ", - "Forward Message": "Transférer le message", - "Hide panel": "Cacher le panneau", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Afin de diagnostiquer les problèmes, les journaux de ce client vont être envoyés avec ce rapport d’erreur. Si vous préférez n'envoyer que le texte ci-dessus, décochez la case :", - "Loading bug report module": "Chargement du module de rapport d’erreur", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Veuillez décrire l'erreur. Qu'avez-vous fait ? Quel était le comportement attendu ? Que s'est-il réellement passé ?", - "Please describe the bug and/or send logs.": "Veuillez décrire le problème et/ou envoyer les journaux.", - "Report a bug": "Signaler un problème", "Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot n’est pas supporté sur les appareils mobiles. Installer l’application ?", - "Search": "Rechercher", - "Search…": "Rechercher…", - "Send": "Envoyer", - "Send logs": "Envoyer les journaux", - "This Room": "Ce salon", - "Unavailable": "Indisponible", + "Riot is not supported on mobile web. Install the app?": "Riot n’est pas disponible en version web mobile. Installer l’application ?", "Unknown device": "Appareil inconnu", - "Update": "Mettre à jour", - "Uploading report": "Envoi du rapport", - "What's New": "Nouveautés", - "What's new?": "Nouveautés ?", - "Waiting for response from server": "En attente d’une réponse du serveur", - "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel en partage d’écran.", - "OK": "OK", - "Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?", - "You have successfully set a password!": "Vous avez défini un mot de passe avec succès !", - "Continue": "Continuer", - "Please set a password!": "Veuillez définir un mot de passe !", - "You can now return to your account after signing out, and sign in on other devices.": "Vous pouvez maintenant revenir sur votre compte après vous être déconnecté, et vous identifier sur d'autres appareils.", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Cela vous permettra de retourner sur votre compte après vous être déconnecté, et de vous identifier sur d'autres appareils.", + "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.", "Welcome to Riot.im": "Bienvenue sur Riot.im", - "(HTTP status %(httpStatus)s)": "(état HTTP %(httpStatus)s)", - "Login": "Connexion", - "Chat with Riot Bot": "Discussion avec Riot Bot", + "Chat with Riot Bot": "Discuter avec le bot Riot", "Search the room directory": "Rechercher dans le répertoire de salons", "Get started with some tips from Riot Bot!": "Démarrer avec quelques astuces de Riot Bot !", "Riot/Android & matrix-android-sdk chat": "Discussions sur Riot/Android & matrix-android-sdk", @@ -180,47 +33,22 @@ "Contributing code to Matrix and Riot": "Contribuer du code à Matrix et Riot", "Dev chat for the Riot/Web dev team": "Discussions de l'équipe de développeurs de Riot/Web", "Dev chat for the Dendrite dev team": "Discussion pour l'équipe de développeurs de Dendrite", - "Co-ordination for Riot/Web translators": "Coordination des traducteurs de Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "De nombreux salons existent déjà dans Matrix, liés à des réseaux existants (Slack, IRC, Gitter etc) ou indépendants. Jetez un œil au répertoire !", - "You have successfully set a password and an email address!": "Vous avez défini un mot de passe et une adresse e-mail avec succès !", - "Remember, you can always set an email address in user settings if you change your mind.": "Souvenez-vous que vous pourrez toujours définir une adresse e-mail dans les paramètres de l'utilisateur si vous changez d’avis.", - "Warning": "Attention", - "Checking for an update...": "Recherche de mise à jour...", - "Error encountered (%(errorDetail)s).": "Erreur rencontrée (%(errorDetail)s).", - "No update available.": "Aucune mise à jour disponible.", - "Downloading update...": "Mise à jour en cours de téléchargement...", - "To return to your account in future you need to <u>set a password</u>": "Pour pouvoir retrouver votre compte dans le futur, vous devez <u>définir un mot de passe</u>", - "Set Password": "Définir un mot de passe", - "Couldn't load home page": "Impossible de charger la page d'accueil", - "Bug report sent": "Rapport d'erreur envoyé", - "Thank you!": "Merci !", - "Back": "Retour", - "Developer Tools": "Outils de développement", - "Filter results": "Filtrer les résultats", - "You must specify an event type!": "Vous devez spécifier un type d'événement !", - "Event sent!": "Événement envoyé !", - "Event Type": "Type d'événement", - "Event Content": "Contenu de l'événement", - "Failed to send custom event.": "Échec de l'envoi de l'événement personnalisé.", - "Send Custom Event": "Envoyer l'événement personnalisé", - "Send Custom State Event": "Envoyer l'événement d'état personnalisé", - "Explore Room State": "Parcourir l'état du salon", - "State Key": "Clé d'état", - "Unpin Message": "Dépingler le message", - "Add rooms to this community": "Ajouter des salons à cette communauté", - "Show message in desktop notification": "Afficher le message dans les notifications de bureau", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vous pouvez utiliser les options de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en précisant un serveur d'accueil différent.<br/>Cela vous permet d'utiliser Riot avec un compte Matrix existant sur un autre serveur d'accueil.<br/><br/>Vous pouvez aussi renseigner un serveur d'identité personnalisé mais vous ne pourrez pas inviter d'utilisateurs avec leur adresse e-mail, ou être invité avec votre adresse e-mail.", - "Edit": "Modifier", - "Pin Message": "Épingler le message", - "Register": "S'inscrire", - "Rooms": "Salons", - "Invite to this community": "Inviter à cette communauté", - "Toolbox": "Boîte à outils", - "Send Account Data": "Envoyer les données du compte", - "Explore Account Data": "Explorer les données du compte", - "Appear Offline": "Apparaître Hors ligne", - "Away": "Absent", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Veuillez installer <chromeLink>Chrome</chromeLink> ou <firefoxLink>Firefox</firefoxLink> pour une expérience optimale.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> et <operaLink>Opera</operaLink> fonctionnent également.", - "Reply": "Répondre" + "Co-ordination for Riot translators": "Coordination des traducteurs de Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vous pouvez utiliser les options de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en renseignant l'URL d'un autre serveur d'accueil. Cela vous permet d'utiliser Riot avec un compte Matrix existant sur un serveur d'accueil différent.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vous pouvez aussi renseigner un serveur d'identité personnalisé, mais vous ne pourrez pas inviter d'utilisateurs avec leur adresse e-mail, ou être vous-même invité avec votre adresse e-mail.", + "Sign In": "Se connecter", + "Create Account": "Créer un compte", + "Need help?": "Besoin d'aide ?", + "Explore rooms": "Explorer les salons", + "Room Directory": "Répertoire de salons", + "Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de l’application. Consultez la console pour avoir des détails.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs entre default_server_config, default_server_name et default_hs_url.", + "Invalid configuration: no default server specified.": "Configuration invalide : aucun serveur par défaut spécifié.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Cette installation de Riot semble avoir une configuration de serveur non valide. Si vous êtes l’administrateur, corrigez l’erreur ci-dessous", + "Your Riot is misconfigured": "Votre Riot est mal configuré", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Votre configuration de Riot contient du JSON non valide. Corrigez ce problème et rechargez la page.", + "The message from the parser is: %(message)s": "Le message de l’analyseur est : %(message)s", + "Invalid JSON": "JSON non valide" } diff --git a/src/i18n/strings/ga.json b/src/i18n/strings/ga.json new file mode 100644 index 00000000..3b613da8 --- /dev/null +++ b/src/i18n/strings/ga.json @@ -0,0 +1,21 @@ +{ + "Riot Desktop on %(platformName)s": "Leagan gnáthríomhaire Riot ar %(platformName)s", + "Unknown device": "Gléas nár aithníodh", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s trí %(browserName)s ar %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Ní mór HTTPS a úsáid chun glaoch comhroinnt scáileáin a chur.", + "powered by Matrix": "cumhachtaithe ag Matrix", + "Custom Server Options": "Socruithe do fhreastalaí saincheaptha", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Is féidir na socruithe do fhreastalaí saincheaptha a úsáid chun síniú isteach le freastalaithe Matrix eile ach URL freastalaí ar leith a shainiú. Cuirfidh sé seo ar do chumas Riot a úsáid le cuntas Matrix atá ar taifead ag an bhfreastalaí eile sin.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Freisin is féidir freastalaí aitheantais saincheaptha a úsáid, ach sa chás sin ní bheidh tú in ann cuireadh a thabhairt do dhaoine trí sheoladh ríomhphoist a sholáthar, ná glacadh le cuireadh trí ríomhphoist ach an oiread.", + "Dismiss": "Cuir uait", + "Welcome to Riot.im": "Fáilte romhat chuig Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Meán comhrá agus comhoibriú, díláraithe agus criptithe, cumhachtaithe ag [matrix]", + "Sign In": "Sínigh Isteach", + "Create Account": "Déan cuntas a chruthú", + "Need help?": "An bhfuil cabhair uait?", + "Chat with Riot Bot": "Labhair le Riot Bot", + "Explore rooms": "Breathnaigh thart ar na seomraí", + "Room Directory": "Eolaire na Seomraí", + "Search the room directory": "Cuardaigh eolaire na seomraí", + "Get started with some tips from Riot Bot!": "Tosaigh le roinnt nod ó Riot Bot!" +} diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 63c24d60..37e9c888 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -1,226 +1,46 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s vía %(browserName)s en %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> e <a href=\"http://opera.com\">Opera</a> tamén serven.", - "A new version of Riot is available.": "Está dispoñible unha nova versión de Riot.", - "Add an email address above to configure email notifications": "Engada un enderezo de correo electrónico para configurar as notificacións", - "Advanced notification settings": "Axustes avanzados de notificación", - "All messages": "Todas as mensaxes", - "All messages (noisy)": "Todas as mensaxes (alto)", - "All Rooms": "Todas as Salas", - "All notifications are currently disabled for all targets.": "Todas as notificacións están deshabilitadas para todos os destinos.", - "An error occurred whilst saving your email notification preferences.": "Algo fallou mentras se gardaban as súas preferencias de notificaicón.", - "Back": "Atrás", - "Bug report sent": "Enviado o informe de fallo", - "Call invitation": "Convite de chamada", - "Cancel": "Cancelar", - "Cancel Sending": "Cancelar o envío", - "Can't update user notification settings": "Non se poden actualizar os axutes de notificación", - "Changelog": "Rexistro de cambios", - "Close": "Pechar", - "Collapse panel": "Agochar panel", - "Collecting app version information": "Obtendo información sobre a versión da app", - "Collecting logs": "Obtendo rexistros", - "Couldn't find a matching Matrix room": "Non coincide con ningunha sala de Matrix", "Custom Server Options": "Opcións personalizadas do servidor", - "customServer_text": "Pode utilizar os axustes do servidor personalizado para conectarse a outros servidores Matrix indicando un URL de Inicio do servidor.<br/>Esto permítelle utilizar Riot con unha conta existente de Matrix nun servidor diferente.<br/><br/>Tamén pode establecer un servidor personalizado de identidade mais non poderá invitar a usuarias a través de enderezos de correo ou ser vostede invitada do mesmo xeito.", - "delete the alias.": "borrar alcume.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Eliminar o alcume da sala %(alias)s e borrar %(name)s do directorio?", - "Describe your problem here.": "Describa aquí o seu problema.", - "Developer Tools": "Ferramentas para desenvolver", - "Direct Chat": "Chat directo", - "Directory": "Directorio", "Dismiss": "Rexeitar", - "Download this file": "Descargue este ficheiro", - "Enable audible notifications in web client": "Habilitar notificacións audibles no cliente web", - "Enable desktop notifications": "Habilitar notificacións de escritorio", - "Enable email notifications": "Habilitar notificacións de correo", - "Enable notifications for this account": "Habilitar notificacións para esta conta", - "Enable them now": "Habilitalas agora", - "Enter keywords separated by a comma:": "Introduza palabras chave separadas por vírgulas:", - "Error": "Fallo", - "Error saving email notification preferences": "Fallo ao cargar os axustes de notificacións", - "#example": "#exemplo", - "Expand panel": "Expandir panel", - "Failed to add tag %(tagName)s to room": "Fallou ao engadir a etiqueta %(tagName)s a sala", - "Failed to change settings": "Fallo ao cambiar os axustes", - "Failed to forget room %(errCode)s": "Fallo ao esquecer sala %(errCode)s", - "Failed to update keywords": "Fallo ao actualizar as palabras chave", - "Failed to get protocol list from Home Server": "Fallo ao obter a lista de protocolo desde o servidor", - "Failed to get public room list": "Fallo ao obter a lista de salas públicas", - "Failed to remove tag %(tagName)s from room": "Fallo ao eliminar etiqueta %(tagName)s da sala", - "Failed to send custom event.": "Fallo ao enviar evento personalizado.", - "Failed to send report: ": "Fallo no envío do informe: ", - "Failed to set direct chat tag": "Fallo ao establecer etiqueta do chat directo", - "Failed to set Direct Message status of room": "Fallo ao establecer o estado Mensaxe Directa da sala", - "Favourite": "Favorita", - "Fetching third party location failed": "Fallo ao obter a localización de terceiros", - "Files": "Ficheiros", - "Filter results": "Filtrar resultados", - "Filter room names": "Filtrar nomes de sala", - "Forget": "Esquecer", - "Forward Message": "Reenviar mensaxe", - "Guests can join": "Convidados pódense unir", - "Hide panel": "Agochar panel", - "(HTTP status %(httpStatus)s)": "(Estado HTTP %(httpStatus)s)", - "I understand the risks and wish to continue": "Entendos os riscos e desexo continuar", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para poder diagnosticar o problema, os rexistros de este cliente enviaranse neste informe de fallo. Si prefire enviar só o texto superior, desmarque:", - "Invite to this room": "Convidar a esta sala", - "Keywords": "Palabras chave", - "Leave": "Saír", - "Login": "Conectar", - "Loading bug report module": "Cargando o módulo de informe de fallos", - "Low Priority": "Baixa prioridade", - "Members": "Membresía", - "Mentions only": "Só mencións", - "Messages containing my display name": "Mensaxes que conteñen o meu nome público", - "Messages containing <span>keywords</span>": "Mensaxes que conteñen <span>palabras chave</span>", - "Messages containing my user name": "Mensaxes que conteñen o meu nome de usuaria", - "Messages in group chats": "Mensaxes en grupos de chat", - "Messages in one-to-one chats": "Mensaxes en chats un-a-un", - "Messages sent by bot": "Mensaxes enviadas por bot", - "more": "máis", - "Mute": "Acalar", - "No rooms to show": "Sen salas que mostrar", - "Noisy": "Ruidoso", - "Notification targets": "Obxetivos das notificacións", - "Notifications": "Notificacións", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificacións das reglas de seguimento das seguintes palabras que non se mostrarán aquí:", - "Notify for all other messages/rooms": "Notificar para todas as outras mensaxes/salas", - "Notify me for anything else": "Notificarme todo o demáis", - "Off": "Off", - "On": "On", - "Operation failed": "Fallou a operación", - "Permalink": "Ligazón permanente", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor describa a incidencia. Que estaba a facer? Que tiña que pasar? Que aconteceu en realidade?", - "Please describe the bug and/or send logs.": "Por favor describa a incidencia e/ou envíe o informe.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Por favor instale <a href=\"https://www.google.com/chrome\">Chrome</a> ou <a href=\"https://getfirefox.com\">Firefox</a> para ter a mellor experiencia de uso.", "powered by Matrix": "funciona grazas a Matrix", - "Quote": "Cita", - "Reject": "Rexeitar", - "Remove %(name)s from the directory?": "Eliminar %(name)s do directorio?", - "Remove": "Eliminar", - "remove %(name)s from the directory.": "eliminar %(name)s do directorio.", - "Remove from Directory": "Eliminar do directorio", - "Report a bug": "Informar de un fallo", - "Resend": "Voltar a enviar", "Riot Desktop on %(platformName)s": "Riot Desktop en %(platformName)s", - "Riot does not know how to join a room on this network": "Riot non sabe cómo conectar con unha sala en esta rede", - "Riot is not supported on mobile web. Install the app?": "Riot no se pode executar na web móbil. Instalar a app?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utiliza características avanzadas do navegador, algunhas das cales non están dispoñibles ou son experimentales no seu navegador actual.", - "Room not found": "Non se atopou a sala", - "Search": "Busca", - "Search…": "Buscar…", - "Search for a room": "Buscar unha sala", - "Send": "Enviar", - "Send logs": "Enviar informes", - "Send Custom Event": "Enviar evento personalizado", - "Send Custom State Event": "Enviar evento de estado personalizado", - "Explore Room State": "Explorar estado da sala", - "Source URL": "URL fonte", - "Sorry, your browser is <b>not</b> able to run Riot.": "Desculpe, o seu navegador <b>non pode</b> executar Riot.", - "The Home Server may be too old to support third party networks": "O servidor de inicio podería ser demasiando antigo como para aceptar redes de terceiros", - "There are advanced notifications which are not shown here": "Existen notificacións avanzadas que non se mostran aquí", - "The server may be unavailable or overloaded": "O servidor podería non estar dispoñible ou sobrecargado", - "This Room": "Esta sala", - "Unable to fetch notification target list": "Non se puido procesar a lista de obxetivo de notificacións", - "Unable to join network": "Non se puido conectar a rede", - "Unable to look up room ID from server": "Non se puido atopar o ID da sala do servidor", - "Unavailable": "Non dispoñible", - "Unhide Preview": "Desagochar a vista previsa", + "Riot is not supported on mobile web. Install the app?": "Riot non se pode executar na web do móbil. Instalar a aplicación?", "Unknown device": "Dispositivo descoñecido", - "unknown error code": "código de fallo descoñecido", - "Unnamed room": "Sala sen nome", - "Update": "Actualizar", - "Uploaded on %(date)s by %(user)s": "Subido a %(date)s por %(user)s", - "Uploading report": "Informe da subida", - "View Decrypted Source": "Ver a fonte descifrada", - "View Source": "Ver fonte", - "What's New": "Qué hai de novo", - "What's new?": "Qué hai de novo?", - "Waiting for response from server": "Agardando pola resposta do servidor", - "When I'm invited to a room": "Cando son convidado a unha sala", - "World readable": "Visible por todos", - "You cannot delete this image. (%(code)s)": "Non pode eliminar esta imaxe. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Non pode eliminar esta mensaxe. (%(code)s)", - "You are not receiving desktop notifications": "Non está a recibir notificacións de escritorio", - "You must specify an event type!": "Debe indicar un tipo de evento!", - "Thank you!": "Grazas!", - "Sunday": "Domingo", - "Monday": "Luns", - "Tuesday": "Martes", - "Wednesday": "Mércores", - "Thursday": "Xoves", - "Friday": "Venres", - "Saturday": "Sábado", - "Today": "Hoxe", - "Yesterday": "Onte", - "OK": "OK", - "Warning": "Aviso", - "Checking for an update...": "Comprobando as actualizacións...", - "Error encountered (%(errorDetail)s).": "Houbo un erro (%(errorDetail)s).", - "Event sent!": "Evento enviado!", - "Event Type": "Tipo de evento", - "Event Content": "Contido do evento", - "State Key": "Chave do estado", - "No update available.": "Sen actualizacións.", - "Downloading update...": "Descargando actualización...", "You need to be using HTTPS to place a screen-sharing call.": "Precisa utilizar HTTPS para establecer unha chamada de pantalla compartida.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Co seu navegador actual a apareciencia e uso do aplicativo poderían estar totalmente falseadas, e algunhas características poderían non funcionar. Se quere pode continuar, pero debe ser consciente de que poden haber fallos!", - "Welcome to Riot.im": "Benvida a Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat & colaboración descentralizados e cifrados grazas a [matrix]", + "Welcome to Riot.im": "Benvida/o a Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversas e colaboración descentralizada e cifrada grazas a [matrix]", "Search the room directory": "Buscar no directorio de salas", - "Chat with Riot Bot": "Chat co Bot de Riot", - "Get started with some tips from Riot Bot!": "Iníciese con algúns consellos do Bot de Riot!", + "Chat with Riot Bot": "Conversa co bot de Riot", + "Get started with some tips from Riot Bot!": "Iníciese con algúns consellos do bot de Riot!", "General discussion about Matrix and Riot": "Discusión xeral sobre Matrix e Riot", - "Discussion of all things Matrix!": "Conversa sobre to o relativo a Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & chat de Escritorio", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & chat matrix-ios-sdk", + "Discussion of all things Matrix!": "Conversa sobre todo o relativo a Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & sala de conversas para escritorio", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & sala de conversas matrix-ios-sdk", "Matrix technical discussions": "Discusións técnicas sobre Matrix", - "Running Matrix services": "Servizos correndo sobre Matrix", + "Running Matrix services": "Servizos que empregan Matrix", "Community-run support for Synapse": "Axuda da comunidade para Synapse", - "Admin support for Dendrite": "Axuda administrador para Dendrite", + "Admin support for Dendrite": "Axuda de administrador para Dendrite", "Announcements about Synapse releases": "Anuncios sobre lanzamentos de Synapse", "Support for those using and running matrix-appservice-irc": "Axuda para quen usa matrix-appservice-irc", "Building services on Matrix": "Deseñando servizos sobre Matrix", - "Support for those using the Matrix spec": "Axuda para quen usa a especificación Matrix", + "Support for those using the Matrix spec": "Axuda para quen usa a especificación de Matrix", "Design and implementation of E2E in Matrix": "Deseño e implementación de E2E en Matrix", "Implementing VR services with Matrix": "Implementando servizos de RV con Matrix", "Implementing VoIP services with Matrix": "Implementación de servizos VoIP con Matrix", - "Discussion of the Identity Service API": "Conversa sobre a Identity Service API", - "Support for those using, running and writing other bridges": "Axuda para que utiliza, executa e desenvolve outras pontes", - "Contributing code to Matrix and Riot": "Contribuíndo ao código en Matrix e Riot", - "Dev chat for the Riot/Web dev team": "Chat para o equipo de desenvolvemento do Riot/Web", - "Dev chat for the Dendrite dev team": "Chat para o equipo de desenvolvemento de Dendrite", - "Co-ordination for Riot/Web translators": "Coordinación para tradutores de Riot/Web", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Xa existen multitude de salas en Matrix, ligadas a redes existentes (Slack, IRC, Gitter etc) ou independentes. Busque no directorio!", - "Failed to change password. Is your password correct?": "Fallo ao cambiar o contrasinal. É correcto o contrasinal?", - "You have successfully set a password!": "Mudou con éxito o seu contrasinal!", - "You can now return to your account after signing out, and sign in on other devices.": "Pode voltar a súa contra tras desconectarse, e conectarse en outros dispositivos.", - "Continue": "Continuar", - "Please set a password!": "Por favor estableza un contrasinal!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Esto permitiralle voltar a súa conta tras desconectarse, e conectarse en outros dispositivos.", - "You have successfully set a password and an email address!": "Estableceu correctamente un contrasinal e enderezo de correo!", - "Remember, you can always set an email address in user settings if you change your mind.": "Lembre, sempre poderá poñer un enderezo de correo nos axustes de usuario si cambia de idea.", - "To return to your account in future you need to <u>set a password</u>": "Para voltar a súa conta no futuro debe <u>establecer un contrasinal>/u>", - "Set Password": "Establecer contrasinal", - "Couldn't load home page": "Non se cargou a páxina de inicio", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode que os configurase nun cliente diferente de Riot. Non pode establecelos desde Riot pero aínda así aplicaranse", - "Riot/Android & matrix-android-sdk chat": "Chat para Riot/Android & matrix-android-sdk", - "Show message in desktop notification": "Mostrar mensaxe nas notificacións de escritorio", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vostede pode utilizar as opcións de servidor personalizado para conectarse a outros servidores Matrix indicando o enderezo URL do Servidor.</br>Esto permítelle utilizar Riot con unha conta Matrix existente en outro servidor.<br/><br/>Tamén pode indicar un servidor de identidade pero non poderá convidar a usarias polo seu enderezo de correo electrónico, o ser convidada vostede por correo electrónico.", - "Toolbox": "Ferramentas", - "Edit": "Editar", - "Send Account Data": "Enviar datos da conta", - "Explore Account Data": "Explorar datos da conta", - "Unpin Message": "Desfixar mensaxe", - "Pin Message": "Fixar mensaxe", - "Register": "Rexistar", - "Rooms": "Salas", - "Invite to this community": "Convidar a esta comunidade", - "Add rooms to this community": "Engadir salas a esta comunidade", - "Appear Offline": "Aparecer fora de liña", - "Away": "Fóra", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Por favor instale <chromeLink>Chrome</chromeLink> ou <firefoxLink>Firefox</firefoxLink> para a mellor experiencia de usuaria.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> e <operaLink>Opera</operaLink> tamén funcionan.", - "Reply": "Resposta" + "Discussion of the Identity Service API": "Conversa sobre a API do servizo de identificación", + "Support for those using, running and writing other bridges": "Axuda para quen está a utilizar, executar ou desenvolver outras pontes", + "Contributing code to Matrix and Riot": "Contribuíndo ao código de Matrix e Riot", + "Dev chat for the Riot/Web dev team": "Sala de conversa para o equipo de desenvolvemento de Riot/Web", + "Dev chat for the Dendrite dev team": "Sala de conversas para o equipo de desenvolvemento de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Xa existen multitude de salas en Matrix ben ligadas a redes existentes (Slack, IRC, Gitter etc) ou ben independentes. Busque no directorio!", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & sala de conversas matrix-android-sdk", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Pode utilizar as opcións persoais de servidor para conectarse a outros servidores Matrix indicando o enderezo URL dese servidor.</br>Isto permítelle utilizar Riot cunha conta Matrix existente en outro servidor.<br/><br/>Tamén pode empregar un servidor personalizado de identidade mais nese caso nin se poderán convidar a outros usuarios empregando os correo electrónicos nin tampouco eles o poderán convidar a vostede por correo.", + "Co-ordination for Riot translators": "Coordinación para tradutora/es de Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Podes usar as opcións de servidor personalizado para iniciar sesión en outros servidores Matrix especificando unha dirección diferente de servidor doméstico. Con esto podes usar Riot cunha conta Matrix existente noutro servidor doméstico.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Tamén podes fixar un servidor de identidade, pero non poderás invitar a usuarios polo enderezo de correo, e tampouco que te inviten.", + "Sign In": "Entrar", + "Create Account": "Crear conta", + "Need help?": "¿Precisas axuda?", + "Explore rooms": "Explorar salas", + "Room Directory": "Directorio de salas" } diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 6026f2d9..101730f4 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -1,150 +1,13 @@ { - "A new version of Riot is available.": "יצאה גרסה חדשה של Riot.", - "Add an email address above to configure email notifications": "הוסף כתובת דואר אלקטורני למעלה בכדי להגדיר התראות", - "Advanced notification settings": "הגדרות מתקדמות להתראות", - "All messages": "כל ההודעות", - "All messages (noisy)": "כל ההודעות (צעקה)", - "All Rooms": "כל החדרים", - "All notifications are currently disabled for all targets.": "התראות מנוטרלות לכלל המערכת.", - "An error occurred whilst saving your email notification preferences.": "קרתה שגיאה בזמן שמירת הגדרות התראה באמצעות הדואר האלקטרוני.", - "Call invitation": "הזמנה לשיחה", - "Cancel": "ביטול", - "Cancel Sending": "ביטול שליחה", - "Can't update user notification settings": "לא ניתן לעדכן הגדרות התראה למשתמש", - "Changelog": "דו\"ח שינויים", - "Close": "סגור", - "Collapse panel": "סגור פאנל", - "Collecting app version information": "אוסף מידע על גרסת האפליקציה", - "Collecting logs": "אוסף לוגים", - "Couldn't find a matching Matrix room": "לא נמצא חדר כזה ב Matrix", "Custom Server Options": "הגדרות שרת מותאמות אישית", - "customServer_text": "אפשר להשתמש בהגדרות שרת מותאמות אישית בכדי להתחבר לשרתים אחרים באמצעות בחירת כתובת שרת בית שונה.<br/>זה יאפשר לך להשתמש ב Riot עם חשבון קיים ב Matrix אבל אל מול שרת בית שונה. <br/><br/>כמו כן אפשר להגדיר זהות מותאמת אישית אבל אז לא תהיה אפשרות להזמין משתמשים באמצעות כתובת אימייל, או להזמין את עצמך באמצעות כתובת האימייל.", - "delete the alias.": "מחיקת כינוי.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "מחק כינוי %(alias)s של החדר והסר את %(name)s מהרשימה?", - "Describe your problem here.": "תאר את הבעיה כאן.", - "Direct Chat": "שיחה ישירה", - "Directory": "ספרייה", "Dismiss": "שחרר", - "Download this file": "הורד את הקובץ", - "Enable audible notifications in web client": "אפשר התראות קוליות בדפדפן", - "Enable desktop notifications": "אפשר התראות בשולחן העבודה", - "Enable email notifications": "אפשר התראות באמצעות הדואר האלקטרוני", - "Enable notifications for this account": "אפשר התראות לחשבון זה", - "Enable them now": "אפשר אותם כעת", - "Enter keywords separated by a comma:": "הכנס מילים מופרדות באמצעות פסיק:", - "Error": "שגיאה", - "Error saving email notification preferences": "שגיאה בעת שמירת הגדרות התראה באמצעות הדואר האלקטרוני", - "#example": "#דוגמא", - "Expand panel": "הרחב פנאל", - "Failed to add tag %(tagName)s to room": "נכשל בעת הוספת תג %(tagName)s לחדר", - "Failed to change settings": "נכשל בעת שינוי הגדרות", - "Failed to forget room %(errCode)s": "נכשל בעת בקשה לשכוח חדר %(errCode)s", - "Failed to update keywords": "נכשל עדכון מילים", - "Failed to get protocol list from Home Server": "נכשל בעת נסיון קבלת רשימת פרוטוקולים משרת הבית", - "Failed to get public room list": "נכשלה קבלת רשימת חדרים ציבוריים", - "Failed to remove tag %(tagName)s from room": "נכשל בעת נסיון הסרת תג %(tagName)s מהחדר", - "Failed to send report: ": "נכשל בעת שליחת דו\"ח: ", - "Failed to set direct chat tag": "נכשל בעת סימון תג לשיחה ישירה", - "Failed to set Direct Message status of room": "נכשל בעת סימון סטטוס הודעה ישירה של החדר", - "Favourite": "מועדף", - "Fetching third party location failed": "נסיון להביא מיקום צד שלישי נכשל", - "Files": "קבצים", - "Filter room names": "מיין לפי שמות חדרים", - "Forget": "שכח", - "Forward Message": "העבר הודעה", - "Guests can join": "אורחים יכולים להצטרף", - "Hide panel": "הסתר פנאל", - "I understand the risks and wish to continue": "אני מבין את הסיכונים אבל מבקש להמשיך", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "בכדי לנתח את הבעיות, ישלח דוח עם פרטי הבעיה. אם ברצונך רק לשלוח את שנאמר למעלה, נא הסר את הסימון:", - "Invite to this room": "הזמן לחדר זה", - "Keywords": "מילות מפתח", - "Leave": "לעזוב", - "Login": "התחבר", - "Loading bug report module": "טוען רכיב דיווח דו\"ח שגיאה", - "Low Priority": "עדיפות נמוכה", - "Members": "חברים", - "Mentions only": "הערות בלבד", - "Messages containing my display name": "הודעות המכילות את שם התצוגה שלי", - "Messages containing <span>keywords</span>": "הודעות המכילות <span> מילות מפתח </span>", - "Messages containing my user name": "הודעות המכילות את שם המשתמש שלי", - "Messages in group chats": "הודעות בקבוצות השיחה", - "Messages in one-to-one chats": "הודעות בשיחות פרטיות", - "Messages sent by bot": "הודעות שנשלחו באמצעות בוט", - "more": "עוד", - "Mute": "השתק", - "No rooms to show": "אין חדרים להצגה", - "Noisy": "רועש", - "Notification targets": "יעדי התראה", - "Notifications": "התראות", - "Notify for all other messages/rooms": "התראה לכל שאר ההודעות/החדרים", - "Notify me for anything else": "התראה לי על כל דבר אחר", - "Off": "סגור", - "On": "דלוק", - "Operation failed": "פעולה נכשלה", - "Permalink": "קישור קבוע", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "נא תאר את הבאג. מה עשית? מה ציפית שיקרה? מה קרה בפועל?", - "Please describe the bug and/or send logs.": "נא תאר את הבאג ו/או שלח את הלוגים.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "נא התקן <a href=\"https://www.google.com/chrome\"> כרום</a> או <a href=\"https://getfirefox.com\"> פיירפוקס</a> לשימוש מייטבי.", "powered by Matrix": "מופעל ע\"י Matrix", - "Quote": "ציטוט", - "Reject": "דחה", - "Remove %(name)s from the directory?": "הסר את %(name)s מהרשימה?", - "Remove": "הסר", - "remove %(name)s from the directory.": "הסר את %(name)s מהרשימה.", - "Remove from Directory": "הסר מהרשימה", - "Report a bug": "דווח על שגיאה", - "Resend": "שלח מחדש", - "Riot Desktop on %(platformName)s": "Riot לשולחן העבודה על גבי %(platformName)s", - "Riot does not know how to join a room on this network": "Riot אינו יודע כיצד להצטרף לחדר ברשת זו", - "Riot is not supported on mobile web. Install the app?": "Riot לא נתמך באמצעות דפדפן במכשיר הסלולארי. האם ברצונך להתקין את האפליקציה?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot משתמש במספר רב של אפשרויות מתקדמות בדפדפן, חלק מהן לא זמינות או בשלבי נסיון בדפדפן שבשימושך כרגע.", - "Room not found": "חדר לא נמצא", - "Search": "חפש", - "Search…": "חפש…", - "Search for a room": "חפש חדר", - "Send": "שלח", - "Send logs": "שלח לוגים", - "Source URL": "כתובת אתר המקור", - "Sorry, your browser is <b>not</b> able to run Riot.": "מצטערים, הדפדפן שלך הוא <b> אינו</b> יכול להריץ את Riot.", - "The Home Server may be too old to support third party networks": "שרת הבית ישן ואינו יכול לתמוך ברשתות צד שלישי", - "There are advanced notifications which are not shown here": "ישנן התראות מתקדמות אשר אינן מוצגות כאן", - "The server may be unavailable or overloaded": "השרת אינו זמין או עמוס", - "This Room": "החדר הזה", - "Unable to fetch notification target list": "לא ניתן לאחזר רשימת יעדי התראה", - "Unable to join network": "לא ניתן להצטרף לרשת", - "Unable to look up room ID from server": "לא ניתן לאתר מזהה חדר על השרת", - "Unavailable": "לא זמין", - "Unhide Preview": "הצג מחדש תצוגה מקדימה", + "Riot Desktop on %(platformName)s": "רייוט לשולחן העבודה על גבי %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot לא נתמך באמצעות דפדפן במכשיר הסלולארי. האם להתקין את היישום?", "Unknown device": "מכשיר לא ידוע", - "unknown error code": "קוד שגיאה לא מוכר", - "Unnamed room": "חדר ללא שם", - "Update": "עדכון", - "Uploaded on %(date)s by %(user)s": "עודכן ב %(date)s ע\"י %(user)s", - "Uploading report": "מעדכן דוח", - "View Decrypted Source": "הצג מקור מוצפן", - "View Source": "הצג מקור", - "What's New": "מה חדש", - "What's new?": "מה חדש?", - "Waiting for response from server": "ממתין לתשובה מהשרת", - "When I'm invited to a room": "מתי אני מוזמן לחדר", - "World readable": "העולם קריא", - "You cannot delete this image. (%(code)s)": "אי אפשר למחוק את התמונה. (%(code)s)", - "You cannot delete this message. (%(code)s)": "לא ניתן למחוק הודעה זו. (%(code)s)", - "You are not receiving desktop notifications": "אתה לא מקבל התראות משולחן העבודה", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "יתכן כי בצעת את ההגדרות בצד לקוח ולא ב Riot. לא תוכל לווסת אותם ב Riot אבל הם עדיין תקפים", - "Sunday": "ראשון", - "Monday": "שני", - "Tuesday": "שלישי", - "Wednesday": "רביעי", - "Thursday": "חמישי", - "Friday": "שישי", - "Saturday": "שבת", - "Today": "היום", - "Yesterday": "אתמול", - "OK": "בסדר", - "You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחה משותפת.", + "You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחת ווידאו משותפת.", "Welcome to Riot.im": "ברוכים הבאים ל Riot.im", - "Search the room directory": "חפש ברשימת החדרים", + "Search the room directory": "חפש בספריית החדרים", "Chat with Riot Bot": "שיחה עם Riot בוט", "Get started with some tips from Riot Bot!": "התחל באמצעות מספר טיפים מהבוט של Riot!", "General discussion about Matrix and Riot": "דיון כללי על Matrix ו Riot", @@ -153,32 +16,23 @@ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & שיחה עם matrix-ios-sdk", "Riot/Android & matrix-android-sdk chat": "Riot/Android & צ'ט matrix-android-sdk", "Matrix technical discussions": "פורום טכני של Matrix", - "Running Matrix services": "הרץ את שירותי ה Matrix", - "Community-run support for Synapse": "תמיכה בקהילה של Synapse", + "Running Matrix services": "שירותי ה Matrix שרצים", + "Community-run support for Synapse": "תמיכת הקהילה עבור Synapse", "Admin support for Dendrite": "תמיכת מנהל מערכת עבור Dendrite", "Announcements about Synapse releases": "הודעות לגבי גרסאות Synapse", - "Support for those using and running matrix-appservice-irc": "תמיכה באלו המשתמשים ב matrix-appservice-irc", + "Support for those using and running matrix-appservice-irc": "תמיכה למשתמשים ב matrix-appservice-irc", "Building services on Matrix": "בניית שירותים על גבי ה Matrix", - "Support for those using the Matrix spec": "תמיכה באלו המשתמשים בהגדרות ה Matrix", + "Support for those using the Matrix spec": "תמיכה למשתמשים במאפייני ה Matrix", "Design and implementation of E2E in Matrix": "תכנון וביצוע קצה לקצה ב Matrix", "Implementing VR services with Matrix": "מימוש שירותי VR ב Matrix", "Implementing VoIP services with Matrix": "מימוש Voip ב Matrix", - "Discussion of the Identity Service API": "דיון על שירות זהויות", - "Support for those using, running and writing other bridges": "שירות לכל אותם אלו המשתמשים, מריצים וכותבים חיבורים נוספים", + "Discussion of the Identity Service API": "דיון על API לשירות זהויות", + "Support for those using, running and writing other bridges": "שירות למשתמשים, שמריצים וכותבים חיבורים נוספים", "Contributing code to Matrix and Riot": "תרומת קוד ל Matrix ו Riot", "Dev chat for the Riot/Web dev team": "שיחה עם המפתחים עבור ה קבוצת הפיתוח של Riot/Web", "Dev chat for the Dendrite dev team": "שיחת מפתחים עבור Dendrite", - "Co-ordination for Riot/Web translators": "תאום למתרגמי ה Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "הרבה חדרים כבר קיימים ב Matrix ומקושרים לרשתות קיימות (Slack, IRC, Gitter וכו') או עצמאיים. בדוק את הספרייה!", - "Failed to change password. Is your password correct?": "נכשל בעת שינוי סיסמא, האם הסיסמא אינה שגויה?", - "You have successfully set a password!": "שינוי סיסמא בוצע בהצלחה!", - "You can now return to your account after signing out, and sign in on other devices.": "תוכל עתה לחזור לחשבון שלך רק אחרי התנתקות וחיבור מחדש לחשבון.", - "Continue": "המשך", - "Please set a password!": "נא להגדיר סיסמא!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "זה יאפשר לך לחזור לחשבונך אחרי התנתקות ולהתחבר באמצעות התקנים אחרים.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s באמצעות הדפדפן %(browserName)s על גבי %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\"> ספארי</a> ו <a href=\"http://opera.com\"> אופרה</a> עובדים גם כן.", - "Notifications on the following keywords follow rules which can’t be displayed here:": "התראה על מילות המפתח הבאות עוקבת אחר החוקים שאינם יכולים להיות מוצגים כאן:", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "באמצעות הדפדפן הנוכחי שלך המראה של האפליקציה יכול להיות שגוי לחלוטין וחלק מהאפשרויות לא תתפקדנה. אם תרצה לנסות בכל זאת תוכל אבל אז הסיכון חל עליך!", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "צ'ט מוצפן & ושת\"פ נעשה ע\"י ה [matrix]" + "Decentralised, encrypted chat & collaboration powered by [matrix]": "צ'ט מוצפן & ושת\"פ נעשה ע\"י ה [matrix]", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "בכדי להיכנס לשרתים אחרים של מטריקס, אפשר להגדיר כתובת מוצא ראשית אחרת ל- URL שרתי מטריקס, בהגדרות: 'התאמה אישית לאפשרויות שרת'.<br/>ואז מתאפשר למשתמש ריוט לנצל חשבון משתמש מטריקס קיים, בשרתי מטריקס שונים.<br/><br/>אפשר גם להגדיר בהתאמה אישית שרת הזדהות. אך אז לא ניתן להזמין משתמשים באימייל, ואי אפשר להזמינך באמצעות אימייל." } diff --git a/src/i18n/strings/hi.json b/src/i18n/strings/hi.json index f8bfb088..172796d0 100644 --- a/src/i18n/strings/hi.json +++ b/src/i18n/strings/hi.json @@ -1,8 +1,46 @@ { - "A new version of Riot is available.": "रायट के एक नया वर्शन उपलब्ध है।", - "All messages": "सारे संदेश", - "All Rooms": "सारे कमरे", - "Please set a password!": "कृपया एक पासवर्ड सेट करें!", - "Continue": "आगे बढ़ें", - "You have successfully set a password and an email address!": "आपने सफलतापूर्वक एक पासवर्ड और एक ईमेल एड्रेस सेट कर लिया है!" + "Riot is not supported on mobile web. Install the app?": "रायट फ़ोन पर समर्थन नहीं हैं। एप्लिकेशन इनस्टॉल करना चाहेंगे ?", + "Riot Desktop on %(platformName)s": "%(platformName)s पर रायट डेस्कटॉप", + "Unknown device": "अज्ञात यन्त्र", + "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s पर %(browserName)s के माध्यम से %(appName)s", + "You need to be using HTTPS to place a screen-sharing call.": "स्क्रीन साझा की कॉल करने के लिए आपको HTTPS का उपयोग करने की आवश्यकता है।", + "Custom Server Options": "कस्टम सर्वर विकल्प", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "आप एक अलग होम सर्वर यूआरएल निर्दिष्ट करके अन्य मैट्रिक्स सर्वरों में साइन इन करने के लिए कस्टम सर्वर विकल्प का उपयोग कर सकते हैं। <br/> यह आपको एक अलग होम सर्वर पर मौजूदा मैट्रिक्स खाते के साथ रायट का उपयोग करने की अनुमति देता है। <br/> <br/> आप अपना आइडेंटिटी सर्वर भी सेट कर सकते हैं लेकिन आप ईमेल पते से उपयोगकर्ताओं को आमंत्रित नहीं कर पाएंगे, या ईमेल पते से स्वयं आमंत्रित नहीं हों सकेंगे।", + "Dismiss": "खारिज", + "powered by Matrix": "मैट्रिक्स द्वारा संचालित", + "Welcome to Riot.im": "Riot.im में आपका स्वागत है", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता", + "Search the room directory": "रूम डायरेक्टरी में खोजें", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "मौजूदा नेटवर्क से जुड़े मैट्रिक्स में बहुत से कमरे पहले से मौजूद हैं (स्लैक, आईआरसी, गिटर इत्यादि) या स्वतंत्र। डायरेक्टरी देखें!", + "Chat with Riot Bot": "रायट बॉट के साथ चैट करें", + "Get started with some tips from Riot Bot!": "रायट बॉट से कुछ सुझावों के साथ शुरू करें!", + "General discussion about Matrix and Riot": "मैट्रिक्स और रायट के बारे में सामान्य चर्चा", + "Discussion of all things Matrix!": "मैट्रिक्स की सभी चीजों की चर्चा!", + "Riot/Web & Desktop chat": "रायट/वेब और डेस्कटॉप चैट", + "Riot/iOS & matrix-ios-sdk chat": "रायट / iOS और matrix-ios-sdk चैट", + "Riot/Android & matrix-android-sdk chat": "रायट / एंड्रॉइड और matrix-android-sdk चैट", + "Matrix technical discussions": "मैट्रिक्स तकनीकी चर्चाएं", + "Running Matrix services": "मैट्रिक्स सेवाएं चलाना", + "Community-run support for Synapse": "सामुदायिक चालित Synapse के लिए समर्थन", + "Admin support for Dendrite": "डेंडर्राइट के लिए व्यवस्थापक समर्थन", + "Announcements about Synapse releases": "Synapse रिलीज के बारे में घोषणाएं", + "Support for those using and running matrix-appservice-irc": "Matrix-appservice-irc का उपयोग और चलाने वाले लोगों के लिए समर्थन", + "Building services on Matrix": "मैट्रिक्स पर सेवाएं बनाना", + "Support for those using the Matrix spec": "मैट्रिक्स spec का उपयोग करने वालों के लिए समर्थन", + "Design and implementation of E2E in Matrix": "मैट्रिक्स में E2E के डिजाइन और कार्यान्वयन", + "Implementing VR services with Matrix": "मैट्रिक्स के साथ VR सेवाओं को लागू करना", + "Implementing VoIP services with Matrix": "मैट्रिक्स के साथ वीओआईपी सेवाओं को लागू करना", + "Discussion of the Identity Service API": "आइडेंटिटी सर्विस API की चर्चा", + "Support for those using, running and writing other bridges": "अन्य ब्रिज का उपयोग, चलाने और लिखने वालों के लिए समर्थन", + "Contributing code to Matrix and Riot": "मैट्रिक्स और रायट में कोड योगदान करना", + "Dev chat for the Riot/Web dev team": "रायट / वेब डेव टीम के लिए डेवलपर चैट", + "Dev chat for the Dendrite dev team": "डेन्ड्राइट देव टीम के लिए डेवलपर चैट", + "Co-ordination for Riot translators": "रायट अनुवादकों के लिए समन्वय", + "Sign In": "साइन करना", + "Create Account": "खाता बनाएं", + "Need help?": "मदद चाहिए?", + "Explore rooms": "रूम का अन्वेषण करें", + "Room Directory": "कक्ष निर्देशिका", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "आप एक अलग होमसर्वर URL निर्दिष्ट करके अन्य मैट्रिक्स सर्वर में साइन इन करने के लिए कस्टम सर्वर विकल्पों का उपयोग कर सकते हैं। यह आपको एक अलग होमसर्वर पर मौजूदा मैट्रिक्स खाते के साथ रायट का उपयोग करने की अनुमति देता है।", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "आप एक कस्टम पहचान सर्वर भी सेट कर सकते हैं, लेकिन आप उपयोगकर्ताओं को ईमेल पते से आमंत्रित नहीं कर पाएंगे, या स्वयं ईमेल पते से आमंत्रित नहीं किया जाएगा।" } diff --git a/src/i18n/strings/hr.json b/src/i18n/strings/hr.json new file mode 100644 index 00000000..c03a8290 --- /dev/null +++ b/src/i18n/strings/hr.json @@ -0,0 +1,39 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot nije podržan na mobilnom pregledniku. Instalirati aplikaciju?", + "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", + "Unknown device": "Nepoznati uređaj", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s preko %(browserName)s na %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS kako biste pokrenuli poziv s dijeljenjem ekrana.", + "Custom Server Options": "Prilagođene opcije poslužitelja", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Možete koristiti prilagođene opcije poslužitelja za prijavu na ostale Matrix poslužitelje, navodeći drugačiji URL za Kućni poslužitelj.<br/>Ovo vam omogućuje da koristite Riot s postojećim Matrix računom na različitom kućnom poslužitelju.<br/><br/>Također možete postaviti prilagođeni poslužitelj identiteta, ali u tom slučaju nećete moći pozivati korisnike preko njihove email adrese, niti sami biti pozvani preko vase email adrese.", + "Dismiss": "Odbaci", + "powered by Matrix": "powered by Matrix", + "Welcome to Riot.im": "Dobrodošli u Riot.im", + "Chat with Riot Bot": "Razgovor s Riot Botom", + "Get started with some tips from Riot Bot!": "Krenite s par savjeta od Riot Bota!", + "General discussion about Matrix and Riot": "Opća rasprava o Matrixu i Riotu", + "Discussion of all things Matrix!": "Rasprava o svemu vezanome za Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Tehničke rasprave o Matrixu", + "Running Matrix services": "Pokretanje Matrix usluga", + "Community-run support for Synapse": "Podrška zajednice za Synapse", + "Admin support for Dendrite": "Administratorska podrška za Dendrite", + "Announcements about Synapse releases": "Obavijesti o izdanjima Synapsea", + "Support for those using and running matrix-appservice-irc": "Podrška onima koji koriste i pokreću matrix-appservice-irc", + "Building services on Matrix": "Razvoj usluga na Matrixu", + "Support for those using the Matrix spec": "Podrška onima koji koriste Matrix spec", + "Design and implementation of E2E in Matrix": "Dizajn i implementacija E2E u Matrixu", + "Implementing VR services with Matrix": "Implementiranje VR usluga s Matrixom", + "Implementing VoIP services with Matrix": "Implementiranje VoIP usluga s Matrixom", + "Discussion of the Identity Service API": "Rasprava vezana za Identity Service API", + "Support for those using, running and writing other bridges": "Podrška onima koji koriste, pokreću i pišu ostale mostove", + "Contributing code to Matrix and Riot": "Doprinos kodu Matrixa i Riota", + "Dev chat for the Riot/Web dev team": "Dev chat za Riot/Web dev tim", + "Dev chat for the Dendrite dev team": "Dev chat za Dendrite dev team", + "Co-ordination for Riot translators": "Koordinacija Riot prevoditelja", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirani, enkriptirani chat & kolaboracija powered by [matrix]", + "Search the room directory": "Pretražite imenik soba", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Veliki broj soba već postoji na Matrixu, povezanih s postojećim mrežama (Slack, IRC, Gitter itd) ili nezavisnih. Zavirite u imenik!" +} diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index ac393592..d86d0bae 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1,226 +1,54 @@ { - "Add an email address above to configure email notifications": "E-mail értesítés beállításához írd be az e-mail címed", - "Advanced notification settings": "Haladó értesítési beállítások", - "All messages": "Minden üzenet", - "All messages (noisy)": "Minden üzenet (hangos)", - "All notifications are currently disabled for all targets.": "Minden céleszközön minden értesítés tiltva van.", - "An error occurred whilst saving your email notification preferences.": "Hiba történt az e-mail értesítés beállításánál.", - "Call invitation": "Hívás meghívó", - "Cancel Sending": "Küldés megszakítása", - "Can't update user notification settings": "Nem sikerül frissíteni az értesítési beállításokat", - "Close": "Bezár", - "Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba", - "Custom Server Options": "Egyedi szerver beállítások", - "delete the alias.": "becenév törlése.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a(z) %(alias)s szobát és kiveszed a könyvtárból ezt: %(name)s?", - "Direct Chat": "Közvetlen csevegés", - "Directory": "Könyvtár", - "Dismiss": "Eltűntet", - "Download this file": "Fájl letöltése", - "Enable audible notifications in web client": "Hallható értesítések engedélyezése a webes kliensben", - "Enable desktop notifications": "Asztali értesítések engedélyezése", - "Enable email notifications": "E-mail értesítések engedélyezése", - "Enable notifications for this account": "Értesítések engedélyezése a fiókhoz", - "Enable them now": "Engedélyezés most", - "Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:", - "Error": "Hiba", - "Error saving email notification preferences": "Hiba e-mail értesítés beállításának mentésénél", - "#example": "#példa", - "Failed to add tag %(tagName)s to room": "Nem lehet a címkét hozzáadni a szobához: %(tagName)s", - "Failed to change settings": "Nem lehet a beállítást megváltoztatni", - "Failed to forget room %(errCode)s": "Nem lehet eltávolítani a szobát: %(errCode)s", - "Failed to update keywords": "Nem lehet a kulcsszavakat frissíteni", - "Failed to get protocol list from Home Server": "Nem lehet a protokoll listát lekérni a Saját szerverről", - "Failed to get public room list": "Nem lehet lekérdezni a nyílt szobák listáját", - "Failed to remove tag %(tagName)s from room": "Nem lehet törölni a(z) %(tagName)s címkét a szobáról", - "Failed to set direct chat tag": "Nem lehet a címkét beállítani a közvetlen beszélgetéshez", - "Failed to set Direct Message status of room": "Nem lehet beállítani a Közvetlen beszélgetés státuszt a szobához", - "Favourite": "Kedvenc", - "Fetching third party location failed": "Nem sikerült lekérdezni a harmadik felet", - "Files": "Fájlok", - "Filter room names": "Szoba nevek szűrése", - "Forget": "Elfelejt", - "Guests can join": "Vendégek is csatlakozhatnak", - "Invite to this room": "Meghívás a szobába", - "Keywords": "Kulcsszavak", - "Leave": "Elhagy", - "Low Priority": "Alacsony priorítás", - "Members": "Résztvevők", - "Mentions only": "Csak ha megemlítenek", - "Messages containing my display name": "Az üzenet tartalmazza a nevem", - "Messages containing my user name": "Az üzenet tartalmazza a felhasználói nevem", - "Messages in group chats": "Üzenetek a csoportszobában", - "Messages in one-to-one chats": "Üzenetek közvetlen beszélgetésekben", - "Messages sent by bot": "Botok által küldött üzenetek", - "more": "további", - "Mute": "Elnémít", - "No rooms to show": "Nincsenek megjelenítendő szobák", - "Noisy": "Hangos", - "Notification targets": "Értesítések célpontja", - "Notifications": "Értesítések", - "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>val és <a href=\"http://opera.com\">Opera</a>val is működik.", - "Collapse panel": "Panel bezárása", - "customServer_text": "Egyedi Matrix szervert használhatsz a Saját szerver URL beállításával.<br/> Ezzel meglévő Matrix fiókot használhatsz Riot klienssel és egyedi szerverrel.<br/><br/>Beállíthatsz egyedi \"identity\" szervert de akkor nem tudsz e-maillel meghívni felhasználót és téged sem tudnak meghívni e-maillel.", - "Expand panel": "Panel kinyitása", - "I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom", - "Notifications on the following keywords follow rules which can’t be displayed here:": "A kulcsszavakhoz tartozó értesítések olyan szabályokat követnek amiket nem lehet itt megjeleníteni:", - "Notify me for anything else": "Értesíts minden egyéb esetben", - "Off": "Ki", - "On": "Be", - "Operation failed": "Művelet sikertelen", - "Permalink": "Állandó hivatkozás", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "A legjobb élmény érdekében telepíts <a href=\"https://www.google.com/chrome\">Chrome</a>ot vagy <a href=\"https://getfirefox.com\">Firefox</a>ot.", - "powered by Matrix": "Matrixon alapul", - "Quote": "Idézet", - "Reject": "Elutasít", - "Remove %(name)s from the directory?": "Törlöd a %(name)s szobát a listából?", - "Remove": "Törlés", - "remove %(name)s from the directory.": "%(name)s szoba törlése a listából.", - "Remove from Directory": "Törlés a szobák listájából", - "Resend": "Újraküld", - "Riot does not know how to join a room on this network": "Riot nem tudja, hogy csatlakozzon ehhez a szobához ezen a hálózaton", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot sok haladó képességét használja a böngészőnek amik közül lehet, hogy nem mind érhető el a most használt böngészőben vagy még csak kísérleti jellegű.", - "Room not found": "A szoba nem található", - "Search for a room": "Szoba keresése", - "Source URL": "Forrás URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Elnézést, a böngésződ <b>nem</b> képes futtatni a Riotot.", - "The Home Server may be too old to support third party networks": "A Saját szerver lehet, hogy túl régi ahhoz, hogy más hálózatokhoz tudjon kapcsolódni", - "There are advanced notifications which are not shown here": "Vannak haladó értesítések amik itt nincsenek megjelenítve", - "The server may be unavailable or overloaded": "A szerver nem érhető el vagy túl van terhelve", - "Unable to fetch notification target list": "Nem sikerült letölteni az értesítési célok listáját", - "Unable to join network": "Nem sikerült kapcsolódni a hálózathoz", - "Unable to look up room ID from server": "Nem lehet lekérdezni a szoba ID-ját a szervertől", - "Unhide Preview": "Előkép felfedése", - "unknown error code": "ismeretlen hiba kód", - "Unnamed room": "Névtelen szoba", - "Uploaded on %(date)s by %(user)s": "Feltöltés: %(date)s, %(user)s", - "View Decrypted Source": "Visszafejtett forrás megjelenítése", - "View Source": "Forrás megjelenítése", - "When I'm invited to a room": "Amikor meghívtak a szobába", - "World readable": "Nyilvános", - "You cannot delete this image. (%(code)s)": "Nem törölheted ezt a képet. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Nem törölheted ezt az üzenetet. (%(code)s)", - "You are not receiving desktop notifications": "Nem fogadsz asztali értesítéseket", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Valószínűleg Riottól eltérő klienssel állítottad be. Riotból nem állítható de érvényben van", - "Sunday": "Vasárnap", - "Monday": "Hétfő", - "Tuesday": "Kedd", - "Wednesday": "Szerda", - "Thursday": "Csütörtök", - "Friday": "Péntek", - "Saturday": "Szombat", - "Today": "Ma", - "Yesterday": "Tegnap", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "A jelenlegi bőngésződdel teljesen hibás lehet az alkalmazás kinézete és bizonyos funkciók, ha nem az összes, nem fog működni. Ha mindenképpen ki akarod próbálni, folytathatod de egyedül vagy minden felbukkanó problémával!", - "Messages containing <span>keywords</span>": "Az üzenet <span>kulcsszavakat</span> tartalmaz", + "Custom Server Options": "Egyedi szerverbeállítások", + "Dismiss": "Eltüntet", + "powered by Matrix": "Matrix hajtja", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren", - "A new version of Riot is available.": "Elérhető egy új Riot verzió.", - "All Rooms": "Minden szobában", - "Cancel": "Mégse", - "Changelog": "Változások", - "Collecting app version information": "Alkalmazás verzió információk összegyűjtése", - "Collecting logs": "Naplók összegyűjtése", - "Describe your problem here.": "Írd le a problémád itt.", - "Failed to send report: ": "A jelentést nem lehetett elküldeni: ", - "Forward Message": "Üzenet továbbküldése", - "Hide panel": "Panel elrejtése", - "Loading bug report module": "Hibabejelentő modul betöltése", - "Please describe the bug and/or send logs.": "Írd le a hibát és/vagy küld el a naplókat.", - "Report a bug": "Hiba bejelentése", - "Riot Desktop on %(platformName)s": "Riot Desktop ezen: %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot nem támogatott mobil webböngészőn. Telepíted az alkalmazást?", - "Search": "Keresés", - "Search…": "Keresés…", - "Send": "Elküld", - "Send logs": "Naplók elküldése", - "This Room": "Ebben a szobában", - "Unavailable": "Elérhetetlen", - "Unknown device": "Ismeretlen eszköz", - "Update": "Frissítés", - "Uploading report": "Jelentés feltöltése", - "What's New": "Mik az újdonságok", - "What's new?": "Mik az újdonságok?", - "Waiting for response from server": "Válasz várása a szervertől", - "OK": "Rendben", - "You need to be using HTTPS to place a screen-sharing call.": "HTTPS-t kell használnod hogy képernyőmegosztásos hívást kezdeményezz.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "A problémák diagnosztizálása érdekében erről a kliensről a hibajelentésben naplók lesznek elküldve. Ha csak az alábbi szöveget szeretnéd elküldeni akkor ezt ne jelöld meg:", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Írd le a hibát. Mit csináltál? Mi az amit szerettél volna ha történik? Ezzel szemben mi az ami történt?", - "Login": "Bejelentkezés", - "Welcome to Riot.im": "Üdvözlünk a Riot.im-en", + "Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "A mobilböngésző nem támogatja a Riotot. Telepíted inkább az alkalmazást?", + "Unknown device": "Ismeretlen készülék", + "You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.", + "Welcome to Riot.im": "Üdvözöl a Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon", - "Search the room directory": "Keresés a szobák jegyzékében", + "Search the room directory": "Keresés a szobajegyzékben", "Chat with Riot Bot": "Csevegés a Riot Robottal", - "Get started with some tips from Riot Bot!": "Kezdd el a Riot használatát a Riot Robot tippjei segítségével!", + "Get started with some tips from Riot Bot!": "Kezdj a Riot Robot néhány tippjével!", "General discussion about Matrix and Riot": "Általános beszélgetések a Matrixról és a Riotról", - "Discussion of all things Matrix!": "Beszélgetések mindenről, ami a Matrixhoz kapcsolódik!", - "Riot/Web & Desktop chat": "Riot/Web és asztali csevegés", + "Discussion of all things Matrix!": "Beszélgetés mindenről, ami Matrix!", + "Riot/Web & Desktop chat": "Riot/Web és Desktop csevegés", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS és matrix-ios-sdk csevegés", "Riot/Android & matrix-android-sdk chat": "Riot/Android és matrix-android-sdk csevegés", "Matrix technical discussions": "Technikai jellegű beszélgetések a Matrixról", "Community-run support for Synapse": "Közösségi támogatás a Synapse-hez", - "Admin support for Dendrite": "Adminisztrációs támogatás a Dendrite-hoz", - "Announcements about Synapse releases": "Bejelentések a Synapse kiadásairól", - "Running Matrix services": "Matrixszolgáltatások működtetése", - "Support for those using and running matrix-appservice-irc": "Támogatás a matrix-appservice-irc használatáról és működtetéséről", - "Building services on Matrix": "Szolgáltatások fejlesztése a Matrixra", - "Support for those using the Matrix spec": "Támogatás a Matrix specifikáció használatáról", + "Admin support for Dendrite": "Admin támogatás a Dendrite-hoz", + "Announcements about Synapse releases": "Hírek a Synapse kiadásairól", + "Running Matrix services": "Matrix szolgáltatások működtetése", + "Support for those using and running matrix-appservice-irc": "Támogatás a matrix-appservice-irc használóinak és működtetőinek", + "Building services on Matrix": "Szolgáltatások fejlesztése Matrixra", + "Support for those using the Matrix spec": "Támogatás a Matrix specifikáció használóinak", "Design and implementation of E2E in Matrix": "A végponttól végpontig történő titkosítás (E2E) tervezése és implementációja a Matrixban", - "Implementing VR services with Matrix": "A Matrixszal együttműködő virtuális valóság (VR) szolgáltatások implementációja", - "Implementing VoIP services with Matrix": "A Matrixszal együttműködő VoIP szolgáltatások implementációja", - "Discussion of the Identity Service API": "Beszélgetések az Identity Service API-ról", - "Support for those using, running and writing other bridges": "Támogatás egyéb hídak használáról, működtetéséről és fejlesztéséről", + "Implementing VR services with Matrix": "VR szolgáltatások implementációja Matrixba", + "Implementing VoIP services with Matrix": "VoIP szolgáltatások implementációja Matrixba", + "Discussion of the Identity Service API": "Beszélgetés az Identity Service API-ról", + "Support for those using, running and writing other bridges": "Támogatás azoknak, akik egyéb hidakat használnak, működtetnek vagy készítenek", "Contributing code to Matrix and Riot": "Hozzájárulás a Matrix és Riot programkódjának fejlesztéséhez", "Dev chat for the Riot/Web dev team": "Csevegés a Riot/Web fejlesztői csapatával fejlesztőknek", "Dev chat for the Dendrite dev team": "Csevegés a Dendrite fejlesztői csapatával fejlesztőknek", - "Co-ordination for Riot/Web translators": "Egyeztetés a Riot/Web fordítóival", - "Failed to change password. Is your password correct?": "Nem sikerült megváltoztatni a jelszót. Helyesen írtad be a jelszavadat?", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Már sok létező szoba van a Matrixon, melyek más hálózatokkal vannak összekapcsolva (Slack, IRC, Gitter stb.) vagy függetlenek. Látogasd meg a szobajegyzéket!", - "You have successfully set a password!": "Sikeresen állítottál be jelszót!", - "You can now return to your account after signing out, and sign in on other devices.": "Most már visszatérhetsz a fiókodhoz kijelentkezés után, és más eszközökkel is be tudsz jelentkezni.", - "Continue": "Folytatás", - "Please set a password!": "Kérlek, állíts be egy jelszót!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Ezzel visszatérhetsz kijelentkezés után a fiókodhoz és más eszközökkel is be tudsz jelentkezni.", - "(HTTP status %(httpStatus)s)": "(HTTP állapot %(httpStatus)s)", - "You have successfully set a password and an email address!": "Sikeresen beállítottad a jelszavad és e-mail címed!", - "Remember, you can always set an email address in user settings if you change your mind.": "Ha meggondolod magad, bármikor beállíthatod az e-mail címed a felhasználói beállításoknál.", - "To return to your account in future you need to <u>set a password</u>": "A fiókba való visszalépéshez <u>jelszót</u> kell beállítanod", - "Set Password": "Jelszó beállítása", - "Warning": "Figyelmeztetés", - "Checking for an update...": "Frissítés keresése...", - "Error encountered (%(errorDetail)s).": "Hiba történt (%(errorDetail)s).", - "No update available.": "Frissítés nem érthető el.", - "Downloading update...": "Frissítés letöltése...", - "Couldn't load home page": "Kezdőképernyő betöltése sikertelen", - "Bug report sent": "Hibajelentés elküldve", - "Thank you!": "Köszönjük!", - "Back": "Vissza", - "Developer Tools": "Fejlesztői eszközök", - "Failed to send custom event.": "Egyéni esemény elküldése nem sikerült.", - "Send Custom Event": "Egyéni esemény elküldése", - "Send Custom State Event": "Egyéni állapot esemény küldése", - "Explore Room State": "Szoba állapot felfedezése", - "Event sent!": "Esemény elküldve!", - "Event Type": "Esemény típusa", - "Event Content": "Esemény tartalma", - "State Key": "Állapot kulcs", - "Filter results": "Találatok szűrése", - "You must specify an event type!": "Meg kell határoznod az esemény típusát!", - "Show message in desktop notification": "Üzenetek megmutatása az asztali értesítésekben", - "Pin Message": "Üzenet kitűzése", - "Unpin Message": "Üzenet levétele", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverbe ha használhatod a saját szerver opciót és megadod egy másik szerver URL-jét.<br/>Ezzel egy másik szerveren egy már meglévő fiókot tudsz használni.<br/><br/>Beállíthatsz egyedi azonosító szervert de akkor nem tudsz másokat e-mail cím alapján meghívni és téged sem tudnak.", - "Edit": "Szerkeszt", - "Register": "Regisztrál", - "Rooms": "Szobák", - "Invite to this community": "Meghívás ebbe a közösségbe", - "Add rooms to this community": "Szobák hozzáadása ehhez a közösséghez", - "Toolbox": "Szerszámok", - "Send Account Data": "Fiók adatok küldése", - "Explore Account Data": "Fiók adatok böngészése", - "Appear Offline": "Kapcsolat nélkülinek tűnik", - "Away": "Távol", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "A legjobb élmény érdekében telepíts <chromeLink>Chrome</chromeLink>ot vagy <firefoxLink>Firefox</firefoxLink>ot.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "Működik <safariLink>Safari</safariLink> és <operaLink>Opera</operaLink> böngészővel is.", - "Reply": "Válasz" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Már sok szoba van a Matrixon: más hálózatokkal (Slack, IRC, Gitter stb.) összekapcsolt és függetlenek szobák is. Nézd meg a szobajegyzéket!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverre is az egyedi szerverbeállításoknál megadott Matrix szerver URL-jével.<br/>Így használhatod a Riotot egy már máshol meglévő Matrix fiókkal is.<br/><br/>Beállíthatsz egyéni identitásszervert is, de akkor nem tudsz más felhasználókat e-mail címmel meghívni, illetve ők sem tudnak téged.", + "Co-ordination for Riot translators": "Koordináció Riot fordítók számára", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Más azonosítási szervert is használhatsz, de akkor nem tudsz másokat e-mail cím alapján meghívni és téged sem fognak tudni.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Használhatod az egyedi szerver beállítást más Matrix szerverre való belépéshez, azzal, hogy megadod a Matrix szerver URL-jét. Ezzel a Riot-ot használhatod más Matrix szerveren lévő fiókkal.", + "Sign In": "Bejelentkezés", + "Create Account": "Fiók készítés", + "Need help?": "Segíthetünk?", + "Explore rooms": "Szobák felderítése", + "Room Directory": "Szoba lista", + "Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért nézd meg a konzolt.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.", + "Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett szerver.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "A telepített Riotnak úgy tűnik hibás a szerver beállítása. Ha te vagy az adminisztrátor, kérlek javítsd az alábbi hibát", + "Your Riot is misconfigured": "A Riotod hibásan van beállítva", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A Riot beállításod érvénytelen JSON szöveget tartalmaz. Kérlek javítsd és töltsd újra az oldalt.", + "The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s", + "Invalid JSON": "Érvénytelen JSON" } diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index f2d8804b..7e202c7c 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -1,158 +1,12 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s melalui %(browserName)s di %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> dan <a href=\"http://opera.com\">Opera</a> juga berfungsi.", - "A new version of Riot is available.": "Riot versi baru telah tersedia.", - "Add an email address above to configure email notifications": "Tambahkan alamat email di atas untuk konfigurasi notifikasi email", - "Advanced notification settings": "Pengaturan notifikasi lanjutan", - "All messages": "Semua pesan", - "All messages (noisy)": "Semua pesan (keras)", - "All Rooms": "Semua Ruang", - "All notifications are currently disabled for all targets.": "Semua notifikasi saat ini dinonaktifkan untuk semua target.", - "An error occurred whilst saving your email notification preferences.": "Terjadi kesalahan saat menyimpan preferensi notifikasi email Anda.", - "Call invitation": "Undangan panggilan", - "Cancel": "Batal", - "Cancel Sending": "Batalkan pengiriman", - "Can't update user notification settings": "Tidak dapat memperbarui pengaturan notifikasi pengguna", - "Changelog": "Daftar perubahan", - "Close": "Tutup", - "Collapse panel": "Lipat panel", - "Collecting app version information": "Mengumpukan informasi versi aplikasi", - "Collecting logs": "Mengumpulkan catatan", - "Couldn't find a matching Matrix room": "Tidak dapat menemukan ruang Matrix yang sesuai", "Custom Server Options": "Pilihan Server Khusus", - "customServer_text": "Anda dapat menggunakan opsi server khusus untuk masuk ke server Matrix lain dengan menyebutkan URL server Home.<br/>Hal ini memperbolehkan Anda untuk menggunakan Riot dengan akun Matrix yang sudah ada di server Home yang berbeda.<br/><br/>Anda juga bisa mengatur server identitas khusus tapi Anda tidak akan dapat mengundang pengguna melalui alamat email, atau diundang dengan alamat email Anda.", - "delete the alias.": "hapus alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Hapus alias ruang %(alias)s dan hapus %(name)s dari direktori?", - "Describe your problem here.": "Jelaskan masalah anda di sini.", - "Direct Chat": "Obrolan Langsung", - "Directory": "Direktori", "Dismiss": "Abaikan", - "Download this file": "Unduh file ini", - "Enable audible notifications in web client": "Aktifkan notifikasi suara di klien web", - "Enable desktop notifications": "Aktifkan notifikasi desktop", - "Enable email notifications": "Aktifkan notifikasi email", - "Enable notifications for this account": "Aktifkan notifikasi untuk akun ini", - "Enable them now": "Aktifkan sekarang", - "Enter keywords separated by a comma:": "Masukkan kata kunci dipisahkan oleh koma:", - "Error": "Terjadi Kesalahan", - "Error saving email notification preferences": "Terjadi kesalahan saat menyimpan pilihan notifikasi email", - "#example": "#contoh", - "Expand panel": "Luaskan panel", - "Failed to add tag %(tagName)s to room": "Gagal menambahkan tag %(tagName)s ke ruang", - "Failed to change settings": "Gagal mengubah pengaturan", - "Failed to forget room %(errCode)s": "Gagal melupakan ruang %(errCode)s", - "Failed to update keywords": "Gagal memperbarui kata kunci", - "Failed to get protocol list from Home Server": "Gagal mendapatkan daftar protokol dari Server Home", - "Failed to get public room list": "Gagal mendapatkan daftar ruang publik", - "Failed to remove tag %(tagName)s from room": "Gagal menghapus tag %(tagName)s dari ruang", - "Failed to send report: ": "Gagal mengirim laporan: ", - "Failed to set direct chat tag": "Gagal mengatur tag obrolan langsung", - "Failed to set Direct Message status of room": "Gagal mengatur status Pesan Langsung dari ruang", - "Favourite": "Favorit", - "Fetching third party location failed": "Gagal mengambil lokasi pihak ketiga", - "Files": "Files", - "Filter room names": "Saring nama ruang", - "Forget": "Lupakan", - "Forward Message": "Teruskan Pesan", - "Guests can join": "Tamu dapat gabung", - "Hide panel": "Sembunyikan panel", - "(HTTP status %(httpStatus)s)": "(status HTTP %(httpStatus)s)", - "I understand the risks and wish to continue": "Saya mengerti resikonya dan berharap untuk melanjutkan", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Untuk diagnosis permasalahannya, catatan dari klien ini akan dikirimkan bersama laporan bug. Jika Anda memilih untuk hanya mengirimkan pesan di atas, mohon hapus centang:", - "Invite to this room": "Undang ke ruang ini", - "Keywords": "Kata Kunci", - "Leave": "Tinggalkan", - "Login": "Masuk", - "Loading bug report module": "Memuat modul laporan bug", - "Low Priority": "Prioritas Rendah", - "Members": "Anggota", - "Mentions only": "Hanya jika disinggung", - "Messages containing my display name": "Pesan mengandung nama tampilan saya", - "Messages containing <span>keywords</span>": "Pesan mengandung <span>kata kunci</span>", - "Messages containing my user name": "Pesan mengandung nama pengguna saya", - "Messages in group chats": "Pesan di obrolan grup", - "Messages in one-to-one chats": "Pesan di obrolan satu-ke-satu", - "Messages sent by bot": "Pesan dikirim oleh bot", - "more": "lagi", - "Mute": "Bisu", - "No rooms to show": "Tidak ada ruang ditunjukkan", - "Noisy": "Berisik", - "Notification targets": "Target notifikasi", - "Notifications": "Notifikasi", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifikasi pada kata kunci berikut mengikuti aturan dimana tidak dapat ditampilkan di sini:", - "Notify for all other messages/rooms": "Beritau semua pesan/ruang", - "Notify me for anything else": "Beritau saya untuk lainnya", - "Off": "Mati", - "On": "Nyala", - "Operation failed": "Operasi gagal", - "Permalink": "Permalink", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Harap jelaskan bug. Apa yang Anda lakukan? Apa yang Anda harap terjadi? Apa yang sebenarnya terjadi?", - "Please describe the bug and/or send logs.": "Harap jelaskan bug dan/atau kirim catatan.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Harap install <a href=\"https://www.google.com/chrome\">Chrome</a> atau <a href=\"https://getfirefox.com\">Firefox</a> untuk pengalaman terbaik.", "powered by Matrix": "didukung oleh Matrix", - "Quote": "Kutip", - "Reject": "Tolak", - "Remove %(name)s from the directory?": "Hapus %(name)s dari direktori?", - "Remove": "Hapus", - "remove %(name)s from the directory.": "hapus %(name)s dari direktori.", - "Remove from Directory": "Hapus dari DIrektori", - "Report a bug": "Laporkan bug", - "Resend": "Kirim Ulang", "Riot Desktop on %(platformName)s": "Riot Desktop di %(platformName)s", - "Riot does not know how to join a room on this network": "Riot tidak tau bagaimana gabung ruang di jaringan ini", "Riot is not supported on mobile web. Install the app?": "Riot tidak mendukung web seluler. Install aplikasi?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot menggunakan banyak fitur terdepan dari browser, dimana tidak tersedia atau dalam fase eksperimen di browser Anda.", - "Room not found": "Ruang tidak ditemukan", - "Search": "Cari", - "Search…": "Cari…", - "Search for a room": "Cari ruang obrolan", - "Send": "Kirim", - "Send logs": "Kirim catatan", - "Source URL": "URL sumber", - "Sorry, your browser is <b>not</b> able to run Riot.": "Maaf, browser Anda <b>tidak</b> dapat menjalankan Riot.", - "The Home Server may be too old to support third party networks": "Server Home mungkin terlalu kuno untuk mendukung jaringan pihak ketiga", - "There are advanced notifications which are not shown here": "Ada notifikasi lanjutan yang tidak ditampilkan di sini", - "The server may be unavailable or overloaded": "Server mungkin tidak tersedia atau kelebihan muatan", - "This Room": "Ruang ini", - "Unable to fetch notification target list": "Tidak dapat mengambil daftar notifikasi target", - "Unable to join network": "Tidak dapat bergabung di jaringan", - "Unable to look up room ID from server": "Tidak dapat mencari ID ruang dari server", - "Unavailable": "Tidak Tersedia", - "Unhide Preview": "Tampilkan Pratinjau", "Unknown device": "Perangkat Tidak Diketahui", - "unknown error code": "kode kesalahan tidak diketahui", - "Unnamed room": "Ruang tanpa nama", - "Update": "Perbarui", - "Uploaded on %(date)s by %(user)s": "Diunggah pada %(date)s oleh %(user)s", - "Uploading report": "Unggah laporan", - "View Decrypted Source": "Tampilkan Sumber Terdekripsi", - "View Source": "Tampilkan Sumber", - "What's New": "Apa Yang Baru", - "What's new?": "Apa yang baru?", - "Waiting for response from server": "Menunggu respon dari server", - "When I'm invited to a room": "Ketika Saya diundang ke ruang", - "World readable": "Terpublikasi Umum", - "You cannot delete this image. (%(code)s)": "Anda tidak dapat menghapus gambar ini. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Anda tidak dapat menghapus pesan ini. (%(code)s)", - "You are not receiving desktop notifications": "Anda tidak menerima notifikasi desktop", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Anda mungkin sudah konfigurasi di klien selain Riot. Anda tidak dapat setel di Riot tetap berlaku", - "Sunday": "Minggu", - "Monday": "Senin", - "Tuesday": "Selasa", - "Wednesday": "Rabu", - "Thursday": "Kamis", - "Friday": "Jumat", - "Saturday": "Sabtu", - "Today": "Hari Ini", - "Yesterday": "Kemarin", - "OK": "OK", - "Warning": "Peringatan", - "Checking for an update...": "Cek pembaruan...", - "Error encountered (%(errorDetail)s).": "Terjadi kesalahan (%(errorDetail)s).", - "No update available.": "Tidak ada pembaruan.", - "Downloading update...": "Unduh pembaruan...", "You need to be using HTTPS to place a screen-sharing call.": "Anda perlu menggunakan HTTPS untuk melakukan panggilan berbagi-layar.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Dengan browser ini, tampilan dari aplikasi mungkin tidak sesuai, dan beberapa atau bahkan semua fitur mungkin tidak berjalan. Jika Anda ingin tetap mencobanya, Anda bisa melanjutkan, tapi Anda tanggung sendiri jika muncul masalah yang terjadi!", "Welcome to Riot.im": "Selamat datang di Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Obrolan terenkripsi, terdesentralisasi & kolaborasi didukung oleh [matrix]", "Search the room directory": "Cari di direktori ruang", @@ -179,17 +33,7 @@ "Contributing code to Matrix and Riot": "Kontribusi kode untuk Matrix dan Riot", "Dev chat for the Riot/Web dev team": "Obrolan Developer untuk tim developer Riot/Web", "Dev chat for the Dendrite dev team": "Obrolan Developer untuk tim developer Dendrite", - "Co-ordination for Riot/Web translators": "Koordinasi untuk penerjemah Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Banyak ruang sudah tersedia di Matrix, terhubung ke jaringan yang sudah ada (Slack, IRC, Gitter dls) atau independen. Cek direktori!", - "Failed to change password. Is your password correct?": "Gagal untuk mengubah password. Apakah password Anda benar?", - "You have successfully set a password!": "Anda berhasil mengubah password!", - "You can now return to your account after signing out, and sign in on other devices.": "Anda dapat kembali ke akun setelah keluar dan masuk kembali di perangkat lain.", - "Continue": "Lanjut", - "Please set a password!": "Mohon isi password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Hal ini akan memperbolehkan anda kembali ke akun setelah keluar dan masuk kembali di perangkat lain.", - "You have successfully set a password and an email address!": "Anda telah berhasil mengubah password dan alamat email!", - "Remember, you can always set an email address in user settings if you change your mind.": "Ingat, Anda selalu dapat mengubah alamat email di pengaturan pengguna jika anda berubah pikiran.", - "To return to your account in future you need to <u>set a password</u>": "Untuk kembali ke akun di lain waktu, Anda perlu <u>mengisi password</u>", - "Set Password": "Ubah Password", - "Couldn't load home page": "Tidak dapat memuat halaman utama" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Anda dapat menggunakan opsi lain untuk mendaftar pada server Matrix yang berbeda dengan memasukkan URL server yang sesuai. <br/>Hal ini memungkinkan anda untuk menggunakan Riot dengan akun matrix yang telah tersedia pada Home server yang berbeda.<br/><br/>Anda juga dapat melakukan pengubahan identitas server akan tetapi akan berakibat tidak dapat mengundang pengguna melalui email, atau diundang melalui email.", + "Co-ordination for Riot translators": "Koordinasi dengan penerjemah Riot" } diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json new file mode 100644 index 00000000..92babad1 --- /dev/null +++ b/src/i18n/strings/is.json @@ -0,0 +1,39 @@ +{ + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s með %(browserName)s á %(osName)s", + "powered by Matrix": "keyrt með Matrix", + "Welcome to Riot.im": "Velkomin í Riot.im", + "Riot Desktop on %(platformName)s": "Riot skjáborðsforrit á %(platformName)s", + "Unknown device": "Óþekkt tæki", + "Dismiss": "Hafna", + "Riot/Web & Desktop chat": "Riot/Spjall á vef- & skjáborði", + "Custom Server Options": "Sérsniðnir valkostir vefþjóns", + "Riot is not supported on mobile web. Install the app?": "Riot er ekki stutt í farsímaútgáfu vefsins. Setja upp forritið?", + "You need to be using HTTPS to place a screen-sharing call.": "Þú verður að nota HTTPS til að hringja samtal með deilingu á skjá.", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk spjall", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk spjall", + "Matrix technical discussions": "Tæknilegar umræður varðandi Matrix", + "Running Matrix services": "Að keyra Matrix þjónustur", + "Chat with Riot Bot": "Spjalla við Riot-róbótann", + "Get started with some tips from Riot Bot!": "Komdu þér í gang með nokkrum ábendingum frá Riot-róbótanum!", + "General discussion about Matrix and Riot": "Almenn umræða um Matrix og Riot", + "Discussion of all things Matrix!": "Almenn umræða um Matrix!", + "Implementing VR services with Matrix": "Uppsetning á VR-þjónustum með Matrix", + "Implementing VoIP services with Matrix": "Uppsetning á VoIP-þjónustum með Matrix", + "Contributing code to Matrix and Riot": "Framlög á kóða til Matrix og Riot", + "Co-ordination for Riot translators": "Yfirlit fyrir þýðendur Riot", + "Search the room directory": "Leita í herbergisskránni", + "Building services on Matrix": "Að byggja þjónustur á Matrix", + "Design and implementation of E2E in Matrix": "Hönnun og framkvæmd E2E í Matrix", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Þú getur notað sérsniðna valkosti til að skrá inn á aðra Matrix-vefþjóna með því að tilgreina aðra slóð á Heimavefþjón.<br/>Þetta gerir þér kleift að nota Riot með fyrirliggjandi Matrix notandaaðgangi á öðrum heimaþjóni.<br/><br/>Þú getur líka stillt sérsniðinn auðkenningarþjón, en þá getur þú ekki boðið notendum eftir tölvupóstfangi eða sjálfur fengið boð með tölvupósti.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall & samstarfstól keyrt með [matrix]", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Margar spjallrásir eru til í Matrix, tengdar við fyrirliggjandi netkerfi (Slack, IRC, Gitter, o.s.frv.) eða óháð. Skoðaðu skráninguna!", + "Community-run support for Synapse": "Aðstoð frá samfélaginu fyrir Synapse", + "Admin support for Dendrite": "Kerfisstjórnarstuðningur fyrir Dendrite", + "Announcements about Synapse releases": "Tilkynningar um Synapse útgáfur", + "Support for those using and running matrix-appservice-irc": "Stuðningur við þá sem nota og keyra matrix-appservice-irc", + "Support for those using the Matrix spec": "Stuðningur við þá sem nota tæknilega Matrix eiginleika", + "Discussion of the Identity Service API": "Umræða um Identity Service API-kerfisviðmót", + "Support for those using, running and writing other bridges": "Stuðningur við þá sem nota, keyra og skrifa aðrar brýr", + "Dev chat for the Riot/Web dev team": "Forritaraspjall fyrir Riot/vefþróunarhópinn", + "Dev chat for the Dendrite dev team": "Forritaraspjall fyrir Dendrite þróunarhópinn" +} diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index af64234a..7f8375dd 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1,162 +1,16 @@ { - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "Anche <a href=\"http://apple.com/safari\">Safari</a> e <a href=\"http://opera.com\"> Opera</a> funzionano.", - "A new version of Riot is available.": "È disponibile una nuova versione di Riot.", - "Add an email address above to configure email notifications": "Aggiungi un indirizzo email sopra per configurare le notifiche via email", - "Advanced notification settings": "Impostazioni di notifica avanzate", - "All messages": "Tutti i messaggi", - "All messages (noisy)": "Tutti i messaggi (rumoroso)", - "All Rooms": "Tutte le stanze", - "An error occurred whilst saving your email notification preferences.": "Si è verificato un errore durante il salvataggio delle tue preferenze sulle notifiche email.", - "Call invitation": "Invito ad una chiamata", - "Cancel": "Annulla", - "Cancel Sending": "Annulla invio", - "Can't update user notification settings": "Impossibile aggiornare le impostazioni di notifica dell'utente", - "Changelog": "Cambiamenti", - "Close": "Chiudi", - "Collapse panel": "Riduci pannello", - "Collecting app version information": "Raccolta di informazioni sulla versione dell'applicazione", - "Collecting logs": "Sto recuperando i log", - "Couldn't find a matching Matrix room": "Impossibile trovare una stanza Matrix corrispondente", - "Custom Server Options": "Opzioni Server Personalizzate", - "customServer_text": "Puoi utilizzare un server personale per accedere su altri server Matrix specificando un diverso indirizzo URL per il server Home.<br/>Questo ti permetterà di usare Riot con un account Matrix già esistente su un altro server.<br/><br/>Puoi anche specificare un diverso server di identità ma non sarai in grado di invitare utenti, o di essere invitato tramite indirizzo email.", - "delete the alias.": "elimina l'alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Eliminare l'alias %(alias)s e rimuovere %(name)s dalla lista?", - "Describe your problem here.": "Descrivi qui il tuo problema.", - "Direct Chat": "Chat Diretta", - "Directory": "Lista", - "Dismiss": "Scarta", - "Download this file": "Scarica questo file", - "Enable audible notifications in web client": "Abilita notifiche audio nel client web", - "Enable desktop notifications": "Abilita le notifiche desktop", - "Enable email notifications": "Abilita le notifiche email", - "Enable notifications for this account": "Abilita le notifiche per questo account", - "Enable them now": "Abilitale adesso", - "Enter keywords separated by a comma:": "Inserisci le parole chiave separate da virgole:", - "Error": "Errore", - "Error saving email notification preferences": "Errore nel salvataggio delle preferenze di notifica email", - "#example": "#esempio", - "Expand panel": "Espandi il pannello", - "Failed to add tag %(tagName)s to room": "Impossibile aggiungere l'etichetta %(tagName)s alla stanza", - "Failed to change settings": "Impossibile modificare le impostazioni", - "Failed to update keywords": "Impossibile aggiornare le parole chiave", - "Failed to get protocol list from Home Server": "Impossibile ottenere la lista di protocolli dal server Home", - "Failed to get public room list": "Impossibile ottenere la lista delle stanze pubbliche", - "Failed to remove tag %(tagName)s from room": "Impossibile rimuovere l'etichetta %(tagName)s dalla stanza", - "Failed to send report: ": "Impossibile inviare il resoconto: ", - "Failed to set direct chat tag": "Impossibile impostare l'etichetta di chat diretta", - "Failed to set Direct Message status of room": "Impossibile impostare lo stato di Messaggio Diretto alla stanza", - "Favourite": "Preferito", - "Files": "File", - "Filter room names": "Filtra i nomi delle stanze", - "Forget": "Dimentica", - "Forward Message": "Inoltra messaggio", - "Guests can join": "Gli ospiti sono ammessi", - "Hide panel": "Nascondi pannello", - "I understand the risks and wish to continue": "Sono consapevole dei rischi e vorrei continuare", - "Invite to this room": "Invita in questa stanza", - "Keywords": "Parole chiave", - "Leave": "Abbandona", - "Login": "Entra", - "All notifications are currently disabled for all targets.": "Tutte le notifiche sono disabilitate per tutti gli obbiettivi.", - "Failed to forget room %(errCode)s": "Impossibile dimenticare la stanza %(errCode)s", - "Fetching third party location failed": "Rilevazione posizione di terze parti fallita", - "(HTTP status %(httpStatus)s)": "(stato HTTP %(httpStatus)s)", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Per diagnosticare i problemi, i log da questo client verranno inviati con questo bug report. Se vuoi solo mandare il testo sopra, togli la spunta a:", - "Loading bug report module": "Caricamento modulo di segnalazione errori", - "Low Priority": "Priorità bassa", - "Members": "Membri", - "Mentions only": "Solo le citazioni", - "Messages containing my display name": "Messaggi contenenti il mio nome visualizzato", - "Messages containing my user name": "Messaggi contenenti il mio nome utente", - "Messages in group chats": "Messaggi nelle chat di gruppo", - "Messages in one-to-one chats": "Messaggi in chat uno-a-uno", - "Messages sent by bot": "Messaggi inviati dai bot", - "more": "altro", - "Mute": "Silenzia", - "No rooms to show": "Nessuna stanza da mostrare", - "Noisy": "Rumoroso", - "Notifications": "Notifiche", - "Notify for all other messages/rooms": "Notifica per tutti gli altri messaggi/stanze", - "Notify me for anything else": "Notificami per qualsiasi altra cosa", - "Off": "Spento", - "On": "Acceso", - "Operation failed": "Operazione fallita", - "Permalink": "Link permanente", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Per favore descrivi l'errore. Cosa hai fatto? Cosa ti aspettavi accadesse? Cos'è successo invece?", - "Please describe the bug and/or send logs.": "Per favore descrivi l'errore e/o invia i log.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Per favore installa<a href=\"https://www.google.com/chrome\">Chrome</a> o <a href=\"https://getfirefox.com\">Firefox</a> per un'esperienza migliore.", + "Custom Server Options": "Opzioni server personalizzate", + "Dismiss": "Chiudi", "powered by Matrix": "offerto da Matrix", - "Quote": "Cita", - "Reject": "Rifiuta", - "Remove %(name)s from the directory?": "Rimuovere %(name)s dalla lista?", - "Remove": "Rimuovi", - "remove %(name)s from the directory.": "rimuovi %(name)s dalla lista.", - "Remove from Directory": "Rimuovi dalla lista", - "Report a bug": "Segnala un errore", - "Resend": "Reinvia", "Riot Desktop on %(platformName)s": "Riot Desktop su %(platformName)s", - "Riot does not know how to join a room on this network": "Riot non sa come entrare nella stanza su questa rete", - "Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Vuoi installare l'applicazione?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilizza molte funzioni avanzate del browser, alcune delle quali non sono disponibili o sono sperimentali nel tuo browser attuale.", - "Room not found": "Stanza non trovata", - "Search": "Cerca", - "Search…": "Cerca…", - "Search for a room": "Cerca una stanza", - "Send": "Invia", - "Send logs": "Invia i log", - "Source URL": "URL d'origine", - "Sorry, your browser is <b>not</b> able to run Riot.": "Spiacenti, ma il tuo browser <b>non</b> è in grado di utilizzare Riot.", - "Messages containing <span>keywords</span>": "Messaggi contenenti <span>parole chiave</span>", - "Notification targets": "Obiettivi di notifica", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Le notifiche alle seguenti parole chiave seguono regole che non possono essere mostrate qui:", - "The Home Server may be too old to support third party networks": "Il server Home potrebbe essere troppo vecchio per supportare reti di terze parti", - "There are advanced notifications which are not shown here": "Ci sono notifiche avanzate che non sono mostrate qui", - "The server may be unavailable or overloaded": "Il server potrebbe essere non disponibile o sovraccarico", - "This Room": "Questa stanza", - "Unable to join network": "Impossibile collegarsi alla rete", - "Unable to look up room ID from server": "Impossibile consultare l'ID stanza dal server", - "Unavailable": "Non disponibile", - "Unhide Preview": "Mostra anteprima", + "Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Installare l'applicazione?", "Unknown device": "Dispositivo sconosciuto", - "unknown error code": "codice errore sconosciuto", - "Unnamed room": "Stanza senza nome", - "Update": "Aggiornamento", - "Uploaded on %(date)s by %(user)s": "Caricato il %(date)s da %(user)s", - "Uploading report": "Sto caricando il report", - "View Decrypted Source": "Visualizza sorgente decifrato", - "View Source": "Visualizza sorgente", - "What's New": "Novità", - "What's new?": "Cosa c'è di nuovo?", - "Waiting for response from server": "In attesa di una risposta dal server", - "When I'm invited to a room": "Quando vengo invitato/a in una stanza", - "You cannot delete this image. (%(code)s)": "Non puoi eliminare quest'immagine. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Non puoi eliminare questo messaggio. (%(code)s)", - "You are not receiving desktop notifications": "Non stai ricevendo le notifiche sul desktop", - "World readable": "Leggibile da tutti", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Potresti averli configurati in un client diverso da Riot. Non puoi cambiarli in Riot ma sono comunque applicati", - "Sunday": "Domenica", - "Monday": "Lunedì", - "Tuesday": "Martedì", - "Wednesday": "Mercoledì", - "Thursday": "Giovedì", - "Friday": "Venerdì", - "Saturday": "Sabato", - "Today": "Oggi", - "Yesterday": "Ieri", - "OK": "OK", - "Warning": "Attenzione", - "Checking for an update...": "Controllo aggiornamenti...", - "Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).", - "No update available.": "Nessun aggiornamento disponibile.", - "Downloading update...": "Scaricamento aggiornamento...", - "You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per utilizzare una chiamata con condivisione schermo.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Con il tuo attuale browser, l'aspetto e la sensazione generale dell'applicazione potrebbero essere completamente sbagliati e alcune delle funzionalità potrebbero non funzionare. Se vuoi provare comunque puoi continuare, ma non riceverai aiuto per qualsiasi problema tu possa riscontrare!", - "Welcome to Riot.im": "Benvenuto/a su Riot.im", + "You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per effettuare una chiamata con la condivisione dello schermo.", + "Welcome to Riot.im": "Benvenuti su Riot.im", "Search the room directory": "Cerca nella lista delle stanze", "Chat with Riot Bot": "Chatta con Riot Bot", "Get started with some tips from Riot Bot!": "Inizia con alcuni consigli di Riot Bot!", "General discussion about Matrix and Riot": "Discussioni generali riguardo Matrix e Riot", - "Couldn't load home page": "Impossibile caricare la pagina principale", "Riot/Web & Desktop chat": "Chat su Riot/Web & Desktop", "Riot/iOS & matrix-ios-sdk chat": "Chat su Riot/iOS & matrix-ios-sdk", "Riot/Android & matrix-android-sdk chat": "Chat su Riot/Android & matrix-android-sdk", @@ -168,59 +22,33 @@ "Support for those using and running matrix-appservice-irc": "Supporto per chi usa e amministra matrix-appservice-irc", "Building services on Matrix": "Costruzione servizi su Matrix", "Support for those using the Matrix spec": "Supporto per chi utilizza le specifiche Matrix", - "Design and implementation of E2E in Matrix": "Design e implementazione di E2E in Matrix", + "Design and implementation of E2E in Matrix": "Progetto e implementazione di E2E in Matrix", "Implementing VR services with Matrix": "Implementazione servizi VR con Matrix", "Implementing VoIP services with Matrix": "Implementazione servizi VoIP con Matrix", - "Discussion of the Identity Service API": "Discussione sull'Identity Service API", - "Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri bridge", - "Contributing code to Matrix and Riot": "Contributi al codice di Matrix e Riot", - "Co-ordination for Riot/Web translators": "Coordinamento per i traduttori di Riot/Web", - "Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?", - "You have successfully set a password!": "Hai impostato una password con successo!", - "You can now return to your account after signing out, and sign in on other devices.": "Ora puoi tornare al tuo account dopo esserti disconnesso e accedere su altri dispositivi.", - "Continue": "Continua", - "Please set a password!": "Imposta una password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Questo ti permetterà di ritornare al tuo account dopo esserti disconnesso e accedere in altri dispositivi.", - "You have successfully set a password and an email address!": "Hai impostato con successo una password e un indirizzo email!", - "Remember, you can always set an email address in user settings if you change your mind.": "Ricorda, puoi sempre specificare un indirizzo email nelle impostazioni utente se cambi idea.", - "To return to your account in future you need to <u>set a password</u>": "Per tornare nel tuo account in futuro devi <u>impostare una password</u>", - "Set Password": "Imposta Password", - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s su %(osName)s", - "Unable to fetch notification target list": "Impossibile ottenere la lista di obiettivi notifiche", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat & collaborazione decentralizzata e criptata offerta da [matrix]", - "Discussion of all things Matrix!": "Discussione su tutto quanto riguardi Matrix!", + "Discussion of the Identity Service API": "Discussione API del servizio identità", + "Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri ponti (bridge)", + "Contributing code to Matrix and Riot": "Contributi di codice per Matrix e Riot", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s tramite %(browserName)s su %(osName)s", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat criptate, decentralizzate e collaborazioni offerte da [matrix]", + "Discussion of all things Matrix!": "Discussione su tutto riguardo Matrix!", "Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web", "Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti già esistenti (Slack, IRC, Gitter ecc) o indipendenti. Dai un'occhiata all'elenco!", - "Thank you!": "Grazie!", - "Bug report sent": "Rapporto inviato", - "Back": "Indietro", - "Developer Tools": "Strumenti per Sviluppatori", - "Failed to send custom event.": "Impossibile inviare evento personalizzato.", - "Filter results": "Filtra risultati", - "Send Custom Event": "Invia Evento Personalizzato", - "Send Custom State Event": "Invia Evento di Stato Personalizzato", - "Explore Room State": "Esplora Stato Stanza", - "You must specify an event type!": "Devi specificare un tipo di evento!", - "Event sent!": "Evento inviato!", - "Event Type": "Tipo di Evento", - "Event Content": "Contenuto dell'Evento", - "State Key": "Chiave dello Stato", - "Show message in desktop notification": "Mostra i messaggi nelle notifiche desktop", - "Edit": "Modifica", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo dell'home server.<br/> Questo permette di usare Matrix con un account esistente su un home server diverso.<br/><br/>È anche possibile impostare un diverso identity server, ma in quel caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.", - "Appear Offline": "Appari offline", - "Away": "Assente", - "Explore Account Data": "Esplora dati account", - "Toolbox": "Strumenti", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Installa <chromeLink>Chrome</chromeLink> o <firefoxLink>Firefox</firefoxLink> per la migliore esperienza d'uso.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "Anche <safariLink>Safari</safariLink> e <operaLink>Opera</operaLink> vanno bene.", - "Register": "Registrati", - "Rooms": "Stanze", - "Send Account Data": "Invia dati account", - "Unpin Message": "Sblocca messaggio", - "Pin Message": "Blocca messaggio", - "Add rooms to this community": "Aggiungi stanze a questa community", - "Reply": "Rispondi", - "Invite to this community": "Invita a questa comunità" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti esistenti (Slack, IRC, Gitter, ecc.) o indipendenti. Controlla l'elenco!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo del server home.<br/> Questo permette di usare Riot con un account Matrix esistente su un server home diverso.<br/><br/>È anche possibile impostare un diverso server identità, ma in tal caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.", + "Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puoi usare le opzioni di server personalizzato per accedere ad altri server Matrix specificando un URL homeserver diverso. Ciò ti permette di usare Riot con un account Matrix esistente su un homeserver differente.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi anche impostare un server di identità personalizzato, ma non sarai in grado di invitare utenti via email o di essere invitato via email.", + "Sign In": "Accedi", + "Create Account": "Crea account", + "Need help?": "Serve aiuto?", + "Explore rooms": "Esplora stanze", + "Room Directory": "Elenco stanze", + "Unexpected error preparing the app. See console for details.": "Errore inaspettato preparando l'app. Vedi la console per i dettagli.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configurazione non valida: specificare solo uno di default_server_config, default_server_name, o default_hs_url.", + "Invalid configuration: no default server specified.": "Configurazione non valida: nessun server predefinito specificato.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Questa installazione di Riot sembra avere una configurazione server non valida. Se sei l'amministratore, correggi l'errore sottostante", + "Your Riot is misconfigured": "Il tuo Riot è configurato male", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "La tua configurazione di Riot contiene un JSON non valido. Correggi il problema e ricarica la pagina.", + "The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s", + "Invalid JSON": "JSON non valido" } diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index e649354a..022f721c 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -1,76 +1,47 @@ { - "All messages": "全ての発言", - "All messages (noisy)": "全ての発言(通知音あり)", - "Cancel": "取消", - "Close": "閉じる", - "Direct Chat": "対話", - "Favourite": "お気に入り", - "Hide panel": "右欄を非表示", - "Invite to this room": "この部屋へ招待", - "Low Priority": "低優先度", - "Members": "参加者", - "Mentions only": "呼び掛けられた時のみ", - "Mute": "通知しない", - "Notifications": "通知", - "Report a bug": "バグを報告", - "Resend": "再送信", "Riot is not supported on mobile web. Install the app?": "Riotはスマートフォンでの表示に対応していません。できればアプリをインストールして頂けませんでしょうか?", - "Room not found": "部屋が見つかりません", - "Search": "検索", - "Search…": "検索…", - "Send": "送信", - "Sorry, your browser is <b>not</b> able to run Riot.": "申し訳ありません。あなたのブラウザではRiotは<b>動作できません</b>。", - "This Room": "この部屋", - "Waiting for response from server": "サーバからの応答を待っています", - "You cannot delete this message. (%(code)s)": "あなたはこの発言を削除できません (%(code)s)", - "Sunday": "日曜日", - "Monday": "月曜日", - "Tuesday": "火曜日", - "Wednesday": "水曜日", - "Thursday": "木曜日", - "Friday": "金曜日", - "Saturday": "土曜日", - "Today": "今日", - "Yesterday": "昨日", - "Warning": "警告", - "No update available.": "更新はありません。", "Welcome to Riot.im": "Riot.imへようこそ", "Search the room directory": "部屋一覧を検索", - "Failed to change password. Is your password correct?": "パスワード変更に失敗しました。パスワードは正しいですか?", - "Set Password": "パスワードを設定", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>と<a href=\"http://opera.com\">Opera</a>でも動作します。", - "A new version of Riot is available.": "新しいバージョンのRiotが利用可能です。", - "All Rooms": "全ての部屋", - "Changelog": "変更履歴", - "Directory": "部屋一覧", - "Download this file": "この添付ファイルをダウンロード", - "Enable desktop notifications": "デスクトップ画面に通知を行う", - "Enable email notifications": "電子メールでの通知を行う", - "Enable notifications for this account": "このアカウントで通知を行う", - "Failed to change settings": "設定の変更に失敗しました", - "Failed to get public room list": "公開部屋一覧の取得に失敗しました", - "Filter room names": "部屋名検索", - "Forget": "忘れる", - "Leave": "退室", - "Files": "添付ファイル", "Unknown device": "不明な端末", - "Collecting app version information": "アプリのバージョン情報を収集", - "Collecting logs": "ログの収集", - "Uploading report": "レポートのアップロード", - "Messages containing my display name": "自身の表示名を含むメッセージ", - "Messages containing my user name": "自身のユーザー名を含むメッセージ", - "Messages in one-to-one chats": "一対一のチャットでのメッセージ", - "Messages in group chats": "グループチャットのメッセージ", - "When I'm invited to a room": "部屋に招待された時", - "Messages sent by bot": "ボットから送信されたメッセージ", - "Error saving email notification preferences": "電子メール通知設定の保存エラー", - "An error occurred whilst saving your email notification preferences.": "電子メール通知設定を保存中にエラーが発生しました。", - "Keywords": "キーワード", - "Enter keywords separated by a comma:": "キーワードをコンマで区切って入力:", - "OK": "OK", - "Operation failed": "操作に失敗しました", - "Can't update user notification settings": "ユーザー通知の設定を更新できません", - "Failed to update keywords": "キーワードの更新に失敗しました", - "Messages containing <span>keywords</span>": "<span>keywords</span>を含むメッセージ", - "Add an email address above to configure email notifications": "メール通知を設定するために、メールアドレスを追加してください" + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)sは%(osName)sの%(browserName)s上で動作しています", + "Custom Server Options": "カスタムサーバのオプション", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "他のホームサーバのURLを指定することで、他のMatrixサーバにサインインするためにカスタムサーバのオプションを利用できます。<br/>これにより、他のホームサーバ上で既存のMatrixアカウントを用いてRiotを利用できます。<br/><br/>カスタムアイデンティティサーバを立てることもできますが、メールアドレスでユーザを招待する、または自身が招待されることはできません。", + "Dismiss": "やめる", + "powered by Matrix": "Matrix の支援により活動しています。", + "Riot Desktop on %(platformName)s": "%(platformName)s向けデスクトップ版Riot", + "You need to be using HTTPS to place a screen-sharing call.": "画面共有通話を行うにはHTTPS通信を使う必要があります。", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "分散型の、暗号化された会話とコラボレーション。[matrix]で動作しています", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "既にたくさんの部屋が、既存のネットワーク(Slack、IRC、Gitter等)に接続して、または独立的にMatrixに存在します。ディレクトリを検索してください!", + "Chat with Riot Bot": "Riot Botと会話", + "Get started with some tips from Riot Bot!": "Riot Botにヒントをもらって始めましょう!", + "General discussion about Matrix and Riot": "MatrixとRiotの概略", + "Discussion of all things Matrix!": "Matrixなんでも議論!", + "Riot/Web & Desktop chat": "Riot/Web & デスクトップ版チャット", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk チャット", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk チャット", + "Matrix technical discussions": "Matrixについての技術的な討論", + "Running Matrix services": "Matrixサービスを実行しています", + "Community-run support for Synapse": "コミュニティ運営のSynapseのサポート", + "Admin support for Dendrite": "Dendriteの管理者サポート", + "Announcements about Synapse releases": "Synapseの公開についてのお知らせ", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-ircを利用並びに運営している方へのサポート", + "Building services on Matrix": "Matrix上でのサービスの開発", + "Support for those using the Matrix spec": "Matrixスペックを利用する方へのサポート", + "Design and implementation of E2E in Matrix": "Matrixのデザインとエンドツーエンドの実装", + "Implementing VR services with Matrix": "MatrixでのVRサービスの実装", + "Implementing VoIP services with Matrix": "MatrixでのIP電話サービスの実装", + "Discussion of the Identity Service API": "Identity Service APIの議論", + "Support for those using, running and writing other bridges": "他のブリッジを利用、運営、作成している方へのサポート", + "Contributing code to Matrix and Riot": "MatrixとRiotにコードを提供する", + "Dev chat for the Riot/Web dev team": "Riot/Web開発者チームのための開発者チャット", + "Dev chat for the Dendrite dev team": "Dendrite開発者チームのための開発者チャット", + "Co-ordination for Riot translators": "Riot 翻訳者による共同作業", + "Unexpected error preparing the app. See console for details.": "アプリケーションの準備中に予期しないエラーが発生しました。詳細はコンソールを参照してください。", + "Your Riot is misconfigured": "あなたの Riot は間違って設定されています。", + "Invalid configuration: no default server specified.": "不正な設定です:デフォルトのサーバーが設定されていません。", + "Sign In": "サインイン", + "Create Account": "アカウントを作成する", + "Need help?": "助けが必要ですか?", + "Explore rooms": "部屋を探索する", + "Room Directory": "部屋のディレクトリー" } diff --git a/src/i18n/strings/jbo.json b/src/i18n/strings/jbo.json new file mode 100644 index 00000000..86c4fc55 --- /dev/null +++ b/src/i18n/strings/jbo.json @@ -0,0 +1,39 @@ +{ + "Riot is not supported on mobile web. Install the app?": ".i lo samfonxa na kakne lo nu pilno la kibro nu zunti .i .au pei kibycpa le samtci", + "Riot Desktop on %(platformName)s": "la skami nu zunti ci'e la'o gy. %(platformName)s .gy.", + "Unknown device": "lo na'e te djuno se pilno", + "%(appName)s via %(browserName)s on %(osName)s": "la'o gy. %(appName)s .gy. xe be'i la'o gy. %(browserName)s .gy. ci'e la'o gy. %(osName)s .gy.", + "You need to be using HTTPS to place a screen-sharing call.": ".i la .hytytypysys. sarcu lo nu co'a vidni jorne", + "Custom Server Options": "lo macnu se cuxna be fi lo'i samse'u", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": ".i zukte lo nu macnu cuxna lo samse'u kei goi ko'a lo nu pilno lo drata samse'u pe la nacmeimei<br/>.i ko'a se cumki lo nu do pilno lo pilno poi zvati lo drata samse'u pe la nacmeimei<br/><br/>.i ji'a cumki fa lo nu do pilno lo drata ke prenu datni samse'u kei goi ko'a .i ku'i ko'a to'e rinka la'a lo nu do zvacpe ja se zvacpe", + "Dismiss": "mipri", + "powered by Matrix": ".i la nacmeimei cu cumgau", + "Welcome to Riot.im": ".i fi'i lo pilno be la nu zunti", + "Decentralised, encrypted chat & collaboration powered by [matrix]": ".i la nacmeimei cu cumgau lo mifra je na'e se midju nu tavla je ke kansa gunka", + "Search the room directory": "sisku fi lo'i kumfa pe'a", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": ".i ci'e la nacmeimei cu kumfa pe'a fa so'i da noi jorne jo nai no'e jorne lo drata ciste no'u mu'a la .slak. jo'u lo te irci jo'u la .gityr. .i", + "Chat with Riot Bot": "tavla la nu zunti kei sampre", + "Get started with some tips from Riot Bot!": ".i .e'u la nu zunti kei sampre cu sidju ko", + "General discussion about Matrix and Riot": "lo nu casnu be la nacmeimei .e la nu zunti", + "Discussion of all things Matrix!": "lo nu casnu be ro me la nacmeimei", + "Riot/Web & Desktop chat": "lo nu casnu be la kibro nu zunti .e la skami nu zunti", + "Running Matrix services": "lo nu ralte lo samtcise'u pe la nacmeimei", + "Community-run support for Synapse": "lo nu lo cecmu cu sidju fi tu'a la .sinaps.", + "Discussion of the Identity Service API": "lo nu casnu lo prenu datni favgau cimde", + "Contributing code to Matrix and Riot": "lo nu dunda lo samselpla la nacmeimei .a la nu zunti", + "Co-ordination for Riot translators": "lo nu lo fanva pe la nu zunti cu kansa gunka", + "Riot/iOS & matrix-ios-sdk chat": "lo nu casnu la plisyfonkemsamcmu nu zunti .e la'o gy. matrix-ios-sdk .gy.", + "Riot/Android & matrix-android-sdk chat": "lo nu casnu la guglyfonkemsamcmu nu zunti .e la'o gy. matrix-android-sdk .gy.", + "Matrix technical discussions": "lo nu casnu lo zbaske be la nacmeimei", + "Announcements about Synapse releases": "lo notci be lo farvi tcini pe la nirna", + "Support for those using and running matrix-appservice-irc": "lo nu sidju lo pilno ja admine be la'o gy. matrix-appservice-irc .gy.", + "Building services on Matrix": "lo nu finti lo te selfu ji'u la nacmeimei", + "Support for those using the Matrix spec": "lo nu sidju lo pilno be lo sarcu pe la nacmeimei", + "Design and implementation of E2E in Matrix": "lo nu finti lo mulno mifra te platu .a lo samtcise'u be my. ji'u la nacmeimei", + "Support for those using, running and writing other bridges": "lo nu sidju lo pilno ja admine ja finti be lo drata te jorne", + "Dev chat for the Riot/Web dev team": "lo nu lo favgau be la kibro nu zunti cu casnu", + "Dev chat for the Dendrite dev team": "lo nu lo favgau be la nirndendriti cu casnu", + "Implementing VoIP services with Matrix": "lo nu finti lo samtcise'u be fi la .voip. ji'u la nacmeimei", + "Implementing VR services with Matrix": "lo nu finti lo samtcise'u be fi lo na'e fatci munje ji'u la nacmeimei", + "Admin support for Dendrite": "lo nu sidju lo admine be la nirndendriti" +} diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json new file mode 100644 index 00000000..76e22da6 --- /dev/null +++ b/src/i18n/strings/ka.json @@ -0,0 +1,39 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot ვებსაიტს არ აქვს მხარდაჭერა მობილური მოწყობილობებისთვის. გსურთ აპლიკაციის დაყენება?", + "Riot Desktop on %(platformName)s": "Riot Desktop-ი %(platformName)s-ზე", + "Unknown device": "უცნობი მოწყობილობა", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s-ი %(browserName)s-ით %(osName)s-იდან", + "You need to be using HTTPS to place a screen-sharing call.": "ეკრანის გაზიარების ფუნქციის მქონე ზარისთვის საჭიროა, იყენებდეთ HTTPS-ს.", + "Custom Server Options": "პერსონალიზებული სერვერის პარამეტრები", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "სხვა Matrix სერვერებზე შესასვლელად შეგიძლიათ გამოიყენოთ პერსონალიზებული სერვერის პარამეტრები განსხვავებული მთავარი სერვერის URL-ის მითითებით <br/>ეს გაძლევთ საშუალებას, გამოიყენოთ Riot-ი არსებულ Matrix ანგარიშით სხვა მთავარ სერვერზე.<br/><br/>თქვენ ასევე შეგიძლიათ დააყენოთ პერსონალიზებული იდენტუროის სერვერი, მაგრამ თქვენ ვერ მოიწვევთ მომხმარებლებს ელფოსტის მისამართით და თავად თქვენ ვერ მოგიწვევენ ელფოსტის მისამართით.", + "Dismiss": "უარის თქმა", + "powered by Matrix": "Matrix-ზე დაფუძნებული", + "Welcome to Riot.im": "კეთილი იყოს თქვენი მობრძანება Riot.im-ზე", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "დეცენტრალიზებული, დაშიფრული ჩატი & კოლაბორაცია, დაფუძნებული [matrix]-ზე", + "Search the room directory": "მოძებნა ოთახის სიაში", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "მრავალი ოთახი უკვე არსებობს Matrix-ში, რომლებიც არიან დაკავშირებული არსებულ ქსელებთან (Slack, IRC, Glitter და ა.შ) ან დამოუკიდებელი. შეამოწმეთ სია!", + "Chat with Riot Bot": "ისაუბრეთ Riot-ის Bot-თან", + "Get started with some tips from Riot Bot!": "დაიწყეთ რჩევებით Riot-ის Bot-ისგან!", + "General discussion about Matrix and Riot": "ზოგადი დისკუსია Matrix-სა და Riot-ზე", + "Discussion of all things Matrix!": "დისკუსია ყველაფერზე, რაც ეხება Matrix-ს!", + "Riot/Web & Desktop chat": "Riot/ვებ-ისა & Desktop-ის ჩატი", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS-ისა & matrix-ios-sdk-ის ჩატი", + "Riot/Android & matrix-android-sdk chat": "Riot/ანდროიდისა & matrix-android-sdk-ის ჩატი", + "Matrix technical discussions": "Matrix-ის ტექნიკური დისკუსიები", + "Running Matrix services": "Matrix-ის სერვისების გამოყენება", + "Community-run support for Synapse": "საზოგადოებისმიერი მხარდაჭერა Synapse-ისთვის", + "Admin support for Dendrite": "ადმინისტრატორის მხარდაჭერა Dendrite-ისთვის", + "Announcements about Synapse releases": "განცხადებები Synapse-ის გამოშვებებთან დაკავშირებით", + "Support for those using and running matrix-appservice-irc": "მხარდაჭერა მათთვის, ვინც იყენებს matrix-appservice-irc-ს", + "Building services on Matrix": "სერვისების Matrix-ზე დაფუძნებით გამომუშავება", + "Support for those using the Matrix spec": "მხარდაჭერა Matrix სპეციფიკაციების გამოყენებასთან დაკავშირებულ კითხვებზე", + "Design and implementation of E2E in Matrix": "პირით-პირამდე დაშიფვრის დაგეგმვა და შესრულება", + "Implementing VR services with Matrix": "VR სერვისების Matrix-ით შესრულება", + "Implementing VoIP services with Matrix": "VoIP სერვისების Matrix-ით შესრულება", + "Discussion of the Identity Service API": "იდენტიფიკაციის სერვისის API-ს დისკუსია", + "Support for those using, running and writing other bridges": "მხარდაჭერა მათთვის, ვინც იყენებს და წერს სხვა ხიდებს", + "Contributing code to Matrix and Riot": "Matrix-ის და Riot-ის გამომუშავებაში მონაწილეობის მიღება", + "Dev chat for the Riot/Web dev team": "დეველოპერების ჩატი Riot/ვებ დეველოპერების გუნდთან", + "Dev chat for the Dendrite dev team": "დეველოპერების ჩატი Dendrite-ის დეველოპერების გუნდთან", + "Co-ordination for Riot translators": "კოორდინაცია Riot-ის მთარგმნელებისთვის" +} diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index e09db19d..b95976b7 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -1,204 +1,53 @@ { - "A new version of Riot is available.": "라이엇의 새 버전을 사용하실 수 있어요.", - "Add an email address above to configure email notifications": "이메일 알림을 설정하기 위해 이메일 주소를 추가해주세요", - "Advanced notification settings": "고급 알림 설정", - "All messages": "모든 메시지", - "All messages (noisy)": "모든 메시지 (크게)", - "All Rooms": "모든 방", - "All notifications are currently disabled for all targets.": "현재 모든 알림이 모든 상대에게서 꺼졌어요.", - "An error occurred whilst saving your email notification preferences.": "이메일 알림을 설정하다가 오류가 일어났어요.", - "Call invitation": "전화가 왔어요", - "Cancel": "취소", - "Cancel Sending": "보내기 취소", - "Can't update user notification settings": "사용자 알림 설정을 갱신할 수 없어요", - "Changelog": "바뀐 점", - "Close": "닫기", - "Collapse panel": "패널 접기", - "Collecting app version information": "앱 버전 정보를 수집하는 중", - "Collecting logs": "로그 수집 중", - "Couldn't find a matching Matrix room": "일치하는 매트릭스 방을 찾을 수 없어요", - "Custom Server Options": "사용자 지정 서버 설정", - "delete the alias.": "가명을 지울게요.", - "Describe your problem here.": "여기에 일어난 문제를 적어주세요.", - "Direct Chat": "직접 이야기하기", - "Directory": "목록", - "Dismiss": "없애기", - "Download this file": "이 파일 받기", - "Enable desktop notifications": "컴퓨터에서 알림 받기", - "Enable email notifications": "이메일로 알림 받기", - "Enable notifications for this account": "이 계정의 알림 받기", - "Error": "오류", - "Error saving email notification preferences": "이메일 알림을 설정하는데 오류가 일어났어요", - "#example": "#예", - "Expand panel": "확장 패널", - "Forget": "잊기", - "Hide panel": "패널 숨기기", - "I understand the risks and wish to continue": "위험할 수 있는 걸 알고 계속하기를 바라요", - "Invite to this room": "이 방에 초대하기", - "Leave": "떠나기", - "Login": "로그인", - "Loading bug report module": "오류 보고 모듈을 불러오는 중", - "Low Priority": "낮은 우선순위", - "Members": "구성원", - "more": "더 보기", - "Mute": "알림 끄기", - "No rooms to show": "보여드릴 방이 없어요", - "Notification targets": "알림 대상", - "Notifications": "알림", - "Off": "끄기", - "On": "켜기", - "Permalink": "고유주소", - "Please describe the bug and/or send logs.": "오류를 적어주시거나 로그를 보내주세요.", - "powered by Matrix": "매트릭스의 지원을 받고 있어요", - "Quote": "인용하기", - "Reject": "거절하기", - "Remove %(name)s from the directory?": "목록에서 %(name)s을 지우시겠어요?", - "Remove": "지우기", - "remove %(name)s from the directory.": "목록에서 %(name)s을 지웠어요.", - "Remove from Directory": "목록에서 지우기", - "Report a bug": "오류 보고하기", - "Resend": "다시 보내기", - "Riot Desktop on %(platformName)s": "%(platformName)s에서 라이엇 컴퓨터판", - "Riot is not supported on mobile web. Install the app?": "라이엇은 모바일 사이트를 지원하지 않아요. 앱을 설치하시겠어요?", - "Room not found": "방을 찾지 못했어요", - "Search": "찾기", - "Search…": "찾기…", - "Search for a room": "방에서 찾기", - "Send": "보내기", - "Send logs": "로그 보내기", - "Source URL": "출처 URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "죄송해요. 브라우저에서 라이엇을 켤 수가 <b>없어요</b>.", - "This Room": "방", - "Unavailable": "이용할 수 없음", - "Unknown device": "알 수 없는 장치", - "unknown error code": "알 수 없는 오류 코드", - "Unnamed room": "이름없는 방", - "Update": "업데이트", - "Uploading report": "보고를 올리는 중", - "What's New": "새로운 점", - "What's new?": "새로운 점은?", - "Waiting for response from server": "서버에서 응답을 기다리는 중", - "You cannot delete this image. (%(code)s)": "이 사진을 지우실 수 없어요. (%(code)s)", - "You cannot delete this message. (%(code)s)": "이 메시지를 지우실 수 없어요. (%(code)s)", - "You are not receiving desktop notifications": "컴퓨터 알림을 받지 않고 있어요", - "Sunday": "일요일", - "Monday": "월요일", - "Tuesday": "화요일", - "Wednesday": "수요일", - "Thursday": "목요일", - "Friday": "금요일", - "Saturday": "토요일", - "Today": "오늘", - "Yesterday": "어제", - "OK": "알았어요", - "Welcome to Riot.im": "라이엇에 오신 걸 환영해요", - "Chat with Riot Bot": "Riot 봇과 이야기하기", - "You have successfully set a password!": "비밀번호를 설정했어요!", - "Continue": "게속하기", - "Please set a password!": "비밀번호를 설정해주세요!", - "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s의 %(browserName)s을 통한 %(appName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">사파리</a>와 <a href=\"http://opera.com\">오페라</a>에서도 작동해요.", - "customServer_text": "사용자 지정 서버 설정에서 다른 홈 서버 URL을 지정해 다른 매트릭스 서버에 로그인할 수 있어요.<br/>이를 통해 라이엇과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있죠.<br/><br/>사용자 지정 ID 서버를 설정할 수도 있지만 이메일 주소로 사용자를 초대하거나 초대받을 수는 없답니다.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "방 가명 %(alias)s 을 지우고 목록에서 %(name)s를 지우시겠어요?", - "Enable audible notifications in web client": "웹 클라이언트에서 알림 소리 켜기", - "Enable them now": "지금 켜기", - "Enter keywords separated by a comma:": "키워드를 쉼표로 구분해 입력해주세요:", - "Failed to add tag %(tagName)s to room": "방에 %(tagName)s로 지정하지 못했어요", - "Failed to change settings": "설정을 바꾸지 못했어요", - "Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요", - "Failed to update keywords": "키워드를 갱신하지 못했어요", - "Failed to get protocol list from Home Server": "홈 서버에서 프로토콜 목록을 얻지 못했어요", - "Failed to get public room list": "공개한 방 목록을 얻지 못했어요", - "Failed to remove tag %(tagName)s from room": "방에서 %(tagName)s 지정을 지우지 못했어요", - "Failed to send report: ": "보고를 보내지 못했어요: ", - "Failed to set direct chat tag": "직접 이야기 지정을 설정하지 못했어요", - "Failed to set Direct Message status of room": "방의 쪽지 상태를 설정하지 못했어요", - "Favourite": "즐겨찾기", - "Fetching third party location failed": "타사 위치를 불러오지 못했어요", - "Files": "파일", - "Filter room names": "방 이름 거르기", - "Forward Message": "메시지 전달", - "Guests can join": "손님이 들어올 수 있어요", - "(HTTP status %(httpStatus)s)": "(HTTP 상태 %(httpStatus)s)", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "문제를 진단하기 위해서, 이 클라이언트의 로그를 오류 보고서와 같이 보낼 거에요. 위 내용만 보내시려면, 체크를 해제하세요:", - "Keywords": "키워드", - "Mentions only": "답만 하기", - "Messages containing my display name": "내 별명이 적힌 메시지", - "Messages containing <span>keywords</span>": "<span>키워드</span>가 적힌 메시지", - "Messages containing my user name": "내 사용자 이름이 적힌 메시지", - "Messages in group chats": "이야기 모임의 메시지", - "Messages in one-to-one chats": "1:1 이야기의 메시지", - "Messages sent by bot": "봇이 보낸 메시지", - "Noisy": "소리", - "Notifications on the following keywords follow rules which can’t be displayed here:": "여기 표시될 수 없는 규칙에 따라 다음 키워드는 알리지 않아요:", - "Notify for all other messages/rooms": "다른 모든 메시지/방 알리기", - "Notify me for anything else": "모든 걸 알리기", - "Operation failed": "작업 실패", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "오류를 설명해주세요. 무슨 일을 하셨나요? 어떤 일을 예상하셨나요? 실제로는 어떤 일이 일어났나요?", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "최상의 경험을 위해 <a href=\"https://www.google.com/chrome\">크롬</a>이나 <a href=\"https://getfirefox.com\">파이어폭스</a>를 설치해주세요.", - "Riot does not know how to join a room on this network": "라이엇이 이 네트워크에서 방에 들어가는 법을 알 수 없어요", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "라이엇은 많은 고급 브라우저 기능을 사용해요. 일부는 현재 브라우저에서 쓸 수 없거나 실험적이에요.", - "The Home Server may be too old to support third party networks": "타사 네트워크를 지원하기에는 홈 서버가 너무 오래된 걸 수 있어요", - "There are advanced notifications which are not shown here": "여기 보이지 않는 고급 알림이 있어요", - "The server may be unavailable or overloaded": "서버를 쓸 수 없거나 과부하일 수 있어요", - "Unable to fetch notification target list": "알림 대상 목록을 불러올 수 없어요", - "Unable to join network": "네트워크에 들어갈 수 없어요", - "Unable to look up room ID from server": "서버에서 방 ID를 찾아볼 수 없어요", - "Unhide Preview": "미리보기를 숨기지 않기", - "Uploaded on %(date)s by %(user)s": "by %(user)s가 %(date)s에 올림", - "View Decrypted Source": "해독된 출처 보기", - "View Source": "출처 보기", - "When I'm invited to a room": "방에 초대받았을 때", - "World readable": "세계에 보이기", - "You need to be using HTTPS to place a screen-sharing call.": "화면 공유를 하려면 HTTPS를 써야만 해요.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "현재 브라우저에서는, 응용 프로그램의 모양과 기능이 완벽하게 맞지 않거나, 일부 혹은 모든 기능이 작동하지 않을 수 있어요. 계속할 수는 있지만, 맞닥뜨리는 모든 문제는 직접 해결하셔야해요!", + "Custom Server Options": "맞춤 서버 설정", + "Dismiss": "버리기", + "powered by Matrix": "Matrix의 지원을 받음", + "Riot Desktop on %(platformName)s": "%(platformName)s 용 Riot 데스크톱", + "Riot is not supported on mobile web. Install the app?": "”Riot은 모바일 사이트를 지원하지 않습니다. 앱을 설치하시겠어요?", + "Unknown device": "알 수 없는 기기", + "Welcome to Riot.im": "Riot.im에 오신 것을 환영합니다", + "Chat with Riot Bot": "Riot 봇과 대화", + "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s 용 %(browserName)s에서 연 %(appName)s", + "You need to be using HTTPS to place a screen-sharing call.": "화면 공유 전화를 걸려면 HTTPS를 사용해야 합니다.", "Decentralised, encrypted chat & collaboration powered by [matrix]": "분산되고, 암호화된 대화 & [matrix]의 지원으로 협력", - "Search the room directory": "방 목록을 찾기", + "Search the room directory": "방 목록 찾기", "Get started with some tips from Riot Bot!": "라이엇 봇에게 조언을 받고 시작하세요!", - "General discussion about Matrix and Riot": "매트릭스와 라이엇에 대한 일반 논의", - "Discussion of all things Matrix!": "매트릭스의 모든 것에 대한 토론!", - "Riot/Web & Desktop chat": "라이엇/웹 & 컴퓨터 이야기", - "Riot/iOS & matrix-ios-sdk chat": "라이엇/IOS & matrix-ios-sdk 대화", - "Riot/Android & matrix-android-sdk chat": "매트릭스/안드로이드 & matrix-ios-sdk 대화", - "Matrix technical discussions": "매트릭스 기술 논의", - "Running Matrix services": "매트릭스 서비스 실행", + "General discussion about Matrix and Riot": "Matrix와 Riot에 대한 일반적인 토론", + "Discussion of all things Matrix!": "모든 Matrix에 대한 토론!", + "Riot/Web & Desktop chat": "Riot/웹 & PC 대화", + "Riot/iOS & matrix-ios-sdk chat": "Riot/IOS & matrix-ios-sdk 대화", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-ios-sdk 대화", + "Matrix technical discussions": "Matrix에 대한 기술적인 토론", + "Running Matrix services": "Matrix 서비스 실행 중", "Community-run support for Synapse": "시냅스 커뮤니티 운영 지원", - "Admin support for Dendrite": "덴드라이트 관리 지원", - "Announcements about Synapse releases": "시냅스 공개 발표", - "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc를 사용하고 운영하는 사람들을 지원", - "Building services on Matrix": "매트릭스에서 서비스 구축", + "Admin support for Dendrite": "Dendrite 관리 지원", + "Announcements about Synapse releases": "Synapse 출시에 대한 발표", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc를 사용하고 운영하는 사람들을 위한 지원", + "Building services on Matrix": "Matrix에서 서비스 구축", "Support for those using the Matrix spec": "Matrix spec을 사용하는 사람들을 지원", "Design and implementation of E2E in Matrix": "매트릭스에서 E2E 설계와 구현", "Implementing VR services with Matrix": "매트릭스로 VR 서비스 구현", - "Implementing VoIP services with Matrix": "매트릭스로 인터넷전화 서비스 구현", + "Implementing VoIP services with Matrix": "Matrix로 인터넷전화 서비스 구현", "Discussion of the Identity Service API": "ID 서비스 API에 대한 논의", - "Support for those using, running and writing other bridges": "다른 브릿지를 사용하고, 운영하고, 기록하는 사람들을 지원", - "Contributing code to Matrix and Riot": "매트릭스와 라이엇에 코드 기여하기", - "Dev chat for the Riot/Web dev team": "라이엇/웹 개발 팀을 위한 개발자 대화", + "Support for those using, running and writing other bridges": "다른 브릿지를 사용하고, 운영하고, 기록하는 사람들을 위한 지원", + "Contributing code to Matrix and Riot": "Matrix와 Riot에 코드 기여하기", + "Dev chat for the Riot/Web dev team": "Riot/웹 개발 팀을 위한 개발자 대화", "Dev chat for the Dendrite dev team": "덴드라이트 개발 팀을 위한 개발자 대화", - "Co-ordination for Riot/Web translators": "라이엇/웹 번역자를 위한 조정", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방들이 이미 매트릭스에 있어요. 목록을 확인해보세요!", - "Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했어요. 이 비밀번호가 정말 맞으세요?", - "You can now return to your account after signing out, and sign in on other devices.": "계정을 로그아웃하신 뒤에 계정으로 돌아가, 다른 장치에서 로그인하실 수 있어요.", - "This will allow you to return to your account after signing out, and sign in on other devices.": "이런 식으로 로그아웃한 뒤 계정으로 돌아가, 다른 장치에서 로그인하실 수 있어요.", - "You have successfully set a password and an email address!": "비밀번호와 이메일 주소를 설정했어요!", - "Remember, you can always set an email address in user settings if you change your mind.": "잊지마세요, 마음이 바뀌면 언제라도 사용자 설정에서 이메일 주소를 바꾸실 수 있다는 걸요.", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "라이엇이 아닌 다른 클라이언트에서 구성하셨을 수도 있어요. 라이엇에서 조정할 수는 없지만 여전히 적용되있을 거에요", - "To return to your account in future you need to <u>set a password</u>": "나중에 계정으로 돌아가려면 <u>비밀번호 설정</u>을 해야만 해요", - "Set Password": "비밀번호 설정", - "Warning": "주의", - "Checking for an update...": "업데이트를 확인하는 중...", - "Error encountered (%(errorDetail)s).": "오류가 일어났어요 (%(errorDetail)s).", - "No update available.": "업데이트가 없어요.", - "Downloading update...": "업데이트를 받는 중...", - "Couldn't load home page": "중심 화면을 불러올 수 없어요", - "Show message in desktop notification": "컴퓨터 알림에서 내용 보이기", - "Appear Offline": "미접속으로 표시하기", - "Bug report sent": "오류 보고서를 보냈어요", - "Thank you!": "감사합니다!", - "Back": "돌아가기", - "Edit": "수정하기", - "Toolbox": "도구상자", - "Developer Tools": "개발자 도구", - "Register": "등록" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방이 이미 Matrix에 있습니다. 목록을 확인해보세요!", + "Co-ordination for Riot translators": "Riot 번역자 조합", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "사용자정의 서버 설정에서 다른 홈서버 URL를 지정해 다른 Matrix 서버에 접속할 수 있습니다. <br/>이렇게하면 다른 홈서버에서 기존의 Matrix 계정으로 Riot을 이용할 수 있습니다.<br/><br/>사용자정의 아이덴티티 서버도 설정할 수 있지만 이메일 주소로 이용자를 초대하거나 자신이 이메일 주소로 초대받을 수 없습니다.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot 설정이 올바르지 않은 JSON을 포함하고 있습니다. 문제를 해결한 후, 페이지를 새로고침하세요.", + "The message from the parser is: %(message)s": "파서에서 온 메시지: %(message)s", + "Invalid JSON": "잘못된 JSON", + "Your Riot is misconfigured": "Riot이 잘못 설정됨", + "Unexpected error preparing the app. See console for details.": "앱을 준비하는 동안 예기치 않은 오류가 발생했습니다. 자세한 내용은 콘솔을 확인하세요.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "잘못된 설정: default_server_config 와 defalut_server_name, default_hs_url 중 하나만 지정할 수 있습니다.", + "Invalid configuration: no default server specified.": "잘못된 설정: 기본 서버가 지정되지 않았습니다.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "다른 홈서버 URL을 지정함으로써 맞춤 서버 옵션을 사용, 다른 Matrix 서버에 로그인할 수 있습니다. 이를 통해 다른 홈서버의 기존 Matrix 계정으로 Riot을 사용할 수 있습니다.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "또한 맞춤 ID 서버를 설정할 수도 있지만, 이메일 주소로 사용자를 초대하거나, 이메일로 직접 초대할 수 없습니다.", + "Sign In": "로그인", + "Create Account": "계정 만들기", + "Need help?": "도움이 필요합니까?", + "Explore rooms": "방 검색", + "Room Directory": "방 목록" } diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index bc5e4321..3129dcb9 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1,90 +1,39 @@ { - "Waiting for response from server": "Laukiama atsakymo iš serverio", "Unknown device": "Nežinomas įrenginys", - "Collecting app version information": "Renkama programėlės versijos informacija", - "Collecting logs": "Renkami žurnalai", - "Uploading report": "Išsiunčiama ataskaita", - "Keywords": "Raktažodžiai", - "Enter keywords separated by a comma:": "Įveskite kableliais atskirtus raktažodžius:", - "OK": "Gerai", - "Failed to change settings": "Nepavyko pakeisti nustatymų", - "Operation failed": "Operacija nepavyko", - "Failed to update keywords": "Nepavyko atnaujinti raktažodžių", - "Enable email notifications": "Įjungti pranešimus el. paštu", - "Advanced notification settings": "Išplėstiniai pranešimų nustatymai", - "Enable desktop notifications": "Įjungti pranešimus darbalaukyje", - "Sunday": "Sekmadienis", - "Monday": "Pirmadienis", - "Tuesday": "Antradienis", - "Wednesday": "Trečiadienis", - "Thursday": "Ketvirtadienis", - "Friday": "Penktadienis", - "Saturday": "Šeštadienis", - "Today": "Šiandien", - "Yesterday": "Vakar", "powered by Matrix": "veikia su Matrix", - "What's New": "Kas naujo", - "What's new?": "Kas naujo?", - "A new version of Riot is available.": "Yra prieinama nauja Riot versija.", - "To return to your account in future you need to <u>set a password</u>": "Norėdami ateityje sugrįžti į savo paskyrą, turite <u>nusistatyti slaptažodį</u>", - "Set Password": "Nustatyti slaptažodį", - "Checking for an update...": "Tikrinama ar yra atnaujinimų...", - "No update available.": "Nėra prieinamų atnaujinimų.", - "Downloading update...": "Atsiunčiamas atnaujinimas...", - "Warning": "Įspėjimas", - "Error": "Klaida", - "You cannot delete this image. (%(code)s)": "Jūs negalite ištrinti šio paveikslo. (%(code)s)", - "Remove": "Šalinti", - "Close": "Užverti", - "Download this file": "Atsisiųsti šį failą", - "Thank you!": "Ačiū!", - "Cancel": "Atsisakyti", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Aprašykite klaidą. Ką darėte? Ko tikėjotės? Kas iš tikrųjų nutiko?", - "Describe your problem here.": "Čia aprašykite savo problemą.", - "Changelog": "Keitinių žurnalas", - "Back": "Atgal", - "You must specify an event type!": "Privalote nurodyti įvykio tipą!", - "Event sent!": "Įvykis išsiųstas!", - "Event Type": "Įvykio tipas", - "Toolbox": "Parankinė", - "You have successfully set a password!": "Jūs sėkmingai nusistatėte slaptažodį!", - "You have successfully set a password and an email address!": "Jūs sėkmingai nusistatėte slaptažodį ir el. pašto adresą!", - "Continue": "Tęsti", - "(HTTP status %(httpStatus)s)": "(HTTP būsena %(httpStatus)s)", - "Please set a password!": "Prašome nusistatyti slaptažodį!", - "You cannot delete this message. (%(code)s)": "Negalite ištrinti šios žinutės. (%(code)s)", - "Cancel Sending": "Atsisakyti siuntimo", - "Forward Message": "Persiųsti žinutę", - "Unpin Message": "Atsegti žinutę", - "Pin Message": "Prisegti žinutę", - "Permalink": "Pastovioji nuoroda", - "unknown error code": "nežinomas klaidos kodas", - "Reject": "Atmesti", - "Sorry, your browser is <b>not</b> able to run Riot.": "Atleiskite, jūsų naršyklė <b>negali</b> paleisti Riot.", - "I understand the risks and wish to continue": "Aš suprantu riziką ir noriu tęsti", - "Login": "Prisijungti", - "Register": "Registruotis", - "Files": "Failai", - "Notifications": "Pranešimai", - "Rooms": "Kambariai", - "Hide panel": "Slėpti skydelį", - "Invite to this community": "Pakviesti į šią bendruomenę", - "The server may be unavailable or overloaded": "Gali būti, kad serveris yra neprieinamas arba perkrautas", - "Unnamed room": "Kambarys be pavadinimo", - "Remove from Directory": "Šalinti iš katalogo", - "remove %(name)s from the directory.": "šalinti %(name)s iš katalogo.", - "Unable to join network": "Nepavyko prisijungti prie tinklo", - "Riot does not know how to join a room on this network": "Riot nežino kaip prisijungti prie kambario šiame tinkle", - "Room not found": "Kambarys nerastas", - "Couldn't find a matching Matrix room": "Nepavyko rasti atitinkamo Matrix kambario", - "Directory": "Katalogas", - "#example": "#pavyzdys", - "more": "daugiau", - "Expand panel": "Išskleisti skydelį", - "Collapse panel": "Suskleisti skydelį", "Welcome to Riot.im": "Sveiki atvykę į Riot.im", "Chat with Riot Bot": "Kalbėtis su Riot robotu", "General discussion about Matrix and Riot": "Bendros diskusijos apie Matrix ir Riot", "Matrix technical discussions": "Matrix techninės diskusijos", - "Riot is not supported on mobile web. Install the app?": "Riot nėra palaikoma naršant svetainėje mobiliaisiais įrenginiais. Įdiegti programėlę?" + "Riot is not supported on mobile web. Install the app?": "Riot nėra palaikoma naršant svetainėje mobiliaisiais įrenginiais. Įdiegti programėlę?", + "Riot Desktop on %(platformName)s": "Riot Desktop, naudojant %(platformName)s", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s, naudojant %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Norint skambinti su ekrano bendrinimo funkcija būtina naudoti HTTPS.", + "Custom Server Options": "Tinkinto serverio parametrai", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Norėdami prisijungti prie kito nei Matrix serverio, galite naudoti tinkinto serverio parametrus ir nurodyti kito serverio URL adresą.<br/>Tai leis jums naudoti Riot su esama Matrix paskyra kituose serveriuose.<br/><br/>Taip pat galite nustatyti tinkintą tapatybės serverį, tačiau tuomet negalėsite pakviesti kitus naudotojus pagal el. paštą, o taip pat ir jie negalės pakviesti jūsų.", + "Dismiss": "Atmesti", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizuoti, šifruoti pokalbiai ir bendradarbiavimas, veikiantis su [matrix]", + "Search the room directory": "Ieškoti kambarių kataloge", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Daugybė kambarių jau yra Matrix, susieti prie esamų tinklų (Slack, IRC, Gitter ir t.t.) arba nepriklausomi. Pasižvalgykite kataloge!", + "Get started with some tips from Riot Bot!": "Pradėkite darbo pradžią nuo Riot roboto patarimų!", + "Discussion of all things Matrix!": "Diskusijos apie viską, kas susiję su Matrix!", + "Riot/Web & Desktop chat": "Pokalbiai apie Riot/Web ir Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Pokalbiai apie Riot/iOS ir matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Pokalbiai apie Riot/Android ir matrix-android-sdk", + "Running Matrix services": "Matrix paslaugų paleidimas", + "Community-run support for Synapse": "Su Synapse susijęs bendruomenės palaikymas", + "Admin support for Dendrite": "Dendrite administratorių palaikymas", + "Announcements about Synapse releases": "Skelbimai apie Synapse laidas", + "Support for those using and running matrix-appservice-irc": "Palaikymas skirtas besinaudojantiems ir prižiūrintiems matrix-appservice-irc", + "Building services on Matrix": "Paslaugų kūrimas, naudojant Matrix", + "Support for those using the Matrix spec": "Palaikymas skirtas besinaudojantiems Matrix specifikacija", + "Design and implementation of E2E in Matrix": "E2E dizainas ir įgyvendinimas ties Matrix", + "Implementing VR services with Matrix": "VR paslaugų įgyvendinimas ties Matrix", + "Implementing VoIP services with Matrix": "VoIP paslaugų įgyvendinimas ties Matrix", + "Discussion of the Identity Service API": "Diskusijos apie tapatybės paslaugos API", + "Support for those using, running and writing other bridges": "Palaikymas skirtas besinaudojantiems, prižiūrintiems ar kuriantiems kitus tinklų tiltus", + "Contributing code to Matrix and Riot": "Matrix ir Riot kodo plėtojimas", + "Dev chat for the Riot/Web dev team": "Kūrėjų pokalbiai, skirti Riot/Web kūrėjų komandai", + "Dev chat for the Dendrite dev team": "Kūrėjų pokalbiai, skirti Dendrite kūrėjų komandai", + "Co-ordination for Riot translators": "Koordinavimas Riot vertėjams" } diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index c71e991f..642d3875 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -1,164 +1,16 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s caur %(browserName)s un %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "darbojas arī <a href=\"http://apple.com/safari\">Safari</a> un <a href=\"http://opera.com\">Opera</a>.", - "A new version of Riot is available.": "Ir pieejama jauna Riot versija.", - "Add an email address above to configure email notifications": "Pievieno augšā epasta adresi, lai konfigurētu epasta notifikāciju paziņojumus", - "Advanced notification settings": "Īpašie notifikāciju uzstādījumi", - "All messages": "Visas ziņas", - "All messages (noisy)": "Visas ziņas (skaļi)", - "All Rooms": "Visas istabas", - "All notifications are currently disabled for all targets.": "Visi notifikāciju paziņojumi ir atspējoti visiem saņēmējiem.", - "An error occurred whilst saving your email notification preferences.": "Radās kļūda saglabājot tavus epasta notifikāciju ziņu uzstādījumus.", - "Call invitation": "Ielūguma zvans", - "Cancel": "Atcelt", - "Cancel Sending": "Atcelt sūtīšanu", - "Can't update user notification settings": "Nav iespējams atjaunot lietotāja notifikāciju ziņu uzstādījumus", - "Changelog": "Izmaiņu saraksts", - "Close": "Aizvērt", - "Collapse panel": "Aizvērt apgabalu", - "Collecting app version information": "Tiek apkopota programmas versijas informācija", - "Collecting logs": "Tiek apkopoti logfaili", - "Couldn't find a matching Matrix room": "Nav iespējams noteikt atbilstošo Matrix istabu", - "Custom Server Options": "Īpaši servera uzstādījumi", - "customServer_text": "Tu vari izmantot īpašus servera uzstādījumus, lai pierakstītos citos Matrix serveros, norādot atšķirīgu servera URL adresi.<br/>Tas atļaus Tev izmantot Riot ar jau eksistējošu Matrix kontu citā serverī.<br/><br/>Tu vari norādīt arī īpašu identitātes serveri, bet tad nevarēsi uzaicināt lietotājus pēc epasta adreses,kā arī pēc tās tikt uzaicināts/a.", - "Discussion of the Identity Service API": "Diskusija par identitātes servisa API", - "delete the alias.": "dzēst aizstājējvārdu.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Dzēst istabas aizstājējvārdu %(alias)s un dzēst %(name)s no kataloga?", - "Describe your problem here.": "Apraksti savu problēmu šeit.", - "Direct Chat": "Tiešais čats", - "Directory": "Katalogs", - "Dismiss": "Noņemt", - "Download this file": "Lejupielādēt šo failu", - "Enable audible notifications in web client": "Iespējot skaņas paziņojumus web klienta programmā", - "Enable desktop notifications": "Iespējot darbvirsmas notifikāciju paziņojumus", - "Enable email notifications": "Iespējot epasta notifikāciju paziņojumus", - "Enable notifications for this account": "Iespējot notifikāciju paziņojumus šim kontam", - "Enable them now": "Iespējot tos tagad", - "Enter keywords separated by a comma:": "Ievadi atslēgvārdus, atdalītus ar komatu:", - "Error": "Kļūda", - "Error saving email notification preferences": "Kļūda saglabājot epasta notifikāciju paziņojumu uzstādījumus", - "#example": "#piemērs", - "Expand panel": "Izvērst apgabalu", - "Failed to add tag %(tagName)s to room": "Neizdevās pievienot birku %(tagName)s istabai", - "Failed to change settings": "Neizdevās mainīt uzstādījumus", - "Failed to forget room %(errCode)s": "Neizdevās \"aizmirst\" istabu %(errCode)s", - "Failed to update keywords": "Neizdevās atjaunot atslēgvārdus", - "Failed to get protocol list from Home Server": "Neizdevās iegūt protokolu sarakstu no mājas servera", - "Failed to get public room list": "Neizdevās iegūt publisko istabu sarakstu", - "Failed to remove tag %(tagName)s from room": "Neizdevās dzēst istabas birku %(tagName)s", - "Failed to send report: ": "Neizdevās nosūtīt atskaiti: ", - "Failed to set direct chat tag": "Neizdevās uzstādīt birku tiešajam čatam", - "Continue": "Turpināt", - "Failed to change password. Is your password correct?": "Neizdevās mainīt paroli. Vai tava parole ir pareiza?", - "Favourite": "Favorīts", - "Mute": "Apklusināt", - "Notifications": "Paziņojumi", - "OK": "LABI", - "Operation failed": "Darbība neizdevās", - "Remove": "Dzēst", - "Search": "Meklēt", - "unknown error code": "nezināms kļūdas kods", - "Monday": "Pirmdiena", - "Tuesday": "Otrdiena", - "Wednesday": "Trešdiena", - "Thursday": "Ceturtdiena", - "Friday": "Piektdiena", - "Saturday": "Sestdiena", - "Sunday": "Svētdiena", - "powered by Matrix": "spēcināts ar Matrix", - "Failed to set Direct Message status of room": "Neizdevās iestatīt istabas tiešo ziņu statusu", - "Fetching third party location failed": "Neizdevās iegūt trešās puses atrašanās vietu", - "Files": "Faili", - "Filter room names": "Filtrēt pēc istabu nosaukuma", - "Forget": "\"Aizmirst\"", - "Forward Message": "Pārsūtīt ziņu", - "Guests can join": "Viesi var pievienoties", - "Hide panel": "Slēpt apgabalu", - "(HTTP status %(httpStatus)s)": "(HTTP statuss %(httpStatus)s)", - "I understand the risks and wish to continue": "Es saprotu riskus un vēlos turpināt", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Problēmu diagnosticēšanas ietvaros, šī klienta logfaili tiks nosūtīti kopā ar šo kļūdas paziņojumu. Ja vēlies nosūtīt vienīgi zemākesošo tekstu, lūdzu atķeksē:", - "Invite to this room": "Uzaicināt uz šo istabu", - "Keywords": "Atslēgvārdi", - "Leave": "Atstāt", - "Login": "Pierakstīties", - "Loading bug report module": "Ielādējas kļūdas ziņojumu modulis", - "Low Priority": "Zema prioritāte", - "Members": "Biedri", - "Mentions only": "Vienīgi atsauces", - "Messages containing my display name": "Ziņas, kuras satur manu redzamo vārdu", - "Messages containing <span>keywords</span>": "Ziņas,kuras satur <span>atslēgvārdus</span>", - "Messages containing my user name": "Ziņas, kuras satur manu lietotājvārdu", - "Messages in group chats": "Ziņas grupas čatos", - "Messages in one-to-one chats": "Ziņas viens-pret-vienu čatos", - "Messages sent by bot": "Botu nosūtītās ziņas", - "more": "vairāk", - "No rooms to show": "Nav istabu, ko parādīt", - "Noisy": "Trokšņains", - "Notification targets": "Notifikācijas paziņojuma mērķi", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Paziņojumi par šādiem atslēgvārdiem atbilst noteikumiem, kurus šeit nevar parādīt:", - "Notify for all other messages/rooms": "Paziņot par visām citām ziņām/istabām", - "Notify me for anything else": "Paziņot man par jebko citu", - "Off": "Izslēgts", - "On": "Ieslēgts", - "Permalink": "Pastāvīgā saite", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Lūdzu, apraksti kļūdu. Ko Tu darīji? Kas tika gaidīts, lai notiktu? Kas rezultātā notika?", - "Please describe the bug and/or send logs.": "Lūdzu apraksti kļūdu un/vai nosūti logfailus.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Lūdzu instalē <a href=\"https://www.google.com/chrome\">Chrome</a> vai <a href=\"https://getfirefox.com\">Firefox</a> pārlūku labākai pārlūkošanas pieredzei.", - "Quote": "Citāts", - "Reject": "Noraidīt", - "Remove %(name)s from the directory?": "Dzēst %(name)s no kataloga?", - "remove %(name)s from the directory.": "dzēst %(name)s no kataloga.", - "Remove from Directory": "Dzēst no kataloga", - "Report a bug": "Paziņot par kļūdu", - "Resend": "Nosūtīt atkārtoti", + "Custom Server Options": "Iestatāmās servera opcijas", + "Discussion of the Identity Service API": "Diskusija par Identitātes servisa API", + "Dismiss": "Atteikt", + "powered by Matrix": "Tiek darbināta ar Matrix", "Riot Desktop on %(platformName)s": "Riot darbvirsma %(platformName)s", - "Riot does not know how to join a room on this network": "Riot neatpazina iespēju pievienoties istabai šajā tīklā", "Riot is not supported on mobile web. Install the app?": "Riot netiek atbalstīts mobilajā versijā. Instalēt aplikāciju?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot izmanto daudzas īpašās pārlūka iespējas, no kurām dažas var nebūt pieejamas vai ir eksperimentālas tavā pašreizējā pārlūkā.", - "Room not found": "Istaba nav atrasta", - "Search…": "Meklēt…", - "Search for a room": "Meklēt istabu", - "Send": "Nosūtīt", - "Send logs": "Nosūtīt logfailus", - "Source URL": "Avota URL adrese", - "Sorry, your browser is <b>not</b> able to run Riot.": "Atvaino, diemžēl tavs pārlūks <b>nespēj</b> darboties ar Riot.", - "The Home Server may be too old to support third party networks": "Mājas serveris var būt pārāk novecojis, lai atbalstītu trešo pušu tīmekļa resurursus", - "There are advanced notifications which are not shown here": "Ir īpašie notifikāciju paziņojumi, kuri šeit nav redzami", - "The server may be unavailable or overloaded": "Serveris var nebūt pieejams vai ir pārslogots", - "This Room": "Šī istaba", - "Unable to fetch notification target list": "Nav iespējams iegūt notifikāciju paziņojumu mērķu sarakstu", - "Unable to join network": "Nav iespējams pievienoties tīmeklim", - "Unable to look up room ID from server": "Nav iespējams iegūt istabas ID no servera", - "Unavailable": "Nav pieejams", - "Unhide Preview": "Nerādīt priekšskatījumu", "Unknown device": "Nezināma ierīce", - "Unnamed room": "Nezināma istaba", - "Update": "Atjaunot", - "Uploaded on %(date)s by %(user)s": "Augšuplādēts %(date)s no %(user)s", - "Uploading report": "Augšuplādē atskaiti", - "View Decrypted Source": "Skatīt atšifrētu avotu", - "View Source": "Skatīt avotu", - "What's New": "Kas jauns", - "What's new?": "Kas jauns?", - "Waiting for response from server": "Gaida atbildi no servera", - "When I'm invited to a room": "Kad esmu uzaicināts/a istabā", - "World readable": "Lasāms pasaulei", - "You cannot delete this image. (%(code)s)": "Tu nevari dzēst šo attēlu. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Tu nevari dzēst šo ziņu. (%(code)s)", - "You are not receiving desktop notifications": "Tu nesaņem darbvirsmas notifikāciju paziņojumus", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Tu, iespējams, konfigurēji tās kādā citā klientā, nevis Riot. Tu nevari pielāgot tos Riot, bet tie joprojām ir spēkā", - "Today": "Šodien", - "Yesterday": "Vakar", - "Warning": "Brīdinājums", - "Checking for an update...": "Lūkojamies pēc atjauninājuma...", - "Error encountered (%(errorDetail)s).": "Notika kļūda (%(errorDetail)s).", - "No update available.": "Atjauninājumi nav pieejami.", - "Downloading update...": "Lejupielādējam atjauninājumus...", - "You need to be using HTTPS to place a screen-sharing call.": "Tev ir nepieciešams izmantot HTTPS savienojumu, lai izmantotu ekrāna kopīgošanas zvanu.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Tavā pašreizējā pārlūkā aplikācijas izskats un uzvedība var būt pilnīgi neatbilstoša, kā arī dažas no visām funkcijām var nedarboties. Ja vēlies turpināt izmantot šo pārlūku, Tu vari arī turpināt, apzinoties, ka šajā gadījumā esi viens/a ar iespējamo problēmu!", - "Welcome to Riot.im": "Laipni lūdzam Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & sistēma, spēcināta ar [matrix]", - "Search the room directory": "Meklēt istabu katalogu", + "You need to be using HTTPS to place a screen-sharing call.": "Lai izmantotu ekrāna kopīgošanas zvanu, nepieciešams izmantot HTTPS savienojumu.", + "Welcome to Riot.im": "Esiet gaidīti Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & kopdarbošanās sistēma uz [matrix] bāzes", + "Search the room directory": "Meklēt istabu katalogā", "Chat with Riot Bot": "Pačatot ar Riot botu", "Get started with some tips from Riot Bot!": "Iepazīsties ar dažiem knifiem no Riot bota!", "General discussion about Matrix and Riot": "Galvenā diskusija par Matrix un Riot", @@ -167,29 +19,35 @@ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk čats", "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk čats", "Matrix technical discussions": "Matrix tehniskās diskusijas", - "Running Matrix services": "Izmantot Matrix pakalpojumus", - "Community-run support for Synapse": "Komūnas atbalsts Synapse", - "Admin support for Dendrite": "Administrācijas atbalsts Dendrite", - "Announcements about Synapse releases": "Paziņojumi par Synapse izlaidumiem", + "Running Matrix services": "Matrix pakalpojumu izmantošana", + "Community-run support for Synapse": "\"Synapse\" komūnas nodrošināts atbalsts", + "Admin support for Dendrite": "Administrotora atbalsts \"Dendrite\"", + "Announcements about Synapse releases": "Paziņojumi par \"Synapse\" izlaidumiem", "Support for those using and running matrix-appservice-irc": "Atbalsts tiem, kuri izmanto matrix-appservice-irc", - "Building services on Matrix": "Pakalpojumu būvēšana uz Matrix", + "Building services on Matrix": "Uz Matrix bāzētu pakalpojumu izveide", "Support for those using the Matrix spec": "Atbalsts tiem, kuri izmanto Matrix specifikācijas", - "Design and implementation of E2E in Matrix": "Dizains un E2E implementācija Matrix", - "Implementing VR services with Matrix": "VR servisu implementācija Matrix", - "Implementing VoIP services with Matrix": "VoIP pakalpojumu implementācija Matrix", - "Support for those using, running and writing other bridges": "Atbalsts tiem, kuri izmanto un raksta citus \"tilta\" risinājumus", - "Contributing code to Matrix and Riot": "Dot ieguldījumu Matrix and Riot kodā", + "Design and implementation of E2E in Matrix": "E2E arhitektūra un iedzīvināšana Matrix", + "Implementing VR services with Matrix": "VR pakalpojumu iedzīvināšana Matrix", + "Implementing VoIP services with Matrix": "VoIP pakalpojumu iedzīvināšana Matrix", + "Support for those using, running and writing other bridges": "Atbalsts tiem, kuri izmanto un rada citus \"tiltu\" risinājumus", + "Contributing code to Matrix and Riot": "Dot ieguldījumu Matrix and Riot kodā un tulkojumā", "Dev chat for the Riot/Web dev team": "Riot/Web izstrādātāju komandas čats", "Dev chat for the Dendrite dev team": "Dendrite izstrādatāju komandas čats", - "Co-ordination for Riot/Web translators": "Riot/Web tulkotāju koordinācija", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix sistēmā pastāv neskaitāmas neatkarīgas vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter utml.) piesaistītas istabas. Ar tām vari iepazīties katalogā!", - "You have successfully set a password!": "Tu veiksmīgi nomainīji paroli!", - "You can now return to your account after signing out, and sign in on other devices.": "Tu vari tagad atgriezties savā kontā pēc izrakstīšanās, un pierakstīties no citām ierīcēm.", - "Please set a password!": "Lūdzu iestati paroli!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Tas atļaus Tev atgriezties savā kontā pēc izrakstīšanās, un pierakstīties no citām ierīcēm.", - "You have successfully set a password and an email address!": "Tu veiksmīgi iestatīji paroli un epasta adresi!", - "Remember, you can always set an email address in user settings if you change your mind.": "Atceries, ka Tu vienmēr vari iestatīt epasta adresi lietotāja uzstādījumos, ja mainīsi domas.", - "To return to your account in future you need to <u>set a password</u>": "Lai nākotnē atgrieztos savā kontā, tev būs nepieciešams <u>iestatīt paroli</u>", - "Set Password": "Iestatīt paroli", - "Couldn't load home page": "Neizdevās ielādēt sākumlapu" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix-ā pastāv daudzas neatkarīgas un/vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter u.tml.) piesaistītas istabas. Ieskaties katalogā!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.<br> Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.<br/><br/>Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Varat izmantot pielāgotās servera opcijas, lai pierakstītos citos Matrix serveros, norādot citu mājas servera URL. Tas ļauj jums izmantot Riot ar esošu Matrix kontu citā mājas serverī.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Varat arī iestatīt pielāgotu identitātes serveri, bet jūs nevarēsiet uzaicināt lietotājus izmantojot e-pasta adresi, kā arī tikt uzaicināts pēc e-pasta adreses.", + "Sign In": "Ienākt", + "Create Account": "Izveidot kontu", + "Need help?": "Nepieciešama palīdzība?", + "Explore rooms": "Atklāt istabas", + "Room Directory": "Istabu Katalogs", + "Unexpected error preparing the app. See console for details.": "Negaidīta kļūda, sagatavojot lietotni. Sīkāku informāciju skatiet konsolē.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Šai Riot instalācijai ir nekorekta servera konfigurācija. Ja esat administrators, lūdzu, izlabojiet tālāk norādīto kļūdu", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Nederīga konfigurācija: var norādīt tikai vienu no default_server_config, default_server_name, vai default_hs_url.", + "Invalid configuration: no default server specified.": "Nekorekta konfigurācija: nav norādīts noklusējuma serveris.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Jūsu Riot konfigurācijā ir nederīgs JSON. Lūdzu, izlabojiet problēmu un ielādējiet lapu atkārtoti.", + "The message from the parser is: %(message)s": "Ziņojums no parsētāja ir: %(message)s", + "Invalid JSON": "Nederīgs JSON", + "Your Riot is misconfigured": "Jūsu Riot ir nepareizi konfigurēts" } diff --git a/src/i18n/strings/ml.json b/src/i18n/strings/ml.json index 76084502..dd8df9ad 100644 --- a/src/i18n/strings/ml.json +++ b/src/i18n/strings/ml.json @@ -1,150 +1,12 @@ { - "Add an email address above to configure email notifications": "ഇ മെയില് അറിയിപ്പുകൾ ലഭിക്കാന് മുകളില് ഇ-മെയില് വിലാസം നല്കൂ", - "All messages": "എല്ലാ സന്ദേശങ്ങളും", - "All messages (noisy)": "എല്ലാ സന്ദേശങ്ങളും (ഉച്ചത്തിൽ)", "%(appName)s via %(browserName)s on %(osName)s": "%(osName)sല് %(browserName)s വഴി %(appName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">സഫാരിയിലും</a>പിന്നെ <a href=\"http://opera.com\">ഓപ്പേറയിലും</a>പ്രവര്ത്തിക്കുന്നു.", - "A new version of Riot is available.": "റയട്ടിന്റെ ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്.", - "Advanced notification settings": "അറിയപ്പുകളുടെ സങ്കീര്ണമായ സജ്ജീകരണങ്ങള്", - "All Rooms": "എല്ലാ മുറികളും കാണുക", - "All notifications are currently disabled for all targets.": "അറിയിപ്പുകളെല്ലാം നിര്ത്തിയിരിയ്ക്കുന്നു.", - "An error occurred whilst saving your email notification preferences.": "ഇ-മെയില് വഴി അറിയിയ്ക്കാനുള്ള നിങ്ങളുടെ സജ്ജീകരണങ്ങള് സൂക്ഷിക്കുന്നതില് ഒരു പ്രശ്നമുണ്ടായി.", - "Call invitation": "വിളിയ്ക്കുന്നു", - "Cancel": "റദ്ദാക്കുക", - "Cancel Sending": "അയയ്ക്കുന്നത് റദ്ദാക്കുക", - "Can't update user notification settings": "ഉപയോക്താവിനെ അറിയിയ്ക്കാനുള്ള സജ്ജീകരണം പുതുക്കാനായില്ല", - "Changelog": "മാറ്റങ്ങളുടെ നാള്വഴി", - "Close": "അടയ്ക്കുക", - "Collapse panel": "പാനല് കൊളാപ്സ് ചെയ്യുക", - "Collecting app version information": "ആപ്പ് പതിപ്പു വിവരങ്ങള് ശേഖരിക്കുന്നു", - "Collecting logs": "നാള്വഴി ശേഖരിക്കുന്നു", - "Couldn't find a matching Matrix room": "ആവശ്യപ്പെട്ട മാട്രിക്സ് റൂം കണ്ടെത്താനായില്ല", "Custom Server Options": "കസ്റ്റം സെര്വര് ഓപ്ഷനുകള്", - "delete the alias.": "ഏലിയാസ് നീക്കം ചെയ്യുക.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "റൂം ഏലിയാസ് %(alias)s നീക്കം ചെയ്യുകയും %(name)s കള് ഡയറക്ടറിയില് നിന്നും നീക്കം ചെയ്യുകയും ചെയ്യുക ?", - "Describe your problem here.": "നിങ്ങള് നേരിട്ട പ്രശ്നം ഇവിടെ വിവരിക്കാം.", - "Direct Chat": "നേരിട്ടുള്ള ചാറ്റ്", - "Directory": "ഡയറക്ടറി", "Dismiss": "ഒഴിവാക്കുക", - "Download this file": "ഈ ഫയല് ഡൌണ്ലോഡ് ചെയ്യുക", - "Enable audible notifications in web client": "വെബ് പതിപ്പിലെ അറിയിപ്പുകള് കേള്ക്കാവുന്നതാക്കുക", - "Enable desktop notifications": "ഡെസ്ക്ടോപ്പ് നോട്ടിഫിക്കേഷനുകള് ഇനേബിള് ചെയ്യുക", - "Enable email notifications": "ഇമെയില് നോട്ടിഫിക്കേഷനുകള് ഇനേബിള് ചെയ്യുക", - "Enable notifications for this account": "ഈ അക്കൌണ്ടില് നോട്ടിഫിക്കേഷനുകള് ഇനേബിള് ചെയ്യുക", - "Enable them now": "ഇപ്പോള് ഇനേബിള് ചെയ്യുക", - "Enter keywords separated by a comma:": "കീവേഡുകളെ കോമ കൊണ്ട് വേര്ത്തിരിച്ച് ടൈപ്പ് ചെയ്യുക :", - "Error": "എറര്", - "Error saving email notification preferences": "ഇമെയില് നോട്ടിഫിക്കേഷന് സജ്ജീകരണങ്ങള് സൂക്ഷിക്കവേ എറര് നേരിട്ടു", - "#example": "#ഉദാഹരണം", - "Expand panel": "പാനല് വലുതാക്കുക", - "Failed to add tag %(tagName)s to room": "റൂമിന് %(tagName)s എന്ന ടാഗ് ആഡ് ചെയ്യുവാന് സാധിച്ചില്ല", - "Failed to change settings": "സജ്ജീകരണങ്ങള് മാറ്റുന്നവാന് സാധിച്ചില്ല", - "Failed to forget room %(errCode)s": "%(errCode)s റൂം ഫോര്ഗെറ്റ് ചെയ്യുവാന് സാധിച്ചില്ല", - "Failed to update keywords": "കീവേഡുകള് പുതുക്കുവാന് സാധിച്ചില്ല", - "Failed to get protocol list from Home Server": "ഹോം സെര്വറില് നിന്ന് പ്രോട്ടോക്കോള് ലിസ്റ്റ് നേടാന് സാധിച്ചില്ല", - "Failed to get public room list": "പബ്ലിക്ക് റൂം ലിസ്റ്റ് നേടാന് സാധിച്ചില്ല", - "Failed to remove tag %(tagName)s from room": "റൂമില് നിന്നും %(tagName)s ടാഗ് നീക്കം ചെയ്യുവാന് സാധിച്ചില്ല", - "Failed to send report: ": "റിപ്പോര്ട്ട് അയക്കുവാന് സാധിച്ചില്ല : ", - "Failed to set direct chat tag": "ഡയറക്റ്റ് ചാറ്റ് ടാഗ് സെറ്റ് ചെയ്യാനായില്ല", - "Failed to set Direct Message status of room": "റൂമില് നിന്നും ഡയറക്റ്റ് മെസേജ് സ്റ്റാറ്റസ് സജ്ജീകരിക്കാന് കഴിഞ്ഞില്ല", - "Favourite": "പ്രിയപ്പെട്ടവ", - "Fetching third party location failed": "തേഡ് പാര്ട്ടി ലൊക്കേഷന് ഫെച്ച് ചെയ്യാന് കഴിഞ്ഞില്ല", - "Files": "ഫയലുകള്", - "Filter room names": "റൂം പേരുകള് ഫില്ട്ടര് ചെയ്യുക", - "Forget": "മറക്കുക", - "Forward Message": "സന്ദേശം ഫോര്വേഡ് ചെയ്യുക", - "Guests can join": "അതിഥികള്ക്കും പ്രവേശിക്കാം", - "Hide panel": "പാനല് ഒളിപ്പിക്കുക", - "(HTTP status %(httpStatus)s)": "(HTTP സ്റ്റാറ്റസ് %(httpStatus)s)", - "I understand the risks and wish to continue": "കുഴപ്പമാകാന് സാധ്യതയുണ്ടെന്നെനിയ്ക്കു് മനസ്സിലായി, എന്നാലും മുന്നോട്ട് പോകുക", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "നേരിട്ട പ്രശ്നം മനസ്സിലാക്കാന്, ഈ ക്ലയന്റില് നിന്നുള്ള നാള്വഴികള് ബഗ് റിപ്പോര്ട്ടിനൊപ്പം അയയ്ക്കും. അതിനു പകരം ഈ എഴുത്ത് മാത്രം അയച്ചാല് മതിയെങ്കില് ദയവായി ശരിച്ഛിഹ്നം ഒഴിവാക്കുക:", - "Invite to this room": "ഈ റൂമിലേക്ക് ക്ഷണിക്കുക", - "Keywords": "കീവേഡുകള്", - "Leave": "വിടവാങ്ങുക", - "Login": "ലോഗിന്", - "Loading bug report module": "പിഴവുകള് അറിയിയ്ക്കാനുള്ള ഘടകം ചേര്ക്കുന്നു", - "Low Priority": "താഴ്ന്ന പരിഗണന", - "Members": "അംഗങ്ങള്", - "Mentions only": "മെന്ഷനുകള് മാത്രം", - "Messages containing my display name": "എന്റെ പേര് അടങ്ങിയിരിക്കുന്ന സന്ദേശങ്ങള്ക്ക്", - "Messages containing <span>keywords</span>": "<span>കീവേഡുകള്</span>അടങ്ങിയ സന്ദേശങ്ങള്ക്ക്", - "Messages containing my user name": "എന്റെ യൂസര് നെയിം അടങ്ങിയിരിക്കുന്ന സന്ദേശങ്ങള്ക്ക്", - "Messages in group chats": "ഗ്രൂപ്പ് ചാറ്റുകളിലെ സന്ദേശങ്ങള്ക്ക്", - "Messages in one-to-one chats": "നേര്ക്കുനേര് ചാറ്റിലെ സന്ദേശങ്ങള്ക്ക്", - "Messages sent by bot": "ബോട്ട് അയയ്ക്കുന്ന സന്ദേശങ്ങള്ക്ക്", - "more": "കൂടുതല്", - "Mute": "നിശ്ശബ്ദം", - "No rooms to show": "കാണിക്കാന് റൂമുകളില്ല", - "Noisy": "ഉച്ചത്തില്", - "Notification targets": "നോട്ടിഫിക്കേഷന് ടാര്ഗെറ്റുകള്", - "Notifications": "നോട്ടിഫിക്കേഷനുകള്", - "Operation failed": "ശ്രമം പരാജയപ്പെട്ടു", - "Permalink": "പെര്മാലിങ്ക്", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "ബഗ് വിശദീകരിക്കുക. എന്ത് ചെയ്തപ്പോഴാണ് വന്നത് ? എന്തായിരുന്നു പ്രതീക്ഷിച്ചിരുന്നത് ? ശരിക്കും എന്താണ് സംഭവിച്ചത് ?", - "Please describe the bug and/or send logs.": "ബഗ് വിശദീകരിക്കുക , കൂടെ / അല്ലെങ്കില് നാള്വഴികളും അയക്കുക.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "ഏറ്റവും മികച്ച ഉപയോഗത്തിനായി <a href=\"https://www.google.com/chrome\">ഗൂഗിള് ക്രോം</a>ബ്രൌസറോ അല്ലെങ്കില് <a href=\"https://getfirefox.com\">ഫയര്ഫോക്സ്</a> ബ്രൌസറോ ഇന്സ്റ്റാള് ചെയ്യൂ.", "powered by Matrix": "മാട്രിക്സില് പ്രവര്ത്തിക്കുന്നു", - "Quote": "ഉദ്ധരിക്കുക", - "Reject": "നിരസിക്കുക", - "Remove %(name)s from the directory?": "%(name)s കള് ഡയറക്റ്ററിയില് നിന്നും മാറ്റണോ ?", - "Remove": "നീക്കം ചെയ്യുക", - "Remove from Directory": "ഡയറക്റ്ററിയില് നിന്നും നീക്കം ചെയ്യുക", - "Report a bug": "ബഗ് റിപ്പോര്ട്ട് ചെയ്യുക", - "Resend": "വീണ്ടും അയയ്ക്കുക", "Riot Desktop on %(platformName)s": "%(platformName)s ലെ റയട്ട് ഡെസ്ക്ടോപ്പ്", - "Riot does not know how to join a room on this network": "ഈ നെറ്റ്വര്ക്കിലെ ഒരു റൂമില് എങ്ങനെ അംഗമാകാമെന്ന് റയട്ടിന് അറിയില്ല", "Riot is not supported on mobile web. Install the app?": "മൊബൈലില് റയട്ട് വെബ് പിന്തുണ ഇല്ല. ആപ്പ് ഇന്സ്റ്റാള് ചെയ്യാം ?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "റയട്ട് നൂതന ബ്രൌസര് ഫീച്ചറുകള് ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ ബ്രൌസറില് അവയില് പലതും ഇല്ല / പൂര്ണ്ണമല്ല .", - "Room not found": "റൂം കണ്ടെത്താനായില്ല", - "Search": "തിരയുക", - "Search…": "തിരയുക…", - "Search for a room": "ഒരു റൂം തിരയുക", - "Send": "അയയ്ക്കുക", - "Send logs": "നാള്വഴി അയയ്ക്കുക", - "Source URL": "സോഴ്സ് യു ആര് എല്", - "Sorry, your browser is <b>not</b> able to run Riot.": "ക്ഷമിക്കണം, നിങ്ങളുടെ ബ്രൌസര് റയട്ട് പ്രവര്ത്തിപ്പിക്കാന് <b>പര്യാപ്തമല്ല</b>.", - "The Home Server may be too old to support third party networks": "തേഡ് പാര്ട്ടി നെറ്റ്വര്ക്കുകളെ പിന്തുണക്കാത്ത വളരെ പഴയ ഹോം സെര്വര് ആയേക്കാം", - "There are advanced notifications which are not shown here": "ഇവിടെ കാണിക്കാത്ത നൂതന നോട്ടിഫിക്കേഷനുകള് ഉണ്ട്", - "The server may be unavailable or overloaded": "സെര്വര് ലഭ്യമല്ല അല്ലെങ്കില് ഓവര്ലോഡഡ് ആണ്", - "This Room": "ഈ മുറി", - "Unable to fetch notification target list": "നോട്ടിഫിക്കേഷന് ടാര്ഗെറ്റ് ലിസ്റ്റ് നേടാനായില്ല", - "Unable to join network": "നെറ്റ്വര്ക്കില് ജോയിന് ചെയ്യാന് കഴിയില്ല", - "Unable to look up room ID from server": "സെര്വറില് നിന്നും റൂം ഐഡി കണ്ടെത്താനായില്ല", - "Unavailable": "ലഭ്യമല്ല", - "Unhide Preview": "പ്രിവ്യു കാണിക്കുക", "Unknown device": "അപരിചിത ഡിവൈസ്", - "unknown error code": "അപരിചിത എറര് കോഡ്", - "Unnamed room": "പേരില്ലാത്ത റൂം", - "Update": "പുതുക്കുക", - "Uploaded on %(date)s by %(user)s": "%(date)s ല് %(user)s അപ്ലോഡ് ചെയ്തത്", - "Uploading report": "റിപ്പോര്ട്ട് അപ്ലോഡ് ചെയ്യുന്നു", - "View Decrypted Source": "ഡീക്രിപ്റ്റ് ചെയ്ത സോഴ്സ് കാണുക", - "View Source": "സോഴ്സ് കാണുക", - "What's New": "പുതിയ വിശേഷങ്ങള്", - "What's new?": "എന്തൊക്കെ പുതിയ വിശേഷങ്ങള് ?", - "Waiting for response from server": "സെര്വറില് നിന്നുള്ള പ്രതികരണത്തിന് കാക്കുന്നു", - "When I'm invited to a room": "ഞാന് ഒരു റൂമിലേക്ക് ക്ഷണിക്കപ്പെടുമ്പോള്", - "You cannot delete this image. (%(code)s)": "നിങ്ങള്ക്ക് ഈ ചിത്രം നീക്കം ചെയ്യാനാകില്ല. (%(code)s)", - "You cannot delete this message. (%(code)s)": "നിങ്ങള്ക്ക് ഈ സന്ദേശം നീക്കം ചെയ്യാനാകില്ല. (%(code)s)", - "You are not receiving desktop notifications": "നിങ്ങള്ക്ക് ഇപ്പോള് ഡെസ്ക്ടോപ്പ് നോട്ടിഫിക്കേഷനുകള് ലഭിക്കുന്നില്ല", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "ഇവ റയട്ടല്ലാതെ മറ്റൊരു ക്ലയന്റില് വച്ച് കോണ്ഫിഗര് ചെയ്തതാകാം. റയട്ടില് അവ ലഭിക്കില്ല, എങ്കിലും അവ നിലവിലുണ്ട്", - "Sunday": "ഞായര്", - "Monday": "തിങ്കള്", - "Tuesday": "ചൊവ്വ", - "Wednesday": "ബുധന്", - "Thursday": "വ്യാഴം", - "Friday": "വെള്ളി", - "Saturday": "ശനി", - "Today": "ഇന്ന്", - "Yesterday": "ഇന്നലെ", - "OK": "ശരി", - "Warning": "മുന്നറിയിപ്പ്", - "Checking for an update...": "അപ്ഡേറ്റ് ഉണ്ടോ എന്ന് തിരയുന്നു...", - "Error encountered (%(errorDetail)s).": "എറര് നേരിട്ടു (%(errorDetail)s).", - "No update available.": "അപ്ഡേറ്റുകള് ലഭ്യമല്ല.", - "Downloading update...": "അപ്ഡേറ്റ് ഡൌണ്ലോഡ് ചെയ്യുന്നു...", "You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന് ഷെയറിങ്ങ് കോള് നടത്തണമെങ്കില് https ഉപയോഗിക്കണം.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "നിങ്ങളുടെ ഇപ്പോളത്തെ ബ്രൌസര് റയട്ട് പ്രവര്ത്തിപ്പിക്കാന് പൂര്ണമായും പര്യാപത്മല്ല. പല ഫീച്ചറുകളും പ്രവര്ത്തിക്കാതെയിരിക്കാം. ഈ ബ്രൌസര് തന്നെ ഉപയോഗിക്കണമെങ്കില് മുന്നോട്ട് പോകാം. പക്ഷേ നിങ്ങള് നേരിടുന്ന പ്രശ്നങ്ങള് നിങ്ങളുടെ ഉത്തരവാദിത്തത്തില് ആയിരിക്കും!", "Welcome to Riot.im": "റയട്ടിലേക്ക് സ്വാഗതം", "Search the room directory": "റൂം ഡയറക്റ്ററിയില് പരതുക", "Chat with Riot Bot": "റയട്ട് ബോട്ടുമായി ചാറ്റ് ചെയ്യുക", @@ -162,35 +24,14 @@ "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc ഉപയോഗിക്കുന്നവര്ക്കും റണ് ചെയ്യുന്നവര്ക്കുമുള്ള സപ്പോര്ട്ട്", "Support for those using the Matrix spec": "Matrix spec ഉപയോഗിക്കുന്നവര്ക്കുള്ള പിന്തുണ", "Design and implementation of E2E in Matrix": "മാട്രിക്സിലെ e2eയുടെ ഡിസൈനും ഇമ്പ്ലിമെന്റേഷനും", - "remove %(name)s from the directory.": "%(name)s ഡയറക്റ്ററിയില് നിന്ന് നീക്കം ചെയ്യുക.", - "World readable": "ആർക്കും വായിക്കാവുന്നത്", "Decentralised, encrypted chat & collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്ക്രിപ്റ്റഡ് ചാറ്റ് & മാട്രിക്സ് നല്കുന്ന കൊളാബൊറേഷന്", "Support for those using, running and writing other bridges": "മറ്റ് ബ്രിഡ്ജുകള് ഉപയോഗിക്കുന്ന, റണ് ചെയ്യുന്ന, എഴുതുന്നവര്ക്കുള്ള പിന്തുണ", "Contributing code to Matrix and Riot": "മാട്രിക്സിലേക്കും റയട്ടിലേക്കും കോഡ് സംഭാവന ചെയ്യാം", "Dev chat for the Riot/Web dev team": "റയട്ട്/വെബ് ഡെവലപ്പര് ടീമിനുള്ള dev chat", "Dev chat for the Dendrite dev team": "ഡെന്ഡ്രൈറ്റ് ഡെവലപ്പര് ടീമിനുള്ള dev chat", - "Co-ordination for Riot/Web translators": "റയട്ട്/വെബ് പരിഭാഷകരുടെ കൂട്ടായ്മ", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "മാട്രിക്സിലുള്ളതും പഴയ നെറ്റ്വര്ക്കുകളിലേക്ക് ( സ്ലാക്ക്, IRC, ഗിറ്റര് മുതലായവ ) ലിങ്ക് ചെയ്തതുമൊക്കെയായ ധാരാളം റൂമുകളുണ്ട്. ഡയറക്റ്ററി പരിശാധിക്കൂ!", - "Failed to change password. Is your password correct?": "രഹസ്യവാക്ക് മാറ്റാന് സാധിച്ചില്ല. രഹസ്യവാക്ക് ശരിയാണോ ?", - "You have successfully set a password!": "രഹസ്യവാക്ക് സജ്ജീകരിച്ചിരിക്കുന്നു!", - "You can now return to your account after signing out, and sign in on other devices.": "നിങ്ങള്ക്ക് ഇപ്പോള് സൈന് ഔട്ട് ചെയ്ത ശേഷവും നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് തിരികെ വരാം, അതു പോലെ മറ്റ് ഡിവൈസുകളില് സൈന് ഇന് ചെയ്യുകയുമാവാം.", - "Continue": "മുന്നോട്ട്", - "Please set a password!": "ദയവായി ഒരു രഹസ്യവാക്ക് ക്രമീകരിക്കുക!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "സൈന് ഔട്ട് ചെയ്ത ശേഷം വീണ്ടും നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് മടങ്ങി വരാനും, മറ്റ് ഡിവൈസുകളില് സൈന് ഇന് ചെയ്യാനും ഇത് സഹായിക്കും.", - "You have successfully set a password and an email address!": "ഇമെയില് വിലാസവും രഹസ്യവാക്കും വിജയകരമായി ക്രമീകരിച്ചിരിക്കുന്നു!", - "Remember, you can always set an email address in user settings if you change your mind.": "ഓര്ക്കുക, വേണ്ട സമയത്ത് യൂസര് സെറ്റിങ്സില് ഒരു ഇമെയില് വിലാസം നല്കാം.", - "To return to your account in future you need to <u>set a password</u>": "വീണ്ടും ഈ അക്കൌണ്ട് ഉപയോഗിക്കണമെങ്കില് <u>ഒരു രഹസ്യവാക്ക് സെറ്റ് ചെയ്യുക</u>", - "Set Password": "രഹസ്യവാക്ക് സജ്ജീകരിക്കുക", - "customServer_text": "മറ്റ് മാട്രിക്സ് സെര്വറുകളില് ലോഗിന് ചെയ്യാന് കസ്റ്റം സെര്വര് ഓപ്ഷനില് ഹോം സെര്വര് യു ആര് എല് വ്യക്തമാക്കുക.<br/>ഇത് വഴി മറ്റൊരു ഹോം സെര്വറില് ഉള്ള മാട്രിക്സ് അക്കൌണ്ട് റയട്ടില് ഉപയോഗിക്കാം.<br/><br/>അതു പോലെ, നിങ്ങള്ക്ക് കസ്റ്റം ഐഡന്റിറ്റി സെര്വറും ക്രമീകരിക്കാം. പക്ഷേ അപ്പോള് നിങ്ങള്ക്ക് ആരേയും ഇമെയില് വഴി ക്ഷണിക്കാനോ തിരിച്ചോ സാധിക്കില്ല.", - "Off": "ഓഫ്", - "On": "ഓണ്", - "Notify me for anything else": "ബാക്കി ഏതിനും എനിക്ക് അറിയിപ്പു നൽകുക", - "Notify for all other messages/rooms": "ബാക്കി എല്ലാ സന്ദേശങ്ങൾക്കും/റൂമുകൾക്കും അറിയിപ്പു നൽകുക", "Building services on Matrix": "മട്രിക്സിന്മേൽ സർവീസുകൾ പണിയുന്നു", "Implementing VR services with Matrix": "മട്രിക്സ് ഉപയോഗിച്ചു വി.അർ. സർവീസുകൾ നടപ്പിലാക്കുന്നു", "Implementing VoIP services with Matrix": "മേട്രിക്സിന്മേൽ VoIP സർവീസുകൾ നടപ്പിലാക്കുന്നു", - "Discussion of the Identity Service API": "ഐഡൻടിറ്റി സർവീസ് എപിഐ യെ പറ്റിയുള്ള ചർച്ച", - "Notifications on the following keywords follow rules which can’t be displayed here:": "ഈ പറയുന്ന കീവേർഡുകളെ പറ്റിയുള്ള അറിയിപ്പുകൾ പിൻതുടരുന്ന നിയമങ്ങൾ ഇവിടെ കാണിക്കുവാൻ സാധ്യമല്ല:", - "Back": "തിരികെ", - "Bug report sent": "ബഗ് റിപ്പോർട്ട് അയയ്ക്കുക" + "Discussion of the Identity Service API": "ഐഡൻടിറ്റി സർവീസ് എപിഐ യെ പറ്റിയുള്ള ചർച്ച" } diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index 71980bd2..97898f52 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -1,111 +1,34 @@ { - "Add an email address above to configure email notifications": "Legg til en epost adresse for å sette opp epost varsling", - "Advanced notification settings": "Avanserte varslingsinnstillinger", - "All messages": "Alle meldinger", - "All messages (noisy)": "Alle meldinger (høy)", - "All notifications are currently disabled for all targets.": "Alle varsler er deaktivert for alle mottakere.", - "An error occurred whilst saving your email notification preferences.": "En feil oppsto i forbindelse med lagring av epost varsel innstillinger.", - "Cancel Sending": "Avbryt sending", - "Can't update user notification settings": "Kan ikke oppdatere brukervarsel innstillinger", - "Close": "Lukk", - "Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> og <a href=\"http://opera.com\">Opera</a> fungerer også.", - "Call invitation": "Anropsinvitasjon", - "Collapse panel": "Skjul panel", - "Custom Server Options": "Tilpassede serveralternativer", - "customServer_text": "Du kan benytte de egendefinerte serveralternativene til å logge deg på andre Matrix-servere ved å spesifisere en annen Hjemmeserver-URL.<br/>Dette lar deg benytte Riot med en eksisterende Matrix konto på en annen hjemmeserver.<br/><br/>Du kan også angi en egendefinert identitetsserver, men du vil ikke kunne invitere brukere via e-post, eller bli invitert via e-post selv.", - "delete the alias.": "Slett aliaset.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rom alias %(alias)s og fjern %(name)s fra katalogen?", - "Direct Chat": "Direkte Chat", - "Directory": "Katalog", - "Download this file": "Last ned filen", - "Enable audible notifications in web client": "Aktiver lyd-varsel i webklient", - "Enable desktop notifications": "Aktiver skrivebordsvarsler", - "Enable email notifications": "Aktiver e-postvarsler", - "Enable notifications for this account": "Aktiver varsler for denne konto", - "Enable them now": "Aktiver dem nå", - "Enter keywords separated by a comma:": "Angi nøkkelord adskilt med komma:", - "Error": "Feil", - "Error saving email notification preferences": "Feil ved lagring av e-postvarselinnstillinger", - "#example": "#eksempel", - "Expand panel": "Utvid panel", - "Failed to add tag %(tagName)s to room": "Kunne ikke legge til tagg %(tagName)s til rom", - "Failed to change settings": "Kunne ikke endre innstillingene", - "Failed to forget room %(errCode)s": "Kunne ikke glemme rommet %(errCode)s", - "Failed to update keywords": "Kunne ikke oppdatere nøkkelord", - "Failed to get protocol list from Home Server": "Kunne ikke hente protokolliste fra Hjemme-Server", - "Failed to get public room list": "Kunne ikke hente offentlig romliste", - "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tagg %(tagName)s fra rommet", - "Failed to set direct chat tag": "Kunne ikke angi direkte chat-tagg", - "Failed to set Direct Message status of room": "Kunne ikke angi status for direkte melding i rommet", - "Favourite": "Favoritt", - "Fetching third party location failed": "Kunne ikke hente tredjeparts lokalisering", - "Files": "Filer", - "Filter room names": "Filtrer romnavn", - "Forget": "Glem", - "Guests can join": "Gjester kan bli med", - "I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker å fortsette", - "Invite to this room": "Inviter til dette rommet", - "Keywords": "Nøkkelord", - "Leave": "Forlat", - "Low Priority": "Lav Prioritet", - "Members": "Medlemmer", - "Messages containing my display name": "Meldinger som inneholder mitt visningsnavn", - "Messages containing my user name": "Meldinger som inneholder mitt brukernavn", - "Messages in group chats": "Meldinger i gruppesamtaler", - "Messages in one-to-one chats": "Meldinger i en-til-en samtaler", - "Messages sent by bot": "Meldinger sendt av bot", - "more": "mer", - "No rooms to show": "Ingen rom å vise", - "Noisy": "Bråkete", - "Notification targets": "Mål for varsel", - "Notifications": "Varsler", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsler på de følgende nøkkelordene følger regler som ikke kan vises her:", - "Notify for all other messages/rooms": "Varsler om alle andre meldinger/rom", - "Notify me for anything else": "Varsle meg om alt annet", - "Off": "Av", - "On": "På", - "Permalink": "Permanent lenke", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Vennligst installer <a href=\"https://www.google.com/chrome\">Chrome</a> eller <a href=\"https://getfirefox.com\">Firefox</a> for den beste opplevelsen.", - "powered by Matrix": "benytter seg av Matrix", - "Quote": "Sitat", - "Reject": "Avvis", - "Remove %(name)s from the directory?": "Fjern %(name)s fra katalogen?", - "Remove": "Fjern", - "remove %(name)s from the directory.": "fjern %(name)s fra katalogen.", - "Remove from Directory": "Fjern fra katalogen", - "Resend": "Send på nytt", - "Riot does not know how to join a room on this network": "Riot vet ikke hvordan man kan komme inn på et rom på dette nettverket", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot benytter mange avanserte nettleserfunksjoner, og noen av disse er ikke tilgjengelige eller er eksperimentelle på din nåværende nettleser.", - "Room not found": "Rommet ble ikke funnet", - "Search for a room": "Søk etter et rom", - "Source URL": "Kilde URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Beklager, din nettleser er <b>ikke</b> i stand til å kjøre Riot.", - "The Home Server may be too old to support third party networks": "Hjemme-serveren kan være for gammel til å støtte tredjeparts-nettverk", - "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her", - "The server may be unavailable or overloaded": "Serveren kan være utilgjengelig eller overbelastet", - "Unable to fetch notification target list": "Kunne ikke hente varsel-mål liste", - "Unable to join network": "Kunne ikke bli med i nettverket", - "Unable to look up room ID from server": "Kunne ikke slå opp rom-ID fra serveren", - "Unhide Preview": "Vis forhåndsvisning", - "unknown error code": "ukjent feilkode", - "Unnamed room": "Rom uten navn", - "Uploaded on %(date)s by %(user)s": "Lastet opp den %(date)s av %(user)s", - "View Decrypted Source": "Vis dekryptert kilde", - "View Source": "Vis kilde", - "When I'm invited to a room": "Når jeg blir invitert til et rom", - "World readable": "Lesbar for alle", - "You cannot delete this image. (%(code)s)": "Du kan ikke slette dette bildet. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne meldingen. (%(code)s)", - "You are not receiving desktop notifications": "Du mottar ikke skrivebords varsler", - "Messages containing <span>keywords</span>": "Meldinger som inneholder <span>nøkkelord</span>", - "Sunday": "Søndag", - "Monday": "Mandag", - "Tuesday": "Tirsdag", - "Wednesday": "Onsdag", - "Thursday": "Torsdag", - "Friday": "Fredag", - "Saturday": "Lørdag", - "Today": "I dag", - "Yesterday": "I går" + "Custom Server Options": "Server-instillinger", + "powered by Matrix": "Drevet av Matrix", + "Riot is not supported on mobile web. Install the app?": "Riot er ikke støttet av mobil-nettlesere. Ønsker De å innstalere appen?", + "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", + "Unknown device": "Ukjent enhet", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Du er nødt til å bruke HTTPS for å ha en samtale med skjermdeling.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "De kan benytte brukerdefinerte server-innstillinger for å kunne logge Dem inn på andre Matrix-servere ved å spesifisere en annen hjemmeserver-adresse. <br/> Dette tillater Dem til å bruke Riot med en eksisterende Matrix-konto på en annen hjemmeserver. <br/><br/> De kan i tillegg definere en egen hjemmeserver-identitet, men De kan da ikke invitere andre brukere via email, og De kan heller ikke bli invitert via email selv.", + "Dismiss": "Avvis", + "Welcome to Riot.im": "Velkommen til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert chat & sammabeid drevet av [matrix]", + "Search the room directory": "Søk i alle rom", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Allerede finnes det alskens rom i Matrix, sammenkoblet til eksisterende nettverk (Slack, IRC, Gitter osv.) eller selvstendig. Dersom De formoder, kan De kikke på utvalget!", + "Chat with Riot Bot": "Chat med Riot Bot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan bruke instillinger for «egendefinert tjener» til å logge inn på andre Matrix tjenere ved å spesifisere en annen URL. Dette lar deg bruke Riot med en eksisterende Matrix konto på en annen hjemmetjener.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan også bruke din egen identitetstjener, men du kommer ikke til å kunne invitere andre brukere med e-post, eller bli invitert med e-post selv.", + "Get started with some tips from Riot Bot!": "Kom i gang med noen tips fra Riot Bot!", + "General discussion about Matrix and Riot": "Generelle diskusjoner om Matrix og Riot", + "Discussion of all things Matrix!": "Diskusjoner om alt Matrix!", + "Riot/Web & Desktop chat": "Riot/Web- & Skrivebordsprat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk", + "Matrix technical discussions": "Tekniske Matrix-diskusjoner", + "Running Matrix services": "Kjør Matrix servicer", + "Community-run support for Synapse": "Samfunnsholdt hjelpetjeneste for Synapse", + "Admin support for Dendrite": "Administrator hjelp for Dendrite", + "Announcements about Synapse releases": "Kunngjøring om Synapse utgivelser", + "Sign In": "Logg inn", + "Create Account": "Lag konto", + "Need help?": "Trenger du hjelp?", + "Room Directory": "Alle rom", + "Explore rooms": "Se alle rom" } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index d0f5986d..ce17051e 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1,151 +1,15 @@ { - "Add an email address above to configure email notifications": "Voeg een e-mailadres toe om e-mailmeldingen te ontvangen", - "Advanced notification settings": "Geavanceerde meldingsinstellingen", - "All messages": "Alle berichten", - "All messages (noisy)": "Alle berichten (luid)", - "All notifications are currently disabled for all targets.": "Alle meldingen zijn momenteel uitgeschakeld voor alle doelen.", - "An error occurred whilst saving your email notification preferences.": "Er is een fout opgetreden tijdens het opslaan van uw e-mailmeldingsvoorkeuren.", - "Call invitation": "Oproep-uitnodiging", - "Cancel Sending": "Versturen annuleren", - "Can't update user notification settings": "Het is niet gelukt om de meldingsinstellingen van de gebruiker bij te werken", - "Close": "Sluiten", - "Couldn't find a matching Matrix room": "Het is niet gelukt om een bijbehorende Matrix-kamer te vinden", "Custom Server Options": "Aangepaste serverinstellingen", - "customServer_text": "U kunt de aangepaste serverinstellingen gebruiken om in te loggen bij andere Matrix-servers door een andere homeserver-URL in te voeren.<br/>Dit maakt het mogelijk om Riot te gebruiken met een bestaand Matrix-account op een andere homeserver.<br/><br/>U kunt ook een aangepaste identiteitsserver instellen, maar het is dan niet mogelijk om gebruikers uit te nodigen met behulp van een e-mailadres of zelf uitgenodigd te worden met een e-mailadres.", - "delete the alias.": "verwijder de alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "De alias %(alias)s verwijderen en %(name)s uit de kamerlijst verwijderen?", - "Direct Chat": "Privégesprek", - "Directory": "Kamerlijst", "Dismiss": "Afwijzen", - "Download this file": "Download dit bestand", - "Enable audible notifications in web client": "Geluidsmeldingen in de webclient aanzetten", - "Enable desktop notifications": "Desktopmeldingen aanzetten", - "Enable email notifications": "E-mailmeldingen aanzetten", - "Enable notifications for this account": "Meldingen voor dit account aanzetten", - "Enable them now": "Deze nu aanzetten", - "Enter keywords separated by a comma:": "Voeg trefwoorden toe, gescheiden door een komma:", - "Error": "Fout", - "Error saving email notification preferences": "Fout bij het opslaan van de meldingsvoorkeuren voor e-mail", - "#example": "#voorbeeld", - "Failed to add tag %(tagName)s to room": "Mislukt om de label %(tagName)s aan de kamer toe te voegen", - "Failed to change settings": "Instellingen wijzigen mislukt", - "Failed to forget room %(errCode)s": "Ruimte vergeten mislukt %(errCode)s", - "Failed to update keywords": "Trefwoorden bijwerken mislukt", - "Failed to get protocol list from Home Server": "Protocollijst ophalen van de homeserver mislukt", - "Failed to get public room list": "Lijst met publieke kamers ophalen mislukt", - "Failed to remove tag %(tagName)s from room": "Label %(tagName)s van de kamer verwijderen mislukt", - "Failed to set direct chat tag": "Het is mislukt om het privéchatlabel weg te halen", - "Favourite": "Favoriet", - "Fetching third party location failed": "Het ophalen van de locatie van de derde partij is mislukt", - "Files": "Bestanden", - "Filter room names": "Filter kamernamen", - "Forget": "Vergeten", - "Guests can join": "Gasten kunnen deelnemen", - "Invite to this room": "Uitnodigen voor deze kamer", - "Keywords": "Trefwoorden", - "Leave": "Verlaten", - "Low Priority": "Lage prioriteit", - "Members": "Leden", - "Mentions only": "Alleen vermeldingen", - "Messages containing my display name": "Berichten die mijn weergavenaam bevatten", - "Messages containing my user name": "Berichten die mijn gebruikersnaam bevatten", - "Messages in group chats": "Berichten in groepsgesprekken", - "Messages in one-to-one chats": "Berichten in één-op-één-gesprekken", - "Messages sent by bot": "Berichten verzonden door een bot", - "more": "meer", - "Mute": "Dempen", - "No rooms to show": "Geen kamers om te laten zien", - "Noisy": "Luidruchtig", - "Notification targets": "Meldingsdoelen", - "Notifications": "Notificaties", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Meldingen op de volgende trefwoorden volgen regels die hier niet kunnen worden getoond:", - "Notify for all other messages/rooms": "Stuur een melding voor alle andere berichten/kamers", - "Notify me for anything else": "Stuur een melding voor al het andere", - "Off": "Uit", - "On": "Aan", - "Operation failed": "Actie mislukt", - "Permalink": "Permanente link", "powered by Matrix": "mogelijk gemaakt door Matrix", - "Quote": "Citeer", - "Reject": "Afwijzen", - "Remove %(name)s from the directory?": "%(name)s uit de kamerlijst verwijderen?", - "Remove": "Verwijderen", - "remove %(name)s from the directory.": "verwijder %(name)s uit de kamerlijst.", - "Remove from Directory": "Uit de kamerlijst verwijderen", - "Resend": "Opnieuw verzenden", - "Riot does not know how to join a room on this network": "Riot weet niet hoe het moet deelnemen in een kamer op dit netwerk", - "Room not found": "De kamer is niet gevonden", - "Search for a room": "Een kamer opzoeken", - "Source URL": "Bron-URL", - "The Home Server may be too old to support third party networks": "De thuisserver is misschien te oud om netwerken van derde partijen te ondersteunen", - "There are advanced notifications which are not shown here": "Er zijn geavanceerde notificaties die hier niet getoond worden", - "The server may be unavailable or overloaded": "De server is misschien niet beschikbaar of overbelast", - "Unable to fetch notification target list": "Het is mislukt om de lijst van notificatiedoelen op te halen", - "Unable to join network": "Het is mislukt om toe te treden tot dit netwerk", - "Unable to look up room ID from server": "Het is mislukt om de kamer-ID op te halen van de server", - "Unhide Preview": "Zichtbaar maken preview", - "unknown error code": "onbekende foutcode", - "Unnamed room": "Kamer zonder naam", - "Uploaded on %(date)s by %(user)s": "Geüpload op %(date)s door %(user)s", - "View Decrypted Source": "Bekijk ontsleutelde bron", - "View Source": "Bekijk bron", - "When I'm invited to a room": "Wanneer ik uitgenodigd word voor een kamer", - "World readable": "Door iedereen leesbaar", - "You cannot delete this image. (%(code)s)": "Je kunt deze afbeelding niet verwijderen. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Je kunt dit bericht niet verwijderen. (%(code)s)", - "You are not receiving desktop notifications": "Je ontvangt momenteel geen desktopmeldingen", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Je hebt ze mogelijk ingesteld in een andere client dan Riot. Je kunt ze niet aanpassen in Riot maar ze zijn wel actief", - "Sunday": "Zondag", - "Monday": "Maandag", - "Tuesday": "Dinsdag", - "Wednesday": "Woensdag", - "Thursday": "Donderdag", - "Friday": "Vrijdag", - "Saturday": "Zaterdag", - "Today": "Vandaag", - "Yesterday": "Gisteren", - "Failed to set Direct Message status of room": "Het is mislukt om de directe-berichtenstatus van de kamer in te stellen", - "A new version of Riot is available.": "Er is een nieuwe versie van Riot beschikbaar.", - "All Rooms": "Alle kamers", - "Cancel": "Annuleren", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> en <a href=\"http://opera.com\">Opera</a> werken ook.", - "Changelog": "Logboek van wijzigingen", - "Collapse panel": "Paneel inklappen", - "Collecting app version information": "App-versieinformatie verzamelen", - "Collecting logs": "Logboeken verzamelen", - "Describe your problem here.": "Beschrijf uw probleem hier.", - "Expand panel": "Paneel uitklappen", - "Failed to send report: ": "Rapport verzenden mislukt: ", - "Forward Message": "Bericht doorsturen", - "Hide panel": "Paneel verbergen", - "(HTTP status %(httpStatus)s)": "(HTTP-status %(httpStatus)s)", - "I understand the risks and wish to continue": "Ik begrijp de risico's en wil graag verder gaan", - "Login": "Aanmelden", - "Loading bug report module": "Bugrapporteermodule laden", - "Messages containing <span>keywords</span>": "Berichten die <span>trefwoorden</span> bevatten", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Installeer <a href=\"https://www.google.com/chrome\">Chrome</a> of <a href=\"https://getfirefox.com\">Firefox</a> voor de beste ervaring.", - "Report a bug": "Een bug rapporteren", "Riot Desktop on %(platformName)s": "Riot Desktop op %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot wordt niet ondersteund op het mobiele web. Wil je de app installeren?", - "Search": "Zoeken", - "Search…": "Zoeken…", - "Send": "Verstuur", - "Send logs": "Logboeken versturen", - "Sorry, your browser is <b>not</b> able to run Riot.": "Sorry, uw browser werkt <b>niet</b> met Riot.", - "This Room": "Deze kamer", - "Unavailable": "Niet beschikbaar", "Unknown device": "Onbekend apparaat", - "Update": "Bijwerken", - "Uploading report": "Rapport uploaden", - "What's New": "Wat is er nieuw", - "What's new?": "Wat is er nieuw?", - "Waiting for response from server": "Wachten op antwoord van de server", - "OK": "OK", "You need to be using HTTPS to place a screen-sharing call.": "U moet HTTPS gebruiken om een oproep met schermdelen te kunnen starten.", "Welcome to Riot.im": "Welkom bij Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentaliseerd en versleuteld chatten & samenwerken mogelijk gemaakt door [matrix]", - "Search the room directory": "De kamerlijst doorzoeken", - "Chat with Riot Bot": "Met Riot Bot chatten", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chatten & samenwerken mogelijk gemaakt door [matrix]", + "Search the room directory": "De gesprekscatalogus doorzoeken", + "Chat with Riot Bot": "Chatten met Riot-robot", "Get started with some tips from Riot Bot!": "Begin met enkele tips van Riot Bot!", "General discussion about Matrix and Riot": "Algemene discussie over Matrix en Riot", "Discussion of all things Matrix!": "Discussie over alles wat met Matrix te maken heeft!", @@ -162,19 +26,7 @@ "Support for those using the Matrix spec": "Ondersteuning voor gebruikers van Matrix-specificatie", "Contributing code to Matrix and Riot": "Code bijdragen aan Matrix en Riot", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Veel kamers bestaan al in Matrix, gelinkt aan bestaande netwerken (Slack, IRC, Gitter, enz.) of onafhankelijk. Bekijk de kamerlijst!", - "Failed to change password. Is your password correct?": "Wachtwoord wijzigen mislukt. Is uw wachtwoord juist?", - "You have successfully set a password!": "U heeft met succes een wachtwoord ingesteld!", - "You can now return to your account after signing out, and sign in on other devices.": "U kunt nu terugkeren naar uw account nadat u bent afgemeld, en u aanmelden op andere apparaten.", - "Continue": "Doorgaan", - "Please set a password!": "Stel een wachtwoord in!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Hiermee kunt u naar uw account terugkeren nadat u zich heeft afgemeld, en u aanmelden op andere apparaten.", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s op %(osName)s", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Beschrijf de bug. Wat deed u? Wat verwachtte u? Wat gebeurde er daadwerkelijk?", - "Please describe the bug and/or send logs.": "Beschrijf de bug en/of verstuur logboeken.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot gebrukt veel geavanceerde browserfuncties, waarvan enkele niet (of experimenteel) in uw webbrowser beschikbaar zijn.", - "Co-ordination for Riot/Web translators": "Coördinatie voor Riot/Web-vertalers", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Om diagnose van het probleem mogelijk te maken worden logboeken van deze client met het bugrapport meegestuurd. Schakel dit vinkje uit als u slechts de bovenstaande tekst mee wil sturen:", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Met uw huidige browser kan de applicatie er volledig incorrect uitzien. Tevens is het mogelijk dat niet alle functies naar behoren werken. U kunt doorgaan als u het toch wil proberen, maar bij problemen bent u volledig op uzelf aangewezen!", "Design and implementation of E2E in Matrix": "Ontwerp en implementatie van E2E in Matrix", "Implementing VR services with Matrix": "Implementatie van VR-diensten met Matrix", "Implementing VoIP services with Matrix": "Implementatie van VoIP-diensten met Matrix", @@ -182,44 +34,21 @@ "Support for those using, running and writing other bridges": "Ondersteuning voor het gebruiken, draaien en ontwikkelen aan andere bruggen", "Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam", "Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam", - "You have successfully set a password and an email address!": "Het instellen van een wachtwoord en e-mailadres is geslaagd!", - "Remember, you can always set an email address in user settings if you change your mind.": "Onthoud dat u altijd een e-mailadres in kan stellen in de gebruikersinstellingen als u zich bedenkt.", - "Warning": "Waarschuwing", - "Checking for an update...": "Aan het kijken voor een update...", - "Error encountered (%(errorDetail)s).": "Fout ondervonden (%(errorDetail)s).", - "No update available.": "Geen update beschikbaar.", - "Downloading update...": "Update aan het downloaden...", - "To return to your account in future you need to <u>set a password</u>": "Om in de toekomst naar je account terug te gaan moet je <u>een wachtwoord instellen</u>", - "Set Password": "Wachtwoord instellen", - "Couldn't load home page": "Kon de home pagina niet laden", - "Bug report sent": "Bug report verzonden", - "Thank you!": "Bedankt!", - "Back": "Terug", - "Failed to send custom event.": "Aangepast Event verzenden mislukt.", - "Send Custom Event": "Verzend aangepast evenement", - "Send Custom State Event": "Verzend aangepast State Event", - "Developer Tools": "Ontwikkelaarsgereedschap", - "Filter results": "Resultaten filteren", - "Explore Room State": "Verken Ruimtetoestand", - "You must specify an event type!": "Je moet een event-type specificeren!", - "Event sent!": "Event verstuurd!", - "Event Type": "Event-type", - "Event Content": "Event-inhoud", - "State Key": "Toestandssleutel", - "Show message in desktop notification": "Toon boodschap in bureaublad popup", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom server opties gebruiken om op andere Matrix server in te loggen door een andere Home server URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaande Matrix account op een andere home server.<br/><br/>Je kan ook een custom identiteits-server opzetten maar dan kan je geen gebruikers uitnodigen via hun email adres, of zelf uitgenodigd worden via je email adres.", - "Appear Offline": "Lijk offline", - "Away": "Afwezig", - "Send Account Data": "Stuur account informatie", - "Edit": "Aanpassen", - "Explore Account Data": "Bekijk account informatie", - "Unpin Message": "Maak pin los", - "Pin Message": "Bericht vastpinnen", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Installeer alstublieft <chromeLink>Chrome</chromeLink> of <firefoxLink>Firefox</firefoxLink> voor de beste gebruikerservaring.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> en <operaLink>Opera</operaLink> werken ook.", - "Register": "Registreer", - "Rooms": "Kamers", - "Invite to this community": "Nodig uit in deze community", - "Add rooms to this community": "Voeg kamers toe aan deze community", - "Toolbox": "Eigenschappen" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom serveropties gebruiken om op andere Matrix-servers in te loggen door een andere thuisserver-URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaand Matrix-account op een andere thuisserver.<br/><br/>Je kan ook een aangepaste-identiteitsserver opzetten maar dan kan je geen gebruikers uitnodigen via hun e-mailadres, of zelf uitgenodigd worden via je e-mailadres.", + "Co-ordination for Riot translators": "Coördinatie voor Riot vertalers", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "U kunt de aangepaste serverinstellingen gebruiken om u aan te melden bij andere Matrix-servers, door een andere thuisserver-URL in te voeren. Dit laat u toe Riot te gebruiken met een bestaande Matrix-account bij een andere thuisserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "U kunt ook een aangepaste identiteitsserver instellen, maar u zult geen gebruikers kunnen uitnodigen via e-mail, of zelf via e-mail uitgenodigd worden.", + "Sign In": "Aanmelden", + "Create Account": "Account aanmaken", + "Need help?": "Hulp nodig?", + "Explore rooms": "Gesprekken ontdekken", + "Room Directory": "Gesprekscatalogus", + "Unexpected error preparing the app. See console for details.": "Er is een onverwachte fout opgetreden bij het voorbereiden van de app. Bekijk de console voor details.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ongeldige configuratie: kan slechts één van default_server_config, default_server_name, of default_hs_url opgeven.", + "Invalid configuration: no default server specified.": "Ongeldige configuratie: geen standaardserver opgegeven.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "De serverconfiguratie van deze Riot-instantie lijkt ongeldig. Als u de beheerder bent, gelieve dan de fout hieronder te corrigeren", + "Your Riot is misconfigured": "Uw Riot is verkeerd geconfigureerd", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Riot-configuratie bevat ongeldige JSON. Corrigeer het probleem en herlaad de pagina.", + "The message from the parser is: %(message)s": "Het bericht van de verwerker is: %(message)s", + "Invalid JSON": "Ongeldige JSON" } diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json new file mode 100644 index 00000000..de95927d --- /dev/null +++ b/src/i18n/strings/nn.json @@ -0,0 +1,53 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot er ikkja støtta på mobilnettlesare. Last æppen inn?", + "Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s", + "Unknown device": "Ukjend eining", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s gjennom %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ei samtale med skjermdeling.", + "Dismiss": "Avvis", + "powered by Matrix": "Matrixdriven", + "Welcome to Riot.im": "Velkomen til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & samarbeid drive av [matrix]", + "Search the room directory": "Søk i romutvalet", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Det finst allereie massevis av rom på Matrix, anten lenkja til nettverk som allereie finst (Slack, IRC, Gitter osv.) eller uavhengige. Tak ein titt på utvalet!", + "Chat with Riot Bot": "Nettprat med Riot Bot", + "Get started with some tips from Riot Bot!": "Kom i gang med nokre råd frå Riot Bot!", + "General discussion about Matrix and Riot": "Allmenn meiningsutveksling om Matrix og Riot", + "Discussion of all things Matrix!": "Meiningsutveksling om alt som gjeld Matrix!", + "Riot/Web & Desktop chat": "Riot/Web og Skrivebord", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS og matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Riot/Android og matrix-android-sdk", + "Matrix technical discussions": "Teknisk meiningsutveksling om Matrix", + "Running Matrix services": "Å køyra Matrix-tenestar", + "Community-run support for Synapse": "Samfunnsdriven støtte for Synapse", + "Admin support for Dendrite": "Administratorstøtte for Dendrite", + "Announcements about Synapse releases": "Kunngjeringar om Synapse-utgåver", + "Support for those using and running matrix-appservice-irc": "Støtte for dei som brukar og køyrar matrix-appleservice-irc", + "Building services on Matrix": "Byggingstenester på Matrix", + "Support for those using the Matrix spec": "Støtte for dei som brukar Matrix-specen", + "Design and implementation of E2E in Matrix": "E2E-oppbygging og -implementering på Matrix", + "Implementing VR services with Matrix": "Implementering av VR-tenester med Matrix", + "Implementing VoIP services with Matrix": "Implementering av VoIP-tenester med Matrix", + "Discussion of the Identity Service API": "Meiningsutveksling om Identitetstenar-APIen", + "Support for those using, running and writing other bridges": "Støtte for dei som brukar, køyrer og skriv andre bruer", + "Contributing code to Matrix and Riot": "For å bidraga med kode til Matrix og Riot", + "Dev chat for the Riot/Web dev team": "Utviklar-prat for Riot/Web-utviklargruppa", + "Dev chat for the Dendrite dev team": "Utviklar-prat for Dendrite-utviklargruppa", + "Co-ordination for Riot translators": "Samordning for Riot-omsetjare", + "Custom Server Options": "Tilpassa tenar-innstillingar", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruka eigentenarinnstillingar til å logga inn på andre Matrixtenarar ved å oppgje ein annan Heimtenar-URL. <br/>Dette gjer at du kan bruka Riot med ein Matrixbrukar som allereie finst på ein annan heimtenar.<br/><br/>Du kan òg setja ein eigen identitetstenar men du kjem i so fall ikkje til å kunna byda brukare inn med epost, eller å sjølv verta boden inn med epost.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan nytta dei eigendefinerte tenarinstillingane for å logga inn på andre Matrix-tenarar ved å uppgje ein annan heimtenar-URL. Dette lèt deg bruka Riot med ein Matrix-konto som allereie finst på ein annan heimtenar.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan òg velja ein eigendefinert identitetstenar, men då kjem du ikkje til å innvitere brukarar gjennom e-post, eller verta invitert med e-post sjølv.", + "Sign In": "Logg inn", + "Create Account": "Lag brukar", + "Need help?": "Treng du hjelp?", + "Explore rooms": "Utforsk romma", + "Room Directory": "Romkatalog", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din har invalid JSON-kode. Korriger dette og last inn sida på nytt.", + "The message from the parser is: %(message)s": "Meldingen frå kodetolkaren er: %(message)s", + "Invalid JSON": "Ugyldig JSON", + "Your Riot is misconfigured": "Riot-klienten din er feilkonfiguert", + "Unexpected error preparing the app. See console for details.": "Uforventa feil under lasting av programmet. Sjå konsollet for detaljar.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon berre muleg å berre spesifiere ein av default_server_config, default_server_name eller default_hs_url.", + "Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: \"default server\" er uspesifisert." +} diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 31fdfbe6..fab590a5 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -1,161 +1,20 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s przez %(browserName)s na %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> i <a href=\"http://opera.com\">Opera</a> też działają.", - "A new version of Riot is available.": "Dostępna jest nowa wersja Riot.", - "Add an email address above to configure email notifications": "Dodaj adres e-mail powyżej, aby skonfigurować powiadomienia e-mailowe", - "Advanced notification settings": "Zaawansowane ustawienia powiadomień", - "All messages": "Wszystkie wiadomości", - "All messages (noisy)": "Wszystkie wiadomości (głośno)", - "All Rooms": "Wszystkie pokoje", - "All notifications are currently disabled for all targets.": "Wszystkie powiadomienia są obecnie wyłączone dla wszystkich celów.", - "An error occurred whilst saving your email notification preferences.": "Podczas zapisywania ustawień powiadomień e-mail wystąpił błąd.", - "Call invitation": "Zaproszenie do rozmowy", - "Cancel": "Anuluj", - "Cancel Sending": "Anuluj wysyłanie", - "Can't update user notification settings": "Nie można zaktualizować ustawień powiadomień użytkownika", - "Changelog": "Dziennik zmian", - "Close": "Zamknij", - "Collecting app version information": "Zbieranie informacji o wersji aplikacji", - "Collecting logs": "Zbieranie dzienników", - "Couldn't find a matching Matrix room": "Nie można znaleźć pasującego pokoju Matrix", "Custom Server Options": "Niestandardowe opcje serwera", - "delete the alias.": "usunąć alias.", - "Describe your problem here.": "Opisz swój problem tutaj.", - "Directory": "Księga adresowa", - "Download this file": "Pobierz plik", "Riot is not supported on mobile web. Install the app?": "Riot nie jest obsługiwany przez przeglądarki mobilne. Zainstaluj aplikację?", - "Search": "Szukaj", - "Search…": "Szukaj…", - "Search for a room": "Szukaj pokoju", - "Send": "Wyślij", - "Collapse panel": "Ukryj panel", - "customServer_text": "Możesz używać opcji serwera niestandardowego do logowania się na inne serwery Matrix, określając inny adres URL serwera domowego.<br/>Pozwala to na wykorzystanie Riot z istniejącym kontem Matrix na innym serwerze domowym.<br/><br/>Można również ustawić niestandardowy serwer tożsamości, ale nie będzie można zapraszać użytkowników adresem e-mail, ani być zaproszonym przez adres e-mailowy.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Usuń alias %(alias)s i usuń %(name)s z katalogu?", "Dismiss": "Zamknij", - "Enable audible notifications in web client": "Włącz dźwiękowe powiadomienia w kliencie internetowym", - "Enable email notifications": "Włącz powiadomienia e-mailowe", - "Enable notifications for this account": "Włącz powiadomienia na tym koncie", - "Enable them now": "Włącz je teraz", - "Enter keywords separated by a comma:": "Wpisz słowa kluczowe oddzielone przecinkami:", - "Error": "Błąd", - "Error saving email notification preferences": "Wystąpił błąd podczas zapisywania ustawień powiadomień e-mailowych", - "#example": "#przykład", - "Expand panel": "Rozwiń panel", - "Failed to add tag %(tagName)s to room": "Nie można dodać tagu %(tagName)s do pokoju", - "Failed to change settings": "Nie udało się zmienić ustawień", - "Failed to forget room %(errCode)s": "Nie mogłem zapomnieć o pokoju %(errCode)s", - "Failed to update keywords": "Nie udało się zaktualizować słów kluczowych", - "Failed to get protocol list from Home Server": "Nie można pobrać listy protokołów z serwera domowego", - "Failed to get public room list": "Nie udało się uzyskać publicznej listy pokojowej", - "Failed to remove tag %(tagName)s from room": "Nie udało się usunąć tagu %(tagName)s z pokoju", - "Failed to send report: ": "Nie udało się wysłać raportu: ", - "Favourite": "Ulubiony", - "Files": "Pliki", - "Filter room names": "Filtruj nazwy pokojów", - "Forget": "Zapomnij", - "Forward Message": "Przekaż wiadomość", - "Guests can join": "Goście mogą dołączyć", - "Hide panel": "Ukryj panel", - "I understand the risks and wish to continue": "Rozumiem ryzyko i chęć kontynuować", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "W celu zdiagnozowania problemów logi z tego klienta zostaną wysłane wraz z tym raportem o błędzie. Jeśli wolisz wysłać tylko tekst powyżej, proszę odznacz:", - "Invite to this room": "Zaproś do tego pokoju", - "Keywords": "Słowa kluczowe", - "Loading bug report module": "Ładowanie modułu raportu błędów", - "Low Priority": "Niski priorytet", - "Messages containing <span>keywords</span>": "Wiadomości zawierające <span>słowa kluczowe</span>", - "Messages containing my user name": "Wiadomości zawierające moją nazwę użytkownika", - "Messages in group chats": "Wiadomości w czatach grupowych", - "Messages sent by bot": "Wiadomości wysłane przez bota", - "more": "więcej", - "Enable desktop notifications": "Włącz powiadomienia", - "(HTTP status %(httpStatus)s)": "(status HTTP %(httpStatus)s)", - "Leave": "Opuść", - "Login": "Logowanie", - "Members": "Członkowie", - "Messages containing my display name": "Wiadomości zawierające moją wyświetlaną nazwę", - "Direct Chat": "Rozmowa bezpośrednia", - "Mute": "Wycisz", - "No rooms to show": "Brak pokoi do wyświetlenia", - "Notifications": "Powiadomienia", - "Failed to set direct chat tag": "Nie udało się ustawić znacznika rozmów bezpośrednich", - "Failed to set Direct Message status of room": "Nie udało się ustawić statusu Rozmów Bezpośrednich dla pokoju", - "Notification targets": "Cele powiadomień", - "Operation failed": "Operacja nieudana", - "Permalink": "Odnośnik bezpośredni", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Proszę opisz problem (w miarę możliwości po angielsku). Co doprowadziło do błędu? Jakie było Twoje oczekiwanie, a co stało się zamiast tego?", - "Please describe the bug and/or send logs.": "Proszę opisz błąd i/lub wyślij logi.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Zainstaluj proszę <a href=\"https://www.google.com/chrome\">Chrome</a> lub <a href=\"https://getfirefox.com\">Firefox</a>.", - "Quote": "Cytat", - "Remove %(name)s from the directory?": "Usunąć %(name)s z katalogu?", - "Remove from Directory": "Usuń z katalogu", - "Report a bug": "Zgłoś błąd", - "Resend": "Wyślij jeszcze raz", "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", - "Riot does not know how to join a room on this network": "Riot nie wie, jak dołączyć do pokoju w tej sieci", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot używa wiele zaawansowanych technologii, które nie są dostępne lub są w fazie testów w Twojej przeglądarce.", - "Room not found": "Pokój nie znaleziony", - "Send logs": "Wyślij logi", - "Sorry, your browser is <b>not</b> able to run Riot.": "Przepraszamy, Twoja przeglądarka <b>nie jest w stanie</b> uruchomić Riot.", "powered by Matrix": "napędzany przez Matrix", - "Reject": "Odrzuć", - "Remove": "Usuń", - "remove %(name)s from the directory.": "usuń %(name)s z katalogu.", - "The Home Server may be too old to support third party networks": "Serwer domowy może być za stary dla innych sieci", - "There are advanced notifications which are not shown here": "Masz zaawansowane powiadomienia, nie pokazane tutaj", - "The server may be unavailable or overloaded": "Serwer jest nieosiągalny lub jest przeciążony", - "This Room": "Ten pokój", - "Unable to join network": "Nie można dołączyć do sieci", - "Unable to look up room ID from server": "Nie można wyszukać ID pokoju na serwerze", - "Unavailable": "Niedostępny", - "Unhide Preview": "Odkryj podgląd", "Unknown device": "Nieznane urządzenie", - "unknown error code": "nieznany kod błędu", - "Unnamed room": "Pokój bez nazwy", - "Update": "Uaktualnienie", - "Uploaded on %(date)s by %(user)s": "Wysłane %(date)s przez %(user)s", - "Uploading report": "Raport wysyłania", - "Messages in one-to-one chats": "Wiadomości w rozmowach jeden-na-jeden", - "Noisy": "Głośny", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Powiadomienia o słowach kluczowych spełniają reguły, które nie mogą być tu wyświetlone:", - "Notify for all other messages/rooms": "Powiadamiaj o wszystkich innych wiadomośsciach/pokojach", - "Notify me for anything else": "Powiadom mnie o całej reszcie", - "Off": "Wyłącz", - "On": "Włącz", - "Source URL": "Źródłowy URL", - "Unable to fetch notification target list": "Nie można pobrać listy docelowej dla powiadomień", - "View Decrypted Source": "Pokaż zdeszyfrowane źródło", - "View Source": "Pokaż źródło", - "What's New": "Co nowego", - "What's new?": "Co nowego?", - "Waiting for response from server": "Czekam na odpowiedź serwera", - "When I'm invited to a room": "Kiedy zostanę zaproszony do pokoju", - "World readable": "Całkowicie publiczne", - "You cannot delete this image. (%(code)s)": "Nie możesz usunąć tego obrazka. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Nie możesz usunąć tej wiadomości. (%(code)s)", - "You are not receiving desktop notifications": "Nie otrzymujesz powiadomień na pulpit", - "Sunday": "Niedziela", - "Monday": "Poniedziałek", - "Tuesday": "Wtorek", - "Wednesday": "Środa", - "Thursday": "Czwartek", - "Friday": "Piątek", - "Saturday": "Sobota", - "Today": "Dzisiaj", - "Yesterday": "Wczoraj", - "OK": "OK", "You need to be using HTTPS to place a screen-sharing call.": "Musisz używać bezpiecznego protokołu HTTPS aby użyć połączenia współdzielenia ekranu.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Z Twoją obecną przeglądarką, wygląd oraz wrażenia z używania aplikacji mogą być niepoprawne, a niektóre funkcje wcale nie działać. Kontynuuj jeśli chcesz spróbować, jednak trudno będzie pomóc w przypadku błędów, które mogą nastąpić!", "Welcome to Riot.im": "Witamy w Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat & współpraca wspierana przez [matrix]", - "Search the room directory": "Wyszukaj katalog pokojów", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat & współpraca oparta na [matrix]", + "Search the room directory": "Przeszukaj katalog pokojów", "Chat with Riot Bot": "Rozmowa z Botem Riota", "Get started with some tips from Riot Bot!": "Rozpocznij z wskazówkami Riot Bota!", - "General discussion about Matrix and Riot": "Generalna rozmowa o Matrix i Riot", - "Discussion of all things Matrix!": "Rozmowa o wszystkim Matrixowym!", + "General discussion about Matrix and Riot": "Ogólna rozmowa o Matrix i Riot", + "Discussion of all things Matrix!": "Rozmowa o wszystkich sprawach Matrixowych!", "Matrix technical discussions": "Dyskusje techniczne Matrixa", - "Fetching third party location failed": "Pobranie lokalizacji zewnętrznej nie powiodło się", - "Mentions only": "Tylko, gdy wymienieni", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Możliwe, że skofigurowałeś je w innym kliencie, niż Riot. Nie możesz ich zmieniać w Riot, ale nadal mają zastosowanie", "Riot/Web & Desktop chat": "Czat o Riot/Web i Desktop", "Riot/iOS & matrix-ios-sdk chat": "Czat o Riot/iOS i matrix-ios-sdk", "Riot/Android & matrix-android-sdk chat": "Czat o Riot/Android i matrix-android-sdk", @@ -170,49 +29,25 @@ "Implementing VR services with Matrix": "Implementowanie usług wirtualnej rzeczywistości w oparciu o Matrix", "Implementing VoIP services with Matrix": "Implementowanie usług telefonii internetowej VoIP w oparciu o Matrix", "Discussion of the Identity Service API": "Dyskusja na temat API Identity Service", - "Support for those using, running and writing other bridges": "Wsparcie dla używających, zapewniających i piszących inne mosty", - "Contributing code to Matrix and Riot": "Dokładanie kodu do Matrix lub Riot", + "Support for those using, running and writing other bridges": "Wsparcie dla używających, utrzymujących i piszących inne mosty", + "Contributing code to Matrix and Riot": "Współtworzenie kodu do Matrix lub Riot", "Dev chat for the Riot/Web dev team": "Czat deweloperów zespołu Riot/Web", "Dev chat for the Dendrite dev team": "Czat deweloperów zespołu Dendrite", - "Co-ordination for Riot/Web translators": "Koordynacja tłumaczy Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix ma wiele, już działających pokoi, połączonych z istniejącymi sieciami, takimi jak Slack, IRC lub Gitter, a także wiele zupełnie niezależnych. Możesz przejrzeć je wszystkie w spisie pokoi!", - "Failed to change password. Is your password correct?": "Zmiana hasła nie powiodła się. Czy Twoje hasło jest poprawne?", - "You have successfully set a password!": "Hasło zostało zmienione z powodzeniem!", - "You can now return to your account after signing out, and sign in on other devices.": "Teraz możesz powrócić do swojego konta na innych urządzeniach po wylogowaniu i ponownym zalogowaniu się.", - "Continue": "Kontynuuj", - "Please set a password!": "Proszę, ustaw hasło!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "To pozwoli Ci powrócić do Twojego konta po wylogowaniu i ponownym zalogowaniu się na innych urządzeniach.", - "You have successfully set a password and an email address!": "Z powodzeniem ustawiono hasło i adres e-mail dla Twojego konta!", - "Remember, you can always set an email address in user settings if you change your mind.": "Pamiętaj, że zawsze możesz zmienić swój e-mail lub hasło w panelu ustawień użytkownika.", - "To return to your account in future you need to <u>set a password</u>": "Aby wrócić do swojego konta w przyszłości musisz <u> ustawić hasło </u>", - "Set Password": "Ustaw hasło", - "No update available.": "Brak aktualizacji.", - "Warning": "Ostrzeżenie", - "Error encountered (%(errorDetail)s).": "Wystąpił błąd (%(errorDetail)s).", - "Downloading update...": "Pobieranie aktualizacji...", - "Checking for an update...": "Sprawdzanie aktualizacji...", - "Couldn't load home page": "Nie można załadować strony startowej", - "Bug report sent": "Raport błędu wysłany", - "Thank you!": "Dziękujemy!", - "Back": "Powrót", - "Developer Tools": "Narzędzia programistyczne", - "Failed to send custom event.": "Wysyłanie niestandardowego wydarzenia nie powiodło się.", - "Filter results": "Filtruj wyniki", - "Send Custom Event": "Wyślij niestandardowe wydarzenie", - "Send Custom State Event": "Wyślij wydarzenie o niestandardowym stanie", - "Explore Room State": "Przeglądaj stan pokoju", - "You must specify an event type!": "Musisz określić typ wydarzenia!", - "Event sent!": "Wydarzenie wysłane!", - "Event Type": "Typ wydarzenia", - "Event Content": "Zawartość wydarzenia", - "State Key": "Klucz stanu", - "Toolbox": "Przybornik", - "Edit": "Edycja", - "Show message in desktop notification": "Pokaż wiadomość w notyfikacji na pulpicie", - "Unpin Message": "Odepnij Wiadomość", - "Pin Message": "Przypnij Wiadomość", - "Register": "Rejestracja", - "Rooms": "Pokoje", - "Invite to this community": "Zaproś do tej społeczności", - "Add rooms to this community": "Dodaj pokoje do tej społeczności" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz skorzystać z opcji niestandardowego serwera, aby zalogować się na inne serwery Matrix, podając inny adres URL serwera domowego.<br/>Pozwala to na używanie Riot z istniejącym kontem Matrix na innym serwerze domowym.<br/><br/>Możesz również ustawić niestandardowy serwer tożsamości, ale nie będziesz w stanie zapraszać użytkowników przez adres e-mail ani otrzymywać zaproszeń na adres e-mail.", + "Co-ordination for Riot translators": "Koordynacja tłumaczy Riot", + "Create Account": "Stwórz konto", + "Sign In": "Zaloguj", + "Need help?": "Potrzebujesz pomocy?", + "Room Directory": "Katalog pokojów", + "Explore rooms": "Przeglądaj pokoje", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracja Twojego Riot zawiera błędny plik JSON. Popraw swoją konfigurację i odśwież stronę.", + "The message from the parser is: %(message)s": "Wiadomość od parsera to: %(message)s", + "Invalid JSON": "Błędny JSON", + "Your Riot is misconfigured": "Twój Riot jest źle skonfigurowany", + "Unexpected error preparing the app. See console for details.": "Niespodziewany błąd podczas przygotowywania aplikacji. Otwórz konsolę po szczegóły.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Błędna konfiguracja. Można sprecyzować tylko jedno z: default_server_config, default_server_name, lub default_hs_url.", + "Invalid configuration: no default server specified.": "Błędna konfiguracja: nie wybrano domyślnego serwera.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Możesz użyć Niestandardowych Opcji Serwera by zalogować się do innych serwerów Matrix poprzez podanie URL innego serwera głównego. Dzięki temu możesz używać Riot z istniejącym kontem z innego serwera głównego.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz również ustawić niestandardowy serwer tożsamości, lecz nie będziesz móc zapraszać użytkowników i otrzymywać zaproszeń poprzez podanie adresu email." } diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index d8f31499..f122a4d5 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -1,172 +1,14 @@ { - "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar as notificações por email", - "All messages": "Todas as mensagens", - "All messages (noisy)": "Todas as mensagens (alto)", - "An error occurred whilst saving your email notification preferences.": "Ocorreu um erro ao guardar as suas preferências de notificação por email.", - "Call invitation": "Convite para chamada", - "Cancel Sending": "Cancelar o envio", - "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", - "Close": "Fechar", - "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", "Custom Server Options": "Opções para Servidor Personalizado", - "delete the alias.": "apagar o apelido da sala.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", - "Direct Chat": "Conversa pessoal", - "Directory": "Diretório", "Dismiss": "Descartar", - "Download this file": "Transferir este ficheiro", - "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", - "Enable desktop notifications": "Ativar notificações no desktop", - "Enable email notifications": "Ativar notificações por e-mail", - "Enable notifications for this account": "Ativar notificações para esta conta", - "Enable them now": "Ativar agora", - "Enter keywords separated by a comma:": "Insira palavras-chave separadas por vírgula:", - "Error": "Erro", - "Error saving email notification preferences": "Erro ao guardar as preferências de notificação por e-mail", - "Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala", - "Failed to change settings": "Falha ao alterar as configurações", - "Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s", - "Failed to update keywords": "Falha ao atualizar as palavras-chave", - "Failed to get protocol list from Home Server": "Falha ao obter a lista de protocolos do servidor padrão", - "Failed to get public room list": "Falha ao obter a lista de salas públicas", - "Failed to set direct chat tag": "Falha ao definir conversa como pessoal", - "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", - "Favourite": "Favorito", - "Fetching third party location failed": "Falha ao obter localização de terceiros", - "Files": "Ficheiros", - "Filter room names": "Filtrar salas por título", - "Forget": "Esquecer", - "Forward Message": "Encaminhar", - "Guests can join": "Convidados podem entrar", - "Invite to this room": "Convidar para esta sala", - "Keywords": "Palavras-chave", - "Leave": "Sair", - "Low Priority": "Baixa prioridade", - "Members": "Membros", - "Mentions only": "Apenas menções", - "Messages containing my display name": "Mensagens contendo o meu nome público", - "Messages containing my user name": "Mensagens contendo o meu nome de utilizador", - "Messages in group chats": "Mensagens em salas", - "Messages in one-to-one chats": "Mensagens em conversas pessoais", - "Messages sent by bot": "Mensagens enviadas por bots", - "more": "mais", - "Mute": "Silenciar", - "No rooms to show": "Não existem salas a serem exibidas", - "Noisy": "Barulhento", - "Notification targets": "Alvos de notificação", - "Notifications": "Notificações", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", - "Notify for all other messages/rooms": "Notificar para todas as outras mensagens/salas", - "Notify me for anything else": "Notificar-me sobre qualquer outro evento", - "Off": "Desativado", - "On": "Ativado", - "Operation failed": "A operação falhou", - "Permalink": "Link permanente", "powered by Matrix": "rodando a partir do Matrix", - "Quote": "Citar", - "Reject": "Rejeitar", - "Remove": "Remover", - "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", - "remove %(name)s from the directory.": "remover %(name)s da lista pública de salas.", - "Remove from Directory": "Remover da lista pública de salas", - "Resend": "Reenviar", - "Riot does not know how to join a room on this network": "O Riot não sabe como entrar numa sala nesta rede", - "Room not found": "Sala não encontrada", - "Search for a room": "Pesquisar por uma sala", - "Source URL": "URL fonte", - "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", - "There are advanced notifications which are not shown here": "Existem notificações avançadas que não são exibidas aqui", - "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", - "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", - "Unable to join network": "Não foi possível juntar-se à rede", - "Unable to look up room ID from server": "Não foi possível obter a identificação da sala do servidor", - "Unhide Preview": "Mostrar a pré-visualização novamente", - "unknown error code": "código de erro desconhecido", - "Unnamed room": "Sala sem nome", - "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", - "View Decrypted Source": "Ver a fonte desencriptada", - "View Source": "Ver a fonte", - "When I'm invited to a room": "Quando sou convidado para uma sala", - "World readable": "Público", - "You cannot delete this image. (%(code)s)": "Não pode apagar esta imagem. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Não pode apagar esta mensagem. (%(code)s)", - "You are not receiving desktop notifications": "Não está a receber notificações de desktop", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode ter configurado num outro cliente sem ser o Riot. Não pode ajustá-las no Riot, mas ainda assim elas aplicam-se", - "Sunday": "Domingo", - "Monday": "Segunda-feira", - "Tuesday": "Terça-feira", - "Wednesday": "Quarta-feira", - "Thursday": "Quinta-feira", - "Friday": "Sexta-feira", - "Saturday": "Sábado", - "Today": "Hoje", - "Yesterday": "Ontem", - "#example": "#exemplo", - "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala", - "Advanced notification settings": "Configurações avançadas de notificação", - "customServer_text": "Pode usar as opções de servidor personalizado para entrar noutros servidores Matrix especificando para isso um URL de outro Servidor de Base.<br/> Isto permite que use o Riot com uma conta Matrix que exista noutro Servidor de Base.<br/> <br/> Também pode configurar um servidor de Identidade personalizado mas não poderá convidar utilizadores através do endereço de e-mail, ou ser convidado pelo seu endereço de e-mail.", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> e <a href=\"http://opera.com\">Opera</a> também funcionam.", - "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os casos.", - "Collapse panel": "Colapsar o painel", - "Expand panel": "Expandir o painel", - "I understand the risks and wish to continue": "Entendo os riscos e pretendo continuar", - "Messages containing <span>keywords</span>": "Mensagens contendo <span>palavras-chave</span>", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Por favor instale <a href=\"https://www.google.com/chrome\">Chrome</a> ou <a href=\"https://getfirefox.com\">Firefox</a> para ter a melhor experiência.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "O Riot usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Desculpe, o seu navegador <b>não</b> é capaz de executar o Riot.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se quiser tentar de qualquer maneira pode continuar, mas está por sua conta com algum problema que possa encontrar!", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s", - "A new version of Riot is available.": "Uma nova versão do Riot está disponível.", - "All Rooms": "Todas as salas", - "Cancel": "Cancelar", - "Changelog": "Histórico de alterações", - "Collecting app version information": "A recolher informação da versão da app", - "Collecting logs": "A recolher logs", - "Describe your problem here.": "Descreva o seu problema aqui.", - "Failed to send report: ": "Falha ao enviar o relatório: ", - "Hide panel": "Ocultar o painel", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para diagnosticar problemas, relatórios deste cliente serão enviados juntamente com esta notificação de falha. Se preferir enviar apenas o texto acima, por favor remova a seleção:", - "Loading bug report module": "A carregar o módulo de relato de erros", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor descreva a falha encontrada. O que fez? O que esperava que acontecesse? O que realmente aconteceu?", - "Please describe the bug and/or send logs.": "Por favor descreva a falha e/ou envie os logs de erro.", - "Report a bug": "Reportar uma falha", "Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s", "Riot is not supported on mobile web. Install the app?": "O Riot não é suportado na web para dispositivos móveis. Quer instalar a app?", - "Search": "Pesquisar", - "Search…": "Pesquisar…", - "Send": "Enviar", - "Send logs": "Enviar relatórios de erro", - "This Room": "Esta sala", - "Unavailable": "Indisponível", "Unknown device": "Dispositivo desconhecido", - "Update": "Atualizar", - "Uploading report": "A enviar o relatório", - "What's New": "Novidades", - "What's new?": "O que há de novo?", - "Waiting for response from server": "À espera de resposta do servidor", - "OK": "Ok", "You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.", - "No update available.": "Nenhuma atualização disponível.", "Welcome to Riot.im": "Bem-vindo ao Riot.im", - "Login": "Entrar", - "Warning": "Aviso", - "Checking for an update...": "A procurar uma atualização...", - "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", - "Downloading update...": "A transferir atualização...", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, encriptado & colaborativo alimentado por [matrix]", - "Back": "Voltar", - "Bug report sent": "Relatório de erros enviado", - "Developer Tools": "Ferramentas de desenvolvedor", - "Failed to send custom event.": "Falha ao enviar evento personalizado.", - "(HTTP status %(httpStatus)s)": "(Estado HTTP %(httpStatus)s)", - "Send Custom Event": "Enviar evento personalizado", - "Send Custom State Event": "Enviar evento personalizado de estado", - "Explore Room State": "Explorar estado da sala", - "Thank you!": "Obrigado!", - "Event sent!": "Evento enviado!", - "Event Type": "Tipo de evento", - "Event Content": "Conteúdo do evento", - "State Key": "Chave de estado", "Search the room directory": "Procurar o diretório de salas", "Chat with Riot Bot": "Falar com o Bot do Riot", "Get started with some tips from Riot Bot!": "Comece com algumas dicas do Bot do Riot", @@ -181,7 +23,7 @@ "Admin support for Dendrite": "Suporte de administração para o Dendrite", "Announcements about Synapse releases": "Anúncios acerca de lançamentos do Synapse", "Support for those using and running matrix-appservice-irc": "Suporte para aqueles a correr e a utilizar o matrix-appservice-irc", - "Building services on Matrix": "Construir serviços no Matrix", + "Building services on Matrix": "Construindo serviços no Matrix", "Support for those using the Matrix spec": "Suporte para os utilizadores da especificação do Matrix", "Design and implementation of E2E in Matrix": "Design e implementação de encriptação ponto-a-ponto (E2E) no Matrix", "Implementing VR services with Matrix": "Implementar serviços de realidade virtual (VR) com o Matrix", @@ -191,19 +33,7 @@ "Contributing code to Matrix and Riot": "Contribuir código para o Matrix e para o Riot", "Dev chat for the Riot/Web dev team": "Conversa de desenvolvimento para a equipa do Riot/Web", "Dev chat for the Dendrite dev team": "Conversa de desenvolvimento para a equipa do Dendrite", - "Co-ordination for Riot/Web translators": "Coordenação para a equipa de tradutores do Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!", - "Failed to change password. Is your password correct?": "Falha ao alterar a palavra-passe. A sua palavra-passe está correta?", - "You have successfully set a password!": "Palavra-passe definida com sucesso!", - "You can now return to your account after signing out, and sign in on other devices.": "Pode agora voltar à sua conta no fim de terminar sessão, e iniciar sessão noutros dispositivos.", - "Continue": "Continuar", - "Please set a password!": "Por favor, defina uma palavra-passe!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Isto irá permitir-lhe voltar à sua conta depois de terminar sessão, assim como iniciar sessão noutros dispositivos.", - "You have successfully set a password and an email address!": "Palavra passe e endereço de e-mail definidos com sucesso!", - "Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se, pode sempre definir um endereço de e-mail nas definições de utilizador se mudar de ideias.", - "To return to your account in future you need to <u>set a password</u>": "Para voltar à sua conta no futuro, necessita de <u>definir uma palavra-passe</u>", - "Set Password": "Definir palavra-passe", - "Couldn't load home page": "Não foi possível carregar a página inicial", - "Filter results": "Filtrar resultados", - "You must specify an event type!": "Tem que especificar um tipo de evento!" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix, especificando um diferente URL de servidor doméstico.<br/>Isto permite que você utilize Riot com uma conta Matrix existente em um servidor doméstico diferente.<br/><br/>Você também pode definir um servidor de identidade personalizado, porém não poderá convidar usuários por endereço de e-mail nem ser convidado por endereço de e-mail.", + "Co-ordination for Riot translators": "Coordenação para tradutores do Riot" } diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 40df7d60..f91d6bd3 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1,155 +1,15 @@ { - "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email", - "All messages": "Todas as mensagens", - "All messages (noisy)": "Todas as mensagens (alto)", - "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", - "Call invitation": "Convite para chamada", - "Cancel Sending": "Cancelar o envio", - "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", - "Close": "Fechar", - "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", "Custom Server Options": "Opções para Servidor Personalizado", - "delete the alias.": "apagar o apelido da sala.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", - "Direct Chat": "Conversa pessoal", - "Directory": "Diretório", "Dismiss": "Descartar", - "Download this file": "Baixar este arquivo", - "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", - "Enable desktop notifications": "Ativar notificações no desktop", - "Enable email notifications": "Ativar notificações por email", - "Enable notifications for this account": "Ativar notificações para esta conta", - "Enable them now": "Habilitar agora", - "Enter keywords separated by a comma:": "Coloque cada palavras-chave separada por vírgula:", - "Error": "Erro", - "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", - "Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala", - "Failed to change settings": "Falhou ao mudar as preferências", - "Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s", - "Failed to update keywords": "Falha ao alterar as palavras-chave", - "Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão", - "Failed to get public room list": "Falha ao acessar a lista pública de salas", - "Failed to set direct chat tag": "Falha ao definir conversa como pessoal", - "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", - "Favourite": "Favorito", - "Fetching third party location failed": "Falha ao acessar localização de terceiros", - "Files": "Arquivos", - "Filter room names": "Filtrar salas por título", - "Forget": "Esquecer", - "Forward Message": "Encaminhar", - "Guests can join": "Convidados podem entrar", - "Invite to this room": "Convidar para esta sala", - "Keywords": "Palavras-chave", - "Leave": "Sair", - "Low Priority": "Baixa prioridade", - "Members": "Membros", - "Mentions only": "Apenas menções", - "Messages containing my display name": "Mensagens contendo meu nome público", - "Messages containing my user name": "Mensagens contendo meu nome de usuário", - "Messages in group chats": "Mensagens em salas", - "Messages in one-to-one chats": "Mensagens em conversas pessoais", - "Messages sent by bot": "Mensagens enviadas por bots", - "more": "ver mais", - "Mute": "Mudo", - "No rooms to show": "Não existem salas a serem exibidas", - "Noisy": "Barulhento", - "Notification targets": "Alvos de notificação", - "Notifications": "Notificações", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", - "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", - "Notify me for anything else": "Notificar-me sobre qualquer outro evento", - "Off": "Desativado", - "On": "Ativado", - "Operation failed": "A operação falhou", - "Permalink": "Link permanente", - "powered by Matrix": "rodando a partir do Matrix", - "Quote": "Citar", - "Reject": "Rejeitar", - "Remove": "Remover", - "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", - "remove %(name)s from the directory.": "remover %(name)s da lista pública de salas.", - "Remove from Directory": "Remover da lista pública de salas", - "Resend": "Reenviar", - "Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede", - "Room not found": "Sala não encontrada", - "Search for a room": "Procurar por uma sala", - "Source URL": "URL fonte", - "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", - "There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui", - "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", - "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", - "Unable to join network": "Não foi possível conectar na rede", - "Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor", - "Unhide Preview": "Mostrar a pré-visualização", - "unknown error code": "código de erro desconhecido", - "Unnamed room": "Sala sem nome", - "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", - "View Decrypted Source": "Ver a fonte descriptografada", - "View Source": "Ver a fonte", - "When I'm invited to a room": "Quando sou convidada(o) a uma sala", - "World readable": "Público", - "You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", - "You are not receiving desktop notifications": "Você não está recebendo notificações desktop", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui", - "Sunday": "Domingo", - "Monday": "Segunda", - "Tuesday": "Terça", - "Wednesday": "Quarta", - "Thursday": "Quinta", - "Friday": "Sexta", - "Saturday": "Sábado", - "Today": "Hoje", - "Yesterday": "Ontem", - "#example": "#exemplo", - "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala", - "Advanced notification settings": "Configurações avançadas de notificação", - "customServer_text": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix, especificando uma URL de outro Servidor de Base.<br/> Isso permite que você use Riot com uma conta Matrix que exista em outro Servidor de Base.<br/> <br/> Você também pode configurar um servidor de Identidade personalizado, mas neste caso não poderá convidar usuárias(os) pelo endereço de e-mail, ou ser convidado(a) pelo seu endereço de e-mail.", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> e <a href=\"http://opera.com\">Opera</a> funcionam também.", - "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os casos.", - "Collapse panel": "Colapsar o painel", - "Expand panel": "Expandir o painel", - "I understand the risks and wish to continue": "Entendo os riscos e desejo continuar", - "Messages containing <span>keywords</span>": "Mensagens contendo <span>palavras-chave</span>", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Por favor instale <a href=\"https://www.google.com/chrome\">Chrome</a> ou <a href=\"https://getfirefox.com\">Firefox</a> para ter a melhor experiência de uso.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "O Riot usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.", - "Sorry, your browser is <b>not</b> able to run Riot.": "Perdão. O seu navegador <b>não</b> é capaz de rodar o Riot.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se você quiser tentar de qualquer maneira, pode continuar, mas aí vai ter que se virar sozinho(a) com os problemas que porventura encontrar!", + "powered by Matrix": "oferecido por Matrix", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s", - "A new version of Riot is available.": "Uma nova versão do Riot está disponível.", - "All Rooms": "Todas as salas", - "Cancel": "Cancelar", - "Changelog": "Histórico de alterações", - "Collecting app version information": "Coletando informação sobre a versão do app", - "Collecting logs": "Coletando logs", - "Describe your problem here.": "Descreva o seu problema aqui.", - "Failed to send report: ": "Falha ao enviar o relatório: ", - "Hide panel": "Ocultar o painel", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Para diagnosticar problemas, relatórios deste cliente serão enviados junto a esta notificação de falha. Se você prefere apenas enviar o seu texto acima, por favor des-selecione:", - "Loading bug report module": "Carregando o módulo de relatórios de erros", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Por favor, descreva a falha encontrada. O que você estava fazendo? O que você esperava que devia ocorrer? E o que aconteceu efetivamente?", - "Please describe the bug and/or send logs.": "Por favor, descreva as falhas e/ou envie os logs de erro.", - "Report a bug": "Reportar uma falha", "Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot versão web não é suportado a partir de celular. Quer instalar o app para celular?", - "Search": "Buscar", - "Search…": "Buscar…", - "Send": "Enviar", - "Send logs": "Enviar relatórios de erro", - "This Room": "Esta sala", - "Unavailable": "Indisponível", + "Riot is not supported on mobile web. Install the app?": "Riot não funciona em navegador de smartphone. Quer instalar o aplicativo?", "Unknown device": "Dispositivo desconhecido", - "Update": "Atualizar", - "Uploading report": "Enviando o relatório", - "What's New": "Novidades", - "What's new?": "O que há de novidades?", - "Waiting for response from server": "Esperando por resposta do servidor", - "OK": "Ok", "You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para poder iniciar uma chamada com compartilhamento de tela.", - "Login": "Fazer login", "Welcome to Riot.im": "Seja bem-vinda(o) a Riot.im", "Search the room directory": "Buscar na lista pública de salas", - "Chat with Riot Bot": "Conversar com o Bot do Riot", + "Chat with Riot Bot": "Converse com o bot do Riot", "Get started with some tips from Riot Bot!": "Comece com algumas dicas do Bot do Riot!", "General discussion about Matrix and Riot": "Discussão geral sobre o Matrix e o Riot", "Discussion of all things Matrix!": "Discussão sobre todas as coisas do Matrix!", @@ -159,7 +19,7 @@ "Matrix technical discussions": "Discussões técnicas do Matrix", "Running Matrix services": "Rodando serviços Matrix", "Community-run support for Synapse": "Apoio ao Synapse gerido pela comunidade", - "Admin support for Dendrite": "Suporte de administração para Dendrite", + "Admin support for Dendrite": "Suporte administrativo para o Dendrite", "Announcements about Synapse releases": "Anúncios sobre lançamentos do Synapse", "Support for those using and running matrix-appservice-irc": "Apoio para as pessoas usando e rodando matrix-appservice-irc", "Building services on Matrix": "Construindo serviços no Matrix", @@ -172,38 +32,22 @@ "Contributing code to Matrix and Riot": "Contribuindo com código para o Matrix e o Riot", "Dev chat for the Riot/Web dev team": "Chat de desenvolvimento para o time devel do Riot/Web", "Dev chat for the Dendrite dev team": "Chat de desenvolvimento para o time devel do Dendrite", - "Co-ordination for Riot/Web translators": "Coordenação para tradutoras(es) do Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muitas salas já existem no Matrix, algumas independentes, e outras relacionadas a redes existentes (tais como Slack, IRC, Gitter, entre outras). Dê uma olhada na lista de salas públicas!", - "Failed to change password. Is your password correct?": "Não foi possível mudar a senha. A sua senha está correta?", - "You have successfully set a password!": "Você definiu sua senha com sucesso!", - "You can now return to your account after signing out, and sign in on other devices.": "Você pode retornar agora para a sua conta depois de fazer logout, e então fazer login em outros dispositivos.", - "Continue": "Continuar", - "Please set a password!": "Por favor, defina uma senha!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Isso permitirá que você possa retornar à sua conta após fazer logout, e também fazer login em outros dispositivos.", - "(HTTP status %(httpStatus)s)": "(Status HTTP %(httpStatus)s)", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]", - "You have successfully set a password and an email address!": "Você definiu uma senha e um endereço de e-mail com sucesso!", - "Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se: você pode sempre definir um endereço de e-mail nas configurações de usuário, se mudar de ideia.", - "To return to your account in future you need to <u>set a password</u>": "Para poder, futuramente, retornar à sua conta, você precisa <u>definir uma senha</u>", - "Set Password": "Definir senha", - "Warning": "Atenção", - "Checking for an update...": "Verificando se há atualizações...", - "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", - "No update available.": "Não há atualizações disponíveis.", - "Downloading update...": "Baixando atualização...", - "Couldn't load home page": "Não foi possível carregar a página inicial", - "Back": "Voltar", - "Bug report sent": "Relatório do bug enviado", - "Developer Tools": "Ferramentas do desenvolvedor", - "Failed to send custom event.": "Falha ao enviar evento personalizado.", - "Filter results": "Filtrar resultados", - "Send Custom Event": "Enviar Evento Customizado", - "Send Custom State Event": "Enviar Evento de Estado Personalizado", - "Explore Room State": "Explorar Estado da Sala", - "You must specify an event type!": "Você precisa especificar um tipo do evento!", - "Thank you!": "Obrigado!", - "Event sent!": "Evento enviado!", - "Event Type": "Tipo do Evento", - "Event Content": "Conteúdo do Evento", - "State Key": "Chave do Estado" + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo oferecido por [matrix]", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções customizadas de servidor para conectar-se a outros servidores Matrix ao especificar uma outra URL de Servidor de Base (homeserver).<br/> Isso permite que você use o Riot com uma conta Matrix existente em outro servidor de base.<br/><br/>Você também pode definir um servidor de identidade customizado, mas neste caso você não poderá convidar outras pesoas por endereço de email, ou ser convidada/o pelo seu endereço de email.", + "Co-ordination for Riot translators": "Coordenação para tradutores Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Você pode usar as opções personalizadas do servidor para entrar em outros servidores Matrix, especificando um URL diferente de homeserver. Isso permite que você use o Riot com uma conta Matrix existente em um homeserver diferente.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Você também pode definir um servidor de identidade personalizado, mas não poderá convidar usuários por endereço de e-mail nem ser convidado por endereço de e-mail.", + "Sign In": "Entrar", + "Create Account": "Criar Conta", + "Need help?": "Precisa de ajuda?", + "Explore rooms": "Explore as salas", + "Room Directory": "Diretório de salas", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Sua configuração do Riot contém JSON inválido. Por favor corrija o erro e atualize a página.", + "The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s", + "Invalid JSON": "JSON inválido", + "Your Riot is misconfigured": "Riot possui um erro de configuração", + "Unexpected error preparing the app. See console for details.": "Erro inesperado preparando o aplicativo. Veja o console para mais detalhes.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: somente se pode especificar um valor entre default_server_config, default_server_name, ou default_hs_url.", + "Invalid configuration: no default server specified.": "Configuração inválida: servidor padrão não especificado." } diff --git a/src/i18n/strings/ro.json b/src/i18n/strings/ro.json new file mode 100644 index 00000000..ce8fd634 --- /dev/null +++ b/src/i18n/strings/ro.json @@ -0,0 +1,46 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot nu functionează pe mobil. Instalezi aplicaţia?", + "Riot Desktop on %(platformName)s": "Riot Desktop pe %(platformName)s", + "Unknown device": "Device necunoscut", + "Custom Server Options": "Opțiuni Server Personalizate", + "Dismiss": "Închide", + "powered by Matrix": "propulsat de Matrix", + "Welcome to Riot.im": "Bun venit pe Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat decentralizat, criptat & colaborare propulsata de [matrix]", + "Search the room directory": "Caută în lista de camere", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multe camere există deja in Matrix, conectate la rețele existente (Slack, IRC, Gitter etc) sau independente. Aruncă o privite in lista de camere!", + "Chat with Riot Bot": "Discută cu Riot Bot", + "Get started with some tips from Riot Bot!": "Începe cu câteva ponturi din partea Riot Bot!", + "General discussion about Matrix and Riot": "Discuție generală despre Matrix și Riot", + "Discussion of all things Matrix!": "Discuții despre toate subiectele Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Chat pentru desktop", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & chat pentru matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & chat pentru matrix-android-sdk", + "Matrix technical discussions": "Discuții tehnice Matrix", + "Running Matrix services": "Rularea serviciilor Matrix", + "Community-run support for Synapse": "Suport cu ajutorul comunității pentru Synapse", + "Admin support for Dendrite": "Suport Administrare pentru Dendrite", + "Announcements about Synapse releases": "Anunțuri despre lansări Synapse", + "Support for those using and running matrix-appservice-irc": "Suport pentru cei care utilizează și rulează matrix-appservice-irc", + "Building services on Matrix": "Construirea serviciilor cu Matrix", + "Support for those using the Matrix spec": "Suport pentru cei ce utilizează specificațiile Matrix", + "Design and implementation of E2E in Matrix": "Designul și planificarea E2E în Matrix", + "Implementing VR services with Matrix": "Implementarea serviciilor VR cu Matrix", + "Implementing VoIP services with Matrix": "Implementarea serviciilor VoIP cu Matrix", + "Discussion of the Identity Service API": "Discuții despre API-ul Serviciul de Identitate", + "Support for those using, running and writing other bridges": "Suport pentru cei ce folosesc, rulează și programeaza alți conectori", + "Contributing code to Matrix and Riot": "Contribuirea codului pentru Matrix și Riot", + "Dev chat for the Riot/Web dev team": "Chat pentru echipa de dezvoltare Riot/Web", + "Dev chat for the Dendrite dev team": "Chat pentru echipa de dezvoltare Dendrite", + "Co-ordination for Riot translators": "Coordonare pentru translatorii Riot", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s pe %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Trebuie să folosești HTTPS pentru a plasa un apel de tip screen-sharing.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Poți folosi opțiunile server personalizate pentru a te conecta la alte servere Matrix prin specificarea unui URL de tip Home server diferit.<br/>Acestă opțiune îți permite să utilizezi Riot cu un cont existent pe un home server diferit.<br/><br/>Poți folosi și un server de identitate personalizat, dar nu vei putea invita alți utilizatori prin adresa de email sau să fii tu însuți invitat prim email.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puteți utiliza opțiunile personalizate ale serverului pentru a vă conecta la alte servere Matrix specificând o adresă URL diferită pentru homeserver. Acest lucru vă permite să utilizați Riot cu un cont Matrix existent pe un alt server de domiciliu.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "De asemenea, puteți seta un server de identitate personalizat, dar nu veți putea să invitați utilizatorii pe adresa de e-mail sau să vă invitați personal pe adresa de e-mail.", + "Sign In": "Autentificare", + "Create Account": "Înregistare", + "Need help?": "Ai nevoie de ajutor?", + "Explore rooms": "Explorează camerele", + "Room Directory": "Lista de camere" +} diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 1f08d804..125a2240 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1,226 +1,54 @@ { - "Add an email address above to configure email notifications": "Добавьте email адрес для оповещений", - "All notifications are currently disabled for all targets.": "Все оповещения для всех устройств отключены.", - "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения по email.", - "Can't update user notification settings": "Не удается обновить пользовательские настройки оповещения", - "Couldn't find a matching Matrix room": "Не удалось найти подходящую комнату Matrix", - "Custom Server Options": "Настраиваемые параметры сервера", - "delete the alias.": "удалить псевдоним.", - "Direct Chat": "Прямой чат", - "Directory": "Каталог", - "Dismiss": "Отказ", - "Enable audible notifications in web client": "Включить звуковые уведомления в веб-клиенте", - "Enable desktop notifications": "Включить оповещения на рабочем столе", - "Enable email notifications": "Включить уведомления по email", - "Enable notifications for this account": "Включить уведомления для этой учетной записи", - "Enable them now": "Включить сейчас", - "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", - "Error": "Ошибка", - "Error saving email notification preferences": "Ошибка при сохранении настроек уведомлений по email", - "#example": "#пример", - "Failed to change settings": "Не удалось изменить настройки", - "Failed to update keywords": "Не удалось обновить ключевые слова", - "Failed to get protocol list from Home Server": "Не удалось получить список протоколов с домашнего сервера", - "Failed to get public room list": "Не удалось получить список общедоступных комнат", - "Failed to set Direct Message status of room": "Не удалось установить статус прямого сообщения в комнате", - "Favourite": "Избранное", - "Fetching third party location failed": "Не удалось извлечь местоположение третьей стороны", - "Files": "Файлы", - "Filter room names": "Фильтр по названию комнат", - "Forget": "Забыть", - "Guests can join": "Гости могут присоединиться", - "Invite to this room": "Пригласить в комнату", - "Keywords": "Ключевые слова", - "Leave": "Покинуть", - "Low Priority": "Низкий приоритет", - "Members": "Участники", - "No rooms to show": "Нет комнат для отображения", - "Noisy": "Со звуком", - "Notification targets": "Цели уведомления", - "Notifications": "Уведомления", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь:", - "Notify for all other messages/rooms": "Уведомлять обо всех других сообщениях/комнатах", - "Notify me for anything else": "Уведомлять во всех остальных случаях", - "Off": "Выключить", - "On": "Включить", - "Operation failed": "Сбой операции", - "powered by Matrix": "Основано на Matrix", - "Reject": "Отклонить", - "Remove": "Удалить", - "Remove from Directory": "Удалить из каталога", - "Riot does not know how to join a room on this network": "Riot не знает, как присоединиться к комнате, принадлежащей к этой сети", - "Room not found": "Комната не найдена", - "Search for a room": "Поиск комнаты", - "The Home Server may be too old to support third party networks": "Домашний сервер может быть слишком старым для поддержки сетей сторонних производителей", - "There are advanced notifications which are not shown here": "Существуют дополнительные уведомления, которые не показаны здесь", - "The server may be unavailable or overloaded": "Сервер, вероятно, недоступен или перегружен", - "Unable to fetch notification target list": "Не удалось получить список целей уведомления", - "Unable to join network": "Не удается подключиться к сети", - "Unable to look up room ID from server": "Не удалось найти ID комнаты на сервере", - "unknown error code": "неизвестный код ошибки", - "Unnamed room": "Комната без названия", - "World readable": "Доступно всем", - "You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Возможно вы настроили их не в Riot, а в другом Matrix-клиенте. Настроить их в Riot не удастся, но они будут в нем применяться", - "All messages": "Все сообщения", - "All messages (noisy)": "Все сообщения (со звуком)", - "Cancel Sending": "Отменить отправку", - "Close": "Закрыть", - "Download this file": "Скачать этот файл", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и удалить %(name)s из каталога?", - "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", - "Failed to forget room %(errCode)s": "Не удалось удалить комнату %(errCode)s", - "Failed to remove tag %(tagName)s from room": "Не удалось удалить тег %(tagName)s из комнаты", - "Failed to set direct chat tag": "Не удалось установить тег прямого чата", - "Unhide Preview": "Показать предварительный просмотр", - "Uploaded on %(date)s by %(user)s": "Отправлено %(date)s для %(user)s", - "View Decrypted Source": "Просмотр расшифрованного источника", - "View Source": "Просмотр источника", - "You cannot delete this image. (%(code)s)": "Это изображение нельзя удалить. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Это сообщение нельзя удалить. (%(code)s)", - "Sunday": "Воскресенье", - "Monday": "Понедельник", - "Tuesday": "Вторник", - "Wednesday": "Среда", - "Thursday": "Четверг", - "Friday": "Пятница", - "Saturday": "Суббота", - "Today": "Сегодня", - "Yesterday": "Вчера", - "Mentions only": "Только при упоминаниях", - "Mute": "Беззвучный", - "Permalink": "Постоянная ссылка", - "Quote": "Цитата", - "Remove %(name)s from the directory?": "Удалить %(name)s из каталога?", - "remove %(name)s from the directory.": "удалить %(name)s из каталога.", - "Resend": "Переотправить", - "Source URL": "Исходный URL-адрес", - "Advanced notification settings": "Дополнительные параметры уведомлений", - "Call invitation": "Пригласительный звонок", - "customServer_text": "Вы можете использовать настраиваемые параметры сервера для входа на другие серверы Matrix, указав другой URL-адрес домашнего сервера.<br/>Это позволяет использовать это приложение с существующей учетной записью Matrix на другом домашнем сервере.<br/><br/>Вы также можете установить другой сервер идентификации, но это, как правило, будет препятствовать взаимодействию с пользователями на основе адреса электронной почты.", - "Messages containing my display name": "Сообщения, содержащие мое имя", - "Messages containing my user name": "Сообщение, содержащие мое имя пользователя", - "Messages in group chats": "Сообщения в групповых чатах", - "Messages in one-to-one chats": "Сообщения в индивидуальных чатах", - "Messages sent by bot": "Сообщения, отправленные ботом", - "more": "больше", - "When I'm invited to a room": "Когда меня приглашают в комнату", - "A new version of Riot is available.": "Доступна новая версия Riot.", - "All Rooms": "Все комнаты", - "Cancel": "Отмена", - "Changelog": "История изменений", - "Collapse panel": "Свернуть панель", - "Collecting app version information": "Сбор информации о версии приложения", - "Collecting logs": "Сбор журналов", + "Custom Server Options": "Параметры другого сервера", + "Dismiss": "Отклонить", + "powered by Matrix": "основано на Matrix", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> и <a href=\"http://opera.com\">Opera</a> работают тоже.", - "Describe your problem here.": "Опишите вашу проблему здесь.", - "Expand panel": "Развернуть панель", - "Failed to send report: ": "Не удалось отправить отчет: ", - "Forward Message": "Переслать сообщение", - "Hide panel": "Скрыть панель", - "I understand the risks and wish to continue": "Я понимаю риски и желаю продолжить", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Чтобы диагностировать проблемы, журналы работы этого клиента будут отправлены вместе с сообщением об ошибке. Если вы предпочитаете отправить только текст выше, пожалуйста, снимите отметку:", - "Loading bug report module": "Загрузка модуля Отчет об ошибках", - "Messages containing <span>keywords</span>": "Сообщения, содержащие определенные <span>ключевые слова</span>", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Пожалуйста, опишите ошибку. Что сделали? Чего ожидали? Что на самом деле произошло?", - "Please describe the bug and/or send logs.": "Опишите ошибку и/или отправьте журналы.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Для получения наилучшего опыта при работе с Riot, пожалуйста, установите <a href=\"https://www.google.com/chrome\">Chrome</a> или <a href=\"https://getfirefox.com\">Firefox</a>.", - "Report a bug": "Сообщить об ошибке", "Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot не поддерживает версию веб-сайта для мобильных устройств. Установить приложение?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует многие передовые возможности браузера, некоторые из которых недоступны или являются экспериментальным в вашем текущем браузере.", - "Search": "Поиск", - "Search…": "Поиск.…", - "Send": "Отправить", - "Send logs": "Отправка журналов", - "Sorry, your browser is <b>not</b> able to run Riot.": "К сожалению, ваш браузер <b>не способен</b> запустить Riot.", - "This Room": "Эта комната", - "Unavailable": "Недоступен", + "Riot is not supported on mobile web. Install the app?": "Веб-сайт Riot не адаптирован для мобильных устройств. Установить приложение?", "Unknown device": "Неизвестное устройство", - "Update": "Обновление", - "Uploading report": "Отправка отчета", - "What's New": "Что нового", - "What's new?": "Что нового?", - "Waiting for response from server": "Ожидание ответа от сервера", - "OK": "OK", - "You need to be using HTTPS to place a screen-sharing call.": "Требуется использование HTTPS для совместного использования рабочего стола.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "В текущем браузере внешний вид приложения может быть полностью неверным, а некоторые или все функции могут не работать. Если вы хотите попробовать в любом случае, то можете продолжить, но с теми проблемами, с которыми вы можете столкнуться вам придется разбираться самостоятельно!", - "Login": "Войти", - "Welcome to Riot.im": "Добро пожаловать на Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованный, зашифрованный чат и совместная работа при поддержке [matrix]", + "You need to be using HTTPS to place a screen-sharing call.": "Для трансляции рабочего стола требуется использование HTTPS.", + "Welcome to Riot.im": "Добро пожаловать в Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованный, шифрованный чат и совместное рабочее пространство на основе [matrix]", "Search the room directory": "Поиск в каталоге комнат", - "Chat with Riot Bot": "Пообщаться с ботом Riot", - "Get started with some tips from Riot Bot!": "Начните с некоторых советов от бота Riot!", - "General discussion about Matrix and Riot": "Общая дискуссия о Matrix и Riot", - "Discussion of all things Matrix!": "Дискуссия обо всем, что связано с Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & Desktop-чат", - "Matrix technical discussions": "Технические дискуссии о Matrix", - "Running Matrix services": "Запуск сервисов Matrix", - "Community-run support for Synapse": "Поддержка Synapse от сообщества", + "Chat with Riot Bot": "Чат с ботом Riot", + "Get started with some tips from Riot Bot!": "Начните с советов от бота Riot!", + "General discussion about Matrix and Riot": "Общие разговоры о Matrix и Riot", + "Discussion of all things Matrix!": "Разговоры обо всем, что связано с Matrix!", + "Riot/Web & Desktop chat": "Чат о Riot/Web и Desktop", + "Matrix technical discussions": "Технические обсуждения Matrix", + "Running Matrix services": "Запуск Matrix сервисов", + "Community-run support for Synapse": "Общественная поддержка Synapse", "Admin support for Dendrite": "Административная поддержка Dendrite", - "Building services on Matrix": "Разработка сервисов на Matrix", - "Implementing VoIP services with Matrix": "Внедрение VoIP-услуг с помощью Matrix", - "(HTTP status %(httpStatus)s)": "(статус HTTP %(httpStatus)s)", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk чат", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk чат", - "Announcements about Synapse releases": "Объявления о выпусках Synapse", - "Support for those using and running matrix-appservice-irc": "Поддержка тех, кто использует и работает с matrix-appservice-irc", - "You have successfully set a password!": "Вы успешно установили пароль!", - "Continue": "Продолжить", - "Please set a password!": "Пожалуйста, установите пароль!", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, как связанных с существующими сетями (Slack, IRC, Gitter и пр.), так и независимых. Ищите в каталоге!", - "Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?", - "You can now return to your account after signing out, and sign in on other devices.": "Теперь вы сможете вернуться к своей учетной записи после выхода из системы и войти на других устройствах.", - "Support for those using the Matrix spec": "Поддержка пользователей, использующих Matrix spec", - "Design and implementation of E2E in Matrix": "Разработка и внедрение сквозного шифрования (E2E) в Matrix", - "Implementing VR services with Matrix": "Внедрение сервисов виртуальной реальности (VR) с помощью Matrix", - "Discussion of the Identity Service API": "Обсуждение API службы идентификации", - "Support for those using, running and writing other bridges": "Поддержка для тех, кто использует, разрабатывает и внедряет приложения интеграции для Matrix", - "Contributing code to Matrix and Riot": "Внести свой вклад в разработку кода Matrix и Riot", - "Dev chat for the Riot/Web dev team": "Чат с командой разработчиков Riot/Web", - "Dev chat for the Dendrite dev team": "Чат с командой разработчиков Dendrite", - "Co-ordination for Riot/Web translators": "Координация для переводчиков Riot/Web", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Это позволит вам вернуться к учетной записи после выхода из системы и войти на других устройствах.", - "You have successfully set a password and an email address!": "Вы успешно установили пароль и адрес email!", - "Remember, you can always set an email address in user settings if you change your mind.": "Помните, что вы всегда сможете задать адрес email в настройках пользователя, если передумаете.", - "Set Password": "Задать пароль", - "To return to your account in future you need to <u>set a password</u>": "Чтобы вернуться к учетной записи в будущем, необходимо <u>задать пароль</u>", - "Warning": "Предупреждение", - "Checking for an update...": "Проверка обновлений...", - "Error encountered (%(errorDetail)s).": "Обнаружена ошибка (%(errorDetail)s).", - "No update available.": "Нет доступных обновлений.", - "Downloading update...": "Загрузка обновления...", - "Couldn't load home page": "Не удалось загрузить домашнюю страницу", - "Bug report sent": "Отчет об ошибке отправлен", - "Thank you!": "Спасибо!", - "Back": "Назад", - "Developer Tools": "Инструменты разработчика", - "Failed to send custom event.": "Не удалось отправить индивидуальное мероприятие.", - "Send Custom Event": "Отправить индивидуальное мероприятие", - "Send Custom State Event": "Отправить статус индивидуального мероприятия", - "Explore Room State": "Просмотр статуса комнаты", - "Event sent!": "Мероприятие отправлено!", - "Event Type": "Тип мероприятия", - "Event Content": "Содержание мероприятия", - "State Key": "Ключ состояния", - "Filter results": "Фильтрация результатов", - "You must specify an event type!": "Необходимо указать тип мероприятия!", - "Show message in desktop notification": "Показывать сообщение в уведомлении на рабочем столе", - "Pin Message": "Закрепить сообщение", - "Unpin Message": "Открепить сообщение", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Вы можете использовать пользовательские параметры сервера для входа на другие сервера Matrix, указав другой URL-адрес домашнего сервера.<br/>Это позволяет использовать Riot с существующей учетной записью Matrix на другом домашнем сервере.<br/><br/>Кроме того, можно установить пользовательский сервер идентификации, однако вы не сможете ни пригласить других пользователей, ни быть приглашенным, используя адрес электронной почты, .", - "Edit": "Редактировать", - "Register": "Регистрация", - "Rooms": "Комнаты", - "Invite to this community": "Пригласить в это сообщество", - "Add rooms to this community": "Добавить комнаты в это сообщество", - "Toolbox": "Панель инструментов", - "Send Account Data": "Отправить данные аккаунта", - "Explore Account Data": "Просмотр данных аккаунта", - "Away": "Нет на месте", - "Appear Offline": "Отображать как не в сети", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Лучший опыт вы получите, установив <chromeLink>Chrome</chromeLink> или <firefoxLink>Firefox</firefoxLink>.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> и <operaLink>Opera</operaLink> работают тоже.", - "Reply": "Ответить" + "Building services on Matrix": "Разработка сервисов на основе Matrix", + "Implementing VoIP services with Matrix": "Реализация VoIP сервисов на основе Matrix", + "Riot/iOS & matrix-ios-sdk chat": "Чат о Riot/iOS и matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Чат о Riot/Android и matrix-android-sdk", + "Announcements about Synapse releases": "Уведомление о релизах Synapse", + "Support for those using and running matrix-appservice-irc": "Поддержка пользователей и администраторов matrix-appservice-irc", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, как связанных с другими сетями (Slack, IRC, Gitter и пр.), так и самостоятельных. Загляните в каталог!", + "Support for those using the Matrix spec": "Поддержка по спецификации Matrix", + "Design and implementation of E2E in Matrix": "Разработка и внедрение сквозного шифрования в Matrix", + "Implementing VR services with Matrix": "Реализация сервисов виртуальной реальности (VR) на основе Matrix", + "Discussion of the Identity Service API": "Обсуждение API серверов идентификации", + "Support for those using, running and writing other bridges": "Поддержка пользователей и разработчиков прочих мостов в Matrix", + "Contributing code to Matrix and Riot": "Участие в разработке Matrix и Riot", + "Dev chat for the Riot/Web dev team": "Чат для команды разработчиков Riot/Web", + "Dev chat for the Dendrite dev team": "Чат для команды разработчиков Dendrite", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Вы можете войти на другой сервер Matrix, указав его URL-адрес.<br/>Это позволяет использовать Riot с учетной записью Matrix на другом сервере.<br/><br/>Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы не сможете приглашать пользователей или быть приглашенным по адресу электронной почты.", + "Co-ordination for Riot translators": "Координационный чат для переводчиков Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Вы можете изменить параметры для входа на другие Matrix серверы, указав другой URL.\nЭто позволит использовать Riot с учетной записью Matrix, существующей на другом сервере.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Также можно изменить сервер идентификации, но без возможности приглашать (или быть приглашённым) по адресу электронной почты.", + "Sign In": "Войти в систему", + "Create Account": "Создать аккаунт", + "Need help?": "Помочь?", + "Room Directory": "Каталог комнат", + "Explore rooms": "Исследовать комнаты", + "Unexpected error preparing the app. See console for details.": "Неожиданная ошибка при подготовке приложения. Подробности см. в консоли.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Неверная конфигурация: может указывать только один из следующих параметров: default_server_config, default_server_name или default_hs_url.", + "Invalid configuration: no default server specified.": "Неверная конфигурация: сервер по умолчанию не указан.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Эта установка Riot, кажется, имеет неверную конфигурацию сервера. Если вы являетесь администратором, пожалуйста, исправьте ошибку ниже", + "Your Riot is misconfigured": "Ваш Riot неправильно настроен", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфигурация Riot содержит нерабочий JSON. Пожалуйста исправьте проблему и перезагрузите страницу.", + "The message from the parser is: %(message)s": "Сообщение из парсера: %(message)s", + "Invalid JSON": "Нерабочий JSON" } diff --git a/src/i18n/strings/sco.json b/src/i18n/strings/sco.json new file mode 100644 index 00000000..7078a336 --- /dev/null +++ b/src/i18n/strings/sco.json @@ -0,0 +1,3 @@ +{ + "Unexpected error preparing the app. See console for details.": "Unexpectit error came up gittin the app set up. See the console? Mair details ur thare." +} diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index b80a2499..4e398d29 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -1,193 +1,13 @@ { "Riot is not supported on mobile web. Install the app?": "Riot nie je podporovaný na mobilných zariadeniach. Želáte si nainštalovať aplikáciu?", - "Collecting app version information": "Získavajú sa informácie o verzii aplikácii", - "Collecting logs": "Získavajú sa záznamy", - "Uploading report": "Prebieha odovzdanie hlásenia", - "Waiting for response from server": "Čakanie na odpoveď zo servera", "Riot Desktop on %(platformName)s": "Riot Desktop pre %(platformName)s", "Unknown device": "Neznáme zariadenie", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s cez %(browserName)s pre %(osName)s", "You need to be using HTTPS to place a screen-sharing call.": "Ak si želáte spustiť zdieľanie obrazovky, musíte byť pripojení cez protokol HTTPS.", - "Messages containing my display name": "Správy obsahujúce moje zobrazované meno", - "Messages containing my user name": "Správy obsahujúce moje používateľské meno", - "Messages in one-to-one chats": "Správy v priamych konverzáciách", - "Messages in group chats": "Správy v skupinových konverzáciách", - "When I'm invited to a room": "Pozvania vstúpiť do miestnosti", - "Call invitation": "Audio / Video hovory", - "Messages sent by bot": "Správy odosielané robotmi", - "Error saving email notification preferences": "Chyba pri ukladaní nastavení oznamovania emailom", - "An error occurred whilst saving your email notification preferences.": "Počas ukladania vašich nastavení oznamovania emailom sa vyskytla chyba.", - "Keywords": "Kľúčové slová", - "Enter keywords separated by a comma:": "Zadajte kľúčové slová oddelené čiarkou:", - "OK": "OK", - "Failed to change settings": "Nepodarilo sa zmeniť nastavenia", - "Operation failed": "Operácia zlyhala", - "Can't update user notification settings": "Nie je možné aktualizovať používateľské nastavenia oznamovania", - "Failed to update keywords": "Nepodarilo sa aktualizovať kľúčové slová", - "Messages containing <span>keywords</span>": "Správy obsahujúce <span>kľúčové slová</span>", - "Notify for all other messages/rooms": "oznamovať všetky ostatné správy / miestnosti", - "Notify me for anything else": "Oznamovať mi všetko ostatné", - "Enable notifications for this account": "Povoliť oznámenia pre tento účet", - "All notifications are currently disabled for all targets.": "Momentálne sú zakázané všetky oznámenia pre všetky ciele.", - "Add an email address above to configure email notifications": "Ak si chcete nastaviť oznamovanie emailom, pridajte si emailovú adresu vyššie", - "Enable email notifications": "Povoliť oznamovanie emailom", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Oznámenia nasledujúcich kľúčových slov sa riadia pravidlami, ktoré nie je možné zobraziť na tomto mieste:", - "Unable to fetch notification target list": "Nie je možné získať zoznam cieľov oznámení", - "Notification targets": "Ciele oznámení", - "Advanced notification settings": "Pokročilé nastavenia oznámení", - "There are advanced notifications which are not shown here": "Niektoré pokročilé oznámenia nemôžu byť zobrazené", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Tieto nastavenia oznámení sa použijú aj napriek tomu, že ich nemôžete meniť cez Riot. Pravdepodobne ste si ich nastavili v inej aplikácii", - "Enable desktop notifications": "Povoliť oznámenia na pracovnej ploche", - "Show message in desktop notification": "Zobraziť text správy v oznámení na pracovnej ploche", - "Enable audible notifications in web client": "Povoliť zvukové oznámenia vo webovom klientovi", - "Off": "Zakázané", - "On": "Povolené", - "Noisy": "Hlučné", - "Failed to set direct chat tag": "Nepodarilo sa nastaviť značku priama konverzácia", - "Failed to remove tag %(tagName)s from room": "Nepodarilo sa odstrániť značku %(tagName)s pre túto miestnosť", - "Failed to add tag %(tagName)s to room": "Nepodarilo sa pridať značku %(tagName)s pre túto miestnosť", - "Search…": "Hľadať…", - "Search": "Vyhľadávanie", - "This Room": "V tejto miestnosti", - "All Rooms": "Vo všetkych miestnostiach", - "Sunday": "Nedeľa", - "Monday": "Pondelok", - "Tuesday": "Utorok", - "Wednesday": "Streda", - "Thursday": "Štvrtok", - "Friday": "Piatok", - "Saturday": "Sobota", - "Today": "Dnes", - "Yesterday": "Včera", "Custom Server Options": "Vlastné možnosti servera", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vlastné nastavenia servera môžete použiť na pripojenie k iným serverom Matrix a to zadaním URL adresy domovského servera.<br/>Umožní vám to použiť Riot s už existujúcim Matrix účtom na akomkoľvek domovskom servery.<br/><br>Môžete tiež nastaviť vlastný server totožností, no ak tak urobíte, nebudete môcť do konverzácií pozývať používateľov zadaním ich emailovej adresy, ani ostatní nebudú môcť pozvať vás zadaním vašej emailovej adresy.", "Dismiss": "Zamietnuť", "powered by Matrix": "poháňa Matrix", - "You are not receiving desktop notifications": "Nedostávate oznámenia na pracovnej ploche", - "Enable them now": "Povolte si ich teraz", - "What's New": "Čo Je Nové", - "Update": "Aktualizovať", - "What's new?": "Čo je nové?", - "A new version of Riot is available.": "Dostupná je nová verzia Riot.", - "To return to your account in future you need to <u>set a password</u>": "Aby ste sa v budúcnosti mohli vrátiť k vašemu účtu mali by ste si teraz <u>nastaviť heslo</u>", - "Toolbox": "Nástroje", - "Set Password": "Nastaviť Heslo", - "Error encountered (%(errorDetail)s).": "Vyskytla sa chyba (%(errorDetail)s).", - "Checking for an update...": "Kontrola dostupnosti aktualizácie...", - "No update available.": "K dispozícii nie je žiadna aktualizácia.", - "Downloading update...": "Sťahovanie aktualizácie...", - "Warning": "Upozornenie", - "Error": "Chyba", - "You cannot delete this image. (%(code)s)": "Nemôžete vymazať tento obrázok. (%(code)s)", - "Uploaded on %(date)s by %(user)s": "Nahral používateľ %(user)s dňa %(date)s", - "Remove": "Odstrániť", - "Close": "Zatvoriť", - "Download this file": "Stiahnuť tento súbor", - "Please describe the bug and/or send logs.": "Prosím, popíšte problém a / alebo pošlite záznamy.", - "Loading bug report module": "Načítanie modulu hlásenia chýb", - "Bug report sent": "Hlásenie chyby odoslané", - "Thank you!": "Ďakujeme!", - "Failed to send report: ": "Nepodarilo sa odoslať hlásenie: ", - "Cancel": "Zrušiť", - "Report a bug": "Ohlásiť chybu", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Prosím, Napíšte text hlásenia. Čo ste práve robili? Čo ste očakávali? Čo sa v skutočnosti udialo?", - "Describe your problem here.": "Tu popíšte váš problém.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "S cieľom lepšej diagnostiky problému sa spolu s vašim hlásením odošlú záznami o činnosti programu Riot. Ak si želáte odoslať len text hlásenia, odškrtnite nasledujúce pole:", - "Send logs": "Zahrnúť záznamy", - "Send": "Odoslať", - "Unavailable": "Nedostupné", - "Changelog": "Zoznam zmien", - "Back": "Naspäť", - "You must specify an event type!": "Musíte nastaviť typ udalosti!", - "Event sent!": "Udalosť odoslaná!", - "Failed to send custom event.": "Odoslanie vlastnej udalosti zlyhalo.", - "Event Type": "Typ Udalosti", - "Event Content": "Obsah Udalosti", - "State Key": "State Key", - "Edit": "Upraviť", - "Filter results": "Filtrovať výsledky", - "Send Custom Event": "Odoslať vlastnú udalosť", - "Send Account Data": "Odoslať Údaje Účtu", - "Explore Account Data": "Preskúmať Údaje účtu", - "Explore Room State": "Preskúmať Stav Miestnosti", - "Developer Tools": "Vývojárske Nástroje", - "You have successfully set a password!": "Ǔspešne ste si nastavili heslo!", - "You have successfully set a password and an email address!": "Úspešne si si nastavili heslo aj emailovú adresu!", - "You can now return to your account after signing out, and sign in on other devices.": "Odteraz sa budete k svojmu účtu vedieť vrátiť aj po odhlásení, alebo tiež prihlásiť na iných zariadeniach.", - "Remember, you can always set an email address in user settings if you change your mind.": "Všimnite si, Emailovú adresu môžete pridať aj neskôr v časti nastavenia, ak zmeníte svoj názor.", - "Continue": "Pokračovať", - "Failed to change password. Is your password correct?": "Nepodarilo sa zmeniť heslo. Zadali ste správne heslo?", - "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", - "Please set a password!": "Prosím, nastavte si heslo!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Toto vám v budúcnosti umožní vrátiť sa k vašemu účtu aj po odhlásení, alebo tiež prihlásiť sa na iných zariadeniach.", - "You cannot delete this message. (%(code)s)": "Nemôžete vymazať túto správu. (%(code)s)", - "Resend": "Poslať znovu", - "Cancel Sending": "Zrušiť odosielanie", - "Forward Message": "Preposlať správu", - "Unpin Message": "Zrušiť pripnutie správy", - "Pin Message": "Pripnúť správu", - "View Source": "Zobraziť zdroj", - "View Decrypted Source": "Zobraziť dešifrovaný zdroj", - "Unhide Preview": "Zobraziť náhľad", - "Permalink": "Trvalý odkaz", - "Quote": "Citácia", - "Source URL": "Pôvodná URL", - "Failed to set Direct Message status of room": "Nepodarilo sa nastaviť stav miestnosti priama konverzácia", - "unknown error code": "neznámy kód chyby", - "Failed to forget room %(errCode)s": "Nepodarilo sa zabudnuť miestnosť %(errCode)s", - "All messages (noisy)": "Všetky správy (hlučné)", - "All messages": "Všetky správy", - "Mentions only": "Len zmienky", - "Mute": "Umlčať", - "Leave": "Opustiť", - "Forget": "Zabudnuť", - "Reject": "Odmietnuť", - "Favourite": "Obľúbená", - "Low Priority": "Nízka priorita", - "Direct Chat": "Priama konverzácia", - "Sorry, your browser is <b>not</b> able to run Riot.": "Prepáčte, vo vašom prehliadači <b>nie je</b> možné spustiť Riot.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot sa spolieha na mnohé pokročilé vlastnosti prehliadača internetu, a niektoré z nich sú vo vašom prehliadači experimentálne alebo nie sú k dispozícii vôbec.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Prosím, nainštalujte si <a href=\"https://www.google.com/chrome\">Chrome</a> alebo <a href=\"https://getfirefox.com\">Firefox</a> , aby bol váš zážitok pri používaní Riot čo možno najlepší.", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> a <a href=\"http://opera.com\">Opera</a> tiež fungujú spoľahlivo.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Vo vašom súčasnom prehliadači nemusí Riot vizerať ani fungovať správne a niektoré alebo všetky vlastnosti môžu chýbať. Ak to chcete vyskúšať, môžete pokračovať, no pri riešení problémov s tým spojených si budete musieť poradiť na vlastnú päsť!", - "I understand the risks and wish to continue": "Rozumiem rizikám a želám si pokračovať", - "Couldn't load home page": "Nie je možné načítať domovskú stránku", - "Login": "Prihlásiť", - "Register": "Registrovať", - "Invite to this room": "Pozvať do tejto miestnosti", - "Members": "Členovia", - "Files": "Súbory", - "Notifications": "Oznámenia", - "Rooms": "Miestnosti", - "Hide panel": "Skryť panel", - "Invite to this community": "Pozvať do tejto komunity", - "Add rooms to this community": "Pridať miestnosti do tejto komunity", - "Failed to get protocol list from Home Server": "Nepodarilo sa získať zoznam protokolov z domovského servera", - "The Home Server may be too old to support third party networks": "Domovský server môže byť natoľko zastaralý, že nepodporuje siete tretíh strán", - "Failed to get public room list": "Nepodarilo sa získať zoznam verejných miestností", - "The server may be unavailable or overloaded": "Server môže byť nedostupný alebo preťažený", - "Unnamed room": "Nepomenovaná miestnosť", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Vymazať alias %(alias)s a odstrániť miestnosť %(name)s z adresára?", - "Remove %(name)s from the directory?": "Odstrániť miestnosť %(name)s z adresára?", - "Remove from Directory": "Odstrániť z adresára", - "remove %(name)s from the directory.": "odstrániť %(name)s z adresára.", - "delete the alias.": "vymazať alias.", - "Unable to join network": "Nie je možné sa pripojiť k sieti", - "Riot does not know how to join a room on this network": "Riot nedokáže vstúpiť do miestnosti na tejto sieti", - "Room not found": "Miestnosť nenájdená", - "Couldn't find a matching Matrix room": "Nie je možné nájsť zodpovedajúcu Matrix miestnosť", - "Fetching third party location failed": "Nepodarilo sa získať umiestnenie tretej strany", - "Unable to look up room ID from server": "Nie je možné vyhľadať ID miestnosti na servery", - "World readable": "Viditeľné pre každého", - "Guests can join": "Pripojiť sa môžu aj hostia", - "Directory": "Adresár", - "No rooms to show": "Žiadne miestnosti na zobrazenie", - "Search for a room": "Vyhľadať miestnosť", - "#example": "#príklad", - "more": "viac", - "Expand panel": "Rozbaliť panel", - "Collapse panel": "Zbaliť panel", - "Filter room names": "Filtrovať názvy miestností", "Welcome to Riot.im": "Víta vás Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráca na platforme [matrix]", "Search the room directory": "Prehľadať adresár miestností", @@ -215,10 +35,13 @@ "Contributing code to Matrix and Riot": "Prispievanie kódu projektom Matrix a Riot", "Dev chat for the Riot/Web dev team": "Diskusia pre tím vývojárov Riot/Web", "Dev chat for the Dendrite dev team": "Diskusia pre tím vývojárov Dendrite", - "Co-ordination for Riot/Web translators": "Koordinácia prekladov Riot/Web", - "Appear Offline": "Zdá sa byť nedostupný", - "Away": "Preč", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Aby ste s používania mali čo možno najlepší dojem, nainštalujte si <chromeLink>Chrome</chromeLink> alebo <firefoxLink>Firefox</firefoxLink>.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "Správne fungujú aj <safariLink>Safari</safariLink> a <operaLink>Opera</operaLink>.", - "Reply": "Odpovedať" + "Co-ordination for Riot translators": "Koordinácia prekladov Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Môžete použiť vlastné možnosti servera na prihlásenie sa k ďalším serverom Matrix zadaním URL adresy domovského servera. Toto vám umožní použiť Riot na prihlásenie sa k existujúcemu Matrix účtu na inom domovskom servery.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Môžete tiež nastaviť vlastnú URL adresu servera totožností, potom ale nebudete môcť pozývať používateľov zadaním ich emailovej adresy a telefónneho čísla a ani ostatní nebudú môcť pozvať vás zadaním vašej emailovej adresy a telefónneho čísla.", + "Sign In": "Prihlásiť sa", + "Create Account": "Vytvoriť účet", + "Need help?": "Potrebujete pomoc?", + "Explore rooms": "Preskúmať miestnosti", + "Room Directory": "Adresár miestností", + "Your Riot is misconfigured": "Váš Riot nie je nastavený správne" } diff --git a/src/i18n/strings/sl.json b/src/i18n/strings/sl.json new file mode 100644 index 00000000..174cf010 --- /dev/null +++ b/src/i18n/strings/sl.json @@ -0,0 +1,21 @@ +{ + "Riot Desktop on %(platformName)s": "Namizni Riot za %(platformName)s", + "Unknown device": "Neznana naprava", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s s %(browserName)s na %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Za klic s skupno rabo zaslona potrebujete HTTPS.", + "powered by Matrix": "poganja Matrix", + "Custom Server Options": "Možnosti strežnika po meri", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Možnosti strežnika po meri lahko uporabite za prijavo v druge Matrix strežnike, s tem da podate drug URL domačega strežnika. To vam omogoča, da uporabljate Riot z obstoječim Matrix računom na drugem strežniku.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Nastavite lahko tudi strežnik za identiteto po meri, vendar ne boste mogli povabiti uporabnikov prek e-pošte, prav tako pa vas ne bodo mogli povabiti drugi.", + "Dismiss": "Opusti", + "Welcome to Riot.im": "Dobrodošli v Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirano šifrirano sporočanje & sodelovanje s pomočjo [matrix]", + "Sign In": "Prijava", + "Create Account": "Registracija", + "Need help?": "Potrebujete pomoč?", + "Chat with Riot Bot": "Klepetajte z Riot Botom", + "Explore rooms": "Raziščite sobe", + "Room Directory": "Imenik sob", + "Search the room directory": "Preiščite imenik sob", + "Get started with some tips from Riot Bot!": "Začnite z nekaterimi nasveti Riot Bota!" +} diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json new file mode 100644 index 00000000..a18875ab --- /dev/null +++ b/src/i18n/strings/sq.json @@ -0,0 +1,54 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot-i nuk mbulohet në web për celularë. Të instalohet aplikacioni?", + "Riot Desktop on %(platformName)s": "Riot Desktop në %(platformName)s", + "Unknown device": "Pajisje e panjohur", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s përmes %(browserName)s nën %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Që të bëni një thirrje me ndarje ekrani, duhet të jeni duke përdorur HTTPS-në.", + "Custom Server Options": "Mundësi Vetjake Shërbyesi", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Mund t’i përdorni mundësitë e shërbyesit vetjak për të hyrë në shërbyes të tjerë Matrix, duke dhënë URL-në e një tjetër shërbyesi Home.<br/>Kjo ju lejon ta përdorni Riot-in me një llogari Matrix ekzistuese në një tjetër shërbyes vatër.<br/><br/>Mundeni edhe të caktoni një shërbyes vetjak identitetesh, por s’do të jeni në gjendje të ftoni përdorues përmes adresash email, ose të ftoheni ju vetëm përmes adrese email.", + "Dismiss": "Mos e merr parasysh", + "powered by Matrix": "bazuar në Matrix", + "Welcome to Riot.im": "Mirë se vini te Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Fjalosje & bashkëpunim të decentralizuar, të fshehtëzuar, bazuar në [matrix]", + "Search the room directory": "Kërkoni te drejtoria e dhomave", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Ka tashmë plot dhoma në Matrix, të lidhura me rrjete ekzistues (Slack, IRC, Gitter, etj) ose të pavarur. Hidhini një sy listës!", + "Chat with Riot Bot": "Fjalosuni me Robotin Riot", + "Get started with some tips from Riot Bot!": "Fillojani me disa ndihmëza nga Roboti Riot!", + "General discussion about Matrix and Riot": "Diskutime të përgjithshme mbi Matrix-in dhe Riot-in", + "Discussion of all things Matrix!": "Diskutime mbi gjithçka të lidhur me Matrix-in!", + "Riot/Web & Desktop chat": "Fjalosje mbi Riot/Web & Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Fjalosje mbi Riot/iOS & matrix-android-sdk", + "Riot/Android & matrix-android-sdk chat": "Fjalosje mbi Riot/Android & matrix-android-sdk", + "Matrix technical discussions": "Diskutime teknike rreth Matrix-it", + "Running Matrix services": "Xhirim shërbimesh Matrix", + "Community-run support for Synapse": "Asistencë për Synapse-in nga bashkësia", + "Admin support for Dendrite": "Asistencë përgjegjësi për Dendrite-in", + "Announcements about Synapse releases": "Njoftime rreth hedhjesh në qarkullim të Synapse-it", + "Support for those using and running matrix-appservice-irc": "Asistencë për ata që përdorin dhe xhirojnë matrix-appservice-irc", + "Building services on Matrix": "Ndërtim shërbimesh mbi Matrix", + "Support for those using the Matrix spec": "Asistencë për ata që përdorin specifikimet Matrix", + "Design and implementation of E2E in Matrix": "Konceptimi dhe sendërtimi i E2E-s në Matrix", + "Implementing VR services with Matrix": "Sendërtim shërbimesh VR me Matrix-in", + "Implementing VoIP services with Matrix": "Sendërtim shërbimesh VoIP me Matrix-in", + "Discussion of the Identity Service API": "Diskutime mbi API-n Identity Service", + "Support for those using, running and writing other bridges": "Asistencë për ata që përdorin, xhirojnë ose programojnë ura të tjera", + "Contributing code to Matrix and Riot": "Kontribut me kod te Matrix dhe te Riot", + "Dev chat for the Riot/Web dev team": "Fjalosje mbi zhvillimin, për ekipin e zhvilluesve të Riot/Web-i", + "Dev chat for the Dendrite dev team": "Fjalosje mbi zhvillimi, për ekipin e zhvilluesve të Dendrite-it", + "Co-ordination for Riot translators": "Bashkërendim për përkthyes të Riot-it", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Mund të përdorni mundësitë mbi shërbyes vetjak, për të bërë hyrjen në shërbyes të tjerë Matrix, duke dhënë një tjetër URL shërbyesi Home. Kjo ju lejon ta përdorni këtë aplikacion në një tjetër shërbyes Home, me një llogari ekzistuese Matrix.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Mundeni edhe të caktoni një shërbyes vetjak identitetesh, por s’do të jeni në gjendje të ftoni përdorues përmes adresash email, ose të ftoheni ju vetë përmes adrese email.", + "Sign In": "Hyni", + "Create Account": "Krijoni Llogari", + "Need help?": "Ju duhet ndihmë?", + "Explore rooms": "Eksploroni dhoma", + "Room Directory": "Listë Dhomash", + "Unexpected error preparing the app. See console for details.": "Gabim i papritur gjatë përgatitjes së aplikacionit. Për hollësi, shihni konsolën.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Formësim i pavlefshëm: mund të caktohet vetëm një prej default_server_config, default_server_name, ose default_hs_url.", + "Invalid configuration: no default server specified.": "Formësim i pavlefshëm: s’është caktuar shërbyes parazgjedhje.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Ky instalim i Riot-it duket se ka një formësim të pavlefshëm për shërbyesin. Nëse jeni një përgjegjës, ju lutemi, ndreqni gabimin më poshtë", + "Your Riot is misconfigured": "Riot-i juaj është i keqformësuar", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Riot-it përmban JSON. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.", + "The message from the parser is: %(message)s": "Mesazhi prej procesit është: %(message)s", + "Invalid JSON": "JSON i pavlefshëm" +} diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 25a1f342..140a1f29 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -1,195 +1,13 @@ { "Riot is not supported on mobile web. Install the app?": "RIot не ради на мобилном вебу. Инсталирати апликацију?", - "Collecting app version information": "Прикупљам податке о издању апликације", - "Collecting logs": "Прикупљам записнике", - "Uploading report": "Отпремам извештај", - "Waiting for response from server": "Чекам на одговор са сервера", "Riot Desktop on %(platformName)s": "Riot стони програм за %(platformName)s", "Unknown device": "Непознати уређај", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s преко прегледача %(browserName)s на систему %(osName)s", "You need to be using HTTPS to place a screen-sharing call.": "Морате користити HTTPS да бисте започели позив са дељењем екрана.", - "Messages containing my display name": "Поруке које садрже моје приказно име", - "Messages containing my user name": "Поруке које садрже моје корисничко име", - "Messages in one-to-one chats": "Поруке у један-на-један ћаскањима", - "Messages in group chats": "Поруке у групним ћаскањима", - "When I'm invited to a room": "Када сам позван у собу", - "Call invitation": "Позивница за позив", - "Messages sent by bot": "Поруке послате од бота", - "Error saving email notification preferences": "Грешка при чувању поставки мејл обавештења", - "An error occurred whilst saving your email notification preferences.": "Догодила се грешка при чувању ваших поставки мејл обавештења.", - "Keywords": "Кључне речи", - "Enter keywords separated by a comma:": "Унесите кључне речи одвојене зарезима:", - "OK": "У реду", - "Failed to change settings": "Нисам успео да променим подешавања", - "Operation failed": "Радња није успела", - "Can't update user notification settings": "Не могу да ажурирам корисничка подешавања обавештења", - "Failed to update keywords": "Нисам успео да ажурирам кључне речи", - "Messages containing <span>keywords</span>": "Поруке које садрже <span>кључне речи</span>", - "Notify for all other messages/rooms": "Обавести за све друге поруке и собе", - "Notify me for anything else": "Обавести ме за било шта друго", - "Enable notifications for this account": "Омогући обавештења за овај налог", - "All notifications are currently disabled for all targets.": "Сва обавештења су тренутно онемогућена за све циљеве.", - "Add an email address above to configure email notifications": "Додајте мејл адресу изнад да бисте подесили мејл обавештења", - "Enable email notifications": "Омогући мејл обавештења", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Обавештења за следеће кључне речи прате правила која не могу бити приказана овде:", - "Unable to fetch notification target list": "Не могу да досегнем списак циљева за обавештења", - "Notification targets": "Циљеви обавештења", - "Advanced notification settings": "Напредна подешавања обавештења", - "There are advanced notifications which are not shown here": "Постоје напредна обавештења која нису приказана овде", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Можда сте их подесили у неком другом клијенту а не Riot-у. Не можете их преправљати у Riot-у али се и даље примењују", - "Enable desktop notifications": "Омогући стона обавештења", - "Show message in desktop notification": "Прикажи поруку у стоном обавештењу", - "Enable audible notifications in web client": "Омогући звучна обавештења у веб клијенту", - "Off": "Искључено", - "On": "Укључено", - "Noisy": "Бучно", - "Failed to set direct chat tag": "Нисам успео да поставим ознаку директног ћаскања", - "Failed to remove tag %(tagName)s from room": "Нисам успео да уклоним ознаку %(tagName)s са собе", - "Failed to add tag %(tagName)s to room": "Нисам успео да додам ознаку %(tagName)s на собу", - "Search…": "Претрага…", - "Search": "Претрага", - "This Room": "Ова соба", - "All Rooms": "Све собе", - "Sunday": "Недеља", - "Monday": "Понедељак", - "Tuesday": "Уторак", - "Wednesday": "Среда", - "Thursday": "Четвртак", - "Friday": "Петак", - "Saturday": "Субота", - "Today": "Данас", - "Yesterday": "Јуче", "Custom Server Options": "Прилагођене опције сервера", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Можете користити опције прилагођеног сервера за пријаву у друге Матрикс сервере навођењем другачије адресе кућног сервера.<br/>Ово вам омогућава да користите Riot са постојећим Матрикс налогомна другом кућном серверу.<br/><br/>Такође, можете поставити прилагођени идентитески сервер али нећете моћи да позивате кориснике по мејл адреси а ни други вас.", "Dismiss": "Одбаци", "powered by Matrix": "покреће Матрикс", - "You are not receiving desktop notifications": "Не примате стона обавештења", - "Enable them now": "Омогућите их сада", - "What's New": "Шта је ново", - "Update": "Ажурирај", - "What's new?": "Шта је ново?", - "Appear Offline": "Прикажи себе као ван мреже", - "Away": "Одустан", - "A new version of Riot is available.": "Ново издање RIot-а је доступно.", - "To return to your account in future you need to <u>set a password</u>": "Да бисте се вратили на ваш налог у будућности, морате <u>поставити лозинку</u>", - "Set Password": "Постави лозинку", - "Error encountered (%(errorDetail)s).": "Догодила се грешка (%(errorDetail)s).", - "Checking for an update...": "Проверавам ажурирања...", - "No update available.": "Нема нових ажурирања.", - "Downloading update...": "Преузимам ажурирање...", - "Warning": "Упозорење", - "Error": "Грешка", - "You cannot delete this image. (%(code)s)": "Не можете обрисати ову слику. (%(code)s)", - "Uploaded on %(date)s by %(user)s": "Отпремљено датума %(date)s од корисника %(user)s", - "Remove": "Уклони", - "Close": "Затвори", - "Download this file": "Преузми ову датотеку", - "Please describe the bug and/or send logs.": "Опишите грешку и/или пошаљите записнике.", - "Loading bug report module": "Учитавам модул за извештавање о грешкама", - "Bug report sent": "Извештај о грешци послат", - "Thank you!": "Хвала вам!", - "Failed to send report: ": "Нисам успео да пошаљем извештај: ", - "Cancel": "Откажи", - "Report a bug": "Пријави грешку", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Опишите грешку. Шта сте урадили? Шта сте очекивали да се догоди? Шта се заправо догодило?", - "Describe your problem here.": "Опишите ваш проблем овде.", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Да бисмо проучили проблеме, послаћемо записнике са овог клијента уз овај извештај о грешци. Уколико само желите да пошаљете текст изнад, дештиклирајте:", - "Send logs": "Пошаљи записнике", - "Send": "Пошаљи", - "Unavailable": "Недоступан", - "Changelog": "Записник о изменама", - "Back": "Назад", - "Send Custom Event": "Пошаљи прилагођени догађај", - "You must specify an event type!": "Морате навести врсту догађаја!", - "Event sent!": "Догађај је послат!", - "Failed to send custom event.": "Нисам успео да пошаљем прилагођени догађај.", - "Event Type": "Врста догађаја", - "State Key": "Кључ стања", - "Event Content": "Садржај догађаја", - "Send Account Data": "Пошаљи податке налога", - "Filter results": "Филтрирај резултате", - "Explore Room State": "Истражи стање собе", - "Edit": "Уреди", - "Explore Account Data": "Истражи податке налога", - "Toolbox": "Алатница", - "Developer Tools": "Програмерске алатке", - "You have successfully set a password!": "Успешно сте поставили лозинку!", - "You have successfully set a password and an email address!": "Успешно сте поставили лозинку и мејл адресу!", - "You can now return to your account after signing out, and sign in on other devices.": "Можете се вратити у ваш налог након што се одјавите и пријавите поново, на другим уређајима.", - "Remember, you can always set an email address in user settings if you change your mind.": "Запамтите, увек можете поставити мејл адресу у корисничким подешавањима, уколико се предомислите.", - "Continue": "Настави", - "Failed to change password. Is your password correct?": "Нисам успео да променим лозинку. Да ли је ваша лозинка исправна?", - "(HTTP status %(httpStatus)s)": "(HTTP стање %(httpStatus)s)", - "Please set a password!": "Поставите лозинку!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Ово ће вам омогућити да се вратите у ваш налог након што се одјавите и пријавите, на другим уређајима.", - "You cannot delete this message. (%(code)s)": "Не можете обрисати ову поруку. (%(code)s)", - "Resend": "Поново пошаљи", - "Cancel Sending": "Откажи слање", - "Forward Message": "Проследи поруку", - "Unpin Message": "Откачи поруку", - "Pin Message": "Закачи поруку", - "View Source": "Погледај извор", - "View Decrypted Source": "Погледај дешифровани извор", - "Unhide Preview": "Откриј преглед", - "Permalink": "Трајна веза", - "Quote": "Цитирај", - "Source URL": "Адреса извора", - "Failed to set Direct Message status of room": "Нисам успео да подесим стање директне поруке собе", - "unknown error code": "непознати код грешке", - "Failed to forget room %(errCode)s": "Нисам успео да заборавим собу %(errCode)s", - "All messages (loud)": "Све поруке (гласно)", - "All messages": "Све поруке", - "Mentions only": "Само спомињања", - "Mute": "Утишај", - "Leave": "Напусти", - "Forget": "Заборави", - "Reject": "Одбаци", - "Favourite": "Омиљено", - "Low Priority": "Најмања важност", - "Direct Chat": "Директно ћаскање", - "Sorry, your browser is <b>not</b> able to run Riot.": "Нажалост, ваш прегледач <b>не може</b> да покреће Riot.", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot користи напредне могућности прегледача од којих неке нису доступне или су у пробној фази, у вашем прегледачу.", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Инсталирајте <chromeLink>Хром (Chrome)</chromeLink> или <firefoxLink>Фајерфокс (Firefox)</firefoxLink> за најбољи угођај.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Сафари</safariLink> и <operaLink>Опера</operaLink> такође раде.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Са вашим тренутним прегледачем изглед и угођај ове апликације може бити скроз неправилан и неке могућности можда неће радити. Уколико желите да ипак пробате, можете наставити али ћете бити без подршке за било које проблеме на које налетите!", - "I understand the risks and wish to continue": "Разумем опасност и желим да наставим", - "Couldn't load home page": "Нисам могао да учитам почетну страну", - "Login": "Пријава", - "Register": "Регистровање", - "Invite to this room": "Позови у ову собу", - "Members": "Чланови", - "Files": "Датотеке", - "Notifications": "Обавештења", - "Rooms": "Собе", - "Hide panel": "Сакриј површ", - "Invite to this community": "Позови у ову заједницу", - "Add rooms to this community": "Додај собе у ову заједницу", - "Failed to get protocol list from Home Server": "Нисам успео да добијем списак протокола од кућног сервера", - "The Home Server may be too old to support third party networks": "Кућни сервер је можда сувише застарео да би подржао мреже трећих страна", - "Failed to get public room list": "Нисам успео да добавим списак јавних соба", - "The server may be unavailable or overloaded": "Сервер је можда недоступан или преоптерећен", - "Unnamed room": "Неименована соба", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Обрисати алијас собе %(alias)s и уклонити %(name)s из фасцикле?", - "Remove %(name)s from the directory?": "Уклонити %(name)s из фасцикле?", - "Remove from Directory": "Уклони из фасцикле", - "remove %(name)s from the directory.": "уклони %(name)s из фасцикле.", - "delete the alias.": "обриши алијас.", - "Unable to join network": "Не могу да приступим мрежи", - "Riot does not know how to join a room on this network": "Riot не зна како да приступи соби на овој мрежи", - "Room not found": "Соба није пронађена", - "Couldn't find a matching Matrix room": "Не могу да нађем одговарајућу Матрикс собу", - "Fetching third party location failed": "Добављање локације треће стране није успело", - "Unable to look up room ID from server": "Не могу да погледам ИБ собе на серверу", - "World readable": "Читљиво за све", - "Guests can join": "Гости могу приступити", - "Directory": "Фасцикла", - "No rooms to show": "Нема соба за приказ", - "Search for a room": "Потражи собу", - "#example": "#пример", - "more": "више", - "Expand panel": "Прошири површ", - "Collapse panel": "Скупи површ", - "Filter room names": "Филтрирај називе соба", "Welcome to Riot.im": "Добродошли у Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализовано, шифровано ћаскање и сарадња коју покреће [matrix]", "Search the room directory": "Претражи фасциклу са собама", @@ -217,6 +35,19 @@ "Contributing code to Matrix and Riot": "Додавање кода у Матрикс и Riot", "Dev chat for the Riot/Web dev team": "Програмерско ћаскање за Riot/веб програмерски тим", "Dev chat for the Dendrite dev team": "Програмерско ћаскање за Dendrite програмерски тим", - "Co-ordination for Riot/Web translators": "Координација за Riot/веб преводиоце", - "Reply": "Одговори" + "Co-ordination for Riot translators": "Координација за Riot преводиоце", + "Sign In": "Пријава", + "Create Account": "Направи налог", + "Need help?": "Потребна помоћ?", + "Explore rooms": "Истражи собе", + "Room Directory": "Фасцикла са собама", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Можете користити опције прилагођеног сервера да бисте се пријавили на друге Матрикс сервере тако што ћете навести другачију адресу кућног сервера. Ово вам омогућава да користите Riot са постојећим Матрикс налогом на другом кућном серверу.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Такође, можете подесити прилагођени сервер идентитета али у том случају нећете моћи да позивате кориснике преко мејла адресе или да сами будете позвани преко мејл адресе.", + "Your Riot is misconfigured": "Ваш Riot није добро подешен", + "Invalid configuration: no default server specified.": "Погрешно подешавање: подразумевани сервер није наведен.", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша Riot конфигурација садржи погрешан JSON. Молим исправите проблем и поново учитајте страну.", + "The message from the parser is: %(message)s": "Порука из парсера: %(message)s", + "Invalid JSON": "Погрешан JSON", + "Unexpected error preparing the app. See console for details.": "Неочекивана грешка приликом припреме апликације. Погледајте конзолу за више детаља.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Погрешно подешавање: можете навести само један вредност од default_server_config, default_server_name, or default_hs_url." } diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 79a97362..05ede653 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1,156 +1,12 @@ { - "Add an email address above to configure email notifications": "Lägg till en epostadress här för att konfigurera epostaviseringar", - "Advanced notification settings": "Avancerade aviseringsinställingar", - "All messages": "Alla meddelanden", - "All messages (noisy)": "Alla meddelanden (högljudd)", - "All notifications are currently disabled for all targets.": "Alla aviseringar är för tillfället avstängda för alla mål.", - "An error occurred whilst saving your email notification preferences.": "Ett fel uppstod då epostaviseringsinställningarna sparades.", - "Call invitation": "Inbjudan till samtal", - "Cancel Sending": "Avbryt sändning", - "Can't update user notification settings": "Kan inte uppdatera aviseringsinställningarna", - "Close": "Stäng", - "Couldn't find a matching Matrix room": "Kunde inte hitta ett matchande Matrix-rum", - "Custom Server Options": "Egna serverinställningar", - "customServer_text": "Du kan använda serverinställningarna för att logga in i en annan Matrix-server genom att specifiera en URL till en annan hemserver.<br/>Så här kan du använda Riot med ett existerande Matrix-konto på en annan hemserver.<br/><br/>Du kan också specifiera en egen identitetsserver, men du kommer inte att kunna bjuda in andra via epostadress, eller bli inbjuden via epostadress.", - "delete the alias.": "radera adressen.", - "Direct Chat": "Direkt-chatt", - "Directory": "Katalog", + "Custom Server Options": "Anpassade serverinställningar", "Dismiss": "Avvisa", - "Download this file": "Ladda ner filen", - "Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten", - "Enable desktop notifications": "Sätt på skrivbordsaviseringar", - "Enable email notifications": "Sätt på epostaviseringar", - "Enable notifications for this account": "Sätt på aviseringar för det här kontot", - "Enable them now": "Sätt på nu", - "Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken:", - "Error": "Fel", - "Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades", - "Failed to add tag %(tagName)s to room": "Det gick inte att lägga till \"%(tagName)s\" till rummet", - "Failed to change settings": "Det gick inte att spara inställningarna", - "Failed to forget room %(errCode)s": "Det gick inte att glömma bort rummet %(errCode)s", - "Failed to update keywords": "Det gick inte att uppdatera nyckelorden", - "Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern", - "Failed to get public room list": "Det gick inte att hämta listan över offentliga rum", - "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet", - "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> och <a href=\"http://opera.com\">Opera</a> fungerar också.", - "A new version of Riot is available.": "En ny version av Riot är tillgänglig.", - "All Rooms": "Alla rum", - "Cancel": "Avbryt", - "Changelog": "Ändringslogg", - "Collapse panel": "Kollapsa panel", - "Describe your problem here.": "Beskriv problemet här.", - "Expand panel": "Öppna panel", - "Failed to send report: ": "Det gick inte att sända rapporten: ", - "Failed to set Direct Message status of room": "Det gick inte att sätta Direkt meddelande-status på rummet", - "Favourite": "Favorit", - "Files": "Filer", - "Filter room names": "Filtrera rumsnamn", - "Forget": "Glöm bort", - "Forward Message": "Vidarebefordra meddelande", - "Guests can join": "Gäster kan bli medlem i rummet", - "Hide panel": "Göm panel", - "I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "För att diagnostisera problem kommer loggar från den här klienten att sändas med rapporten. Om du bara vill sända texten ovan, kryssa av rutan:", - "Invite to this room": "Bjud in i rummet", - "Keywords": "Nyckelord", - "Leave": "Lämna", - "Loading bug report module": "Laddar buggrapportsmodul", - "Low Priority": "Låg prioritet", - "Members": "Medlemmar", - "Mentions only": "Endast omnämnande", - "Messages containing my display name": "Meddelanden som innehåller mitt namn", - "Messages containing <span>keywords</span>": "Meddelanden som innehåller <span>nyckelord</span>", - "Messages containing my user name": "Meddelanden som innehåller mitt användarnamn", - "Messages in group chats": "Meddelanden i gruppchattar", - "Messages in one-to-one chats": "Meddelanden i privata chattar", - "Messages sent by bot": "Meddelanden från bottar", - "more": "mera", - "Mute": "Dämpa", - "No rooms to show": "Inga fler rum att visa", - "Noisy": "Högljudd", - "Notification targets": "Aviseringsmål", - "Notifications": "Aviseringar", - "Notify for all other messages/rooms": "Avisera för alla andra meddelanden/rum", - "Notify me for anything else": "Avisera för allt annat", - "Off": "Av", - "On": "På", - "Permalink": "Permanent länk", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Beskriv buggen. Vad gjorde du? Vad förväntade du dig att ska hända? Vad hände?", - "Please describe the bug and/or send logs.": "Beskriv buggen och/eller sänd loggar.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Installera <a href=\"https://www.google.com/chrome\">Chrome</a> eller <a href=\"https://getfirefox.com\">Firefox</a> för den bästa upplevelsen.", "powered by Matrix": "drivs av Matrix", - "Quote": "Citera", - "Reject": "Avvisa", - "Remove %(name)s from the directory?": "Ta bort %(name)s från katalogen?", - "Remove": "Ta bort", - "remove %(name)s from the directory.": "ta bort %(name)s från katalogen.", - "Remove from Directory": "Ta bort från katalogen", - "Report a bug": "Rapportera en bugg", - "Resend": "Sänd igen", "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", - "Riot does not know how to join a room on this network": "Riot kan inte gå med i ett rum på det här nätverket", "Riot is not supported on mobile web. Install the app?": "Riot stöds inte på mobil-webb. Installera appen?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot använder flera avancerade webbläsaregenskaper, av vilka alla inte stöds eller är experimentella i din nuvarande webbläsare.", - "Room not found": "Rummet hittades inte", - "Search": "Sök", - "Search…": "Sök…", - "Search for a room": "Sök efter rum", - "Send": "Sänd", - "Send logs": "Sänd loggar", - "Source URL": "Käll-URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Beklagar, din webbläsare kan <b>inte</b> köra Riot.", - "The Home Server may be too old to support third party networks": "Hemservern kan vara för gammal för stöda tredje parters nätverk", - "There are advanced notifications which are not shown here": "Det finns avancerade aviseringar som inte visas här", - "The server may be unavailable or overloaded": "Servern kan vara överbelastad eller inte tillgänglig", - "This Room": "Det här rummet", - "Unable to fetch notification target list": "Det gick inte att hämta aviseringsmållistan", - "Unable to join network": "Det gick inte att ansluta till nätverket", - "Unable to look up room ID from server": "Det gick inte att hämta rums-ID:t från servern", - "Unavailable": "Inte tillgänglig", - "Unhide Preview": "Visa förhandsvisning", "Unknown device": "Okänd enhet", - "unknown error code": "okänd felkod", - "Unnamed room": "Namnlöst rum", - "Update": "Uppdatera", - "Uploaded on %(date)s by %(user)s": "%(user)s laddade upp %(date)s", - "Uploading report": "Laddar upp rapport", - "View Decrypted Source": "Visa dekrypterad källa", - "View Source": "Visa källa", - "What's New": "Vad är nytt", - "What's new?": "Vad är nytt?", - "Waiting for response from server": "Väntar på svar från servern", - "When I'm invited to a room": "När jag bjuds in till ett rum", - "World readable": "Alla kan läsa", - "You cannot delete this image. (%(code)s)": "Du kan inte radera den här bilden. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Du kan inte radera det här meddelandet. (%(code)s)", - "You are not receiving desktop notifications": "Du får inte skrivbordsaviseringar", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du kan ha konfigurerat dem i en annan klient än Riot. Du kan inte ändra dem i Riot men de tillämpas ändå", - "Sunday": "söndag", - "Monday": "måndag", - "Tuesday": "tisdag", - "Wednesday": "onsdag", - "Thursday": "torsdag", - "Friday": "fredag", - "Saturday": "lördag", - "Today": "idag", - "Yesterday": "igår", - "OK": "OK", - "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att dela din skärm.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med din nuvarande webbläsare kan appens utseende vara helt fel, och vissa eller alla egenskaper kommer nödvändigtvis inte att fungera. Om du ändå vill försöka så kan du fortsätta, men gör det på egen risk!", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Radera rumsadressen %(alias)s och ta bort %(name)s från katalogen?", - "Collecting logs": "Samlar in loggar", - "Collecting app version information": "Samlar in appversionsinformation", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Aviseringar för följande nyckelord följer regler som inte kan visas här:", - "Continue": "Fortsätt", - "Failed to change password. Is your password correct?": "Det gick inte att byta lösenord. Är lösenordet rätt?", - "Operation failed": "Handlingen misslyckades", - "#example": "#exempel", - "Fetching third party location failed": "Det gick inte att hämta platsdata från tredje part", - "Login": "Logga in", - "Warning": "Varning", - "Downloading update...": "Laddar ned uppdatering...", + "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att ringa med skärmdelning.", "Welcome to Riot.im": "Välkommen till Riot.im", "Chat with Riot Bot": "Chatta med Riot Bot", "Get started with some tips from Riot Bot!": "Kom igång med några tips från Riot Bot!", @@ -170,31 +26,28 @@ "Contributing code to Matrix and Riot": "Bidra med kod till Matrix och Riot", "Dev chat for the Riot/Web dev team": "Chatt för utvecklare av Riot/Web", "Dev chat for the Dendrite dev team": "Chatt för utvecklare av Dendrite", - "Co-ordination for Riot/Web translators": "Koordination för översättare av Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Många rum finns redan i Matrix, länkade till andra nätverk (Slack, IRC, Gitter etc.) eller fristående. Kolla in katalogen!", - "You have successfully set a password!": "Du har valt ett nytt lösenord!", - "You can now return to your account after signing out, and sign in on other devices.": "Du kan nu återgå till ditt konto efter att ha loggat ut och logga in på andra enheter.", - "Please set a password!": "Vänligen välj ett lösenord!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Detta kommer tillåta dig att återgå till ditt konto efter att ha loggat ut, och logga in på andra enheter.", - "You have successfully set a password and an email address!": "Du har framgångsrikt valt ett lösenord och en e-postadress!", - "Remember, you can always set an email address in user settings if you change your mind.": "Kom ihåg att du alltid kan välja en e-postadress i dina användarinställningar om du ändrar dig.", - "To return to your account in future you need to <u>set a password</u>": "För att återgå till ditt konto i framtiden måste du <u>välja ett lösenord</u>", - "Set Password": "Välj lösenord", - "Couldn't load home page": "Kunde inte ladda startsidan", - "(HTTP status %(httpStatus)s)": "(HTTP-status %(httpStatus)s)", - "Checking for an update...": "Letar efter uppdateringar...", - "Error encountered (%(errorDetail)s).": "Fel påträffat (%(errorDetail)s).", - "No update available.": "Ingen uppdatering tillgänglig.", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbete möjliggjort med [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbetsplattform möjliggjort med [matrix]", "Search the room directory": "Sök i rumskatalogen", "Riot/Web & Desktop chat": "Riot/Web & Desktop-chatt", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-chatt", "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-chatt", "Admin support for Dendrite": "Hjälp för administratörer av Dendrite", "Building services on Matrix": "Bygga tjänster med Matrix", - "Bug report sent": "Buggraporten skickades", - "Thank you!": "Tack!", - "Back": "Tillbaka", - "Filter results": "Filtrera resultaten", - "Explore Room State": "Utforska rumläget" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan använda anpassade serverinställningar för att logga in på andra Matrix-servrar genom att ange en annan hemserver-URL.<BR/>Du kan då använda Riot med ett befintligt Matrix-konto på en annan hemserver.<br/><br/>Du kan också ange en anpassad identitetsserver men kommer då inte kunna bjuda in användare med epostadress, eller själv bli inbjuden med epostadress.", + "Co-ordination for Riot translators": "Koordination för Riot-översättare", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan använda en egen identitetsserver, men då kan du inte bjuda in användare via epostadress eller själv bjudas in med din epostadress.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Under anpassade serverinställningar kan du logga in på andra Matrixservrar genom att ange en egen hemserveradress. På så sätt kan du använda Riot med ett Matrixkonto du redan har på en annan hemserver.", + "Sign In": "Logga in", + "Create Account": "Skapa konto", + "Need help?": "Behöver du hjälp?", + "Explore rooms": "Utforska rum", + "Room Directory": "Rumslista", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Dina Riot-inställningar innhåller ogiltig JSON. Vänligen uppdatera inställningarna och ladda om sidan.", + "The message from the parser is: %(message)s": "Medelandet från parsern är: %(message)s", + "Invalid JSON": "Ogiltig JSON", + "Your Riot is misconfigured": "Riot är felkonfigurerat", + "Unexpected error preparing the app. See console for details.": "Oväntat fel vid appstart. Se konsollen för mer information.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ogilitiga inställningar: enbart möjligt att specificera en default_config, default_server, eller default_hs_url.", + "Invalid configuration: no default server specified.": "Ogilitiga inställningar: ingen standardserver specificerad." } diff --git a/src/i18n/strings/ta.json b/src/i18n/strings/ta.json index 8fe8a443..a59b7f1d 100644 --- a/src/i18n/strings/ta.json +++ b/src/i18n/strings/ta.json @@ -1,172 +1,32 @@ { - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a>மற்றும்<a href=\"http://opera.com\">Opera</a>விலும் செயல்படும்.", - "A new version of Riot is available.": "Riot-ன் புதிய பதிப்பு உள்ளது.", - "Add an email address above to configure email notifications": "மின்னஞ்சல் மூலம் அறிவிப்புகளை பெற உங்கள் மின்னஞ்சல் முகவரியை மேலே இணைக்கவும்", - "Advanced notification settings": "மேம்பட்ட அறிவிப்பிற்கான அமைப்புகள்", - "All messages": "அனைத்து செய்திகள்", - "All messages (noisy)": "அனைத்து செய்திகள் (உரக்க)", - "All Rooms": "அனைத்து அறைகள்", - "All notifications are currently disabled for all targets.": "அனைத்து இலக்குகளுக்கான அனைத்து அறிவுப்புகளும் தற்போது முடக்கி வைக்கப்பட்டுள்ளது.", - "An error occurred whilst saving your email notification preferences.": "உங்கள் மின்னஞ்சல் அறிவிப்பு விருப்பங்களை சேமிப்பதில் ஏதோ பிழை ஏற்பட்டுள்ளது.", - "Cancel": "ரத்து", - "Cancel Sending": "அனுப்புதலை ரத்து செய்", - "Changelog": "மாற்றப்பதிவு", - "Close": "மூடு", - "Collapse panel": "பலகத்தை மாற்று", - "Collecting app version information": "செயலியின் பதிப்பு தகவல்கள் சேகரிக்கப்படுகிறது", - "Collecting logs": "பதிவுகள் சேகரிக்கப்படுகிறது", "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s -ல் %(browserName)s -ன் வழியாக %(appName)s", - "Call invitation": "அழைப்பிற்கான விண்ணப்பம்", - "Can't update user notification settings": "பயனர் அறிவிப்பு அமைப்புகளை மாற்ற முடியவில்லை", - "Couldn't find a matching Matrix room": "பொருத்தமான Matrix அறை கிடைக்கவில்லை", "Custom Server Options": "விருப்பிற்கேற்ற வழங்கி இடப்புகள்", - "delete the alias.": "மாற்றை அழி.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "அறை மாற்று %(alias)s -ஐ அழித்து, %(name)s -ஐ அடைவிலிருந்து நீக்க வேண்டுமா?", - "Describe your problem here.": "உங்கள் பிரச்சனையை இங்கு விவரிக்கவும்.", - "Direct Chat": "நேரடி அரட்டை", - "Directory": "அடைவு", "Dismiss": "நீக்கு", - "Download this file": "இந்த கோப்பைத் தரவிறக்கு", - "Enable audible notifications in web client": "இணைய வாங்கியில் ஒலி அறிவிப்புகளை ஏதுவாக்கு", - "Enable desktop notifications": "திரை அறிவிப்புகளை ஏதுவாக்கு", - "Enable email notifications": "மின்னஞ்சல் அறிவிப்புகளை ஏதுவாக்கு", - "Enable notifications for this account": "இந்த கணக்கிற்கான அறிவிப்புகளை ஏதுவாக்கு", - "Enable them now": "இப்போது அவற்றை ஏதுவாக்கு", - "Error": "கோளாறு", - "Expand panel": "பலகத்தை விரிவாக்கு", - "Failed to add tag %(tagName)s to room": "%(tagName)s எனும் குறிச்சொல்லை அறையில் சேர்ப்பதில் தோல்வி", - "Failed to change settings": "அமைப்புகள் மாற்றத்தில் தோல்வி", - "Failed to forget room %(errCode)s": "அறையை மறப்பதில் தோல்வி %(errCode)s", - "Failed to update keywords": "முக்கிய வார்த்தைகளை புதுப்பித்தலில் தோல்வி", - "Failed to get public room list": "பொது அறைப் பட்டியலை பெறுவதில் தோல்வி", - "Failed to send report: ": "அறிக்கை அனுப்புதலில் தோல்வி ", - "Favourite": "விருப்பமான", - "Files": "கோப்புகள்", - "Filter room names": "அறை பெயர்களை வடிகட்டு", - "Forget": "மற", - "Guests can join": "விருந்தினர்கள் சேரலாம்", - "Hide panel": "பலகத்தை மறை", - "Invite to this room": "இந்த அறைக்கு அழை", - "Keywords": "முக்கிய வார்த்தைகள்", - "Leave": "வெளியேறு", - "Login": "உள்நுழை", - "Low Priority": "குறைந்த முன்னுரிமை", - "Members": "உறுப்பினர்கள்", - "Mentions only": "குறிப்பிடுகள் மட்டும்", - "#example": "#உதாரணமாக", - "Enter keywords separated by a comma:": "ஒரு comma மூலம் முக்கிய வார்த்தைகளை உள்ளிடவும்:", - "Error saving email notification preferences": "மின்னஞ்சல் அறிவிப்பு விருப்பங்களை சேமிப்பதில் கோளாறு", - "Failed to get protocol list from Home Server": "முகப்பு சேவையகத்திலிருந்து நெறிமுறை பட்டியலைப் பெறுவதில் தோல்வி", - "Failed to remove tag %(tagName)s from room": "அறையில் இருந்து குறிச்சொல் %(tagName)s களை அகற்றுவது தோல்வியடைந்தது", - "Failed to set direct chat tag": "நேரடி அரட்டை குறியை அமைப்பதில் தோல்வி", - "Failed to set Direct Message status of room": "அறையின் நேரடி செய்தி நிலையை அமைக்க தவறிவிட்டது", - "Fetching third party location failed": "மூன்றாம் இடத்தில் உள்ள இடம் தோல்வி", - "Forward Message": "முன்னோடி செய்தி", - "(HTTP status %(httpStatus)s)": "(HTTP நிலைகள் %(httpStatus)s)", - "customServer_text": "நீங்கள் மற்ற Matrix வழங்கிகள் உள்நுழைய உங்கள் விருப்பமான வழங்கி இடப்புகளை உபயோகப்படுத்தலாம்.<br/>இது மற்ற வழங்கியில் உங்கள் Matrix கணக்கிணை Riot மூலம் பயன்படுத்த உதவும்.<br/><br/>நீங்கள் மற்ற அடையாள வழங்கியையும் பயன்படுத்தலாம், ஆனால் நீங்கள் மற்ற பயனர்களை மின்னஞ்சல் மூலம் அழைக்கவோ, நீங்கள் அழைக்கப்படவோ இயலாது.", - "I understand the risks and wish to continue": "நான் அபாயங்களைப் புரிந்துகொண்டு தொடர விரும்புகிறேன்", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "சிக்கல்களைக் கண்டறியும் பொருட்டு, இந்த கிளையிலிருந்து வரும் பதிவுகள் இந்த பிழை அறிக்கையுடன் அனுப்பப்படும். மேலே உள்ள உரையை மட்டுமே அனுப்ப விரும்பினால், தயவுசெய்து தட்டச்சு செய்க:", - "Loading bug report module": "பிழை அறிக்கை தொகுதி ஏற்றுகிறது", - "Messages containing my display name": "என் காட்சி பெயர் கொண்ட செய்திகள்", - "more": "அதிகம்", - "Mute": "முடக்கு", - "No rooms to show": "காண்பிக்க எந்த அறையும் இல்லை", - "Messages containing <span>keywords</span>": "<span>முக்கிய</span> கொண்ட செய்திகள்", - "Messages containing my user name": "என் பயனர் பெயர் கொண்ட செய்திகள்", - "Messages in group chats": "குழு அரட்டைகளில் உள்ள செய்திகள்", - "Messages in one-to-one chats": "ஒரு-க்கு-ஒரு அரட்டைகளில் உள்ள செய்திகள்", - "Messages sent by bot": "bot மூலம் அனுப்பிய செய்திகள்", - "Noisy": "சத்தம்", - "Notification targets": "அறிவிப்பு இலக்குகள்", - "Notifications": "அறிவிப்புகள்", - "Notifications on the following keywords follow rules which can’t be displayed here:": "பின்வரும் முக்கிய வார்த்தைகளில் அறிவிப்புகள் இங்கே காட்டப்பட முடியாத விதிகள் பின்பற்றப்படுகின்றன:", - "Notify for all other messages/rooms": "மற்ற எல்லா செய்திகளுக்கும் அறைகளுக்கும் தெரிவிக்கவும்", - "Notify me for anything else": "வேறு எதையும் எனக்கு தெரிவி", - "Off": "அமை", - "On": "மீது", - "Operation failed": "செயல்பாடு தோல்வியுற்றது", - "Permalink": "நிரந்தரத் தொடுப்பு", "powered by Matrix": "Matrix-ஆல் ஆனது", - "Quote": "மேற்கோள்", - "Reject": "நிராகரி", - "Remove %(name)s from the directory?": "அடைவிலிருந்து %(name)s-ஐ நீக்கலாமா?", - "Remove": "நீக்கு", - "remove %(name)s from the directory.": "அடைவிலிருந்து %(name)s-ஐ நீக்கு.", - "Remove from Directory": "அடைவிலிருந்து நீக்கு", - "Report a bug": "வழுவைத் தெரியப்படுத்து", - "Resend": "மீண்டும் அனுப்பு", "Riot is not supported on mobile web. Install the app?": "கைபேசி உலாவியில் Riot இயங்காது. செயலியை நிறுவ வேண்டுமா?", - "Room not found": "அறை காணவில்லை", - "Search": "தேடு", - "Search…": "தேடு…", - "Search for a room": "அறையைத் தேடு", - "Send": "அனுப்பு", - "Send logs": "பதிவுகளை அனுப்பு", - "Source URL": "மூல முகவரி", - "This Room": "இந்த அறை", - "Unable to join network": "முனையங்களில் சேர இயலவில்லை", - "Unavailable": "இல்லை", "Unknown device": "தெரியாத கருவி", - "unknown error code": "தெரியாத பிழை குறி", - "Unnamed room": "பெயரிடப்படாத அறை", - "Update": "புதுப்பி", - "Uploaded on %(date)s by %(user)s": "%(date)s அன்று %(user)s ஆல் பதிவேற்றப்பட்டது", - "Uploading report": "அறிக்கை பதிவேற்றப்படுகிறது", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "வழுவைப் பற்றி விளக்கவும். நீங்கள் என்ன செய்தீர்கள்? என்ன நடக்க வேண்டி எதிர்ப்பார்த்தீர்கள்? என்ன நடந்தது?", - "Please describe the bug and/or send logs.": "வழுவைப் பற்றி விளக்கவும் மேலும்/அல்லது பதிவுகளை அனுப்பவும்.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "சிறந்த அனுபவத்திற்க்கு <a href=\"https://www.google.com/chrome\">Chrome</a>அல்லது<a href=\"https://getfirefox.com\">Firefox</a>ஐ பயன்படுத்தவும்.", "Riot Desktop on %(platformName)s": "%(platformName)s ற்க்கான Riot", - "Riot does not know how to join a room on this network": "இந்த வலையமைப்பில் உள்ள அறையில் எப்படி சேர்வதென்று Riotற்க்கு தெரியவில்லை", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot பல மேம்பட்ட உலாவி வசதிகளைப் பயன்படுத்துகிறது, அதில் சிலவற்றைக் காணவில்லை அல்லது உங்கள் உலாவியில் பரிசோதனைக்காக உள்ளது.", - "There are advanced notifications which are not shown here": "இங்கு காண்பிக்கப்படாத மேம்பட்ட அறிவிப்புகள் உள்ளது", - "The server may be unavailable or overloaded": "வழங்கி அளவுமீறிய சுமையில் உள்ளது அல்லது செயல்பாட்டில் இல்லை", - "Unable to fetch notification target list": "அறிவிப்பு பட்டியலை பெற முடியவில்லை", - "Unable to look up room ID from server": "வழங்கியிலிருந்து அறை ID யை காண முடியவில்லை", - "Unhide Preview": "முன்னோட்டத்தைக் காண்பி", - "View Decrypted Source": "மறையீடு நீக்கப்பட்ட மூலத்தைக் காண்பி", - "View Source": "மூலத்தைக் காட்டு", - "What's New": "புதிதாக வந்தவை", - "What's new?": "புதிதாக என்ன?", - "Waiting for response from server": "வழங்கியின் பதிலுக்காக காத்திருக்கிறது", - "When I'm invited to a room": "நான் அறைக்கு அழைக்கப்பட்ட போது", - "World readable": "உலகமே படிக்கும்படி", - "You cannot delete this image. (%(code)s)": "இந்த படத்தை நீங்கள் அழிக்க முடியாது. (%(code)s)", - "You cannot delete this message. (%(code)s)": "இந்த செய்தியை நீங்கள் அழிக்க முடியாது. (%(code)s)", - "You are not receiving desktop notifications": "திரை அறிவிப்புகளை நீங்கள் பெறவில்லை", - "Bug report sent": "வழு அறிக்கை அனுப்பப்பட்டது", "You need to be using HTTPS to place a screen-sharing call.": "நீங்கள் திரைபகிர்வு அழைப்பை மேற்க்கொள்ள HTTPS-ஐ பயன்படுத்த வேண்டும்.", - "OK": "சரி", - "Show message in desktop notification": "திரை அறிவிப்புகளில் செய்தியை காண்பிக்கவும்", - "Sunday": "ஞாயிறு", - "Monday": "திங்கள்", - "Tuesday": "செவ்வாய்", - "Wednesday": "புதன்", - "Thursday": "வியாழன்", - "Friday": "வெள்ளி", - "Saturday": "சனி", - "Today": "இன்று", - "Yesterday": "நேற்று", - "No update available.": "எந்த புதுப்பிப்பும் இல்லை.", - "Warning": "எச்சரிக்கை", - "Thank you!": "உங்களுக்கு நன்றி", - "Back": "பின்", - "Event sent!": "நிகழ்வு அனுப்பப்பட்டது", - "Event Type": "நிகழ்வு வகை", - "Event Content": "நிகழ்வு உள்ளடக்கம்", - "Edit": "தொகு", - "You have successfully set a password!": "நீங்கள் வெற்றிகரமாக கடவுச்சொல்லை அமைத்துவிட்டீர்கள்", - "You have successfully set a password and an email address!": "நீங்கள் வெற்றிகரமாக கடவுச்சொல் மற்றும் மின்னஞ்சல் முகவரியை அமைத்துவிட்டீர்கள்", - "Continue": "தொடரவும்", - "Please set a password!": "தயவு செய்து கடவுச்சொல்லை அமைக்கவும்", - "Couldn't load home page": "முதற்பக்கத்தை நிரலேற்ற முடியவில்லை", - "Register": "பதிவு செய்", - "Rooms": "அறைகள்", - "Add rooms to this community": "அறைகளை இந்த சமூகத்தில் சேர்க்கவும்", "Welcome to Riot.im": "Riot.im -ற்க்கு வரவேற்க்கிறோம்", "Search the room directory": "அறை அடைவில் தேடவும்", "Chat with Riot Bot": "Riot இயங்கியிடம் உரையாடவும்", "Matrix technical discussions": "Matrix தொழில்நுட்ப விவாதங்கள்", "Running Matrix services": "இருப்பிலிருக்கும் Matrix சேவைகள்", "Building services on Matrix": "Matrix- ல் சேவைகளைக் கட்டமைக்க", - "Contributing code to Matrix and Riot": "Matrix மற்றும் Riot -ற்க்கு நிரல் பங்களிக்க" + "Contributing code to Matrix and Riot": "Matrix மற்றும் Riot -ற்க்கு நிரல் பங்களிக்க", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "உங்கள் Riot உள்ளமைவில் தவறான JSON உள்ளது. சிக்கலை சரிசெய்து பக்கத்தை மீண்டும் ஏற்றவும்.", + "The message from the parser is: %(message)s": "பாகுபடுத்தி அனுப்பிய செய்தி: %(message)s", + "Invalid JSON": "தவறான JSON", + "Your Riot is misconfigured": "உங்கள் Riot தவறாக உள்ளமைக்கப்பட்டுள்ளது", + "Unexpected error preparing the app. See console for details.": "பயன்பாட்டைத் தயாரிப்பதில் எதிர்பாராத பிழை. விவரங்களுக்கு console ஐப் பார்க்கவும்.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "தவறான உள்ளமைவு: default_server_config, default_server_name அல்லது default_hs_url இல் ஒன்றை மட்டுமே குறிப்பிட முடியும்.", + "Invalid configuration: no default server specified.": "தவறான உள்ளமைவு: இயல்புநிலை சேவையகம் குறிப்பிடப்படவில்லை.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "வேறுபட்ட ஹோம்சர்வர் URL ஐக் குறிப்பிடுவதன் மூலம் பிற Matrix சேவையகங்களில் உள்நுழைய தனிப்பயன் சேவையக விருப்பங்களைப் பயன்படுத்தலாம். இது வேறு வீட்டு சேவையகத்தில் ஏற்கனவே உள்ள Matrix கணக்கைக் கொண்ட Riot ஐப் பயன்படுத்த உங்களை அனுமதிக்கிறது.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "நீங்கள் தனிப்பயன் அடையாள சேவையகத்தையும் அமைக்கலாம், ஆனால் நீங்கள் மின்னஞ்சல் முகவரி மூலம் பயனர்களை அழைக்க முடியாது, அல்லது மின்னஞ்சல் முகவரியால் உங்களை அழைக்க முடியாது.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "[matrix] ஆல் இயக்கப்படும் பரவலாக்கப்பட்ட, மறைகுறியாக்கப்பட்ட அரட்டை & ஒத்துழைப்பு", + "Sign In": "உள்நுழைக", + "Create Account": "உங்கள் கணக்கை துவங்குங்கள்", + "Need help?": "உதவி தேவை?", + "Explore rooms": "அறைகளை ஆராயுங்கள்", + "Room Directory": "அறை அடைவு" } diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index e50d78fa..8d2cfdd3 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -1,121 +1,12 @@ { - "Close": "ముసివెయండి", - "Continue": "కొనసాగించు", - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి", - "Friday": "శుక్రువారం", - "Cancel": "రద్దు", - "Monday": "సోమవారం", - "Tuesday": "మంగళవారం", - "Wednesday": "బుధవారం", - "Thursday": "గురువారం", - "Saturday": "శనివారం", - "Sunday": "ఆదివారం", - "Failed to forget room %(errCode)s": "గది మర్చిపోవడం విఫలమైంది %(errCode)s", - "unknown error code": "తెలియని కోడ్ లోపం", - "A new version of Riot is available.": "కొత్త రిమోట్ వివరణము అందుబాటులో ఉంది.", - "Add an email address above to configure email notifications": "ఇమెయిల్ ప్రకటనలను రూపశిల్పం చేయడానికి ఎగువ ఇమెయిల్ చిరునామాను జోడించండి", - "Advanced notification settings": "ఆధునిక తాఖీదు అమరిక", - "All messages": "అన్ని సందేశాలు", - "All messages (noisy)": "అన్ని సందేశాలు (గట్టిగ)", - "All Rooms": "అన్ని గదులు", - "Call invitation": "మాట్లాడడానికి ఆహ్వానం", - "Cancel Sending": "పంపడాన్ని ఆపేయండి", - "Can't update user notification settings": "వినియోగదారు ప్రకటన ప్రాదాన్యాలు నవీకరించదడానేకి రాదు", - "Changelog": "మార్పు వివరణ", - "Collapse panel": "ప్యానెల్ కుదించు", - "Collecting app version information": "అనువర్తన సంస్కరణ సమాచారాన్ని సేకరించడం", - "Collecting logs": "నమోదు సేకరించడం", - "Couldn't find a matching Matrix room": "సరిపోలిక మ్యాట్రిక్స్ గదిని కనుగొనలేకపోయాము", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వార %(osName)s కి", "Custom Server Options": "మలచిన సేవిక ఎంపికలు", - "delete the alias.": "అలియాస్ తొలగించండి.", - "Describe your problem here.": "ఇక్కడ మీ సమస్యను వివరించండి.", - "Direct Chat": "ప్రత్యక్ష మాటామంతి", - "Directory": "వివరం", "Dismiss": "రద్దుచేసే", - "Download this file": "ఈ దస్త్రం దిగుమతి చేయండి", - "Enable audible notifications in web client": "వెబ్ బంట్రౌతు వినిపించే నోటిఫికేషన్లను ప్రారంభించండి", - "Enable desktop notifications": "రంగస్థల తాఖీదు ప్రారంభించండి", - "Enable email notifications": "ఇమెయిల్ ప్రకటనలను ప్రారంభించండి", - "Enable notifications for this account": "ఈ ఖాతా కోసం తాఖీదు ప్రారంభించండి", - "Enable them now": "ఇప్పుడే వాటిని ప్రారంభించండి", - "Enter keywords separated by a comma:": "కామాతో వేరు చేయబడిన కీలక పదాలను నమోదు చేయండి:", - "Error": "లోపం", - "Error saving email notification preferences": "ఇమెయిల్ ప్రకటనలను ప్రాధాన్యతలను దాచు చేయడంలో లోపం", - "#example": "#ఉదాహరణ", - "Expand panel": "ప్యానెల్ను విస్తరింపజేయండి", - "Failed to add tag %(tagName)s to room": "%(tagName)s ను బొందు జోడించడంలో విఫలమైంది", - "Failed to change settings": "అమరిక మార్చడం విఫలమైంది", - "Failed to update keywords": "కీలక పదాలను నవీకరించడంలో విఫలమైంది", - "Failed to get protocol list from Home Server": "హోమ్ సర్వర్ నుండి ప్రోటోకాల్ జాబితాను పొందడం విఫలమైంది", - "Failed to get public room list": "ప్రజా గది జాబితాను పొందడం విఫలమైంది", - "Failed to remove tag %(tagName)s from room": "గది నుండి బొందు %(tagName)s తొలగించడంలో విఫలమైంది", - "Failed to send report: ": "నివేదికను పంపడంలో విఫలమైంది: ", - "Failed to set direct chat tag": "ప్రత్యక్ష మాటామంతి బొందు సెట్ చేయడంలో విఫలమైంది", - "Failed to set Direct Message status of room": "గది యొక్క ప్రత్యక్ష సందేశ స్థితి సెట్ చేయడంలో విఫలమైంది", - "Favourite": "గుర్తుంచు", - "Fetching third party location failed": "మూడవ పార్టీ స్థానాన్ని పొందడం విఫలమైంది", - "Files": "దస్ర్తాలు", - "Filter room names": "గది పేర్లను ఫిల్టర్ చేయండి", - "Forget": "మర్చిపో", - "Forward Message": "సందేశాన్ని మునుముందుకు చేయండి", - "Guests can join": "అతిథులు చేరవచ్చు", - "Hide panel": "ప్యానెల్ను దాచు", - "(HTTP status %(httpStatus)s)": "(HTTP స్థితి %(httpStatus)s)", - "I understand the risks and wish to continue": "నేను నష్టాలను అర్థం చేసుకుంటాను మరియు కొనసాగించాలని కోరుకుంటున్నాను", - "Invite to this room": "ఈ గదికి ఆహ్వానించండి", - "Keywords": "ముఖ్యపదాలు", - "Leave": "వదిలి", - "Login": "ప్రవేశ ద్వారం", - "Loading bug report module": "దోష నివేదిక అధిభాగం లోడ్ చేస్తోంది", - "Low Priority": "తక్కువ ప్రాధాన్యత", - "Members": "సభ్యులు", - "Mentions only": "మాత్రమే ప్రస్తావిస్తుంది", - "Messages containing my display name": "నా ప్రదర్శన పేరును కలిగి ఉన్న సందేశాలు", - "Messages containing <span>keywords</span>": "కీలక పదాలను</span>కలిగి ఉన్న సందేశం<span>", - "Messages containing my user name": "నా వినియోగదారు పేరు కలిగి ఉన్న సందేశాలు", - "Messages in group chats": "సమూహ మాటామంతిలో సందేశాలు", - "Messages in one-to-one chats": "సందేశాలు నుండి ఒకరికి ఒకటి మాటామంతి", - "Messages sent by bot": "బాట్ పంపిన సందేశాలు", - "more": "మరింత", - "Mute": "నిశబ్ధము", - "No rooms to show": "చూపించడానికి గదులు లేవు", - "Noisy": "శబ్దం", - "Notification targets": "తాఖీదు లక్ష్యాలు", - "Notifications": "ప్రకటనలు", - "Notify for all other messages/rooms": "అన్ని ఇతర సందేశాలు / గదులు కోసం తెలియజేయండి", - "Off": "ఆపు", - "On": "వేయుము", - "Operation failed": "కార్యం విఫలమైంది", - "Reject": "తిరస్కరించు", - "Remove %(name)s from the directory?": "వివరము నుండి %(name)s తొలిగించు?", - "Remove": "తొలగించు", - "remove %(name)s from the directory.": "వివరము నుండి %(name)s ను తొలిగించు.", - "Remove from Directory": "`వివరము నుండి తొలిగించు", - "Report a bug": "లోపమును నివేదించు", - "Resend": "మళ్ళి పంపుము", "Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s", - "Room not found": "గది కనుగొనబడలేదు", - "Search": "శోధన", - "Search…": "శోధన…", - "Search for a room": "గది కోసం శోధించండి", - "Send": "పంపండి", - "Send logs": "నమోదును పంపు", - "Source URL": "మూల URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "క్షమించండి, మీ బ్రౌజర్ <b>రియట్ని అమలు చేయలేరు</b>.", - "Today": "ఈ రోజు", - "Yesterday": "నిన్న", - "Warning": "హెచ్చరిక", - "Checking for an update...": "నవీకరణ కోసం చూస్తోంది...", - "Error encountered (%(errorDetail)s).": "లోపం సంభవించింది (%(errorDetail)s).", - "No update available.": "ఏ నవీకరణ అందుబాటులో లేదు.", - "Downloading update...": "నవీకరణను దిగుమతి చేస్తోంది...", "Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం", "Search the room directory": "గది వివరాన్ని శోధించండి", "Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి", - "Please set a password!": "దయచేసి మీ రహస్యపదాన్నీ అమర్చండి!", - "Set Password": "రహస్యపదాన్నీ అమర్చండి", - "Couldn't load home page": "హోమ్ పేజీని లోడ్ చేయలేకపోయాము", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">సఫరి</a>ఇంక<a href=\"http://opera.com\">ఒపెర</a>కుద పని చెసతయి.", - "All notifications are currently disabled for all targets.": "ప్రస్తుతానికి అన్ని చోట్లనుంచి అన్ని ప్రకటనలు ఆగి వున్నాయి.", - "An error occurred whilst saving your email notification preferences.": "మీ ఇమెయిల్ ప్రకటన ప్రాధాన్యాలు బద్రపరిచేతప్పుడు ఎదో తప్పు జరిగింది." + "Unknown device": "తెలుయని పరికరం", + "You need to be using HTTPS to place a screen-sharing call.": "తెర ని పంచే కాల్ కి HTTPS అవసరం.", + "Riot is not supported on mobile web. Install the app?": "మొబైల్ బ్రౌజర్ లో రియట్ పనిచేయదు. ఆప్ ఇన్స్టాల్ చేయాలా?" } diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index 5b27b810..bab1dcc6 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -1,152 +1,12 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s ผ่านทาง %(browserName)s บน %(osName)s", - "All messages": "ทุกข้อความ", - "Cancel": "ยกเลิก", - "Close": "ปิด", - "Error": "ข้อผิดพลาด", - "#example": "#example", - "Files": "ไฟล์", - "Forward Message": "ส่งต่อข้อความ", - "Low Priority": "ความสำคัญต่ำ", - "Members": "สมาชิก", - "more": "เพิ่มเติม", - "Off": "ปิด", - "Report a bug": "รายงานจุดบกพร่อง", "powered by Matrix": "ใช้เทคโนโลยี Matrix", - "Quote": "อ้างอิง", - "Resend": "ส่งใหม่", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> หรือ <a href=\"http://opera.com\">Opera</a> ก็ใช้ได้", - "A new version of Riot is available.": "มี Riot เวอร์ชั่นใหม่", - "All Rooms": "ทุกห้อง", - "Cancel Sending": "ยกเลิกการส่ง", - "Changelog": "บันทึกการเปลี่ยนแปลง", - "Describe your problem here.": "อธิบายปัญหาที่นี่", - "Download this file": "ดาวน์โหลดไฟล์นี้", "Dismiss": "ไม่สนใจ", - "Messages sent by bot": "ข้อความจากบอท", - "Mute": "เงียบ", - "No rooms to show": "ไม่มีห้องที่จะแสดง", - "Notifications": "การแจ้งเตือน", - "On": "เปิด", - "Permalink": "ลิงก์ถาวร", - "Operation failed": "การดำเนินการล้มเหลว", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "กรุณาอธิบายจุดบกพร่อง คุณทำอะไร? ควรจะเกิดอะไรขึ้น? แล้วอะไรคือสิ่งที่เกิดขึ้นจริง?", - "Please describe the bug and/or send logs.": "กรุณาอธิบายจุดบกพร่อง และ/หรือ ส่งล็อก", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "กรุณาติดตั้ง <a href=\"https://www.google.com/chrome\">Chrome</a> หรือ <a href=\"https://getfirefox.com\">Firefox</a> เพื่อประสบการณ์ที่ดีที่สุด", - "Reject": "ปฏิเสธ", - "Remove": "ลบ", - "Messages containing <span>keywords</span>": "ข้อความที่มี<span>คีย์เวิร์ด</span>", - "Messages containing my user name": "ข้อความที่มีชื่อผู้ใช้ของฉัน", - "Search": "ค้นหา", - "Search…": "ค้นหา…", - "Room not found": "ไม่พบห้อง", - "Search for a room": "ค้นหาห้อง", - "Send": "ส่ง", - "Send logs": "ส่งล็อก", - "Sorry, your browser is <b>not</b> able to run Riot.": "ขออภัย เบราว์เซอร์ของคุณ<b>ไม่</b>สามารถ run Riot ได้", - "This Room": "ห้องนี้", - "Unavailable": "ไม่มี", "Unknown device": "อุปกรณ์ที่ไม่รู้จัก", - "unknown error code": "รหัสข้อผิดพลาดที่ไม่รู้จัก", - "Update": "อัปเดต", - "Uploaded on %(date)s by %(user)s": "อัปโหลดเมื่อ %(date)s โดย %(user)s", - "Yesterday": "เมื่อวานนี้", - "Today": "วันนี้", - "Saturday": "วันเสาร์", - "Friday": "วันศุกร์", - "Thursday": "วันพฤหัสบดี", - "Wednesday": "วันพุธ", - "Tuesday": "วันอังคาร", - "Monday": "วันจันทร์", - "Sunday": "วันอาทิตย์", - "You cannot delete this image. (%(code)s)": "คุณไม่สามารถลบรูปนี้ได้ (%(code)s)", - "You cannot delete this message. (%(code)s)": "คุณไม่สามารถลบข้อความนี้ได้ (%(code)s)", - "What's New": "มีอะไรใหม่", - "What's new?": "มีอะไรใหม่?", - "View Source": "ดูซอร์ส", - "Uploading report": "กำลังอัปโหลดรายงาน", - "Advanced notification settings": "ตั้งค่าการแจ้งเตือนขั้นสูง", - "Can't update user notification settings": "ไม่สามารถอัปเดตการตั้งค่าการแจ้งเตือนของผู้ใช้", - "Collecting logs": "กำลังรวบรวมล็อก", - "Collapse panel": "ซ่อนหน้าต่าง", - "Collecting app version information": "กำลังรวบรวมข้อมูลเวอร์ชันแอป", - "OK": "ตกลง", "You need to be using HTTPS to place a screen-sharing call.": "คุณต้องใช้ HTTPS เพื่อเริ่มติดต่อแบบแบ่งปันหน้าจอ", - "You are not receiving desktop notifications": "การแจ้งเตือนบนเดสก์ทอปถูกปิดอยู่", - "Waiting for response from server": "กำลังรอการตอบสนองจากเซิร์ฟเวอร์", - "View Decrypted Source": "ดูซอร์สที่ถอดรหัสแล้ว", - "Unnamed room": "ห้องที่ไม่มีชื่อ", - "Source URL": "URL ต้นฉบับ", - "Riot Desktop on %(platformName)s": "Riot เดสก์ทอปบน %(platformName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop บน %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot ไม่รองรับเว็บบนอุปกรณ์พกพา ติดตั้งแอป?", - "Riot does not know how to join a room on this network": "Riot ไม่รู้วิธีเข้าร่วมห้องในเครือข่ายนี้", - "Direct Chat": "แชทโดยตรง", - "All messages (noisy)": "ทุกข้อความ (เสียงดัง)", "Custom Server Options": "กำหนดเซิร์ฟเวอร์เอง", - "Directory": "ไดเรกทอรี", - "Enable audible notifications in web client": "เปิดใช้งานเสียงแจ้งเตือนบนเว็บไคลเอนต์", - "Enable desktop notifications": "เปิดใช้งานการแจ้งเตือนบนเดสก์ทอป", - "Enable email notifications": "เปิดใช้งานการแจ้งเตือนทางอีเมล", - "Enable notifications for this account": "เปิดใช้งานการแจ้งเตือนสำหรับบัญชีนี้", - "Enable them now": "เปิดใช้งานเดี๋ยวนี้", - "Enter keywords separated by a comma:": "กรอกคีย์เวิร์ดทั้งหมด คั่นด้วยเครื่องหมายจุลภาค:", - "Expand panel": "ขยายหน้าต่าง", - "Failed to update keywords": "การอัปเดตคีย์เวิร์ดล้มเหลว", - "Failed to remove tag %(tagName)s from room": "การลบแท็ก %(tagName)s จากห้องล้มเหลว", - "Failed to send report: ": "การส่งรายงานล้มเหลว: ", - "Filter room names": "กรองชื่อห้อง", - "Guests can join": "แขกเข้าร่วมได้", - "Hide panel": "ซ่อนหน้าต่าง", - "I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยงและต้องการดำเนินการต่อ", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "ล็อกจากไคลเอนต์จะถูกแนบพร้อมกับรายงานนี้เพื่อวินิจฉัยปัญหา หากคุณต้องการส่งเฉพาะข้อความด้านบน กรุณาเอาเครื่องหมายออก:", - "Invite to this room": "เชิญเข้าห้องนี้", - "Keywords": "คีย์เวิร์ด", - "Leave": "ออกจากห้อง", - "Loading bug report module": "กำลังโหลดโมดูลรายงานจุดบกพร่อง", - "Mentions only": "เมื่อถูกกล่าวถึงเท่านั้น", - "Messages containing my display name": "ข้อความที่มีชื่อของฉัน", - "Messages in group chats": "ข้อความในแชทกลุ่ม", - "Messages in one-to-one chats": "ข้อความในแชทตัวต่อตัว", - "Noisy": "เสียงดัง", - "Notification targets": "เป้าหมายการแจ้งเตือน", - "Notify for all other messages/rooms": "แจ้งเตือนจากห้อง/ข้อความอื่น ๆ ทั้งหมด", - "Notify me for anything else": "แจ้งเตือนสำหรับอย่างอื่นทั้งหมด", - "Remove %(name)s from the directory?": "ถอด %(name)s ออกจากไดเรกทอรี?", - "remove %(name)s from the directory.": "ถอด %(name)s ออกจากไดเรกทอรี", - "Remove from Directory": "ถอดออกจากไดเรกทอรี", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot ใช้คุณสมบัติขั้นสูงในเบราว์เซอร์หลายประการ คุณสมบัติบางอย่างอาจยังไม่พร้อมใช้งานหรืออยู่ในขั้นทดลองในเบราว์เซอร์ปัจจุบันของคุณ", - "There are advanced notifications which are not shown here": "มีการแจ้งเตือนขั้นสูงที่ไม่ได้แสดงที่นี่", - "Unable to join network": "ไม่สามารถเข้าร่วมเครือข่ายได้", - "Unable to look up room ID from server": "ไม่สามารถหา ID ห้องจากเซิร์ฟเวอร์ได้", - "Unhide Preview": "แสดงตัวอย่าง", - "World readable": "ทุกคนอ่านได้", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "คุณอาจมีการตั้งค่าจากไคลเอนต์อื่นนอกจาก Riot การตั้งต่าเหล่านั้นยังถูกใช้งานอยู่แต่คุณจะปรับแต่งจากใน Riot ไม่ได้", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "การแสดงผลของโปรแกรมอาจผิดพลาด ฟังก์ชันบางอย่างหรือทั้งหมดอาจไม่ทำงานในเบราว์เซอร์ปัจจุบันของคุณ หากคุณต้องการลองดำเนินการต่อ คุณต้องรับมือกับปัญหาที่อาจจะเกิดขึ้นด้วยตัวคุณเอง!", - "Add an email address above to configure email notifications": "เพิ่มที่อยู่อีเมลข้างบนเพื่อตั้งค่าการแจ้งเตือนทางอีเมล", - "All notifications are currently disabled for all targets.": "การแจ้งเตือนทั้งหมดถูกปิดใช้งานสำหรับทุกอุปกรณ์", - "An error occurred whilst saving your email notification preferences.": "เกิดข้อผิดพลาดระหว่างบันทึกการตั้งค่าการแจ้งเตือนทางอีเมล", - "Couldn't find a matching Matrix room": "ไม่พบห้อง Matrix ที่ตรงกับคำค้นหา", - "customServer_text": "คุณสามารถกำหนดเซิร์ฟเวอร์บ้านเองได้โดยใส่ URL ของเซิร์ฟเวอร์นั้น เพื่อเข้าสู่ระบบของเซิร์ฟเวอร์ Matrix อื่น<br/>ทั้งนี่เพื่อให้คุณสามารถใช้ Riot กับบัญชี Matrix ที่มีอยู่แล้วบนเซิร์ฟเวอร์บ้านอื่น ๆ ได้<br/><br/>คุณอาจเลือกเซิร์ฟเวอร์ระบุตัวตนเองด้วยก็ได้ แต่คุณจะไม่สามารถเชิญผู้ใช้อื่นด้วยที่อยู่อีเมล หรือรับคำเชิญจากผู้ใช้อื่นทางที่อยู่อีเมลได้", - "delete the alias.": "ลบนามแฝง", - "Error saving email notification preferences": "การบันทึกการตั้งค่าการแจ้งเตือนทางอีเมลผิดพลาด", - "Failed to add tag %(tagName)s to room": "การเพิ่มแท็ก %(tagName)s ของห้องนี้ล้มเหลว", - "Failed to change settings": "การแก้ไขการตั้งค่าล้มเหลว", - "Failed to get protocol list from Home Server": "การขอรายชื่อโปรโตคอลจากเซิร์ฟเวอร์บ้านล้มเหลว", - "Failed to get public room list": "การขอรายชื่อห้องสาธารณะล้มเหลว", - "Failed to set direct chat tag": "การติดแท็กแชทตรงล้มเหลว", - "Failed to set Direct Message status of room": "การตั้งสถานะข้อความตรงของห้องล้มเหลว", - "Favourite": "รายการโปรด", - "Fetching third party location failed": "การเรียกข้อมูลตำแหน่งจากบุคคลที่สามล้มเหลว", - "The Home Server may be too old to support third party networks": "เซิร์ฟเวอร์บ้านอาจเก่าเกินกว่าจะรองรับเครือข่ายของบุคคลที่สาม", - "The server may be unavailable or overloaded": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งานหรือทำงานหนักเกินไป", - "Unable to fetch notification target list": "ไม่สามารถรับรายชื่ออุปกรณ์แจ้งเตือน", - "When I'm invited to a room": "เมื่อฉันได้รับคำเชิญเข้าห้อง", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "ลบนามแฝง %(alias)s ของห้องและถอด %(name)s ออกจากไดเรกทอรี?", - "Call invitation": "คำเชิญเข้าร่วมการโทร", - "Failed to forget room %(errCode)s": "การลืมห้องล้มเหลว %(errCode)s", - "Forget": "ลืม", - "Notifications on the following keywords follow rules which can’t be displayed here:": "การแจ้งเตือนจากคีย์เวิร์ดเหล่านี้ เป็นไปตามกฏที่ไม่สามารถแสดงที่นี่ได้:", - "Login": "เข้าสู่ระบบ", "Welcome to Riot.im": "ยินดีต้อนรับสู่ Riot.im", "Search the room directory": "ค้นหาในไดเรกทอรีห้อง", "Chat with Riot Bot": "แชทกับบอท Riot", @@ -169,26 +29,17 @@ "Contributing code to Matrix and Riot": "สมทบโค๊ดให้ Matrix และ Riot", "Dev chat for the Riot/Web dev team": "แชทสำหรับทีมพัฒนา Riot บนเว็บ", "Dev chat for the Dendrite dev team": "แชทสำหรับทีมพัฒนา Dendrite", - "Co-ordination for Riot/Web translators": "แชทสำหรับประสานงานการแปล Riot บนเว็บ", - "Failed to change password. Is your password correct?": "การเปลี่ยนรหัสผ่านล้มเหลว รหัสผ่านของคุณถูกต้องหรือไม่?", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "มีห้องอยู่มากมายใน Matrix ทั้งห้องที่เชื่อมไปยังเครือข่ายอื่น (Slack, IRC, Gitter ฯลฯ) และห้องที่อยู่ด้วยตัวเอง ลองดูไดเรกทอรีสิ!", - "You have successfully set a password!": "การตั้งรหัสผ่านเสร็จสมบูรณ์!", - "You can now return to your account after signing out, and sign in on other devices.": "คุณสามารถกลับไปยังบัญชีของคุณหลังจากออกจากระบบ แล้วกลับเขาสู่ระบบบนอุปกรณ์อื่น ๆ", - "Continue": "ดำเนินการต่อ", - "Please set a password!": "กรุณาตั้งรหัสผ่าน!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "เพื่อคุณจะได้กลับมายังบัญชีเดิมของคุณได้ หลังจากออกจากระบบ แล้วกลับเข้าสู่ระบบในอุปกรณ์อื่น ๆ", "Design and implementation of E2E in Matrix": "การออกแบบและใช้งาน E2E ใน Matrix", "Discussion of the Identity Service API": "พูดคุยเกี่ยวกับ Identity Service API", "Decentralised, encrypted chat & collaboration powered by [matrix]": "ระบบแชทและประสานงาน ไร้ศูนย์กลางและเข้ารหัสได้ โดยใช้เทคโนโลยีจาก [matrix]", "General discussion about Matrix and Riot": "พูดคุยเรื่องทั่วไป ทั้ง Matrix และ Riot", - "(HTTP status %(httpStatus)s)": "(สถานะ HTTP %(httpStatus)s)", - "Remember, you can always set an email address in user settings if you change your mind.": "อย่าลืม คุณสามารถตั้งที่อยู่อีเมลในการตั้งค่าผู้ใช้ได้ทุกเมื่อหากคุณเปลี่ยนใจ", - "You have successfully set a password and an email address!": "ตั้งรหัสผ่านและที่อยู่อีเมลสำเร็จแล้ว!", - "Warning": "คำเตือน", - "Checking for an update...": "กำลังตรวจหาอัปเดต...", - "Error encountered (%(errorDetail)s).": "เกิดข้อผิดพลาด (%(errorDetail)s)", - "No update available.": "ไม่มีอัปเดตที่ใหม่กว่า", - "Downloading update...": "กำลังดาวน์โหลดอัปเดต...", - "To return to your account in future you need to <u>set a password</u>": "คุณต้อง<u>ตั้งรหัสผ่าน</u>เพื่อจะกลับมาที่บัญชีนี้ในอนาคต", - "Set Password": "ตั้งรหัสผ่าน" + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "การตั้งค่า Riot ของคุณมี JSON ที่ไม่ถูกต้อง โปรดแก้ปัญหาและโหลดเพจอีกครั้ง", + "The message from the parser is: %(message)s": "ข้อความจากparserคือ:%(message)s", + "Invalid JSON": "JSON ไม่ถูกต้อง", + "Your Riot is misconfigured": "Riotของคุณตั้งค่าไม่ถูกต้อง", + "Sign In": "เข้าสู่ระบบ", + "Create Account": "สร้างบัญชี", + "Need help?": "ต้องการความช่วยเหลือ?", + "Explore rooms": "สำรวจห้อง" } diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index b0fcc46b..ff7bddd0 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1,158 +1,17 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s işletim sisteminde %(browserName)s ile %(appName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\"> Safari </a> ve<a href=\"http://opera.com\"> Opera </a> da çalışıyor.", - "A new version of Riot is available.": "Riot'un yeni bir versiyonu mevcuttur.", - "Add an email address above to configure email notifications": "E-posta bildirimlerini yapılandırmak için yukarıya bir e-posta adresi ekleyin", - "Advanced notification settings": "Gelişmiş bildirim ayarları", - "All messages": "Tüm mesajlar", - "All messages (noisy)": "Tüm mesajlar (uzun)", - "All Rooms": "Tüm Odalar", - "All notifications are currently disabled for all targets.": "Tüm bildirimler şu anda tüm hedefler için devre dışı bırakılmıştır.", - "An error occurred whilst saving your email notification preferences.": "E-posta bildirim tercihlerinizi kaydetme işlemi sırasında bir hata oluştu.", - "Call invitation": "Arama davetiyesi", - "Cancel": "İptal Et", - "Cancel Sending": "Göndermeyi İptal Et", - "Can't update user notification settings": "Kullanıcı bildirim ayarları güncellenemiyor", - "Changelog": "Değişiklikler", - "Close": "Kapat", - "Collapse panel": "Katlanır panel", - "Collecting app version information": "Uygulama sürümü bilgileri toplanıyor", - "Collecting logs": "Kayıtlar toplanıyor", - "Couldn't find a matching Matrix room": "Eşleşen bir Matrix odası bulunamadı", - "Custom Server Options": "Özel Sunucu Seçenekleri", - "customServer_text": "Farklı bir Ana Sunucu URL'si belirleyerek başka bir Matrix sunucusunda oturum açmak için Özel Sunucu Seçeneklerini kullanabilirsiniz. <br/> Bu , Riot'u mevcut Matrix hesabı ile farklı bir Ana Sunucuda kullanmanıza olanak tanır.<br/> <br/> Ayrıca Özel Kimlik Sunucu'da ayarlayabilirsiniz ama kullanıcıları e-posta adresleriyle veya kendi e-posta adresinizle davet edemezsiniz.", - "delete the alias.": "Tüm rumuzları sil.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "%(alias)s oda rumuzu silinsin ve %(name)s dizinden kaldırılsın mı ?", - "Describe your problem here.": "Probleminizi burada açıklayın.", - "Direct Chat": "Doğrudan Sohbet", - "Directory": "Dizin", - "Dismiss": "Uzaklaştır", - "Download this file": "Bu dosyayı indir", - "Enable audible notifications in web client": "Web istemcisinde sesli bildirimleri etkinleştir", - "Enable desktop notifications": "Masaüstü bildirimlerini etkinleştir", - "Enable email notifications": "E-posta bildirimlerini etkinleştir", - "Enable notifications for this account": "Bu hesap için bildirimleri etkinleştir", - "Enable them now": "Onları şimdi etkinleştir", - "Enter keywords separated by a comma:": "Anahtar kelimeleri virgül ile ayırarak girin:", - "Error": "Hata", - "Error saving email notification preferences": "E-posta bildirim tercihlerini kaydetme hatası", - "#example": "örnek", - "Expand panel": "Genişletme paneli", - "Failed to add tag %(tagName)s to room": "%(tagName)s etiketi odaya eklenemedi", - "Failed to change settings": "Ayarlar değiştirilemedi", - "Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)s", - "Failed to update keywords": "Anahtar kelimeler güncellenemedi", - "Failed to get protocol list from Home Server": "Ana Sunucu'dan protokol listesi alınamadı", - "Failed to get public room list": "Genel odalar listesi alınamadı", - "Failed to remove tag %(tagName)s from room": "Odadan %(tagName)s etiketi kaldırılamadı", - "Failed to send report: ": "Rapor gönderilemedi: ", - "Failed to set direct chat tag": "Direkt sohbet etiketi ayarlanamadı", - "Failed to set Direct Message status of room": "Odanın Direkt Mesaj durumu ayarlanamadı", - "Favourite": "Favori", - "Fetching third party location failed": "Üçüncü parti konumunu çekemedi", - "Files": "Dosyalar", - "Filter room names": "Oda isimlerini filtrele", - "Forget": "Unut", - "Forward Message": "Mesajı İlet", - "Guests can join": "Misafirler katılabilirler", - "Hide panel": "Paneli gizle", - "(HTTP status %(httpStatus)s)": "(HTTP durumu %(httpStatus)s)", - "I understand the risks and wish to continue": "Riskleri anlıyorum ve devam etmek istiyorum", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "Sorunları teşhis etmek için , bu istemciden kayıtlar hata raporu ile beraber gönderilecek . Yalnızca yukarıdaki metni göndermek isterseniz , lütfen işareti kaldırın:", - "Invite to this room": "Bu odaya davet et", - "Keywords": "Anahtar kelimeler", - "Leave": "Ayrıl", - "Login": "Oturum aç", - "Loading bug report module": "Hata raporlama modülü yükleniyor", - "Low Priority": "Düşük Öncelikli", - "Members": "Üyeler", - "Mentions only": "Sadece Mention'lar", - "Messages containing my display name": "İsmimi içeren mesajlar", - "Messages containing <span>keywords</span>": "<span> anahtar kelimeleri </span> içeren mesajlar", - "Messages containing my user name": "Kullanıcı ismimi içeren mesajlar", - "Messages in group chats": "Grup sohbetlerindeki mesajlar", - "Messages in one-to-one chats": "Bire bir sohbetlerdeki mesajlar", - "Messages sent by bot": "Bot tarafından gönderilen mesajlar", - "more": "Daha", - "Mute": "Sessiz", - "No rooms to show": "Gösterilecek oda yok", - "Noisy": "Gürültülü", - "Notification targets": "Bildirim hedefleri", - "Notifications": "Bildirimler", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Aşağıdaki anahtar kelimeleri ile ilgili bildirimler burada gösterilemeyen kuralları takip eder:", - "Notify for all other messages/rooms": "Diğer tüm mesajlar / odalar için bildirim yapın", - "Notify me for anything else": "Başka herhangi bir şey için bana bildirim yap", - "Off": "Kapalı", - "On": "Açık", - "Operation failed": "Operasyon başarısız oldu", - "Permalink": "Kalıcı Bağlantı(permalink)", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Lütfen hatayı tanımlayın. Ne yaptınız ? Ne gerçekleşmesini beklediniz ? Ne gerçekleşti ?", - "Please describe the bug and/or send logs.": "Lütfen hatayı tanımlayın ve/veya kayıtları gönderin.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Lütfen <a href=\"https://www.google.com/chrome\"> Chrome </a> ya da <a href=\"https://getfirefox.com\"> Firefox </a> 'u en iyi deneyim için yükleyin.", - "powered by Matrix": "Matrix tarafından desteklenmektedir", - "Quote": "Alıntı", - "Reject": "Reddet", - "Remove %(name)s from the directory?": "%(name)s'i dizinden kaldırılsın mı ?", - "Remove": "Kaldır", - "remove %(name)s from the directory.": "%(name)s'i dizinden kaldır.", - "Remove from Directory": "Dizinden Kaldır", - "Report a bug": "Hata Bildir", - "Resend": "Yeniden Gönder", + "Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri", + "Dismiss": "Kapat", + "powered by Matrix": "Matrix'den besleniyor", "Riot Desktop on %(platformName)s": "%(platformName)s platformunda Riot Masaüstü", - "Riot does not know how to join a room on this network": "Riot bu ağdaki bir odaya nasıl gireceğini bilmiyor", "Riot is not supported on mobile web. Install the app?": "Riot mobil web'de desteklenmiyor . Uygulamayı yükle ?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot geçerli tarayıcınızda mevcut olmayan veya denemelik olan birçok gelişmiş tarayıcı özelliği kullanıyor.", - "Room not found": "Oda bulunamadı", - "Search": "Ara", - "Search…": "Arama…", - "Search for a room": "Oda ara", - "Send": "Gönder", - "Send logs": "Kayıtları gönder", - "Source URL": "Kaynak URL", - "Sorry, your browser is <b>not</b> able to run Riot.": "Üzgünüz , tarayıcınız Riot'u <b> çalıştıramıyor </b>.", - "The Home Server may be too old to support third party networks": "Ana Sunucu 3. parti ağları desteklemek için çok eski olabilir", - "There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var", - "The server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir", - "This Room": "Bu Oda", - "Unable to fetch notification target list": "Bildirim hedef listesi çekilemedi", - "Unable to join network": "Ağa bağlanılamıyor", - "Unable to look up room ID from server": "Sunucudan oda ID'si aranamadı", - "Unavailable": "Kullanım dışı", - "Unhide Preview": "Önizlemeyi Göster", "Unknown device": "Bilinmeyen aygıt", - "unknown error code": "bilinmeyen hata kodu", - "Unnamed room": "İsimsiz oda", - "Update": "Güncelleştirme", - "Uploaded on %(date)s by %(user)s": "%(user)s tarafında %(date)s e yüklendi", - "Uploading report": "Rapor yükleniyor", - "View Decrypted Source": "Şifresi Çözülmüş(Decrypted) Kaynağı Görüntüle", - "View Source": "Kaynağı Görüntüle", - "What's New": "Yenilikler", - "What's new?": "Yeni olan ne ?", - "Waiting for response from server": "Sunucudan yanıt bekleniyor", - "When I'm invited to a room": "Bir odaya davet edildiğimde", - "World readable": "Okunabilir dünya", - "You cannot delete this image. (%(code)s)": "Bu resmi silemezsiniz. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Bu mesajı silemezsiniz (%(code)s)", - "You are not receiving desktop notifications": "Masaüstü bildirimleri almıyorsunuz", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Onları Riot dışında bir istemciden yapılandırmış olabilirsiniz . Onları Riot içersinide ayarlayamazsınız ama hala geçerlidirler", - "Sunday": "Pazar", - "Monday": "Pazartesi", - "Tuesday": "Salı", - "Wednesday": "Çarşamba", - "Thursday": "Perşembe", - "Friday": "Cuma", - "Saturday": "Cumartesi", - "Today": "Bugün", - "Yesterday": "Dün", - "OK": "Tamam", "You need to be using HTTPS to place a screen-sharing call.": "Ekran paylaşımlı arama yapmak için HTTPS kullanıyor olmalısınız.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Geçerli tarayıcınız ile birlikte , uygulamanın görünüş ve kullanım hissi tamamen hatalı olabilir ve bazı ya da tüm özellikler çalışmayabilir. Yine de denemek isterseniz devam edebilirsiniz ancak karşılaşabileceğiniz sorunlar karşısında kendi başınasınız !", - "Welcome to Riot.im": "Riot.im'e Hoş Geldiniz", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dağıtık , şifreli sohbet & işbirliği ile Matrix tarafından desteklenmektedir", + "Welcome to Riot.im": "Riot.im'e hoş geldiniz", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Merkezsiz, şifreli sohbet & işbirliği ile Matrix tarafından desteklenmektedir", "Search the room directory": "Oda dizinini ara", - "Chat with Riot Bot": "Riot Bot ile Sohbet Et", - "Get started with some tips from Riot Bot!": "Bazı Riot Bot ipuçları ile başlayın !", + "Chat with Riot Bot": "Riot Bot ile sohbet et", + "Get started with some tips from Riot Bot!": "Riot Bot'tan bazı ipuçları ile başlayın!", "General discussion about Matrix and Riot": "Matrix ve Riot hakkında genel tartışma", "Discussion of all things Matrix!": "Matrix'in tüm tartışması!", "Riot/Web & Desktop chat": "Riot/Web & Masaüstü sohbet", @@ -160,28 +19,28 @@ "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk sohbet", "Matrix technical discussions": "Matrix teknik tartışmalar", "Running Matrix services": "Çalışan Matrix hizmetleri", - "Community-run support for Synapse": "Synapse için topluluk tarafından işlenen destek", - "Admin support for Dendrite": "Dendrite için Admin desteği", + "Community-run support for Synapse": "Synapse için topluluk tarafından işletilen destek", + "Admin support for Dendrite": "Dendrite için yönetici desteği", "Announcements about Synapse releases": "Synapse sürümleri hakkında duyurular", "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc kullanan ve çalıştıran kullanıcılar için destek", - "Building services on Matrix": "Matrix üzerinde Yapı hizmetleri", + "Building services on Matrix": "Matrix üzerinde yapı hizmetleri", "Support for those using the Matrix spec": "Matrix teknik özelliklerini kullananlar için destek", - "Design and implementation of E2E in Matrix": "Matrix'te E2E ' nin Tasarım ve İmplementasyonu", - "Implementing VR services with Matrix": "Matrix'te VR hizmetlerini implement etmek", - "Implementing VoIP services with Matrix": "Matrix'te VoIP hizmetlerini implement etmek", - "Discussion of the Identity Service API": "Kimlik Hizmet API ( Identity Service API ) Tartışması", + "Design and implementation of E2E in Matrix": "Matrix'te E2E ' nin Tasarımı ve uyglamanması", + "Implementing VR services with Matrix": "Matrix'te VR hizmetlerini uygulamak", + "Implementing VoIP services with Matrix": "Matrix'te VoIP hizmetlerini uygulamak", + "Discussion of the Identity Service API": "Kimlik Hizmet API ( Identity Service API ) tartışması", "Support for those using, running and writing other bridges": "Diğer köprüleri kullanan , çalıştıran ve yazanlar için destek", - "Contributing code to Matrix and Riot": "Matrix ve Riot'a kod katkısı (contribution) sağla", - "Dev chat for the Riot/Web dev team": "Riot/Web Geliştirici takımı için Geliştirici sohbeti", - "Dev chat for the Dendrite dev team": "Dendrite Geliştirici Takımı için Geliştirici sohbeti", - "Co-ordination for Riot/Web translators": "Riot/Web çevirmenleri için koordinasyon", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te varolan ağlara (Slack , IRC , Gitter vb.) bağlı ya da bağımsız bir çok oda var . Dizini kontrol edin!", - "Failed to change password. Is your password correct?": "Şifreniz değiştirilemedi . Şifreniz doğru mu ?", - "You have successfully set a password!": "Başarıyla bir şifre ayarladınız!", - "You can now return to your account after signing out, and sign in on other devices.": "Şimdi oturumunuzu iptal ettikten sonra başka cihazda oturum açarak hesabınıza dönebilirsiniz.", - "Continue": "Devam Et", - "Please set a password!": "Lütfen bir şifre ayarlayın !", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Bu oturumunuzu kapattıktan sonra hesabınıza dönmenizi ve diğer cihazlarda oturum açmanızı sağlar.", - "You have successfully set a password and an email address!": "Başarıyla bir şifre ve e-posta adresi ayarladın !", - "Remember, you can always set an email address in user settings if you change your mind.": "Unutmayın , fikrinizi değiştirirseniz her zaman bir şifre ve e-posta adresi ayarlayabilirsiniz." + "Contributing code to Matrix and Riot": "Matrix ve Riot'a kod katkısı sağlama", + "Dev chat for the Riot/Web dev team": "Riot/Web Geliştirici takımı için geliştirici sohbeti", + "Dev chat for the Dendrite dev team": "Dendrite geliştirici takımı için geliştirici sohbeti", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te var olan ağalara bağlı (Slack , IRC , Gitter vb.) birçok oda var. Dizini kontrol edin!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Farklı bir ev sunucusu URL'sini belirterek diğer Matrix sunucularına oturum açmak için özel sunucu seçeneklerini kullanabilirsiniz.<br />Bu, Riot'u başka bir ev sunucusu üzerinde var olan Matrix hesabını kullanmanıza olanak sağlar. <br/><br/> Ayrıca özelleştirilebilir bir kimlik de ayarlayabilirsiniz, ama kullanıcılırı ve kendinizi e-posta adreslerinden davet edemeyeceksiniz.", + "Co-ordination for Riot translators": "Riot çeviricileri için iş güdüm (koordinasyon)", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Özel sunucu seçenekleri kullanıp farklı bir anamakine URL'si belirleyerek diğer Matrix sunucularına giriş yapabilirsin. Bu Riot'u varolan bir Matrix hesabı ile farklı anamakine de kullanmanı sağlar.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Ayrıca özel kimlik sunucusu da belirleyebilirsin, ancak kullanıcıları epostaları ile davet edemezsin ya da epostan ile davet edilemezsin.", + "Sign In": "Giriş yap", + "Create Account": "Kayıt Ol", + "Need help?": "Yardıma mı ihtiyacın var?", + "Explore rooms": "Odaları keşfet", + "Room Directory": "Oda Dizini" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index e6af8524..2485880a 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -1,149 +1,16 @@ { - "A new version of Riot is available.": "Доступне оновлення для Riot.", - "All messages": "Усі повідомлення", - "All messages (noisy)": "Усі повідомлення (гучно)", - "All Rooms": "Усі кімнати", - "All notifications are currently disabled for all targets.": "Сповіщення для усіх цілей на даний момент вимкнені.", - "An error occurred whilst saving your email notification preferences.": "Під час збереження налаштувань сповіщень е-поштою трапилася помилка.", - "Cancel": "Скасувати", - "Cancel Sending": "Скасувати надсилання", - "Can't update user notification settings": "Неможливо оновити налаштування користувацьких сповіщень", - "Changelog": "Журнал змін", - "Close": "Закрити", - "Collapse panel": "Згорнути панель", - "Collecting app version information": "Збір інформації про версію застосунка", - "Collecting logs": "Збір журналів", - "Couldn't find a matching Matrix room": "Неможливо знайти відповідну кімнату", - "Custom Server Options": "Нетипові параметри сервера", - "customServer_text": "Ви можете скористатись нетиповими параметрами сервера щоб увійти в інші сервери Matrix, зазначивши посилання на окремий Домашній сервер<br/>Це дозволяє вам використовувати Riot із вже існуючою обліковкою Matrix на іншому Домашньому сервері.<br/><br/>Ви також можете зазначити нетиповий сервер ідентифікації, але ви не матимете змоги ані запрошувати користувачів за е-поштою, ані бути запрошеними за е-поштою самі.", - "delete the alias.": "видалити псевдонім.", + "Custom Server Options": "Власні параметри сервера", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s через %(browserName)s на %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> та <a href=\"http://opera.com\">Opera</a> також підтримуються.", - "Add an email address above to configure email notifications": "Додайте вище адресу е-пошти щоб налаштувати сповіщення е-поштою", - "Advanced notification settings": "Додаткові налаштування сповіщень", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Видалити псевдонім %(alias)s та прибрати з каталогу %(name)s?", - "Describe your problem here.": "Опишіть вашу проблему тут.", - "Direct Chat": "Прямий чат", - "Directory": "Каталог", "Dismiss": "Відхилити", - "Download this file": "Звантажити цей файл", - "Enable audible notifications in web client": "Увімкнути звукові сповіщення у мережевому застосунку", - "Enable desktop notifications": "Увімкнути сповіщення на стільниці", - "Enable email notifications": "Увімкнути сповіщення е-поштою", - "Enable notifications for this account": "Увімкнути сповіщення для цієї обліковки", - "Enable them now": "Увімкнути їх зараз", - "Enter keywords separated by a comma:": "Введіть ключові слова через кому:", - "Error": "Помилка", - "Error saving email notification preferences": "Помилка при збереженні параметрів сповіщень е-поштою", - "#example": "#зразок", - "Expand panel": "Розгорнути панель", - "Failed to add tag %(tagName)s to room": "Не вдалось додати до кімнати мітку %(tagName)s", - "Failed to change settings": "Не вдалось змінити налаштування", - "Failed to forget room %(errCode)s": "Не вдалось видалити кімнату %(errCode)s", - "Failed to update keywords": "Не вдалось оновити ключові слова", - "Failed to get protocol list from Home Server": "Не вдалось отримати перелік протоколів з Домашнього серверу", - "Failed to get public room list": "Не вдалось отримати перелік прилюдних кімнат", - "Failed to remove tag %(tagName)s from room": "Не вдалося прибрати з кімнати мітку %(tagName)s", - "Failed to send report: ": "Не вдалося надіслати звіт: ", - "Failed to set direct chat tag": "Не вдалося встановити мітку прямого чату", - "Favourite": "Вибране", - "Fetching third party location failed": "Не вдалось отримати стороннє місцеперебування", - "Files": "Файли", - "Filter room names": "Відфільтрувати назви кімнат", - "Forget": "Забути", - "Forward Message": "Переслати повідомлення", - "Guests can join": "Гості можуть приєднуватися", - "Hide panel": "Сховати панель", - "(HTTP status %(httpStatus)s)": "(статус HTTP %(httpStatus)s)", - "I understand the risks and wish to continue": "Я ознайомлений з ризиками і хочу продовжити", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "З метою діагностики проблем журнали з цього застосунку будуть надіслані разом зі звітом про вади. Якщо ви бажаєте надіслати лише вищенаведений текст, відозначте, будь ласка:", - "Invite to this room": "Запросити до цієї кімнати", - "Keywords": "Ключові слова", - "Leave": "Вийти", - "Login": "Зайти", - "Loading bug report module": "Завантаження модуля звітів про вади", - "Low Priority": "Неважливі", - "Members": "Члени", - "Mentions only": "Тільки згадки", - "Messages containing <span>keywords</span>": "Повідомлення, що містять <span>ключові слова</span>", - "Messages containing my user name": "Повідомлення, що містять моє ім'я користувача", - "Messages in group chats": "Повідомлення у групових чатах", - "Messages sent by bot": "Повідомлення, надіслані ботом", - "more": "докладніше", - "Mute": "Стишити", - "Notification targets": "Цілі сповіщень", - "Notifications": "Сповіщення", - "Notify for all other messages/rooms": "Сповіщати щодо всіх повідомлень/кімнат", - "Notify me for anything else": "Сповіщати мене про будь-що інше", - "Off": "Вимкнено", - "On": "Увімкнено", - "Operation failed": "Не вдалося виконати дію", - "Permalink": "Постійне посилання", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Опишіть, будь ласка, ваду. Що ви зробили? На що ви очікували? Що трапилось натомість?", - "Please describe the bug and/or send logs.": "Опишіть, будь ласка, ваду та/або надішліть журнали.", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "Для більшої зручності у використанні встановіть, будь ласка, <a href=\"https://www.google.com/chrome\">Chrome</a> або <a href=\"https://getfirefox.com\">Firefox</a>.", "powered by Matrix": "працює на Matrix", - "Quote": "Цитувати", - "Reject": "Відмовитись", - "Remove %(name)s from the directory?": "Прибрати %(name)s з каталогу?", - "Remove": "Прибрати", - "remove %(name)s from the directory.": "прибрати %(name)s з каталогу.", - "Remove from Directory": "Прибрати з каталогу", - "Report a bug": "Звітувати про вади", - "Resend": "Перенадіслати", "Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s", - "Call invitation": "Запрошення до виклику", - "Riot does not know how to join a room on this network": "Riot не знає як приєднатись до кімнати у цій мережі", "Riot is not supported on mobile web. Install the app?": "Riot не працює через оглядач на мобільних пристроях. Встановити застосунок?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot використовує багато новітніх функцій, деякі з яких не доступні або є експериментальними у вашому оглядачі.", - "Room not found": "Кімнату не знайдено", - "Search": "Пошук", - "Search…": "Пошук…", - "Search for a room": "Пошук кімнати", - "Send": "Надіслати", - "Send logs": "Надіслати журнали", - "Source URL": "Джерельне посилання", - "Sorry, your browser is <b>not</b> able to run Riot.": "Вибачте, ваш оглядач <b>не</b> спроможний запустити Riot.", - "The Home Server may be too old to support third party networks": "Домашній сервер може бути застарим для підтримки сторонніх мереж", - "There are advanced notifications which are not shown here": "Є додаткові сповіщення, що не показуються тут", - "The server may be unavailable or overloaded": "Сервер може бути недосяжним або перевантаженим", - "This Room": "Ця кімната", - "Unable to fetch notification target list": "Неможливо отримати перелік цілей сповіщення", - "Unable to join network": "Неможливо приєднатись до мережі", - "Unable to look up room ID from server": "Неможливо знайти ID кімнати на сервері", "Unknown device": "Невідомий пристрій", - "unknown error code": "невідомий код помилки", - "Unnamed room": "Неназвана кімната", - "Update": "Оновити", - "Uploaded on %(date)s by %(user)s": "Завантажено %(date)s користувачем %(user)s", - "Uploading report": "Завантаження звіту", - "View Decrypted Source": "Переглянути розшифроване джерело", - "View Source": "Переглянути джерело", - "What's New": "Що нового", - "What's new?": "Що нового?", - "Waiting for response from server": "Очікується відповідь від сервера", - "When I'm invited to a room": "Коли мене запрошено до кімнати", - "World readable": "Відкрито для світу", - "You cannot delete this image. (%(code)s)": "Ви не можете видалити це зображення. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Ви не можете видалити це повідомлення. (%(code)s)", - "You are not receiving desktop notifications": "Ви не отримуєте сповіщення на стільниці", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Можливо, ви налаштували їх не у Riot, а у іншому застосунку. Ви не можете регулювати їх у Riot, але вони все ще мають силу", - "Sunday": "Неділя", - "Monday": "Понеділок", - "Tuesday": "Вівторок", - "Wednesday": "Середа", - "Thursday": "Четвер", - "Friday": "П'ятниця", - "Saturday": "Субота", - "Today": "Сьогодні", - "Yesterday": "Вчора", - "OK": "Гаразд", "You need to be using HTTPS to place a screen-sharing call.": "Ви маєте використовувати HTTPS щоб зробити виклик із поширенням екрану.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "У вашому оглядачі вигляд застосунку може бути повністю іншим, а деякі або навіть усі функції можуть не працювати. Якщо ви наполягаєте, то можете продовжити користування, але ви маєте впоратись з усіма можливими проблемами власноруч!", "Welcome to Riot.im": "Ласкаво просимо до Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентралізований, шифрований чат та засіб для співробітництва, що працює на [matrix]", "Search the room directory": "Шукати у каталозі кімнат", - "Chat with Riot Bot": "Розмовляти з Riot-ботом", + "Chat with Riot Bot": "Чат із Riot-ботом", "Get started with some tips from Riot Bot!": "Розпочніть за допомогою декількох підказок від Riot-боту!", "General discussion about Matrix and Riot": "Загальне обговорення Matrix та Riot", "Discussion of all things Matrix!": "Обговорення усіх деталей про Matrix!", @@ -165,62 +32,18 @@ "Contributing code to Matrix and Riot": "Тим, хто хоче долучитись до розробки Matrix та Riot", "Dev chat for the Riot/Web dev team": "Чат команди розробників Riot/Web", "Dev chat for the Dendrite dev team": "Чат команди розробників Dendrite", - "Co-ordination for Riot/Web translators": "Координація для перекладачів Riot/Web", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "У мережі Matrix вже існує багато кімнат, що з'єднані як з існуючими мережами (Slack, IRC, Gitter тощо), так і незалежними. Подивіться у каталозі кімнат!", - "Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?", - "You have successfully set a password!": "Пароль успішно встановлено!", - "You can now return to your account after signing out, and sign in on other devices.": "Тепер ви можете повернутися до своєї обліковки після виходу з неї, та зайти з інших пристроїв.", - "Continue": "Продовжити", - "Please set a password!": "Встановіть пароль, будь ласка!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "Це дозволить вам повернутися до своєї обліковки після виходу з неї, та заходити з інших пристроїв.", - "You have successfully set a password and an email address!": "Пароль та адресу е-пошти успішно встановлено!", - "Remember, you can always set an email address in user settings if you change your mind.": "Пам'ятайте, що ви завжди можете встановити адресу е-пошти у налаштуваннях, якщо передумаєте.", - "Messages in one-to-one chats": "Повідомлення у чатах \"сам на сам\"", - "No rooms to show": "Кімнати відсутні", - "Noisy": "Шумний", - "Unavailable": "Нема в наявності", - "Unhide Preview": "Відкрити попередній перегляд", - "Failed to set Direct Message status of room": "Не вдалось встановити статус прямого спілкування в кімнаті", - "Messages containing my display name": "Повідомлення, вміщає моє ім'я", "Running Matrix services": "Запуск служби Matrix", - "Set Password": "Задати пароль", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Сповіщення з наступних ключових слів дотримуються правил, що не можуть бути показані тут:", - "To return to your account in future you need to <u>set a password</u>": "Щоб мати змогу використовувати вашу обліковку у майбутньому, <u>зазначте пароль</u>", - "Warning": "Попередження", - "Checking for an update...": "Перевірка оновлень…", - "Error encountered (%(errorDetail)s).": "Трапилась помилка (%(errorDetail)s).", - "No update available.": "Оновлення відсутні.", - "Downloading update...": "Звантаженя оновлення…", - "Couldn't load home page": "Не вдалось завантажити домівку", - "Back": "Назад", - "Bug report sent": "Звіт про помилки відправлений", - "Developer Tools": "Інструменти розробника", - "Failed to send custom event.": "Не вдалося відправити приватний захід.", - "Filter results": "Фільтр результатів", - "Send Custom Event": "Відправити приватний захід", - "Send Custom State Event": "Відправити статус приватного заходу", - "Explore Room State": "Перегляд статуса кімнати", - "You must specify an event type!": "Необхідно вказати тип захода!", - "Thank you!": "Дякую!", - "Event sent!": "Захід відправлено!", - "Event Type": "Тип західу", - "Event Content": "Зміст заходу", - "State Key": "Ключ стану", - "Show message in desktop notification": "Показати повідомлення в сповіщення на робочому столі", - "Edit": "Редактувати", - "Unpin Message": "Відкріпити повідомлення", - "Pin Message": "Прикріпити повідомлення", - "Register": "Зарегіструватись", - "Rooms": "Кімнати", - "Invite to this community": "Запросити в це суспільство", - "Add rooms to this community": "Добавити кімнати в це суспільство", - "Toolbox": "Панель інструментів", - "Send Account Data": "Відправити данні аккаунта", - "Explore Account Data": "Продивитись данні аккаунта", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Ви можете використовувати параметри користувача сервера для входа на другі сервера Matrix, вказав другий URL-адресу домашнього сервера. <br/>Це дозволяє використовувати Riot з обліковим записом Matrix який існує на другому домашньому сервері.<br/><br/>Окрім цього, можливо встановити ідентифікаційний сервер користувача, але ви не зможете запросити других користувачів та бути запрошенному використовуючи адресу електронної пошти.", - "Appear Offline": "Відображати як не в мережі", - "Away": "Нема на місці", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "Краще встановіть <chromeLink>Chrome</chromeLink> або <firefoxLink>Firefox</firefoxLink>.", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> та <operaLink>Opera</operaLink> працюють теж.", - "Reply": "Відповісти" + "Co-ordination for Riot translators": "Координаційний чат для перекладачів Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Ви можете використати власні параметри сервера для входу в інші Matrix сервери, вказавши інший URL. Це дозволить використовувати Riot з наявним обліковим записом Matrix на іншому сервері.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Ви також можете встановити власний сервер ідентифікації, але Ви не зможете запрошувати користувачів (або бути запрошеним самому) за адресою електронної пошти.", + "Need help?": "Допомогти?", + "Sign In": "Вхід", + "Create Account": "Створити аккаунт", + "Explore rooms": "Дослідити кімнати", + "Room Directory": "Каталог кімнат", + "Unexpected error preparing the app. See console for details.": "Неочікувана помилка при підготовці програми. Дивіться деталі у виводі консолі.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Невірна конфігурація: можна вказати лише default_server_config, default_server_name або default_hs_url.", + "Invalid configuration: no default server specified.": "Невірна конфігурація: не вказано сервер за замовчуванням." } diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json new file mode 100644 index 00000000..e1f9933d --- /dev/null +++ b/src/i18n/strings/vi.json @@ -0,0 +1,34 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot không được hỗ trợ trên mobile web. Hãy cài app?", + "Riot Desktop on %(platformName)s": "Riot Desktop trên %(platformName)s", + "Unknown device": "Thiết bị không được nhận biết", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s với %(browserName)s trên %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Bạn phải sử dụng HTTPS để dùng chức năng chia sẻ màn hình.", + "Custom Server Options": "Các lựa chọn máy chủ", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bạn có thể sử dụng các máy chủ khác để đăng nhập vào Matrix bằng cách khai báo đường dẫn Home server.<br/> Cách này cho phép bạn sử dụng tài khoản hiện tại trên một Home server khác.<br/><br/>Bạn cũng có thể chọn một Server định danh nhưng bạn không thể mời người dùng khác qua email.", + "Dismiss": "Bỏ qua", + "powered by Matrix": "tài trợ bởi Matrix", + "Welcome to Riot.im": "Chào mừng tới Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat phân tán, mã hóa & giao tiếp được tài trợ bởi [matrix]", + "Search the room directory": "Tìm trong danh sách phòng", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Rất nhiều phòng đã có sẵn trong Matrix, liên kết với các hệ thống mạng xã hội khác (Slack, IRC, Gitter,...) hoặc hoạt động độc lập. Hãy kiểm tra!", + "Chat with Riot Bot": "Chat với Riot Bot", + "Get started with some tips from Riot Bot!": "Bắt đầu với các hướng dẫn từ Riot Bot!", + "General discussion about Matrix and Riot": "Thảo luận chung về Matrix và Riot", + "Discussion of all things Matrix!": "Thào luận về mọi vấn đề liên quan đến Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Unexpected error preparing the app. See console for details.": "Lỗi xảy ra trong lúc chuẩn bị app. Xem console log để biết chi tiết.", + "Your Riot is misconfigured": "Hệ thống Riot của bạn bị thiết lập sai", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Thiết lập Riot của bạn chứa JSON không hợp lệ. Bạn hãy sửa lỗi và tải lại trang.", + "The message from the parser is: %(message)s": "Nội dung tin là: %(message)s", + "Invalid JSON": "JSON không hợp lệ", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Thiết lập không hợp lệ: chỉ có thể điền một trong số default_server_config, default_server_name, hoặc default_hs_url.", + "Invalid configuration: no default server specified.": "Cấu hình không hợp lệ: máy chủ mặc định không được thiết lập.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Bạn có thể sử dụng lựa chọn máy chủ khác để đăng nhập vào máy chủ Matrix bằng cách nhập đường dẫn máy chủ riêng. Cách này giúp bạn sử dụng Riot với máy chủ riêng của bạn.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Bạn có thể sử dụng máy chủ định danh riêng, nhưng bạn sẽ không thể mời người dùng bằng email, hoặc được mời bằng email của bạn.", + "Sign In": "Đăng nhập", + "Create Account": "Tạo tài khoản", + "Need help?": "Cần hỗ trợ?", + "Explore rooms": "Khám phá phòng chat", + "Room Directory": "Danh mục phòng" +} diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json new file mode 100644 index 00000000..5749e322 --- /dev/null +++ b/src/i18n/strings/vls.json @@ -0,0 +1,27 @@ +{ + "Unexpected error preparing the app. See console for details.": "’t Is een onverwachte foute ipgetreedn by ’t voorbereidn van den app. Bekykt de console vo details.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "De serverconfiguroatie van deze Riot-instantie lykt oungeldig. A je gy den beheerder zyt, gelieve ton de foute hierounder te corrigeern", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Oungeldige configuroasje: ku moar één van default_server_config, default_server_name, of default_hs_url ingeevn.", + "Invalid configuration: no default server specified.": "Oungeldige configuroasje: geen standoardserver ingegeevn.", + "Riot Desktop on %(platformName)s": "Riot Desktop ip %(platformName)s", + "Unknown device": "Ounbekend toestel", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s ip %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Je moet HTTPS gebruukn vo een iproep me schermdeeln te kunn startn.", + "powered by Matrix": "meuglik gemakt deur Matrix", + "Custom Server Options": "Angepaste serverinstelliengn", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Je kut d’angepaste serverinstelliengn gebruukn vo jen eigen an te meldn by andere Matrix-servers, deur een andere thuusserver-URL in te geevn. Da lat je toe van Riot te gebruukn met e bestoande Matrix-account by een andere thuusserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kut ook een angepasten identiteitsserver instelln, ma je goa geen gebruukers kunn uutnodign via e-mail, of zelve via e-mail uutgenodigd wirden.", + "Dismiss": "Afwyzn", + "Welcome to Riot.im": "Welgekommn by Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chattn & soamenwerkn meuglik gemakt deur [matrix]", + "Sign In": "Anmeldn", + "Create Account": "Account anmoakn", + "Need help?": "Hulp nodig?", + "Chat with Riot Bot": "Chattn me Riot-robot", + "Explore rooms": "Gesprekkn ountdekkn", + "Room Directory": "Gesprekscataloog", + "Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Riot-configuroasje bevat oungeldigen JSON. Corrigeer ’t probleem en herload ’t blad.", + "The message from the parser is: %(message)s": "’t Bericht van de verwerker is: %(message)s", + "Invalid JSON": "Oungeldigen JSON" +} diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 5d43d604..bdafbed2 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1,226 +1,46 @@ { - "Close": "关闭", - "Mute": "静音", - "Notifications": "通知", - "OK": "确定", - "Operation failed": "操作失败", - "%(appName)s via %(browserName)s on %(osName)s": "应用 %(appName)s 通过 %(osName)s 上的 %(browserName)s 浏览器运行", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> 和 <a href=\"http://opera.com\">Opera</a> 均可运行。", - "A new version of Riot is available.": "Riot 有更新可用。", - "Add an email address above to configure email notifications": "请在上方输入电子邮件地址以接收邮件通知", - "Advanced notification settings": "通知高级设置", - "All messages": "全部消息", - "All messages (noisy)": "全部消息(高亮)", - "All Rooms": "全部聊天室", - "All notifications are currently disabled for all targets.": "当前所有目标的通知均已禁用。", - "An error occurred whilst saving your email notification preferences.": "保存邮件通知首选项设定时出现错误。", - "Call invitation": "语音邀请", - "Cancel": "取消", - "Cancel Sending": "取消发送", - "Can't update user notification settings": "不能更新用户通知设置", - "Changelog": "变更日志", - "Collecting app version information": "正在收集应用版本信息", - "Collecting logs": "正在收集日志", - "Couldn't find a matching Matrix room": "未找到符合的 Matrix 聊天室", + "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 下 %(browserName)s 浏览器中运行的 %(appName)s", "Custom Server Options": "自定义服务器选项", - "customServer_text": "你可以通过指定自定义服务器选项中的其他主服务器的 URL 来登录其他 Matrix 服务器。<br/>该选项允许你在 Riot 上使用其他主服务器上的帐号。<br/><br/>你也可以自定义身份验证服务器,但你将不能通过邮件邀请其他用户,同样的,你也不能通过邮件被其他用户邀请。", - "delete the alias.": "删除别名。", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "确定要删除聊天室别名 %(alias)s 并将 %(name)s 从列表中删除吗?", - "Describe your problem here.": "在这里描述你的问题。", - "Directory": "聊天室目录", - "Dismiss": "设为已读", - "Download this file": "下载该文件", - "Collapse panel": "折叠面板", - "Direct Chat": "私聊", - "Enable audible notifications in web client": "在网页客户端启用音频通知", - "Enable desktop notifications": "启用桌面通知", - "Enable email notifications": "启用电子邮件通知", - "Enable notifications for this account": "为本账号启用通知", - "Enable them now": "现在启用", - "Enter keywords separated by a comma:": "输入以逗号间隔的关键字:", - "Error": "错误", - "Error saving email notification preferences": "保存电子邮件通知的首选项时出错", - "#example": "#例子", - "Expand panel": "展开面板", - "Failed to add tag %(tagName)s to room": "无法为聊天室新增标签 %(tagName)s", - "Failed to change settings": "变更设置失败", - "Failed to forget room %(errCode)s": "无法忘记聊天室 %(errCode)s", - "Failed to update keywords": "无法更新关键字", - "Failed to get protocol list from Home Server": "无法从主服务器取得协议列表", - "Failed to get public room list": "无法取得公开的聊天室列表", - "Failed to remove tag %(tagName)s from room": "移除聊天室标签 %(tagName)s 失败", - "Failed to send report: ": "无法发送报告: ", - "Failed to set direct chat tag": "无法设定私聊标签", - "Failed to set Direct Message status of room": "无法设置聊天室的私聊状态", - "Favourite": "收藏", - "Fetching third party location failed": "获取第三方位置失败", - "Files": "文件", - "Filter room names": "过滤聊天室名称", - "Forget": "忘记", - "Forward Message": "转发消息", - "Guests can join": "访客可以加入", - "Hide panel": "隐藏面板", - "(HTTP status %(httpStatus)s)": "(HTTP 状态 %(httpStatus)s)", - "I understand the risks and wish to continue": "我了解这些风险并愿意继续", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "为了诊断问题,来自客户端的活动记录会随着这个程序 bug 报告一并发出。如果你只想送出以上文字,请取消勾选:", - "Invite to this room": "邀请加入此聊天室", - "Keywords": "关键字", - "Leave": "离开", - "Login": "登录", - "Loading bug report module": "正在载入 bug 报告模块", - "Low Priority": "低优先级", - "Members": "成员", - "Mentions only": "只限提及", - "Messages containing my display name": "消息中含有我的显示名称", - "Messages containing <span>keywords</span>": "消息包含 <span>关键字</span>", - "Messages containing my user name": "消息中包含我的用户名", - "Messages in group chats": "群组聊天中的消息", - "Messages in one-to-one chats": "一对一聊天种的消息", - "Messages sent by bot": "由机器人发出的消息", - "more": "更多", - "No rooms to show": "无聊天室", - "Noisy": "吵闹", - "Notification targets": "通知目标", - "Notifications on the following keywords follow rules which can’t be displayed here:": "以下关键字依照规则将不会在此显示:", - "Notify for all other messages/rooms": "为所有其他消息/聊天室显示通知", - "Notify me for anything else": "所有消息都通知我", - "Off": "关闭", - "On": "打开", - "Permalink": "永久链接", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "请描述这个 bug,您做了什么动作?预期会发生的状况?以及实际发生的?", - "Please describe the bug and/or send logs.": "请描述这个 bug 和/或发送日志。", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "请安装 <a href=\"https://www.google.com/chrome\">Chrome</a> 或 <a href=\"https://getfirefox.com\">Firefox</a> 来得到最佳体验。", - "powered by Matrix": "由 Matrix 提供", - "Quote": "引述", - "Reject": "拒绝", - "Remove %(name)s from the directory?": "从目录中移除 %(name)s 吗?", - "Remove": "移除", - "remove %(name)s from the directory.": "从目录中移除 %(name)s。", - "Remove from Directory": "从目录中移除", - "Report a bug": "报告一个 bug", - "Resend": "重新发送", - "Riot Desktop on %(platformName)s": "Riot 桌面版在 %(platformName)s", - "Riot does not know how to join a room on this network": "Riot 不知道如何在此网络中加入聊天室", - "Riot is not supported on mobile web. Install the app?": "Riot 不支持浏览器网页,要安装 app 吗?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot 使用了许多先进的浏览器功能,有些在你目前所用的浏览器上无法使用或仅为实验性的功能。", - "Room not found": "找不到聊天室", - "Search": "搜索", - "Search…": "搜索…", - "Search for a room": "搜索聊天室", - "Send": "发送", - "Send logs": "发送日志", - "Source URL": "源网址", - "Sorry, your browser is <b>not</b> able to run Riot.": "抱歉,您的浏览器 <b>无法</b> 运行 Riot.", - "The Home Server may be too old to support third party networks": "主服务器可能太老旧无法支持第三方网络", - "There are advanced notifications which are not shown here": "更多的通知并没有在此显示出来", - "The server may be unavailable or overloaded": "服务器可能无法使用或超过负载", - "This Room": "此聊天室", - "Unable to fetch notification target list": "无法获取通知目标列表", - "Unable to join network": "无法加入网络", - "Unable to look up room ID from server": "无法在服务器上找到聊天室 ID", - "Unavailable": "无法获得", - "Unhide Preview": "取消隐藏预览", + "Dismiss": "标记为已读", + "powered by Matrix": "由 Matrix 驱动", + "Riot Desktop on %(platformName)s": "在 %(platformName)s 上运行的 Riot 桌面版", + "Riot is not supported on mobile web. Install the app?": "Riot Web 端不支持移动端网页,你想安装 Riot APP 吗?", "Unknown device": "未知设备", - "unknown error code": "未知错误代码", - "Unnamed room": "未命名的聊天室", - "Update": "更新", - "Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上传", - "Uploading report": "上传报告", - "View Decrypted Source": "查看解密的来源", - "View Source": "查看源码", - "What's New": "新鲜事", - "What's new?": "有什么新闻?", - "Waiting for response from server": "正在等待来自服务器的回应", - "When I'm invited to a room": "当我被邀请进入聊天室", - "World readable": "公开可读", - "You cannot delete this image. (%(code)s)": "您不能删除这个图片。(%(code)s)", - "You cannot delete this message. (%(code)s)": "您不能删除此消息。(%(code)s)", - "You are not receiving desktop notifications": "您将不会收到桌面通知", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "您也许不曾在其他 Riot 之外的客户端设置它们。在 Riot 下你无法调整他们但仍然可用", - "Sunday": "星期日", - "Monday": "星期一", - "Tuesday": "星期二", - "Wednesday": "星期三", - "Thursday": "星期四", - "Friday": "星期五", - "Saturday": "星期六", - "Today": "今天", - "Yesterday": "昨天", - "Warning": "警告", - "Checking for an update...": "正在检查更新…", - "Error encountered (%(errorDetail)s).": "遇到错误 (%(errorDetail)s)。", - "No update available.": "没有可用更新。", - "Downloading update...": "正在下载更新…", - "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 来放置屏幕分享通话。", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "您目前的浏览器,应用程序的外观和感觉完全不正确,有些或全部功能可能无法使用。如果您仍想继续尝试,可以继续,但请自行负担其后果!", + "You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。", "Welcome to Riot.im": "欢迎来到 Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化,加密聊天 & 由 [matrix] 提供", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化,加密聊天 & 由 [matrix] 驱动", "Search the room directory": "搜索聊天室目录", "Chat with Riot Bot": "与 Riot 机器人聊天", - "Get started with some tips from Riot Bot!": "使用从 Riot 机器人学来的小窍门开始!", - "General discussion about Matrix and Riot": "关于 Matrix 与 Riot 的一般讨论", + "Get started with some tips from Riot Bot!": "从 Riot 机器人开始,学习使用 Riot 的小窍门吧!", + "General discussion about Matrix and Riot": "关于 Matrix 与 Riot 的综合讨论", "Discussion of all things Matrix!": "讨论所有关于 Matrix 的事情!", "Riot/Web & Desktop chat": "Riot/Web & 桌面聊天", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk 聊天", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk 聊天", + "Riot/iOS & matrix-ios-sdk chat": "关于 Riot/iOS 与 matrix-ios-sdk 的讨论", + "Riot/Android & matrix-android-sdk chat": "关于 Riot/Android 与 matrix-android-sdk 的讨论", "Matrix technical discussions": "Matrix 技术讨论", - "Running Matrix services": "正在运行 Matrix 服务", - "Community-run support for Synapse": "运行 Synapse 的社区支持", - "Admin support for Dendrite": "Dendrite 的管理员支持", - "Announcements about Synapse releases": "Synapse 的发布公告", - "Support for those using and running matrix-appservice-irc": "使用与执行 matrix-appservice-irc 的支持", - "Building services on Matrix": "正在 Matrix 上建立服务", - "Support for those using the Matrix spec": "使用 Matrix 规范的支持", + "Running Matrix services": "正在运行的 Matrix 服务", + "Community-run support for Synapse": "Synapse 支持", + "Admin support for Dendrite": "Dendrite 管理支持", + "Announcements about Synapse releases": "Synapse 发布与公告", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc 使用与运维支持", + "Building services on Matrix": "在 Matrix 上建立的服务", + "Support for those using the Matrix spec": "Matrix 规范使用支持", "Design and implementation of E2E in Matrix": "在 Matrix 中 E2E 的设计与实现", "Implementing VR services with Matrix": "使用 Matrix 实现虚拟现实服务", "Implementing VoIP services with Matrix": "使用 Matrix 实现 VoIP 服务", - "Discussion of the Identity Service API": "识别服务 API 的讨论", - "Support for those using, running and writing other bridges": "那些使用、运行并撰写其他桥接应用的支持", - "Contributing code to Matrix and Riot": "贡献程序代码给 Matrix 与 Riot", - "Dev chat for the Riot/Web dev team": "Riot/Web 开发团队的开发聊天", - "Dev chat for the Dendrite dev team": "Dendrite 的开发团队的开发聊天", - "Co-ordination for Riot/Web translators": "Riot/Web 翻译者的协调区", + "Discussion of the Identity Service API": "关于身份认证服务 API 的讨论", + "Support for those using, running and writing other bridges": "使用、运行、撰写其他桥接服务的支持", + "Contributing code to Matrix and Riot": "为 Matrix 和 Riot 贡献代码", + "Dev chat for the Riot/Web dev team": "Riot/Web 开发团队的开发讨论", + "Dev chat for the Dendrite dev team": "Dendrite 的开发团队的开发讨论", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有许多聊天室,连接到已有的网络(Slack、IRC 与 Gitter 等)或独立的网络,请查看目录!", - "Failed to change password. Is your password correct?": "修改密码失败。确认原密码输入正确吗?", - "You have successfully set a password!": "您已成功设置密码!", - "You can now return to your account after signing out, and sign in on other devices.": "您可以在注销后回到您的账号,并在其他设备上登录。", - "Continue": "继续", - "Please set a password!": "请设置密码!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "这让您可以在注销后回到您的账号,并在其他设备上登录。", - "You have successfully set a password and an email address!": "您已经成功设置了密码和电子邮件地址!", - "Remember, you can always set an email address in user settings if you change your mind.": "请记住,如果您改变想法,您永远可以在用户设置中设置电子邮件。", - "To return to your account in future you need to <u>set a password</u>": "要在未来回到您的账号,您需要 <u>设置密码</u>", - "Set Password": "设置密码", - "Couldn't load home page": "不能加载首页", - "Bug report sent": "发送DEBUG报告", - "Thank you!": "谢谢!", - "Developer Tools": "开发者工具", - "Failed to send custom event.": "发送自定义事件失败。", - "Filter results": "过滤结果", - "Send Custom Event": "发送自定义事件", - "Send Custom State Event": "发送自定义状态事件", - "You must specify an event type!": "你必须制定一个事件类型!", - "Event sent!": "事件已发出!", - "Event Type": "事件类型", - "Event Content": "事件内容", - "State Key": "状态密钥", - "Show message in desktop notification": "在桌面通知中显示信息", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "您可以使用自订的服务器选项,并指定不同的主服务器 URL 来登录其他的 Matrix 服务器。<br/>这让您可以在不同的服务器上以既有的 Matrix 帐号使用 Riot。<br/><br/>您也可以设置一个自订的身份服务器,但您可能无法透过电子邮件地址来邀请用户,或是让别人透过电子邮件邀请您。", - "Toolbox": "工具箱", - "Back": "返回", - "Edit": "编辑", - "Send Account Data": "发送账户数据", - "Explore Account Data": "探索账户数据", - "Explore Room State": "探索聊天室状态", - "Unpin Message": "取消置顶消息", - "Pin Message": "置顶消息", - "Register": "注册", - "Rooms": "聊天室", - "Invite to this community": "邀请加入此社区", - "Add rooms to this community": "添加聊天室到此社区", - "Appear Offline": "似乎离线了", - "Away": "离开", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "请安装 <chromeLink>Chrome</chromeLink> 或 <firefoxLink>Firefox</firefoxLink> 以获得最佳体验。", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> 和 <operaLink>Opera</operaLink> 也能工作。", - "Reply": "回复" + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "你可以修改主服务器 URL 以登录其他的 Matrix 服务器。<br/>这样,你就可以使用你在其他 Matrix 服务器上的账号。<br/><br/>你也可以修改身份认证服务器,但你可能因此无法使用电子邮件地址来邀请其他用户,或者被其他用户通过电子邮件邀请。", + "Co-ordination for Riot translators": "Riot 翻译人员的合作讨论", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "您也可以自定义身份服务器,但是您将不能用电子邮箱地址邀请他人或被邀请。", + "Sign In": "登入", + "Create Account": "创建帐号", + "Need help?": "需要帮助?", + "Explore rooms": "探索房间", + "Room Directory": "房间目录", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "您可以在自定义服务器选项中通过指定其他主服务器的 URL 来登录其他 Matrix 服务器。 这允许您在不同的主服务器上通过已有的 Matrix 帐户来使用 Riot 。" } diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 71812783..62c73516 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1,226 +1,54 @@ { - "Direct Chat": "私人聊天", - "Error": "錯誤", - "Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s", - "Favourite": "我的最愛", - "Search": "搜尋", - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s 透過 %(browserName)s 在 %(osName)s", - "<a href=\"http://apple.com/safari\">Safari</a> and <a href=\"http://opera.com\">Opera</a> work too.": "<a href=\"http://apple.com/safari\">Safari</a> 與 <a href=\"http://opera.com\">Opera</a> 也能使用。", - "Advanced notification settings": "進階通知設定", - "All messages": "所有訊息", - "All messages (noisy)": "所有訊息(吵鬧)", - "All Rooms": "所有的聊天室", - "Call invitation": "通話邀請", - "Cancel": "取消", - "Cancel Sending": "取消傳送", - "Can't update user notification settings": "無法更新使用者的通知設定", - "Changelog": "變更記錄", - "Close": "關閉", - "Collapse panel": "摺疊面板", - "Collecting logs": "收集記錄", - "Couldn't find a matching Matrix room": "不能找到符合 Matrix 的聊天室", + "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 的 %(browserName)s 上的 %(appName)s", "Custom Server Options": "自訂伺服器選項", - "delete the alias.": "刪除別名。", - "Describe your problem here.": "在此描述你的問題。", - "Directory": "目錄", - "Dismiss": "無視", - "Download this file": "下載這個檔案", - "Enable desktop notifications": "啟用桌面通知", - "Enable email notifications": "啟用電子郵件通知", - "Enable notifications for this account": "本帳號啟用通知", - "Enable them now": "現在啟用它們", - "#example": "#範例", - "Expand panel": "展開面板", - "Failed to change settings": "變更設定失敗", - "Failed to update keywords": "無法更新關鍵字", - "Members": "成員", - "Mentions only": "僅提及", - "Messages containing my display name": "訊息中有包含我的顯示名稱", - "Messages containing <span>keywords</span>": "訊息包含 <span>關鍵字</span>", - "Messages containing my user name": "訊息中有我的使用者名稱", - "Messages in group chats": "在群組聊天中的訊息", - "Messages in one-to-one chats": "在一對一聊天中的訊息", - "Messages sent by bot": "由機器人送出的訊息", - "more": "更多", - "Mute": "靜音", - "No rooms to show": "未顯示聊天室", - "Noisy": "吵鬧", - "Notifications": "通知", - "Off": "關閉", - "On": "開啟", - "Operation failed": "操作失敗", - "powered by Matrix": "由 Matrix 架設", - "Quote": "引用", - "Remove": "移除", - "Resend": "重新傳送", - "Room not found": "找不到聊天室", - "Search…": "搜尋…", - "Search for a room": "搜尋聊天室", - "Send": "傳送", - "Send logs": "傳送記錄", - "Source URL": "來源網址", - "This Room": "這個聊天室", - "Unable to join network": "無法加入網路", - "Unable to look up room ID from server": "無法從伺服器找到聊天室 ID", - "Unavailable": "無法取得", - "Unhide Preview": "取消隱藏預覽", + "Dismiss": "關閉", + "powered by Matrix": "由 Matrix 提供", "Unknown device": "未知裝置", - "unknown error code": "未知的錯誤代碼", - "Unnamed room": "未命名的聊天室", - "Update": "更新", - "Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上傳", - "Uploading report": "上傳報告", - "View Decrypted Source": "檢視解密的來源", - "View Source": "檢視來源", - "What's New": "新鮮事", - "What's new?": "有什麼新聞?", - "Waiting for response from server": "正在等待來自伺服器的回應", - "When I'm invited to a room": "當我被邀請加入聊天室", - "You cannot delete this message. (%(code)s)": "你不能刪除這個訊息。(%(code)s)", - "Sunday": "星期日", - "Monday": "星期一", - "Tuesday": "星期二", - "Wednesday": "星期三", - "Thursday": "星期四", - "Friday": "星期五", - "Saturday": "星期六", - "Today": "今天", - "Yesterday": "昨天", - "OK": "確定", - "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來放置螢幕分享的通話。", - "A new version of Riot is available.": "Riot 釋出了新版本。", - "Add an email address above to configure email notifications": "在上面新增電子郵件以設定電子郵件通知", - "All notifications are currently disabled for all targets.": "目前所有的通知功能已停用。", - "An error occurred whilst saving your email notification preferences.": "在儲存你的電子郵件通知偏好時發生錯誤。", - "Collecting app version information": "收集應用程式版本資訊", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "刪除聊天室別名 %(alias)s 並從目錄移除 %(name)s?", - "Enable audible notifications in web client": "在網頁客戶端啟用音訊通知", - "Enter keywords separated by a comma:": "輸入以逗號隔開的關鍵字:", - "Error saving email notification preferences": "儲存電子郵件通知偏好設定時出錯", - "Failed to add tag %(tagName)s to room": "無法為聊天室新增標籤 %(tagName)s", - "Failed to get protocol list from Home Server": "無法從主機伺服器取得協定清單", - "Failed to get public room list": "無法取得公開的聊天室清單", - "Failed to remove tag %(tagName)s from room": "移除聊天室的標籤 %(tagName)s 失敗", - "Failed to send report: ": "無法傳送報告: ", - "Failed to set direct chat tag": "無法設定私人聊天標籤", - "Failed to set Direct Message status of room": "無法設定聊天室的私人訊息狀態", - "Fetching third party location failed": "抓取第三方位置失敗", - "Files": "檔案", - "Filter room names": "過濾聊天室名稱", - "Forget": "忘記", - "Forward Message": "轉寄訊息", - "Guests can join": "訪客可加入", - "Hide panel": "隱藏面板", - "I understand the risks and wish to continue": "我了解這些風險並願意繼續", - "Invite to this room": "邀請加入這個聊天室", - "Keywords": "關鍵字", - "Leave": "離開", - "Loading bug report module": "正在載入程式臭蟲報告模組", - "Low Priority": "低優先度", - "Notify for all other messages/rooms": "通知其他所有的訊息/聊天室", - "Notify me for anything else": "所有消息都通知我", - "Permalink": "永久連結", - "Please install <a href=\"https://www.google.com/chrome\">Chrome</a> or <a href=\"https://getfirefox.com\">Firefox</a> for the best experience.": "諘安裝 <a href=\"https://www.google.com/chrome\">Chrome</a> 或 <a href=\"https://getfirefox.com\">Firefox</a> 來取得最佳體驗。", - "Reject": "拒絕", - "Remove %(name)s from the directory?": "自目錄中移除 %(name)s?", - "remove %(name)s from the directory.": "自目錄中移除 %(name)s。", - "Remove from Directory": "自目錄中移除", - "Report a bug": "回報程式臭蟲", - "Riot Desktop on %(platformName)s": "Riot 桌面版在 %(platformName)s", - "Riot does not know how to join a room on this network": "Riot 不知道如何在此網路中加入聊天室", - "Sorry, your browser is <b>not</b> able to run Riot.": "可惜,您的瀏覽器 <b>無法</b> 執行 Riot.", - "The Home Server may be too old to support third party networks": "主機伺服器可能太老舊無法支援第三方網路", - "The server may be unavailable or overloaded": "伺服器可能無法使用或是超過負載", - "Unable to fetch notification target list": "無法抓取通知的目標清單", - "customServer_text": "你可以使用自訂伺服器選項來登入其它的 Matrix 伺服器,只要在在主機伺服器網址上指定其網址資料。<br/>這可讓你透過已有的 Matrix 帳號在不同的主機伺服器上使用 Riot。<br/><br/>你也可以設定自定的識別伺服器但你將無法透過電子郵件來邀請用戶或是以自己的電子郵件來接受別人的邀請。", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "為了診斷問題,來自客戶端的活動記錄會隨著這個程式臭蟲報告一起送出。如果你只想送出以上文字,請取消勾選:", - "Notification targets": "通知目標", - "Notifications on the following keywords follow rules which can’t be displayed here:": "以下關鍵字依照規則其通知將不會顯示在此:", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "請描述這個程式臭蟲,您做了什麼動作?您預期會發生什麼狀況?以及實際發生的狀況為何?", - "Please describe the bug and/or send logs.": "請描述這個程式臭蟲以及/或送出活動記錄。", + "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來撥打螢幕分享的通話。", + "Riot Desktop on %(platformName)s": "%(platformName)s 的 Riot 桌面版", "Riot is not supported on mobile web. Install the app?": "Riot 不支援行動版網頁,要安裝應用程式嗎?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Roit 使用了許多先進的瀏覽器功能,有些在你目前所用的瀏覽器上無法使用或僅為實驗中的功能。", - "There are advanced notifications which are not shown here": "有些進階的通知並未在此顯示", - "World readable": "所有人可讀", - "You cannot delete this image. (%(code)s)": "你不能刪除這個圖片。(%(code)s)", - "You are not receiving desktop notifications": "你將不會收到桌面通知", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "你也許不曾在其它 Riot 之外的客戶端設定它們。在 Riot 底下你無法調整它們但其仍然可用", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "您目前的瀏覽器,其應用程式的外觀和感覺可能完全不正確,有些或全部功能可以無法使用。如果您仍想要繼續嘗試,可以繼續,但必須自行承擔後果!", - "(HTTP status %(httpStatus)s)": "(HTTP 狀態 %(httpStatus)s)", - "Login": "登入", - "Warning": "警告", - "Checking for an update...": "正在檢查更新...", - "Error encountered (%(errorDetail)s).": "遇到錯誤 (%(errorDetail)s)。", - "No update available.": "沒有可用的更新。", - "Downloading update...": "正在下䵧更新...", "Welcome to Riot.im": "歡迎來到 Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、加密聊天 & 由 [matrix] 提供協作", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、保密的聊天與協作,由 [matrix] 提供", "Search the room directory": "搜尋聊天室目錄", "Chat with Riot Bot": "與 Riot 機器人聊天", - "Get started with some tips from Riot Bot!": "使用從 Riot 機器人來的一些訣竅開始!", - "General discussion about Matrix and Riot": "關於 Matrix 與 Riot 的一般討論", - "Discussion of all things Matrix!": "討論所有關於 Matrix 的事情!", - "Riot/Web & Desktop chat": "Riot/網路 & 桌面聊天", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk 聊天", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk 聊天", + "Get started with some tips from Riot Bot!": "從 Riot 機器人了解使用 Riot 的訣竅吧!", + "General discussion about Matrix and Riot": "Matrix 與 Riot 的一般討論", + "Discussion of all things Matrix!": "所有 Matrix 相關的一般討論", + "Riot/Web & Desktop chat": "Riot/Web 與桌面版的討論", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS 與 matrix-ios-sdk 的討論", + "Riot/Android & matrix-android-sdk chat": "Riot/Android 與 matrix-android-sdk 的討論", "Matrix technical discussions": "Matrix 技術討論", - "Running Matrix services": "正在執行 Matrix 服務", - "Community-run support for Synapse": "Synapse 的社群支援", - "Admin support for Dendrite": "Dendrite 的管理員支援", - "Announcements about Synapse releases": "關於 Synapse 釋出的公告", - "Support for those using and running matrix-appservice-irc": "使用與執行 matrix-appservice-irc 的支援", - "Building services on Matrix": "正在 Matrix 上建立服務", - "Support for those using the Matrix spec": "那些使用 Matrix 規範的支援", - "Design and implementation of E2E in Matrix": "在 Matrix 中 E2E 的設計與實作", - "Implementing VR services with Matrix": "使用 Matrix 實作虛擬實境服務", - "Implementing VoIP services with Matrix": "使用 Matrix 實作 VoIP 服務", + "Running Matrix services": "關於 Matrix 服務營運", + "Community-run support for Synapse": "Synapse 社群支援聊天室", + "Admin support for Dendrite": "Dendrite 管理員支援聊天室", + "Announcements about Synapse releases": "Synapse 發行公告", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc 使用者與營運的支援", + "Building services on Matrix": "關於在 Matrix 上開發服務", + "Support for those using the Matrix spec": "Matrix 規格使用者支援聊天室", + "Design and implementation of E2E in Matrix": "Matrix 中點對點加密的設計與實作討論", + "Implementing VR services with Matrix": "使用 Matrix 實作虛擬實境服務的討論", + "Implementing VoIP services with Matrix": "使用 Matrix 實作 VoIP 服務的討論", "Discussion of the Identity Service API": "識別服務 API 的討論", - "Support for those using, running and writing other bridges": "那些使用、執行與撰寫其他橋接的支援", - "Contributing code to Matrix and Riot": "為 Matrix 和 Riot 做出貢獻", - "Dev chat for the Riot/Web dev team": "Riot/Web 開發團隊的開發聊天", - "Dev chat for the Dendrite dev team": "Dendrite 開發團隊的開發聊天", - "Co-ordination for Riot/Web translators": "Riot/Web 翻譯者的協調區", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有許多聊天室,連結到已有的網路(Slack、IRC 與 Gitter 等等)或是獨立的網路。看看目錄!", - "Failed to change password. Is your password correct?": "變更密碼失敗。您的密碼正確嗎?", - "You have successfully set a password!": "您已經成功設定密碼!", - "You can now return to your account after signing out, and sign in on other devices.": "您可以在登出後回到您的帳號,並在其他裝置上登入。", - "Continue": "繼續", - "Please set a password!": "請設定密碼!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "這讓您可以在登入後回到您帳號,並在其他裝置上登入。", - "You have successfully set a password and an email address!": "您已經成功設定密碼與電子郵件地址!", - "Remember, you can always set an email address in user settings if you change your mind.": "記住,如果您改變心意了,您永遠可以在使用者設定中設定電子郵件地址。", - "To return to your account in future you need to <u>set a password</u>": "要在未來回到您的帳號,您需要 <u>設定密碼</u>", - "Set Password": "設定密碼", - "Couldn't load home page": "無法載入首頁", - "Bug report sent": "已傳送臭蟲回報", - "Thank you!": "感謝您!", - "Back": "返回", - "Developer Tools": "開發者工具", - "Failed to send custom event.": "傳送自訂式件失敗。", - "Send Custom Event": "傳送自訂事件", - "Send Custom State Event": "傳送自訂狀態事件", - "Explore Room State": "探索聊天室狀態", - "Event sent!": "事件已傳送!", - "Event Type": "事件類型", - "Event Content": "事件內容", - "State Key": "狀態金鑰", - "Filter results": "過濾結果", - "You must specify an event type!": "您必須指定事件類型!", - "Show message in desktop notification": "在桌面通知中顯示訊息", - "Pin Message": "釘選訊息", - "Unpin Message": "取消釘選訊息", + "Support for those using, running and writing other bridges": "使用、執行與撰寫其他橋接服務的支援聊天室", + "Contributing code to Matrix and Riot": "關於貢獻 Matrix 和 Riot", + "Dev chat for the Riot/Web dev team": "Riot/Web 開發團隊的開發聊天室", + "Dev chat for the Dendrite dev team": "Dendrite 開發團隊的開發聊天室", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有許多聊天室,連結到已有的網路(Slack、IRC 與 Gitter 等等)或是獨立的網路。來看看聊天室目錄吧!", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "您可以使用自訂的伺服器選項,並指定不同的家伺服器 URL 來登入其他的 Matrix 伺服器。<br/>這讓您可以在不同的伺服器上以既有的 Matrix 帳號使用 Riot。<br/><br/>您也可以設定一個自訂的識別伺服器,但您可能無法透過電子郵件地址來邀請使用者,或是讓別人透過電子郵件邀請您。", - "Edit": "編輯", - "Register": "註冊", - "Rooms": "聊天室", - "Invite to this community": "邀請至此社群", - "Add rooms to this community": "新增聊天室到此社群", - "Toolbox": "工具箱", - "Send Account Data": "傳送帳號資料", - "Explore Account Data": "探索帳號資料", - "Appear Offline": "顯示為離線", - "Away": "離開", - "Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.": "請安裝 <chromeLink>Chrome</chromeLink> 或 <firefoxLink>Firefox</firefoxLink> 以取得最佳體驗。", - "<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.": "<safariLink>Safari</safariLink> 與 <operaLink>Opera</operaLink> 也可以運作。", - "Reply": "回覆" + "Co-ordination for Riot translators": "Riot 翻譯的協作", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "您可以以使用自訂伺服器選項指定不同的家伺服器 URL 以登入其他 Matrix 伺服器。這讓您可以在不同的家伺服器上使用既有的 Matrix 帳號登入 Riot。", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "您也可以設定自訂的身份識別伺服器,但您無法透過電子郵件地址邀請使用者,或是被邀請。", + "Sign In": "登入", + "Create Account": "建立帳號", + "Need help?": "需要協助?", + "Explore rooms": "探索聊天室", + "Room Directory": "聊天室目錄", + "Unexpected error preparing the app. See console for details.": "準備應用程式時發生未預期的錯誤。請見主控台以取得更多資訊。", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "無效的設定:只能指定 default_server_config、default_server_name 或 default_hs_url 其中之一。", + "Invalid configuration: no default server specified.": "無效設定:未指定預設的伺服器。", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "這個 Riot 安裝似乎有無效的伺服器設定。如果您是管理員,請在下方更正錯誤", + "Your Riot is misconfigured": "您的 Riot 沒有設定好", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "您的 Riot 包含無效的 JSON。請修正問題並重新整理頁面。", + "The message from the parser is: %(message)s": "從解析器而來的訊息為:%(message)s", + "Invalid JSON": "無效的 JSON" } diff --git a/src/notifications/ContentRules.js b/src/notifications/ContentRules.js deleted file mode 100644 index 25a7bac9..00000000 --- a/src/notifications/ContentRules.js +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var PushRuleVectorState = require('./PushRuleVectorState'); - -module.exports = { - /** - * Extract the keyword rules from a list of rules, and parse them - * into a form which is useful for Vector's UI. - * - * Returns an object containing: - * rules: the primary list of keyword rules - * vectorState: a PushRuleVectorState indicating whether those rules are - * OFF/ON/LOUD - * externalRules: a list of other keyword rules, with states other than - * vectorState - */ - parseContentRules: function(rulesets) { - // first categorise the keyword rules in terms of their actions - var contentRules = this._categoriseContentRules(rulesets); - - // Decide which content rules to display in Vector UI. - // Vector displays a single global rule for a list of keywords - // whereas Matrix has a push rule per keyword. - // Vector can set the unique rule in ON, LOUD or OFF state. - // Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks. - - // The code below determines which set of user's content push rules can be - // displayed by the vector UI. - // Push rules that does not fit, ie defined by another Matrix client, ends - // in externalRules. - // There is priority in the determination of which set will be the displayed one. - // The set with rules that have LOUD tweaks is the first choice. Then, the ones - // with ON tweaks (no tweaks). - - if (contentRules.loud.length) { - return { - vectorState: PushRuleVectorState.LOUD, - rules: contentRules.loud, - externalRules: [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other), - }; - } - else if (contentRules.loud_but_disabled.length) { - return { - vectorState: PushRuleVectorState.OFF, - rules: contentRules.loud_but_disabled, - externalRules: [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other), - }; - } - else if (contentRules.on.length) { - return { - vectorState: PushRuleVectorState.ON, - rules: contentRules.on, - externalRules: [].concat(contentRules.on_but_disabled, contentRules.other), - }; - } - else if (contentRules.on_but_disabled.length) { - return { - vectorState: PushRuleVectorState.OFF, - rules: contentRules.on_but_disabled, - externalRules: contentRules.other, - } - } else { - return { - vectorState: PushRuleVectorState.ON, - rules: [], - externalRules: contentRules.other, - } - } - }, - - _categoriseContentRules: function(rulesets) { - var contentRules = {on: [], on_but_disabled:[], loud: [], loud_but_disabled: [], other: []}; - for (var kind in rulesets.global) { - for (var i = 0; i < Object.keys(rulesets.global[kind]).length; ++i) { - var r = rulesets.global[kind][i]; - - // check it's not a default rule - if (r.rule_id[0] === '.' || kind !== 'content') { - continue; - } - - r.kind = kind; // is this needed? not sure - - switch (PushRuleVectorState.contentRuleVectorStateKind(r)) { - case PushRuleVectorState.ON: - if (r.enabled) { - contentRules.on.push(r); - } - else { - contentRules.on_but_disabled.push(r); - } - break; - case PushRuleVectorState.LOUD: - if (r.enabled) { - contentRules.loud.push(r); - } - else { - contentRules.loud_but_disabled.push(r); - } - break; - default: - contentRules.other.push(r); - break; - } - } - } - return contentRules; - }, -}; diff --git a/src/notifications/NotificationUtils.js b/src/notifications/NotificationUtils.js deleted file mode 100644 index c8aeb468..00000000 --- a/src/notifications/NotificationUtils.js +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -module.exports = { - // Encodes a dictionary of { - // "notify": true/false, - // "sound": string or undefined, - // "highlight: true/false, - // } - // to a list of push actions. - encodeActions: function(action) { - var notify = action.notify; - var sound = action.sound; - var highlight = action.highlight; - if (notify) { - var actions = ["notify"]; - if (sound) { - actions.push({"set_tweak": "sound", "value": sound}); - } - if (highlight) { - actions.push({"set_tweak": "highlight"}); - } else { - actions.push({"set_tweak": "highlight", "value": false}); - } - return actions; - } else { - return ["dont_notify"]; - } - }, - - // Decode a list of actions to a dictionary of { - // "notify": true/false, - // "sound": string or undefined, - // "highlight: true/false, - // } - // If the actions couldn't be decoded then returns null. - decodeActions: function(actions) { - var notify = false; - var sound = null; - var highlight = false; - - for (var i = 0; i < actions.length; ++i) { - var action = actions[i]; - if (action === "notify") { - notify = true; - } else if (action === "dont_notify") { - notify = false; - } else if (typeof action === 'object') { - if (action.set_tweak === "sound") { - sound = action.value - } else if (action.set_tweak === "highlight") { - highlight = action.value; - } else { - // We don't understand this kind of tweak, so give up. - return null; - } - } else { - // We don't understand this kind of action, so give up. - return null; - } - } - - if (highlight === undefined) { - // If a highlight tweak is missing a value then it defaults to true. - highlight = true; - } - - var result = {notify: notify, highlight: highlight}; - if (sound !== null) { - result.sound = sound; - } - return result; - }, -}; diff --git a/src/notifications/PushRuleVectorState.js b/src/notifications/PushRuleVectorState.js deleted file mode 100644 index c838aa20..00000000 --- a/src/notifications/PushRuleVectorState.js +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var StandardActions = require('./StandardActions'); -var NotificationUtils = require('./NotificationUtils'); - -var states = { - /** The push rule is disabled */ - OFF: "off", - - /** The user will receive push notification for this rule */ - ON: "on", - - /** The user will receive push notification for this rule with sound and - highlight if this is legitimate */ - LOUD: "loud", -}; - - -module.exports = { - /** - * Enum for state of a push rule as defined by the Vector UI. - * @readonly - * @enum {string} - */ - states: states, - - /** - * Convert a PushRuleVectorState to a list of actions - * - * @return [object] list of push-rule actions - */ - actionsFor: function(pushRuleVectorState) { - if (pushRuleVectorState === this.ON) { - return StandardActions.ACTION_NOTIFY; - } - else if (pushRuleVectorState === this.LOUD) { - return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND; - } - }, - - /** - * Convert a pushrule's actions to a PushRuleVectorState. - * - * Determines whether a content rule is in the PushRuleVectorState.ON - * category or in PushRuleVectorState.LOUD, regardless of its enabled - * state. Returns null if it does not match these categories. - */ - contentRuleVectorStateKind: function(rule) { - var decoded = NotificationUtils.decodeActions(rule.actions); - - if (!decoded) { - return null; - } - - // Count tweaks to determine if it is a ON or LOUD rule - var tweaks = 0; - if (decoded.sound) { - tweaks++; - } - if (decoded.highlight) { - tweaks++; - } - var stateKind = null; - switch (tweaks) { - case 0: - stateKind = this.ON; - break; - case 2: - stateKind = this.LOUD; - break; - } - return stateKind; - }, -}; - -for (var k in states) { - module.exports[k] = states[k]; -}; diff --git a/src/notifications/StandardActions.js b/src/notifications/StandardActions.js deleted file mode 100644 index 22a8f1db..00000000 --- a/src/notifications/StandardActions.js +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -var NotificationUtils = require('./NotificationUtils'); - -var encodeActions = NotificationUtils.encodeActions; - -module.exports = { - ACTION_NOTIFY: encodeActions({notify: true}), - ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({notify: true, sound: "default"}), - ACTION_NOTIFY_RING_SOUND: encodeActions({notify: true, sound: "ring"}), - ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({notify: true, sound: "default", highlight: true}), - ACTION_DONT_NOTIFY: encodeActions({notify: false}), - ACTION_DISABLED: null, -}; diff --git a/src/notifications/VectorPushRulesDefinitions.js b/src/notifications/VectorPushRulesDefinitions.js deleted file mode 100644 index 6f721642..00000000 --- a/src/notifications/VectorPushRulesDefinitions.js +++ /dev/null @@ -1,146 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -import { _td } from 'matrix-react-sdk/lib/languageHandler'; - -var StandardActions = require('./StandardActions'); -var PushRuleVectorState = require('./PushRuleVectorState'); - -class VectorPushRuleDefinition { - constructor(opts) { - this.kind = opts.kind; - this.description = opts.description; - this.vectorStateToActions = opts.vectorStateToActions; - } - - // Translate the rule actions and its enabled value into vector state - ruleToVectorState(rule) { - var enabled = false; - var actions = null; - if (rule) { - enabled = rule.enabled; - actions = rule.actions; - } - - for (var stateKey in PushRuleVectorState.states) { - var state = PushRuleVectorState.states[stateKey]; - var vectorStateToActions = this.vectorStateToActions[state]; - - if (!vectorStateToActions) { - // No defined actions means that this vector state expects a disabled (or absent) rule - if (!enabled) { - return state; - } - } else { - // The actions must match to the ones expected by vector state - if (enabled && JSON.stringify(rule.actions) === JSON.stringify(vectorStateToActions)) { - return state; - } - } - } - - console.error("Cannot translate rule actions into Vector rule state. Rule: " + - JSON.stringify(rule)); - return undefined; - } -}; - -/** - * The descriptions of rules managed by the Vector UI. - */ -module.exports = { - // Messages containing user's display name - ".m.rule.contains_display_name": new VectorPushRuleDefinition({ - kind: "override", - description: _td("Messages containing my display name"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { // The actions for each vector state, or null to disable the rule. - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND, - off: StandardActions.ACTION_DISABLED - } - }), - - // Messages containing user's username (localpart/MXID) - ".m.rule.contains_user_name": new VectorPushRuleDefinition({ - kind: "override", - description: _td("Messages containing my user name"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { // The actions for each vector state, or null to disable the rule. - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND, - off: StandardActions.ACTION_DISABLED - } - }), - - // Messages just sent to the user in a 1:1 room - ".m.rule.room_one_to_one": new VectorPushRuleDefinition({ - kind: "underride", - description: _td("Messages in one-to-one chats"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND, - off: StandardActions.ACTION_DONT_NOTIFY - } - }), - - // Messages just sent to a group chat room - // 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined - // By opposition, all other room messages are from group chat rooms. - ".m.rule.message": new VectorPushRuleDefinition({ - kind: "underride", - description: _td("Messages in group chats"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND, - off: StandardActions.ACTION_DONT_NOTIFY - } - }), - - // Invitation for the user - ".m.rule.invite_for_me": new VectorPushRuleDefinition({ - kind: "underride", - description: _td("When I'm invited to a room"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND, - off: StandardActions.ACTION_DISABLED - } - }), - - // Incoming call - ".m.rule.call": new VectorPushRuleDefinition({ - kind: "underride", - description: _td("Call invitation"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { - on: StandardActions.ACTION_NOTIFY, - loud: StandardActions.ACTION_NOTIFY_RING_SOUND, - off: StandardActions.ACTION_DISABLED - } - }), - - // Notifications from bots - ".m.rule.suppress_notices": new VectorPushRuleDefinition({ - kind: "override", - description: _td("Messages sent by bot"), // passed through _t() translation in src/components/views/settings/Notifications.js - vectorStateToActions: { - // .m.rule.suppress_notices is a "negative" rule, we have to invert its enabled value for vector UI - on: StandardActions.ACTION_DISABLED, - loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND, - off: StandardActions.ACTION_DONT_NOTIFY, - } - }), -}; diff --git a/src/notifications/index.js b/src/notifications/index.js deleted file mode 100644 index 8ed77e9d..00000000 --- a/src/notifications/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -'use strict'; - -module.exports = { - NotificationUtils: require('./NotificationUtils'), - PushRuleVectorState: require('./PushRuleVectorState'), - VectorPushRulesDefinitions: require('./VectorPushRulesDefinitions'), - ContentRules: require('./ContentRules'), -}; diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss deleted file mode 100644 index e81c2284..00000000 --- a/src/skins/vector/css/_common.scss +++ /dev/null @@ -1,361 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -html { - /* hack to stop overscroll bounce on OSX and iOS. - N.B. Breaks things when we have legitimate horizontal overscroll */ - height: 100%; - overflow: hidden; -} - -body { - font-family: $font-family; - font-size: 15px; - background-color: $primary-bg-color; - color: $primary-fg-color; - border: 0px; - margin: 0px; - /* This should render the fonts the same accross browsers */ - -webkit-font-smoothing: subpixel-antialiased; -} - -div.error, div.warning { - color: $warning-color; -} - -h2 { - color: $primary-fg-color; - font-weight: 400; - font-size: 18px; - margin-top: 16px; - margin-bottom: 16px; -} - -a:hover, -a:link, -a:visited { - color: $accent-color; -} - -input[type=text], input[type=password], textarea { - background-color: transparent; - color: $primary-fg-color; -} - -input[type=text].error, input[type=password].error { - border: 1px solid $warning-color; -} - -input[type=text]:focus, input[type=password]:focus, textarea:focus { - border: 1px solid $accent-color; - outline: none; - box-shadow: none; -} - -/* Required by Firefox */ -textarea { - font-family: $font-family; -} - -/* Prevent ugly dotted highlight around selected elements in Firefox */ -::-moz-focus-inner { - border: 0; -} - -/* applied to side-panels and messagepanel when in RoomSettings */ -.mx_fadable { - opacity: 1; - transition: opacity 0.2s ease-in-out; -} - -.mx_fadable.mx_fadable_faded { - opacity: 0.3; - pointer-events: none; -} - -/* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. - Stop the scrollbar view from pushing out the container's overall sizing, which causes - flexbox to adapt to the new size and cause the view to keep growing. - */ -.gm-scrollbar-container .gm-scroll-view { - position: absolute; -} - -/* Expand thumbs on hoverover */ -.gm-scrollbar { - border-radius: 5px ! important; -} -.gm-scrollbar.-vertical { - width: 6px; - transition: width 120ms ease-out ! important; -} -.gm-scrollbar.-vertical:hover, -.gm-scrollbar.-vertical:active { - width: 8px; - transition: width 120ms ease-out ! important; -} -.gm-scrollbar.-horizontal { - height: 6px; - transition: height 120ms ease-out ! important; -} -.gm-scrollbar.-horizontal:hover, -.gm-scrollbar.-horizontal:active { - height: 8px; - transition: height 120ms ease-out ! important; -} - -// These are magic constants which are excluded from tinting, to let themes -// (which only have CSS, unlike skins) tell the app what their non-tinted -// colourscheme is by inspecting the stylesheet DOM. -// -// They are not used for layout!! -#mx_theme_accentColor { - color: $accent-color; -} - -#mx_theme_secondaryAccentColor { - color: $secondary-accent-color; -} - -#mx_theme_tertiaryAccentColor { - color: $roomsublist-label-bg-color; -} - -.mx_Dialog_wrapper { - position: fixed; - z-index: 4000; - top: 0; - left: 0; - width: 100%; - height: 100%; - - display: flex; - align-items: center; - justify-content: center; -} - -/* Spinner Dialog overide */ -.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { - width: auto; - border-radius: 8px; - padding: 0px; - box-shadow: none; -} - -/* View Source Dialog overide */ -.mx_Dialog_wrapper.mx_Dialog_viewsource .mx_Dialog { - padding-left: 10px; - padding-right: 10px; -} - -.mx_Dialog { - background-color: $primary-bg-color; - color: $light-fg-color; - z-index: 4010; - font-weight: 300; - font-size: 15px; - position: relative; - padding-left: 58px; - padding-bottom: 36px; - width: 60%; - max-width: 704px; - box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); - max-height: 80%; - overflow-y: auto; -} - -.mx_Dialog_background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: $dialog-background-bg-color; - opacity: 0.8; -} - -.mx_Dialog_lightbox .mx_Dialog_background { - opacity: 0.85; - background-color: $lightbox-background-bg-color; -} - -.mx_Dialog_lightbox .mx_Dialog { - border-radius: 0px; - background-color: transparent; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; - pointer-events: none; -} - -.mx_Dialog_cancelButton { - position: absolute; - right: 11px; - top: 13px; - cursor: pointer; -} - -.mx_Dialog_cancelButton object { - pointer-events: none; -} - -.mx_Dialog_content { - margin: 24px 58px 68px 0; - font-size: 14px; - color: $primary-fg-color; - word-wrap: break-word; -} - -.mx_Dialog button, .mx_Dialog input[type="submit"] { - @mixin mx_DialogButton; - margin-left: 0px; - margin-right: 8px; - - // flip colours for the secondary ones - font-weight: 600; - border: 1px solid $accent-color ! important; - color: $accent-color; - background-color: $accent-fg-color; -} - -.mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { - @mixin mx_DialogButton_hover; -} - -.mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { - filter: brightness($focus-brightness); -} - -.mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { - color: $accent-fg-color; - background-color: $accent-color; -} - -.mx_Dialog button.danger, .mx_Dialog input[type="submit"].danger { - background-color: $warning-color; - border: solid 1px $warning-color; -} - -.mx_Dialog button:disabled, .mx_Dialog input[type="submit"]:disabled { - background-color: $light-fg-color; - border: solid 1px $light-fg-color; - opacity: 0.7; -} - -.mx_Dialog_title { - min-height: 16px; - padding-top: 40px; - font-weight: bold; - font-size: 22px; - line-height: 1.4; - color: $primary-fg-color; -} - -.mx_Dialog_title.danger { - color: $warning-color; -} - -.mx_TextInputDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_TextInputDialog_input { - font-size: 15px; - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; -} - -.mx_emojione { - height: 1em; - vertical-align: middle; -} - -::-moz-selection { - background-color: $accent-color; - color: $selection-fg-color; -} - -::selection { - background-color: $accent-color; - color: $selection-fg-color; -} - -.mx_textButton { - @mixin mx_DialogButton_small; -} - -.mx_textButton:hover { - @mixin mx_DialogButton_hover; -} - -.mx_button_row { - margin-top: 69px; -} - -.mx_Beta { - color: red; - margin-right: 10px; - position: relative; - top: -3px; - background-color: white; - padding: 0 4px; - border-radius: 3px; - border: 1px solid darkred; - cursor: help; - transition-duration: 200ms; - font-size: smaller; - filter: opacity(0.5); -} - -.mx_Beta:hover { - color: white; - border: 1px solid gray; - background-color: darkred; -} - -.mx_TintableSvgButton { - position: relative; - display: flex; - flex-direction: row; - justify-content: center; - align-content: center; -} - -.mx_TintableSvgButton object { - margin: 0; - padding: 0; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; -} - -.mx_TintableSvgButton span { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 0; - cursor: pointer; -} diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss deleted file mode 100644 index 837fe453..00000000 --- a/src/skins/vector/css/_components.scss +++ /dev/null @@ -1,109 +0,0 @@ -// autogenerated by rethemendex.sh -@import "./_common.scss"; -@import "./matrix-react-sdk/structures/_ContextualMenu.scss"; -@import "./matrix-react-sdk/structures/_CreateRoom.scss"; -@import "./matrix-react-sdk/structures/_FilePanel.scss"; -@import "./matrix-react-sdk/structures/_GroupView.scss"; -@import "./matrix-react-sdk/structures/_LoginBox.scss"; -@import "./matrix-react-sdk/structures/_MatrixChat.scss"; -@import "./matrix-react-sdk/structures/_MyGroups.scss"; -@import "./matrix-react-sdk/structures/_NotificationPanel.scss"; -@import "./matrix-react-sdk/structures/_RoomStatusBar.scss"; -@import "./matrix-react-sdk/structures/_RoomView.scss"; -@import "./matrix-react-sdk/structures/_SearchBox.scss"; -@import "./matrix-react-sdk/structures/_TagPanel.scss"; -@import "./matrix-react-sdk/structures/_UploadBar.scss"; -@import "./matrix-react-sdk/structures/_UserSettings.scss"; -@import "./matrix-react-sdk/structures/login/_Login.scss"; -@import "./matrix-react-sdk/views/avatars/_BaseAvatar.scss"; -@import "./matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss"; -@import "./matrix-react-sdk/views/dialogs/_BugReportDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_CreateGroupDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_CreateRoomDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_GroupAddressPicker.scss"; -@import "./matrix-react-sdk/views/dialogs/_QuestionDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss"; -@import "./matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss"; -@import "./matrix-react-sdk/views/elements/_AccessibleButton.scss"; -@import "./matrix-react-sdk/views/elements/_AddressSelector.scss"; -@import "./matrix-react-sdk/views/elements/_AddressTile.scss"; -@import "./matrix-react-sdk/views/elements/_DirectorySearchBox.scss"; -@import "./matrix-react-sdk/views/elements/_Dropdown.scss"; -@import "./matrix-react-sdk/views/elements/_EditableItemList.scss"; -@import "./matrix-react-sdk/views/elements/_MemberEventListSummary.scss"; -@import "./matrix-react-sdk/views/elements/_ProgressBar.scss"; -@import "./matrix-react-sdk/views/elements/_Quote.scss"; -@import "./matrix-react-sdk/views/elements/_RichText.scss"; -@import "./matrix-react-sdk/views/elements/_RoleButton.scss"; -@import "./matrix-react-sdk/views/elements/_ToolTipButton.scss"; -@import "./matrix-react-sdk/views/groups/_GroupPublicityToggle.scss"; -@import "./matrix-react-sdk/views/groups/_GroupRoomList.scss"; -@import "./matrix-react-sdk/views/groups/_GroupUserSettings.scss"; -@import "./matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss"; -@import "./matrix-react-sdk/views/login/_ServerConfig.scss"; -@import "./matrix-react-sdk/views/messages/_MEmoteBody.scss"; -@import "./matrix-react-sdk/views/messages/_MFileBody.scss"; -@import "./matrix-react-sdk/views/messages/_MImageBody.scss"; -@import "./matrix-react-sdk/views/messages/_MNoticeBody.scss"; -@import "./matrix-react-sdk/views/messages/_MTextBody.scss"; -@import "./matrix-react-sdk/views/messages/_RoomAvatarEvent.scss"; -@import "./matrix-react-sdk/views/messages/_TextualEvent.scss"; -@import "./matrix-react-sdk/views/messages/_UnknownBody.scss"; -@import "./matrix-react-sdk/views/rooms/_AppsDrawer.scss"; -@import "./matrix-react-sdk/views/rooms/_Autocomplete.scss"; -@import "./matrix-react-sdk/views/rooms/_EntityTile.scss"; -@import "./matrix-react-sdk/views/rooms/_EventTile.scss"; -@import "./matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss"; -@import "./matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss"; -@import "./matrix-react-sdk/views/rooms/_MemberInfo.scss"; -@import "./matrix-react-sdk/views/rooms/_MemberList.scss"; -@import "./matrix-react-sdk/views/rooms/_MessageComposer.scss"; -@import "./matrix-react-sdk/views/rooms/_PinnedEventTile.scss"; -@import "./matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss"; -@import "./matrix-react-sdk/views/rooms/_PresenceLabel.scss"; -@import "./matrix-react-sdk/views/rooms/_QuotePreview.scss"; -@import "./matrix-react-sdk/views/rooms/_RoomHeader.scss"; -@import "./matrix-react-sdk/views/rooms/_RoomList.scss"; -@import "./matrix-react-sdk/views/rooms/_RoomPreviewBar.scss"; -@import "./matrix-react-sdk/views/rooms/_RoomSettings.scss"; -@import "./matrix-react-sdk/views/rooms/_RoomTile.scss"; -@import "./matrix-react-sdk/views/rooms/_SearchableEntityList.scss"; -@import "./matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss"; -@import "./matrix-react-sdk/views/settings/_DevicesPanel.scss"; -@import "./matrix-react-sdk/views/settings/_IntegrationsManager.scss"; -@import "./matrix-react-sdk/views/voip/_CallView.scss"; -@import "./matrix-react-sdk/views/voip/_IncomingCallbox.scss"; -@import "./matrix-react-sdk/views/voip/_VideoView.scss"; -@import "./vector-web/_fonts.scss"; -@import "./vector-web/structures/_CompatibilityPage.scss"; -@import "./vector-web/structures/_HomePage.scss"; -@import "./vector-web/structures/_LeftPanel.scss"; -@import "./vector-web/structures/_RightPanel.scss"; -@import "./vector-web/structures/_RoomDirectory.scss"; -@import "./vector-web/structures/_RoomSubList.scss"; -@import "./vector-web/structures/_ViewSource.scss"; -@import "./vector-web/views/context_menus/_MessageContextMenu.scss"; -@import "./vector-web/views/context_menus/_PresenceContextMenuOption.scss"; -@import "./vector-web/views/context_menus/_RoomTileContextMenu.scss"; -@import "./vector-web/views/context_menus/_TagTileContextMenu.scss"; -@import "./vector-web/views/dialogs/_ChangelogDialog.scss"; -@import "./vector-web/views/dialogs/_DevtoolsDialog.scss"; -@import "./vector-web/views/dialogs/_SetEmailDialog.scss"; -@import "./vector-web/views/dialogs/_SetPasswordDialog.scss"; -@import "./vector-web/views/directory/_NetworkDropdown.scss"; -@import "./vector-web/views/elements/_ImageView.scss"; -@import "./vector-web/views/elements/_InlineSpinner.scss"; -@import "./vector-web/views/elements/_Spinner.scss"; -@import "./vector-web/views/elements/_SyntaxHighlight.scss"; -@import "./vector-web/views/globals/_MatrixToolbar.scss"; -@import "./vector-web/views/messages/_DateSeparator.scss"; -@import "./vector-web/views/messages/_MessageTimestamp.scss"; -@import "./vector-web/views/messages/_SenderProfile.scss"; -@import "./vector-web/views/rooms/_RoomDropTarget.scss"; -@import "./vector-web/views/rooms/_RoomTooltip.scss"; -@import "./vector-web/views/rooms/_SearchBar.scss"; -@import "./vector-web/views/settings/_Notifications.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss deleted file mode 100644 index a0191b92..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss +++ /dev/null @@ -1,160 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ContextualMenu_wrapper { - position: fixed; - z-index: 2000; -} - -.mx_ContextualMenu_background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 1.0; - z-index: 2000; -} - -.mx_ContextualMenu { - border: solid 1px $menu-border-color; - border-radius: 4px; - background-color: $menu-bg-color; - color: $primary-fg-color; - position: absolute; - padding: 6px; - font-size: 14px; - z-index: 2001; -} - -.mx_ContextualMenu.mx_ContextualMenu_right { - right: 8px; -} - -.mx_ContextualMenu_chevron_right { - position: absolute; - right: -8px; - top: 0px; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-left: 8px solid $menu-border-color; - border-bottom: 8px solid transparent; -} - -.mx_ContextualMenu_chevron_right:after { - content:''; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-left: 7px solid $menu-bg-color; - border-bottom: 7px solid transparent; - position:absolute; - top: -7px; - right: 1px; -} - -.mx_ContextualMenu.mx_ContextualMenu_left { - left: 8px; -} - -.mx_ContextualMenu_chevron_left { - position: absolute; - left: -8px; - top: 0px; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-right: 8px solid $menu-border-color; - border-bottom: 8px solid transparent; -} - -.mx_ContextualMenu_chevron_left:after{ - content:''; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-right: 7px solid $menu-bg-color; - border-bottom: 7px solid transparent; - position:absolute; - top: -7px; - left: 1px; -} - -.mx_ContextualMenu.mx_ContextualMenu_top { - top: 8px; -} - -.mx_ContextualMenu_chevron_top { - position: absolute; - left: 0px; - top: -8px; - width: 0; - height: 0; - border-left: 8px solid transparent; - border-bottom: 8px solid $menu-border-color; - border-right: 8px solid transparent; -} - -.mx_ContextualMenu_chevron_top:after{ - content:''; - width: 0; - height: 0; - border-left: 7px solid transparent; - border-bottom: 7px solid $menu-bg-color; - border-right: 7px solid transparent; - position:absolute; - left: -7px; - top: 1px; -} - -.mx_ContextualMenu.mx_ContextualMenu_bottom { - bottom: 8px; -} - -.mx_ContextualMenu_chevron_bottom { - position: absolute; - left: 0px; - bottom: -8px; - width: 0; - height: 0; - border-left: 8px solid transparent; - border-top: 8px solid $menu-border-color; - border-right: 8px solid transparent; -} - -.mx_ContextualMenu_chevron_bottom:after{ - content:''; - width: 0; - height: 0; - border-left: 7px solid transparent; - border-top: 7px solid $menu-bg-color; - border-right: 7px solid transparent; - position:absolute; - left: -7px; - bottom: 1px; -} - -.mx_ContextualMenu_field { - padding: 3px 6px 3px 6px; - cursor: pointer; - white-space: nowrap; -} - -.mx_ContextualMenu_spinner { - display: block; - margin: 0 auto; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss b/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss deleted file mode 100644 index 2be19352..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_CreateRoom { - width: 960px; - margin-left: auto; - margin-right: auto; - color: $primary-fg-color; -} - -.mx_CreateRoom input, -.mx_CreateRoom textarea { - border-radius: 3px; - border: 1px solid $strong-input-border-color; - font-weight: 300; - font-size: 13px; - padding: 9px; - margin-top: 6px; -} - -.mx_CreateRoom_description { - width: 330px; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss deleted file mode 100644 index 58e09064..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_FilePanel { - order: 2; - - flex: 1 1 0; - - width: 100%; - - overflow-y: auto; -} - -.mx_FilePanel .mx_RoomView_messageListWrapper { - margin-right: 20px; -} - -.mx_FilePanel .mx_RoomView_MessageList h2 { - display: none; -} - -/* FIXME: rather than having EventTile's default CSS be for MessagePanel, - we should make EventTile a base CSS class and customise it specifically - for usage in {Message,File,Notification}Panel. */ - -.mx_FilePanel .mx_EventTile_avatar { - display: none; -} - -/* Overrides for the attachment body tiles */ - -.mx_FilePanel .mx_EventTile { - word-break: break-word; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody { - margin-right: 0px; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody_download { - display: flex; - font-size: 14px; - color: $event-timestamp-color; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody_downloadLink { - flex: 1 1 auto; - color: $light-fg-color; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody_size { - flex: 1 0 0; - font-size: 11px; - text-align: right; - white-space: nowrap; -} - -/* Overides for the sender details line */ - -.mx_FilePanel .mx_EventTile_senderDetails { - display: flex; - margin-top: -2px; -} - -.mx_FilePanel .mx_EventTile_senderDetailsLink { - text-decoration: none; -} - -.mx_FilePanel .mx_EventTile .mx_SenderProfile { - flex: 1 1 auto; - line-height: initial; - padding: 0px; - font-size: 11px; - opacity: 1.0; - color: $event-timestamp-color; -} - -.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { - flex: 1 0 0; - text-align: right; - visibility: visible; - position: initial; - font-size: 11px; - opacity: 1.0; - color: $event-timestamp-color; -} - -/* Overrides for the wrappers around the body tile */ - -.mx_FilePanel .mx_EventTile_line { - margin-right: 0px; - padding-left: 0px; -} - -.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { - background-color: $primary-bg-color; -} - -.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { - padding-left: 0px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss deleted file mode 100644 index 68b2ba29..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss +++ /dev/null @@ -1,326 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_GroupView { - max-width: 960px; - width: 100%; - margin-left: auto; - margin-right: auto; - display: flex; - flex-direction: column; - overflow: hidden; -} - -.mx_GroupView_error { - margin: auto; -} - -.mx_GroupView_header { - max-width: 960px; - min-height: 70px; - align-items: center; - display: flex; - padding-bottom: 10px; -} - -.mx_GroupView_header_view { - border-bottom: 1px solid $primary-hairline-color; - padding-bottom: 0px; -} - -.mx_GroupView_header_avatar, .mx_GroupView_header_info { - display: table-cell; - vertical-align: middle; -} - -.mx_GroupHeader_button { - margin-left: 12px; - cursor: pointer; -} - -.mx_GroupHeader_button object { - // prevents clicks from being swallowed by svg in 'object' tag - pointer-events: none; -} - -.mx_GroupView_editable { - border-bottom: 1px solid $strong-input-border-color ! important; - min-width: 150px; - cursor: text; -} - -.mx_GroupView_editable:focus { - border-bottom: 1px solid $accent-color ! important; - outline: none; - box-shadow: none; -} - -.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { - color: $accent-color; - cursor: pointer; -} - -.mx_GroupView_avatarPicker { - position: relative; -} - -.mx_GroupView_avatarPicker_edit { - position: absolute; - top: 50px; - left: 15px; -} - -.mx_GroupView_avatarPicker .mx_Spinner { - width: 48px; - height: 48px ! important; -} - -.mx_GroupView_header_leftCol { - flex: 1; - - overflow: hidden; -} - -.mx_GroupView_header_rightCol { - display: flex; - align-items: center; -} - -.mx_GroupView_textButton { - display: inline-block; -} - -.mx_GroupView_header_groupid { - font-weight: normal; - font-size: initial; - padding-left: 10px; -} - -.mx_GroupView_header_name { - vertical-align: middle; - width: 100%; - height: 31px; - overflow: hidden; - color: $primary-fg-color; - font-weight: bold; - font-size: 22px; - padding-left: 19px; - padding-right: 16px; - /* why isn't text-overflow working? */ - text-overflow: ellipsis; - border-bottom: 1px solid transparent; -} - -.mx_GroupView_header_shortDesc { - vertical-align: bottom; - float: left; - max-height: 42px; - color: $settings-grey-fg-color; - font-weight: 300; - font-size: 13px; - padding-left: 19px; - margin-right: 16px; - overflow: hidden; - text-overflow: ellipsis; - border-bottom: 1px solid transparent; -} - -.mx_GroupView_avatarPicker_label { - cursor: pointer; -} - -.mx_GroupView_cancelButton { - padding-left: 8px; -} - -.mx_GroupView_cancelButton img { - position: relative; - top: 5px; -} - -.mx_GroupView_body { - flex-grow: 1; -} - -.mx_GroupView_rooms { - flex-grow: 1; - display: flex; - flex-direction: column; - min-height: 200px; - user-select: none; -} - -.mx_GroupView h3 { - text-transform: uppercase; - color: $h3-color; - font-weight: 600; - font-size: 13px; - margin-bottom: 10px; -} - -.mx_GroupView_rooms_header .mx_AccessibleButton { - padding-left: 14px; - margin-bottom: 14px; - height: 24px; -} - -.mx_GroupView_group { - border-top: 1px solid $primary-hairline-color; -} - -.mx_GroupView_group_disabled { - opacity: 0.3; - pointer-events: none; -} - -.mx_GroupView_rooms_header_addRow_button { - display: inline-block; -} - -.mx_GroupView_rooms_header_addRow_button object { - pointer-events: none; -} - -.mx_GroupView_rooms_header_addRow_label { - display: inline-block; - vertical-align: top; - line-height: 24px; - padding-left: 28px; - color: $accent-color; -} - -.mx_GroupView_rooms .mx_RoomDetailList { - flex-grow: 1; - border-top: 1px solid $primary-hairline-color; - padding-top: 10px; - word-break: break-word; -} - -.mx_GroupView .mx_RoomView_messageListWrapper { - justify-content: flex-start; -} - -.mx_GroupView_membershipSection { - color: $greyed-fg-color; - margin-top: 10px; -} - -.mx_GroupView_membershipSubSection { - justify-content: space-between; - display: flex; -} - -.mx_GroupView_membershipSection_description { - /* To match textButton */ - line-height: 34px; -} - -.mx_GroupView_membershipSection_description .mx_BaseAvatar { - margin-right: 10px; -} - -.mx_GroupView_membershipSection .mx_GroupView_textButton { - margin-right: 0px; - margin-top: 0px; - margin-left: 8px; -} - -.mx_GroupView_memberSettings_toggle label { - cursor: pointer; - user-select: none; -} - -.mx_GroupView_memberSettings input { - margin-right: 6px; -} - -.mx_GroupView_featuredThings { - margin-top: 20px; -} - -.mx_GroupView_featuredThings_header { - font-weight: bold; - font-size: 120%; - margin-bottom: 20px; -} - -.mx_GroupView_featuredThings_category { - font-weight: bold; - font-size: 110%; - margin-top: 10px; -} - -.mx_GroupView_featuredThings_container { - display: flex; -} - -.mx_GroupView_featuredThings_addButton, -.mx_GroupView_featuredThing { - display: table-cell; - text-align: center; - - width: 100px; - margin: 0px 20px; -} - -.mx_GroupView_featuredThing { - position: relative; -} - -.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { - position: absolute; - top: -7px; - right: 11px; - opacity: 0.4; -} - -.mx_GroupView_featuredThing .mx_BaseAvatar { - /* To prevent misalignment with mx_TintableSvg (in addButton) */ - vertical-align: initial; -} - -.mx_GroupView_featuredThings_addButton object { - pointer-events: none; -} - -.mx_GroupView_featuredThing_name { - word-wrap: break-word; -} - -.mx_GroupView_uploadInput { - display: none; -} - -.mx_GroupView_body .gm-scroll-view > *{ - margin: 11px 50px 0px 68px; -} - -.mx_GroupView_groupDesc textarea { - width: 100%; - max-width: 100%; - height: 150px; -} - -.mx_GroupView_groupDesc_placeholder { - background-color: $info-plinth-bg-color; - color: $info-plinth-fg-color; - border-radius: 10px; - text-align: center; - - cursor: pointer; - padding: 100px 20px; - margin: 20px 0px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss deleted file mode 100644 index 7f6199c4..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_LoginBox.scss +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_LoginBox { - min-height: 24px; - height: unset !important; - padding-top: 13px !important; - padding-bottom: 14px !important; -} - -.mx_LoginBox_loginButton_wrapper { - text-align: center; - width: 100%; -} - -.mx_LoginBox_loginButton, -.mx_LoginBox_registerButton { - margin-top: 3px; - height: 40px; - border: 0px; - border-radius: 40px; - margin-left: 4px; - margin-right: 4px; - min-width: 80px; - - background-color: $accent-color; - color: $primary-bg-color; - - cursor: pointer; - - font-size: 15px; - padding: 0 11px; - word-break: break-word; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss deleted file mode 100644 index 156b1709..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MatrixChat_splash { - position: relative; - height: 100%; -} - -.mx_MatrixChat_splashButtons { - text-align: center; - width: 100%; - position: absolute; - bottom: 30px; -} - -.mx_MatrixChat_wrapper { - display: flex; - - flex-direction: column; - - width: 100%; - height: 100%; -} - -.mx_MatrixToolbar { - order: 1; - - height: 40px; -} - -.mx_MatrixChat_toolbarShowing { - height: auto; -} - -.mx_MatrixChat { - width: 100%; - height: 100%; - - display: flex; - - order: 2; - - flex: 1; -} - -.mx_MatrixChat .mx_LeftPanel { - order: 1; - - background-color: $secondary-accent-color; - - flex: 0 0 235px; -} - -.mx_MatrixChat .mx_LeftPanel.collapsed { - flex: 0 0 60px; -} - -.mx_MatrixChat .mx_MatrixChat_middlePanel { - order: 2; - - padding-left: 20px; - padding-right: 22px; - background-color: $primary-bg-color; - - flex: 1; - - /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 - and https://github.com/vector-im/vector-web/issues/946. - Empirically this stops the MessagePanel's width exploding outwards when - gemini is in 'prevented' mode - */ - overflow-x: auto; - - display: flex; - - /* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari - needed height 100% all the way down to the HomePage. Height does not - have to be auto, empirically. - */ - height: 100%; -} - -.mx_MatrixChat .mx_RightPanel { - order: 3; - - flex: 0 0 235px; -} - -.mx_MatrixChat .mx_RightPanel.collapsed { - flex: 0 0 122px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss deleted file mode 100644 index 576ea123..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss +++ /dev/null @@ -1,155 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MyGroups { - max-width: 960px; - margin-left: auto; - margin-right: auto; - - display: flex; - flex-direction: column; -} - -.mx_MyGroups .mx_RoomHeader_simpleHeader { - margin-left: 0px; -} - -.mx_MyGroups_header { - /* Keep mid-point of create button aligned with icon in page header */ - margin-left: 2px; - display: flex; - flex-wrap: wrap; -} - -.mx_MyGroups_headerCard { - flex: 1 0 50%; - margin-bottom: 30px; - min-width: 400px; - display: flex; - align-items: center; -} - -.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { - margin-right: 13px; - height: 50px; -} - -.mx_MyGroups_headerCard_button object { - /* Otherwise the SVG object absorbs clicks and the button doesn't work */ - pointer-events: none; -} - -.mx_MyGroups_headerCard_header { - font-weight: bold; - margin-bottom: 10px; -} - -.mx_MyGroups_headerCard_content { - padding-right: 15px; -} - -/* Until the button is wired up */ -.mx_MyGroups_joinBox { - visibility: hidden; - - /* When joinBox wraps onto its own row, it should take up zero height so - that there isn't an awkward gap between MyGroups_createBox and - MyGroups_content. - */ - height: 0px; - margin: 0px; -} - -.mx_MyGroups_content { - margin-left: 2px; - - flex: 1 0 0; - - display: flex; - flex-direction: column; -} - -.mx_MyGroups_content h3 { - margin-bottom: 10px; -} - -.mx_MyGroups_placeholder { - background-color: $info-plinth-bg-color; - color: $info-plinth-fg-color; - line-height: 400px; - border-radius: 10px; - text-align: center; -} - -.mx_MyGroups_joinedGroups { - border-top: 1px solid $primary-hairline-color; - overflow-x: hidden; - - display: flex; - flex-direction: row; - flex-flow: wrap; - align-content: flex-start; -} - -.mx_MyGroups_joinedGroups .mx_GroupTile { - min-width: 300px; - max-width: 33%; - flex: 1 0 300px; - height: 75px; - margin: 10px 0px; - display: flex; - align-items: flex-start; - cursor: pointer; -} - -.mx_GroupTile_avatar { - cursor: grab, -webkit-grab; -} - -.mx_GroupTile_profile { - margin-left: 10px; - display: flex; - flex-direction: column; - justify-content: center; -} - -.mx_GroupTile_profile .mx_GroupTile_name, -.mx_GroupTile_profile .mx_GroupTile_groupId, -.mx_GroupTile_profile .mx_GroupTile_desc { - padding-right: 10px; -} - -.mx_GroupTile_profile .mx_GroupTile_name { - margin: 0px; - font-size: 15px; -} - -.mx_GroupTile_profile .mx_GroupTile_groupId { - font-size: 13px; -} - -.mx_GroupTile_profile .mx_GroupTile_desc { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - font-size: 13px; - max-height: 36px; - overflow: hidden; -} - -.mx_GroupTile_profile .mx_GroupTile_groupId { - opacity: 0.7; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss deleted file mode 100644 index ef75678d..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_NotificationPanel { - order: 2; - - flex: 1 1 0; - - width: 100%; - - overflow-y: auto; -} - -.mx_NotificationPanel .mx_RoomView_messageListWrapper { - margin-right: 20px; -} - -.mx_NotificationPanel .mx_RoomView_MessageList h2 { - margin-left: 0px; -} - -/* FIXME: rather than having EventTile's default CSS be for MessagePanel, - we should make EventTile a base CSS class and customise it specifically - for usage in {Message,File,Notification}Panel. */ - -.mx_NotificationPanel .mx_EventTile { - word-break: break-word; -} - -.mx_NotificationPanel .mx_EventTile_roomName { - font-weight: bold; - font-size: 14px; -} - -.mx_NotificationPanel .mx_EventTile_roomName a { - color: $primary-fg-color; -} - -.mx_NotificationPanel .mx_EventTile_avatar { - top: 8px; - left: 0px; -} - -.mx_NotificationPanel .mx_EventTile .mx_SenderProfile, -.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { - color: $primary-fg-color; - font-size: 12px; - display: inline; - padding-left: 0px; -} - -.mx_NotificationPanel .mx_EventTile_senderDetails { - padding-left: 32px; - padding-top: 8px; - position: relative; -} - -.mx_NotificationPanel .mx_EventTile_roomName a, -.mx_NotificationPanel .mx_EventTile_senderDetails a { - text-decoration: none ! important; -} - -.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { - visibility: visible; - position: initial; - display: inline; -} - -.mx_NotificationPanel .mx_EventTile_line { - margin-right: 0px; - padding-left: 32px; - padding-top: 0px; - padding-bottom: 0px; - padding-right: 0px; -} - -.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { - background-color: $primary-bg-color; -} - -.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { - padding-left: 0px; -} - -.mx_NotificationPanel .mx_EventTile_content { - margin-right: 0px; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss deleted file mode 100644 index ca7431ea..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ /dev/null @@ -1,181 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomStatusBar { - margin-left: 65px; - min-height: 50px; -} - -/* position the indicator in the same place horizontally as .mx_EventTile_avatar. */ -.mx_RoomStatusBar_indicator { - padding-left: 17px; - padding-right: 12px; - margin-left: -73px; - margin-top: 15px; - float: left; - width: 24px; - text-align: center; -} - -.mx_RoomStatusBar_callBar { - height: 50px; - line-height: 50px; -} - -.mx_RoomStatusBar_placeholderIndicator span { - color: $primary-fg-color; - opacity: 0.5; - position: relative; - top: -4px; -/* - animation-duration: 1s; - animation-name: bounce; - animation-direction: alternate; - animation-iteration-count: infinite; -*/ -} - -.mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { - animation-delay: 0.3s; -} -.mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { - animation-delay: 0.6s; -} -.mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { - animation-delay: 0.9s; -} - -@keyframes bounce { - from { - opacity: 0.5; - top: 0; - } - - to { - opacity: 0.2; - top: -3px; - } -} - -.mx_RoomStatusBar_typingIndicatorAvatars { - width: 52px; - margin-top: -1px; - text-align: left; -} - -.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { - margin-right: -12px; - border: 1px solid $primary-bg-color; -} - -.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { - padding-left: 1px; - padding-top: 1px; -} - -.mx_RoomStatusBar_typingIndicatorRemaining { - display: inline-block; - color: #acacac; - background-color: #ddd; - border: 1px solid $primary-bg-color; - border-radius: 40px; - width: 24px; - height: 24px; - line-height: 24px; - font-size: 0.8em; - vertical-align: top; - text-align: center; - position: absolute; -} - -.mx_RoomStatusBar_scrollDownIndicator { - cursor: pointer; - padding-left: 1px; -} - -.mx_RoomStatusBar_unreadMessagesBar { - padding-top: 10px; - color: $warning-color; - cursor: pointer; -} - -.mx_RoomStatusBar_connectionLostBar { - margin-top: 19px; - min-height: 58px; -} - -.mx_RoomStatusBar_connectionLostBar img { - padding-left: 10px; - padding-right: 22px; - vertical-align: middle; - float: left; -} - -.mx_RoomStatusBar_connectionLostBar_title { - color: $warning-color; -} - -.mx_RoomStatusBar_connectionLostBar_desc { - color: $primary-fg-color; - font-size: 13px; - opacity: 0.5; -} - -.mx_RoomStatusBar_resend_link { - color: $primary-fg-color ! important; - text-decoration: underline ! important; - cursor: pointer; -} - -.mx_RoomStatusBar_typingBar { - height: 50px; - line-height: 50px; - - color: $primary-fg-color; - opacity: 0.5; - overflow-y: hidden; - display: block; -} - -.mx_RoomStatusBar_isAlone { - height: 50px; - line-height: 50px; - - color: $primary-fg-color; - opacity: 0.5; - overflow-y: hidden; - display: block; -} - -.mx_MatrixChat_useCompactLayout { - .mx_RoomStatusBar { - min-height: 40px; - } - - .mx_RoomStatusBar_indicator { - margin-top: 10px; - } - - .mx_RoomStatusBar_callBar { - height: 40px; - line-height: 40px; - } - - .mx_RoomStatusBar_typingBar { - height: 40px; - line-height: 40px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss deleted file mode 100644 index 7944d01d..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ /dev/null @@ -1,267 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomView { - word-wrap: break-word; - position: relative; - - display: flex; - width: 100%; - - flex-direction: column; -} - -.mx_RoomView .mx_RoomHeader { - order: 1; - - flex: 0 0 70px; -} - -.mx_RoomView_fileDropTarget { - min-width: 0px; - max-width: 960px; - width: 100%; - font-size: 18px; - text-align: center; - - pointer-events: none; - - padding-left: 12px; - padding-right: 12px; - margin-left: -12px; - - border-top-left-radius: 10px; - border-top-right-radius: 10px; - - background-color: $droptarget-bg-color; - border: 2px #e1dddd solid; - border-bottom: none; - position: absolute; - top: 70px; - bottom: 0px; - z-index: 3000; -} - -.mx_RoomView_fileDropTargetLabel { - top: 50%; - width: 100%; - margin-top: -50px; - position: absolute; -} - -.mx_RoomView_auxPanel { - order: 2; - - min-width: 0px; - max-width: 960px; - width: 100%; - margin: 0px auto; - - overflow: auto; - border-bottom: 1px solid $primary-hairline-color; - - flex: 0 0 auto; -} - -.mx_RoomView_auxPanel_apps { - max-width: 1920px ! important; -} - - -.mx_RoomView_body { - order: 3; - flex: 1 1 0; - flex-direction: column; - display: flex; -} - -.mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { - order: 1; -} - -.mx_RoomView_body .mx_RoomView_messagePanel { - order: 2; -} - -.mx_RoomView_body .mx_RoomView_statusArea { - order: 3; -} - -.mx_RoomView_body .mx_MessageComposer { - order: 4; -} - -.mx_RoomView_messagePanel { - width: 100%; - overflow-y: auto; -} - -.mx_RoomView_messageListWrapper { - max-width: 960px; - margin: auto; - - min-height: 100%; - - display: flex; - - flex-direction: column; - - justify-content: flex-end; -} - -.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { - justify-content: flex-start; -} - -.mx_RoomView_empty { - flex: 1 1 auto; - font-size: 13px; - padding-left: 3em; - padding-right: 3em; - margin-right: 20px; - margin-top: 33%; - text-align: center; -} - -.mx_RoomView_MessageList { - width: 100%; - list-style-type: none; - padding: 0px; -} - -.mx_RoomView_MessageList li { - clear: both; -} - -li.mx_RoomView_myReadMarker_container { - height: 0px; - margin: 0px; - padding: 0px; - border: 0px; -} - -hr.mx_RoomView_myReadMarker { - border-top: solid 1px $accent-color; - border-bottom: solid 1px $accent-color; - margin-top: 0px; - position: relative; - top: -1px; - z-index: 1; -} - -.mx_RoomView_statusArea { - width: 100%; - flex: 0 0 auto; - - max-height: 0px; - background-color: $primary-bg-color; - z-index: 1000; - overflow: hidden; - - -webkit-transition: all .2s ease-out; - -moz-transition: all .2s ease-out; - -ms-transition: all .2s ease-out; - -o-transition: all .2s ease-out; -} - -.mx_RoomView_statusArea_expanded { - max-height: 100px; -} - -.mx_RoomView_statusAreaBox { - max-width: 960px; - margin: auto; - min-height: 50px; -} - -.mx_RoomView_statusAreaBox_line { - margin-left: 65px; - border-top: 1px solid $primary-hairline-color; - height: 1px; -} - -.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { - background-color: $primary-bg-color; -} - -.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { - color: $accent-fg-color; - opacity: 1.0; -} - -.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { - margin-top: 2px; - border: none; - height: 0px; -} - -.mx_RoomView_inCall .mx_MessageComposer_wrapper { - border-top: 2px hidden; - padding-top: 1px; -} - -.mx_RoomView_inCall .mx_RoomView_statusAreaBox { - background-color: $accent-color; - color: $accent-fg-color; - position: relative; -} - -.mx_RoomView_voipChevron { - position: absolute; - bottom: -11px; - right: 11px; -} - -.mx_RoomView_voipButton { - float: right; - margin-right: 13px; - margin-top: 10px; - cursor: pointer; -} - -.mx_RoomView_voipButton object { - pointer-events: none; -} - -.mx_RoomView .mx_MessageComposer { - width: 100%; - flex: 0 0 auto; - margin-right: 2px; -} - -.mx_RoomView_ongoingConfCallNotification { - width: 100%; - text-align: center; - background-color: $warning-color; - color: $accent-fg-color; - font-weight: bold; - padding: 6px 0; - cursor: pointer; -} - -.mx_RoomView_ongoingConfCallNotification a { - color: $accent-fg-color ! important; -} - -.mx_MatrixChat_useCompactLayout { - .mx_RoomView_MessageList { - margin-bottom: 4px; - } - - .mx_RoomView_statusAreaBox { - min-height: 42px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss deleted file mode 100644 index 6f08fd47..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SearchBox { - height: 24px; - margin-left: 16px; - margin-right: 16px; - padding-top: 24px; - padding-bottom: 22px; - - border-bottom: 1px solid $panel-divider-color; - - display: flex; -} - -.mx_SearchBox_searchButton { - margin-right: 10px; - margin-top: 5px; - pointer-events: none; -} - -.mx_SearchBox_closeButton { - cursor: pointer; - margin-top: -5px; -} - -.mx_SearchBox_search { - flex: 1 1 auto; - width: 0px; - font-family: $font-family; - font-size: 12px; - margin-top: -2px; - height: 24px; - border: 0px ! important; - /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ - border: 0px; -} - -.mx_SearchBox_minimise, -.mx_SearchBox_maximise { - margin-top: 3px; - cursor: pointer; -} - -.mx_SearchBox_minimise { - margin-left: 10px; -} - -.mx_SearchBox_maximise { - margin-left: 9px; -} - -.mx_SearchBox object { - pointer-events: none; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss deleted file mode 100644 index 31209bae..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_TagPanel.scss +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_TagPanel { - flex: 0 0 60px; - background-color: $tertiary-accent-color; - cursor: pointer; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; -} - -.mx_TagPanel .mx_TagPanel_tagTileContainer { - display: flex; - flex-direction: column; - align-items: center; - padding-top: 65px; - - flex-grow: 1; -} - -.mx_TagPanel .mx_TagTile { - padding: 6px 3px; - opacity: 0.5; - position: relative; -} -.mx_TagPanel .mx_TagTile:focus, -.mx_TagPanel .mx_TagTile:hover, -.mx_TagPanel .mx_TagTile.mx_TagTile_selected { - opacity: 1; -} - -.mx_TagPanel .mx_TagTile.mx_TagTile_selected { - /* To offset border of mx_TagTile_avatar */ - padding: 3px 0px; -} - -.mx_TagPanel .mx_TagTile.mx_TagTile_selected .mx_TagTile_avatar { - border: 3px solid $accent-color; - border-radius: 60px; -} - -.mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { - filter: none; -} - -.mx_TagTile_tooltip { - position: relative; - top: -30px; - left: 5px; -} - -.mx_TagTile_context_button { - min-width: 15px; - height: 15px; - position: absolute; - right: -5px; - top: 1px; - border-radius: 8px; - background-color: $neutral-badge-color; - color: #ffffff; - font-weight: 600; - font-size: 10px; - text-align: center; - padding-top: 1px; - padding-left: 4px; - padding-right: 4px; -} - -.mx_TagPanel_createGroupButton { - opacity: 0.5; - margin-bottom: 17px; - height: 25px; -} - -.mx_TagPanel_createGroupButton:hover { - opacity: 1; -} - -.mx_TagPanel_createGroupButton object { - pointer-events: none; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss deleted file mode 100644 index d76c8166..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss +++ /dev/null @@ -1,61 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_UploadBar { - position: relative; -} - -.mx_UploadBar_uploadProgressOuter { - height: 5px; - margin-left: 63px; - margin-top: -1px; - padding-bottom: 5px; -} - -.mx_UploadBar_uploadProgressInner { - background-color: $accent-color; - height: 5px; -} - -.mx_UploadBar_uploadFilename { - margin-top: 5px; - margin-left: 65px; - opacity: 0.5; - color: $primary-fg-color; -} - -.mx_UploadBar_uploadIcon { - float: left; - margin-top: 5px; - margin-left: 14px; -} - -.mx_UploadBar_uploadCancel { - float: right; - margin-top: 5px; - margin-right: 10px; - position: relative; - opacity: 0.6; - cursor: pointer; - z-index: 1; -} - -.mx_UploadBar_uploadBytes { - float: right; - margin-top: 5px; - margin-right: 30px; - color: $accent-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss deleted file mode 100644 index f6341dd6..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ /dev/null @@ -1,253 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_UserSettings { - max-width: 960px; - width: 100%; - margin-left: auto; - margin-right: auto; - - display: flex; - flex-direction: column; -} - -.mx_UserSettings .mx_RoomHeader { - order: 1; - - flex: 0 0 70px; -} - -.mx_UserSettings_body { - order: 2; - - flex: 1 1 0; - - margin-top: -20px; - overflow-y: auto; -} - -.mx_UserSettings h3 { - clear: both; - margin-left: 63px; - text-transform: uppercase; - color: $h3-color; - font-weight: 600; - font-size: 13px; - margin-top: 26px; - margin-bottom: 10px; -} - -.mx_UserSettings_section h3 { - margin-left: 0px; -} - -.mx_UserSettings_spinner { - display: inline-block; - vertical-align: middle; - margin-right: 12px; - width: 32px; - height: 32px; -} - -.mx_UserSettings_button { - @mixin mx_DialogButton; - display: inline; - margin: auto; -} - -.mx_UserSettings_button:hover { - @mixin mx_DialogButton_hover; -} - -.mx_UserSettings_button.danger { - background-color: $warning-color; -} - -.mx_UserSettings_section { - margin-left: 63px; - margin-top: 28px; - margin-bottom: 28px; -} - -.mx_UserSettings_cryptoSection ul { - display: table; -} -.mx_UserSettings_cryptoSection li { - display: table-row; -} -.mx_UserSettings_cryptoSection label, -.mx_UserSettings_cryptoSection span { - display: table-cell; - padding-right: 1em; -} - -.mx_UserSettings_passwordWarning { - /* To move the "Sign out" button out of the way */ - clear: both; - color: $warning-color; - margin-bottom: 5px; -} - -.mx_UserSettings_importExportButtons { - padding-top: 10px; - padding-left: 40px; -} - -.mx_UserSettings_importExportButtons .mx_UserSettings_button { - margin-right: 1em; -} - -.mx_UserSettings_toggle input { - width: 16px; - margin-right: 8px; - margin-bottom: 8px; -} - -.mx_UserSettings_toggle label { - padding-bottom: 21px; -} - -.mx_UserSettings_accountTable -.mx_UserSettings_notifTable -{ - display: table; -} - -.mx_UserSettings_notifTable .mx_Spinner { - position: absolute; -} - -.mx_UserSettings_language { - width: 200px; -} - -.mx_UserSettings_webRtcDevices_dropdown{ - width: 200px; -} - -.mx_UserSettings_profileTable -{ - display: table; - float: left; -} - -.mx_UserSettings_profileTableRow -{ - display: table-row; -} - -.mx_UserSettings_profileLabelCell -{ - padding-bottom: 21px; - display: table-cell; - font-weight: bold; - padding-right: 24px; -} - -.mx_UserSettings_profileInputCell { - display: table-cell; - padding-bottom: 21px; - width: 240px; -} - -.mx_UserSettings_profileInputCell input, -.mx_UserSettings_profileInputCell .mx_EditableText -{ - display: inline-block; - border: 0px; - border-bottom: 1px solid $input-underline-color; - padding: 0px; - width: 240px; - color: $input-fg-color; - font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; - font-size: 16px; -} - -.mx_UserSettings_threepidButton { - display: table-cell; - padding-left: 0.5em; - position: relative; - cursor: pointer; -} - -.mx_UserSettings_phoneSection { - display:table; -} - -.mx_UserSettings_phoneCountry { - width: 70px; - display: table-cell; -} - -input.mx_UserSettings_phoneNumberField { - margin-left: 3px; - width: 172px; - border: 1px solid transparent; -} - -.mx_UserSettings_changePasswordButton { - float: right; - margin-right: 32px; - margin-left: 32px; -} - -.mx_UserSettings_logout { - float: right; - margin-right: 32px; - margin-left: 32px; -} - -.mx_UserSettings_avatarPicker { - margin-left: 32px; - margin-right: 32px; - float: right; - cursor: pointer; -} - -.mx_UserSettings_avatarPicker_img .mx_BaseAvatar_image { - object-fit: cover; -} - -.mx_UserSettings_avatarPicker_edit { - text-align: center; - margin-top: 10px; -} - -.mx_UserSettings_avatarPicker_edit img { - cursor: pointer; -} - -.mx_UserSettings_avatarPicker_edit > input { - display: none; -} - -.mx_UserSettings_avatarPicker_imgContainer { - display: inline-block; -} - -.mx_UserSettings_avatarPicker_remove { - display: inline-block; - float: right; - margin-right: -15px; -} - -.mx_UserSettings_advanced_spoiler, -.mx_UserSettings_link { - cursor: pointer; - color: $accent-color; - word-break: break-all; -} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss deleted file mode 100644 index 84b8306a..00000000 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ /dev/null @@ -1,284 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_Login { - width: 100%; - height: 100%; - - display: flex; - align-items: center; - justify-content: center; - - overflow: auto; -} - -.mx_Login h2 { - font-weight: 300; - margin-top: 32px; - margin-bottom: 20px; -} - -.mx_Login_box { - width: 300px; - min-height: 450px; - padding-top: 50px; - padding-bottom: 50px; - margin: auto; -} - -.mx_Login_logo { - text-align: center; - height: 150px; - margin-bottom: 45px; -} - -.mx_Login_logo img { - max-height: 100% -} - -.mx_Login_support { - text-align: center; - font-size: 13px; - margin-top: 0px; - opacity: 0.7; -} - -.mx_Login_field { - width: 280px; - border-radius: 3px; - border: 1px solid $strong-input-border-color; - font-weight: 300; - font-size: 13px; - padding: 9px; - margin-bottom: 14px; -} - -.mx_Login_field_disabled { - opacity: 0.3; -} - -.mx_Login_fieldLabel { - margin-top: -10px; - margin-left: 8px; - margin-bottom: 14px; - font-size: 13px; - opacity: 0.8; -} - -.mx_Login_submit { - @mixin mx_DialogButton; - width: 100%; - margin-top: 35px; - margin-bottom: 24px; -} - -.mx_Login_submit:hover { - @mixin mx_DialogButton_hover; -} - -.mx_Login_submit:disabled { - opacity: 0.3; -} - -.mx_Login_label { - font-size: 13px; - opacity: 0.8; -} - -.mx_Login_checkbox, -.mx_Login_radio { - margin-right: 10px; -} - -.mx_Login_create { - display: block; - text-align: center; - width: 100%; - font-size: 13px; - opacity: 0.8; -} - -.mx_Login_create:link { - color: $primary-fg-color; -} - -.mx_Login_links { - display: block; - text-align: center; - margin-top: 15px; - width: 100%; - font-size: 13px; - opacity: 0.8; -} - -.mx_Login_links a:link { - color: $primary-fg-color; -} - -.mx_Login_prompt { - padding-top: 15px; - padding-bottom: 15px; - font-size: 13px; -} - -.mx_Login_forgot { - font-size: 15px; -} - -.mx_Login_forgot:link { - color: $primary-fg-color; -} - -.mx_Login_loader { - display: inline; - position: relative; - top: 2px; - left: 8px; -} - -.mx_Login_loader .mx_Spinner { - display: inline; -} - -.mx_Login_loader .mx_Spinner img { - width: 16px; - height: 16px; -} - -.mx_Login_error { - color: $warning-color; - font-weight: bold; - text-align: center; -/* - height: 24px; -*/ - margin-top: 12px; - margin-bottom: 12px; -} - -.mx_Login_type_container { - display: flex; - margin-bottom: 14px; -} - -.mx_Login_type_label { - flex-grow: 1; - line-height: 35px; -} - -.mx_Login_type_dropdown { - display: inline-block; - min-width: 170px; - align-self: flex-end; - flex: 1 1 auto; -} - -.mx_Login_field_group { - display: flex; -} - -.mx_Login_field_prefix { - height: 34px; - padding: 0px 5px; - line-height: 33px; - - background-color: #eee; - border: 1px solid #c7c7c7; - border-right: 0px; - border-radius: 3px 0px 0px 3px; - - text-align: center; -} - -.mx_Login_field_suffix { - height: 34px; - padding: 0px 5px; - line-height: 33px; - - background-color: #eee; - border: 1px solid #c7c7c7; - border-left: 0px; - border-radius: 0px 3px 3px 0px; - - text-align: center; - flex-grow: 1; -} - -.mx_Login_username { - height: 16px; - flex-shrink: 1; - min-width: 0px; -} - -.mx_Login_phoneNumberField { - height: 16px; -} - -.mx_Login_field_has_prefix { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -.mx_Login_field_has_suffix { - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} - -.mx_Login_phoneSection { - display:flex; -} - -.mx_Login_phoneCountry { - margin-bottom: 14px; - width: 150px; - - /* To override mx_Login_field_prefix */ - text-align: left; - padding: 0px; - background-color: $primary-bg-color; -} - -.mx_Login_field_prefix .mx_Dropdown_input { - /* To use prefix border instead of dropdown border */ - border: 0; -} - -.mx_Login_phoneCountry .mx_Dropdown_option { - /* - To match height of mx_Login_field - 33px + 2px border from mx_Dropdown_option = 35px - */ - height: 33px; - line-height: 33px; -} - -.mx_Login_phoneCountry .mx_Dropdown_option img { - margin: 3px; - vertical-align: top; -} - -.mx_Login_language { - margin-left: auto; - margin-right: auto; - min-width: 60%; -} - -.mx_Login_language_div { - display: flex; - margin-top: 12px; - margin-bottom: 12px; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss deleted file mode 100644 index ee2d9c19..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_BaseAvatar { - position: relative; -} - -.mx_BaseAvatar_initial { - position: absolute; - left: 0px; - color: $avatar-initial-color; - text-align: center; - speak: none; - pointer-events: none; - font-weight: normal; -} - -.mx_BaseAvatar_image { - border-radius: 40px; - vertical-align: top; - background-color: $avatar-bg-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss deleted file mode 100644 index a15f8eaa..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/avatars/_MemberPresenceAvatar.scss +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2017 Travis Ralston - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MemberPresenceAvatar { - display: inline-block; - position: relative; -} - -.mx_MemberPresenceAvatar_status { - display: block; - width: 10px; - height: 10px; - border-radius: 10px; - - position: absolute; - bottom: -2px; - right: -3px; -} - -.mx_MemberPresenceAvatar_status_online { - background-color: $presence-online; -} - -.mx_MemberPresenceAvatar_status_unavailable { - background-color: $presence-unavailable; -} - -.mx_MemberPresenceAvatar_status_offline { - background-color: $presence-offline; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss deleted file mode 100644 index 0f47e974..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_BugReportDialog_input { - width: 100%; - box-sizing: border-box; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss deleted file mode 100644 index 0f358a58..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatCreateOrReuseChatDialog.scss +++ /dev/null @@ -1,41 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { - margin-top: 24px; -} - -.mx_ChatCreateOrReuseDialog .mx_Dialog_content { - margin-bottom: 24px; - - /* - To stop spinner that mx_ChatCreateOrReuseDialog_profile replaces from causing a - height change - */ - min-height: 100px; -} - -.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { - display: none; -} - -.mx_ChatCreateOrReuseDialog_profile { - display: flex; -} - -.mx_ChatCreateOrReuseDialog_profile_name { - padding: 14px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss deleted file mode 100644 index 6fc21174..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ChatInviteDialog { - /* XXX: padding-left is on mx_Dialog but padding-right has subsequently - * been added on other dialogs. Surely all our dialogs should have consistent - * right hand padding? - */ - padding-right: 58px; -} - -/* Using a textarea for this element, to circumvent autofill */ -.mx_ChatInviteDialog_input, -.mx_ChatInviteDialog_input:focus -{ - height: 26px; - font-size: 14px; - font-family: $font-family; - padding-left: 12px; - padding-right: 12px; - margin: 0 !important; - border: 0 !important; - outline: 0 !important; - width: 1000%; /* Pretend that this is an "input type=text" */ - resize: none; - overflow: hidden; - vertical-align: middle; - box-sizing: border-box; - word-wrap: nowrap; -} - -.mx_ChatInviteDialog .mx_Dialog_content { - min-height: 50px -} - -.mx_ChatInviteDialog_inputContainer { - border-radius: 3px; - border: solid 1px $input-border-color; - line-height: 36px; - padding-left: 4px; - padding-right: 4px; - padding-top: 1px; - padding-bottom: 1px; - max-height: 150px; - overflow-x: hidden; - overflow-y: auto; -} - -.mx_ChatInviteDialog_error { - margin-top: 10px; - color: $warning-color; -} - -.mx_ChatInviteDialog_cancel { - position: absolute; - right: 11px; - top: 13px; - cursor: pointer; -} - -.mx_ChatInviteDialog_cancel object { - pointer-events: none; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss deleted file mode 100644 index b859d6bf..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ConfirmUserActionDialog .mx_Dialog_content { - min-height: 48px; - margin-bottom: 24px; -} - -.mx_ConfirmUserActionDialog_avatar { - float: left; - margin-right: 20px; - margin-top: -2px; -} - -.mx_ConfirmUserActionDialog_name { - font-size: 18px; -} - -.mx_ConfirmUserActionDialog_userId { - font-size: 13px; -} - -.mx_ConfirmUserActionDialog_reasonField { - font-family: $font-family; - font-size: 14px; - color: $primary-fg-color; - background-color: $primary-bg-color; - - border-radius: 3px; - border: solid 1px $input-border-color; - line-height: 36px; - padding-left: 16px; - padding-right: 16px; - padding-top: 1px; - padding-bottom: 1px; - - margin-bottom: 24px; - - width: 90%; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateGroupDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateGroupDialog.scss deleted file mode 100644 index 500e12ee..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateGroupDialog.scss +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_CreateGroupDialog_inputRow { - margin-top: 10px; - margin-bottom: 10px; -} - -.mx_CreateGroupDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_CreateGroupDialog_input { - font-size: 15px; - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; -} - -.mx_CreateGroupDialog_input_hasPrefixAndSuffix { - border-radius: 0px; -} - -.mx_CreateGroupDialog_input_group { - display: flex; -} - -.mx_CreateGroupDialog_prefix, -.mx_CreateGroupDialog_suffix { - height: 35px; - padding: 0px 5px; - line-height: 37px; - background-color: $input-border-color; - border: 1px solid $input-border-color; - text-align: center; -} - -.mx_CreateGroupDialog_prefix { - border-right: 0px; - border-radius: 3px 0px 0px 3px; -} - -.mx_CreateGroupDialog_suffix { - border-left: 0px; - border-radius: 0px 3px 3px 0px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateRoomDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateRoomDialog.scss deleted file mode 100644 index 888f147d..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_CreateRoomDialog.scss +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_CreateRoomDialog_details_summary { - outline: none; -} - -.mx_CreateRoomDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_CreateRoomDialog_input { - font-size: 15px; - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss deleted file mode 100644 index b4dd3533..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_EncryptedEventDialog .mx_MemberDeviceInfo { - float: right; - padding: 0px; - margin-right: 42px; -} - -.mx_EncryptedEventDialog .mx_MemberDeviceInfo_textButton { - @mixin mx_DialogButton; - background-color: $primary-bg-color; - color: $accent-color; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_GroupAddressPicker.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_GroupAddressPicker.scss deleted file mode 100644 index d6c961c0..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_GroupAddressPicker.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_GroupAddressPicker_checkboxContainer{ - margin-top: 10px; - display: flex; -} - -.mx_GroupAddressPicker_checkboxContainer input[type="checkbox"] { - /* Stop flex from shrinking the checkbox */ - width: 20px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_QuestionDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_QuestionDialog.scss deleted file mode 100644 index 3d47f175..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_QuestionDialog.scss +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -.mx_QuestionDialog { - padding-right: 58px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss deleted file mode 100644 index f7d8a3d0..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetMxIdDialog.scss +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SetMxIdDialog .mx_Dialog_title { - padding-right: 40px; -} - -.mx_SetMxIdDialog_input_group { - display: flex; -} - -.mx_SetMxIdDialog_input { - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; - font-size: 15px; - width: 100%; - max-width: 280px; -} - -.mx_SetMxIdDialog_input.error, -.mx_SetMxIdDialog_input.error:focus { - border: 1px solid $warning-color; -} - -.mx_SetMxIdDialog_input_group .mx_Spinner { - height: 37px; - padding-left: 10px; - justify-content: flex-start; -} - -.mx_SetMxIdDialog .success { - color: $accent-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss deleted file mode 100644 index 3457e50b..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// CSS voodoo to support a gemini-scrollbar for the contents of the dialog -.mx_Dialog_unknownDevice .mx_Dialog { - // ideally we'd shrink the height to fit when needed, but in practice this - // is a pain in the ass. plus might as well make the dialog big given how - // important it is. - height: 100%; - - // position the gemini scrollbar nicely - padding-right: 58px; -} - -.mx_UnknownDeviceDialog { - height: 100%; - display: flex; - flex-direction: column; -} - -.mx_UnknownDeviceDialog .mx_Dialog_content { - margin-bottom: 24px; -} - -.mx_UnknownDeviceDialog .mx_MemberDeviceInfo { - float: right; - clear: both; - padding: 0px; - padding-top: 8px; -} - -.mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { - @mixin mx_DialogButton_small; - background-color: $primary-bg-color; - color: $accent-color; -} - -.mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { - height: 40px; - border-bottom: 1px solid $primary-hairline-color; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss deleted file mode 100644 index edf45504..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AccessibleButton.scss +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_AccessibleButton:focus { - outline: 0; - filter: brightness($focus-brightness); -} - -.mx_AccessibleButton { - cursor: pointer; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss deleted file mode 100644 index 9871a7e8..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_AddressSelector { - position: absolute; - background-color: $primary-bg-color; - width: 485px; - max-height: 116px; - overflow-y: auto; - border-radius: 3px; - background-color: $primary-bg-color; - border: solid 1px $accent-color; - cursor: pointer; -} - -.mx_AddressSelector.mx_AddressSelector_empty { - display: none; -} - -.mx_AddressSelector_addressListElement .mx_AddressTile { - background-color: $primary-bg-color; - border: solid 1px $primary-bg-color; -} - -.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { - background-color: $selected-color; -} - -.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { - background-color: $selected-color; - border: solid 1px $selected-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss deleted file mode 100644 index 0ecfb17c..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss +++ /dev/null @@ -1,138 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_AddressTile { - display: inline-block; - border-radius: 3px; - background-color: rgba(74, 73, 74, 0.1); - border: solid 1px $input-border-color; - line-height: 26px; - color: $primary-fg-color; - font-size: 14px; - font-weight: normal; - margin-right: 4px; -} - -.mx_AddressTile.mx_AddressTile_error { - background-color: rgba(255, 0, 100, 0.1); - color: $warning-color; - border-color: $warning-color; -} - -.mx_AddressTile_network { - display: inline-block; - position: relative; - padding-left: 2px; - padding-right: 4px; - vertical-align: middle; -} - -.mx_AddressTile_avatar { - display: inline-block; - position: relative; - padding-left: 2px; - padding-right: 7px; - vertical-align: middle; -} - -.mx_AddressTile_mx { - display: inline-block; - margin: 0; - border: 0; - padding: 0; -} - -.mx_AddressTile_name { - display: inline-block; - padding-right: 4px; - font-weight: 600; - overflow: hidden; - height: 26px; - vertical-align: middle; -} - -.mx_AddressTile_name.mx_AddressTile_justified { - width: 180px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_id { - display: inline-block; - padding-right: 11px; -} - -.mx_AddressTile_id.mx_AddressTile_justified { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_unknownMx { - display: inline-block; - font-weight: 600; - padding-right: 11px; -} - -.mx_AddressTile_unknownMxl.mx_AddressTile_justified { - width: 380px; /* name + id width */ - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_email { - display: inline-block; - font-weight: 600; - padding-right: 11px; -} - -.mx_AddressTile_email.mx_AddressTile_justified { - width: 200px; /* same as id width */ - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_unknown { - display: inline-block; - padding-right: 11px; -} - -.mx_AddressTile_unknown.mx_AddressTile_justified { - width: 380px; /* name + id width */ - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_dismiss { - display: inline-block; - padding-right: 11px; - padding-left: 1px; - cursor: pointer; -} - -.mx_AddressTile_dismiss object { - pointer-events: none; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss deleted file mode 100644 index 94a92b23..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_DirectorySearchBox { - position: relative; - border-radius: 3px; - border: 1px solid $strong-input-border-color; -} - -.mx_DirectorySearchBox_container { - display: flex; - padding-left: 9px; - padding-right: 9px; -} - -.mx_DirectorySearchBox_input { - flex-grow: 1; - border: 0; - padding: 0; - font-weight: 300; - font-size: 13px; -} -input[type=text].mx_DirectorySearchBox_input:focus { - border: 0; -} - -.mx_DirectorySearchBox_joinButton { - display: table-cell; - padding: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: $plinth-bg-color; - border-radius: 3px; - background-image: url('../../img/icon-return.svg'); - background-position: 8px 70%; - background-repeat: no-repeat; - text-indent: 18px; - font-weight: 600; - font-size: 12px; - user-select: none; - cursor: pointer; -} - -.mx_DirectorySearchBox_clear_wrapper { - display: table-cell; -} - -.mx_DirectorySearchBox_clear { - display: inline-block; - vertical-align: middle; - background: url('../../img/icon_context_delete.svg'); - background-position: 0 50%; - background-repeat: no-repeat; - width: 15px; - height: 15px; - cursor: pointer; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss deleted file mode 100644 index 2ddbb36c..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_Dropdown { - position: relative; -} - -.mx_Dropdown_disabled { - opacity: 0.3; -} - -.mx_Dropdown_input { - position: relative; - border-radius: 3px; - border: 1px solid $strong-input-border-color; - font-weight: 300; - font-size: 13px; - user-select: none; -} - -.mx_Dropdown_input:focus { - border-color: $accent-color; -} - -/* Disable dropdown highlight on focus */ -.mx_Dropdown_input.mx_AccessibleButton:focus { - filter: none; -} - -.mx_Dropdown_arrow { - border-color: $primary-fg-color transparent transparent; - border-style: solid; - border-width: 5px 5px 0; - display: block; - height: 0; - position: absolute; - right: 10px; - top: 14px; - width: 0 -} - -.mx_Dropdown.left_aligned .mx_Dropdown_arrow { - left: 10px; -} - -.mx_Dropdown.left_aligned .mx_Dropdown_input > .mx_Dropdown_option { - padding-left: 25px; -} - -.mx_Dropdown_option { - height: 35px; - line-height: 35px; - padding-left: 8px; - padding-right: 8px; -} - -.mx_Dropdown_option div { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_Dropdown_option img { - margin: 5px; - width: 27px; - vertical-align: middle; -} - -input.mx_Dropdown_option, input.mx_Dropdown_option:focus { - border: 0; - padding-top: 0; - padding-bottom: 0; - // XXX: hack to prevent text box being too big and pushing - // its parent out / overlapping the dropdown arrow. Only really - // works in the Country dropdown. - width: 60%; -} - -.mx_Dropdown_menu { - position: absolute; - left: -1px; - right: -1px; - top: 100%; - z-index: 2; - margin: 0; - padding: 0px; - border-radius: 3px; - border: 1px solid $accent-color; - background-color: $primary-bg-color; - max-height: 200px; - overflow-y: auto; -} - -.mx_Dropdown_menu .mx_Dropdown_option_highlight { - background-color: $focus-bg-color; -} - -.mx_Dropdown_menu { - font-weight: bold; -} - -.mx_Dropdown_searchPrompt { - font-weight: normal; - margin-left: 5px; - margin-bottom: 5px; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_EditableItemList.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_EditableItemList.scss deleted file mode 100644 index 9fbb39aa..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_EditableItemList.scss +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_EditableItemList { - margin-top: 12px; - margin-bottom: 0px; -} - -.mx_EditableItem { - display: flex; - margin-left: 56px; -} - -.mx_EditableItem .mx_EditableItem_editable { - border: 0px; - border-bottom: 1px solid $strong-input-border-color; - padding: 0px; - min-width: 240px; - max-width: 400px; - margin-bottom: 16px; -} - -.mx_EditableItem .mx_EditableItem_editable:focus { - border-bottom: 1px solid $accent-color; - outline: none; - box-shadow: none; -} - -.mx_EditableItem .mx_EditableItem_editablePlaceholder { - color: $settings-grey-fg-color; -} - -.mx_EditableItem .mx_EditableItem_addButton, -.mx_EditableItem .mx_EditableItem_removeButton { - padding-left: 0.5em; - position: relative; - cursor: pointer; - - visibility: hidden; -} - -.mx_EditableItem:hover .mx_EditableItem_addButton, -.mx_EditableItem:hover .mx_EditableItem_removeButton { - visibility: visible; -} - -.mx_EditableItemList_label { - margin-bottom: 8px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss deleted file mode 100644 index 02ecb5d8..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MemberEventListSummary { - position: relative; -} - -.mx_TextualEvent.mx_MemberEventListSummary_summary { - font-size: 14px; - display: inline-flex; -} - -.mx_MemberEventListSummary_avatars { - display: inline-block; - margin-right: 8px; - padding-top: 8px; - line-height: 12px; -} - -.mx_MemberEventListSummary_avatars .mx_BaseAvatar { - margin-right: -4px; - cursor: pointer; -} - -.mx_MemberEventListSummary_toggle { - color: $accent-color; - cursor: pointer; - float: right; - margin-right: 10px; - margin-top: 8px; -} - -.mx_MemberEventListSummary_line { - border-bottom: 1px solid $primary-hairline-color; - margin-left: 63px; - line-height: 30px; -} - -.mx_MatrixChat_useCompactLayout { - .mx_MemberEventListSummary { - font-size: 13px; - .mx_EventTile_line { - line-height: 20px; - } - } - - .mx_MemberEventListSummary_line { - line-height: 22px; - } - - .mx_MemberEventListSummary_toggle { - margin-top: 3px; - } - - .mx_TextualEvent.mx_MemberEventListSummary_summary { - font-size: 13px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss deleted file mode 100644 index a3fee232..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ProgressBar { - height: 5px; - border: 1px solid $progressbar-color; -} - -.mx_ProgressBar_fill { - height: 100%; - background-color: $progressbar-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_Quote.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_Quote.scss deleted file mode 100644 index 0af555b5..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_Quote.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_Quote .mx_DateSeparator { - font-size: 1em !important; - margin-bottom: 0; - padding-bottom: 1px; - bottom: -5px; -} - -.mx_Quote_show { - cursor: pointer; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss deleted file mode 100644 index 474a1234..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss +++ /dev/null @@ -1,75 +0,0 @@ -// XXX: bleurgh, what is this? These classes totally break the component -// naming scheme; it's completely unclear where or how they're being used -// --Matthew - -.mx_UserPill, -.mx_RoomPill, -.mx_AtRoomPill { - border-radius: 16px; - display: inline-block; - height: 20px; - line-height: 20px; - padding-left: 5px; -} - -.mx_EventTile_body .mx_UserPill, -.mx_EventTile_body .mx_RoomPill { - cursor: pointer; -} - -/* More specific to override `.markdown-body a` color */ -.mx_EventTile_content .markdown-body a.mx_UserPill, -.mx_UserPill { - color: $primary-fg-color; - background-color: $other-user-pill-bg-color; - padding-right: 5px; -} - -.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, -.mx_EventTile_content .mx_AtRoomPill, -.mx_MessageComposer_input .mx_AtRoomPill { - color: $accent-fg-color; - background-color: $mention-user-pill-bg-color; - padding-right: 5px; -} - -/* More specific to override `.markdown-body a` color */ -.mx_EventTile_content .markdown-body a.mx_RoomPill, -.mx_RoomPill { - color: $accent-fg-color; - background-color: $rte-room-pill-color; - padding-right: 5px; -} - -.mx_UserPill .mx_BaseAvatar, -.mx_RoomPill .mx_BaseAvatar, -.mx_AtRoomPill .mx_BaseAvatar { - position: relative; - left: -3px; - top: 2px; -} - -.mx_Markdown_BOLD { - font-weight: bold; -} - -.mx_Markdown_ITALIC { - font-style: italic; -} - -.mx_Markdown_CODE { - padding: .2em 0; - margin: 0; - font-size: 85%; - background-color: $rte-code-bg-color; - border-radius: 3px; -} - -.mx_Markdown_HR { - display: block; - background: $rte-bg-color; -} - -.mx_Markdown_STRIKETHROUGH { - text-decoration: line-through; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss deleted file mode 100644 index 094e0b9b..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2107 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoleButton { - margin-left: 4px; - margin-right: 4px; - cursor: pointer; - display: inline-block; -} - -.mx_RoleButton object { - pointer-events: none; -} - -.mx_RoleButton_tooltip { - display: inline-block; - position: relative; - top: -25px; - left: 6px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_ToolTipButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_ToolTipButton.scss deleted file mode 100644 index ef9dd02b..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_ToolTipButton.scss +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ToolTipButton { - display: inline-block; - width: 11px; - height: 11px; - margin-left: 5px; - - border: 2px solid $neutral-badge-color; - border-radius: 20px; - color: $neutral-badge-color; - - transition: opacity 0.2s ease-in; - opacity: 0.6; - - line-height: 11px; - text-align: center; - - cursor: pointer; -} - -.mx_ToolTipButton:hover { - opacity: 1.0; -} - -.mx_ToolTipButton_container { - position: relative; - top: -18px; - left: 4px; -} - -.mx_ToolTipButton_helpText { - width: 200px; - text-align: center; - line-height: 17px !important; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss deleted file mode 100644 index 3ea4aa07..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupPublicityToggle.scss +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_GroupPublicity_toggle { - display: flex; - align-items: center; - margin: 8px; -} - -.mx_GroupPublicity_toggle > label { - display: flex; - align-items: flex-start; -} - -.mx_GroupPublicity_toggle > label, -.mx_GroupPublicity_toggle .mx_GroupTile { - width: 50%; -} - -.mx_GroupPublicity_toggle input { - margin-right: 8px; - vertical-align: -4px; -} - -.mx_GroupPublicity_toggle .mx_GroupTile { - display: flex; - align-items: flex-start; - cursor: pointer; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupRoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupRoomList.scss deleted file mode 100644 index fb41ebaa..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupRoomList.scss +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_GroupRoomTile { - position: relative; - color: $primary-fg-color; - cursor: pointer; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss deleted file mode 100644 index 0c909b7c..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/groups/_GroupUserSettings.scss +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_GroupUserSettings_groupPublicity_scrollbox { - height: 200px; - border: 1px solid $primary-hairline-color; - border-radius: 3px; - margin-right: 32px; - overflow: hidden; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss b/src/skins/vector/css/matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss deleted file mode 100644 index 183b5cd2..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_InteractiveAuthEntryComponents_msisdnWrapper { - text-align: center; -} - -.mx_InteractiveAuthEntryComponents_msisdnEntry { - font-size: 200%; - font-weight: bold; - border: 1px solid $strong-input-border-color; - border-radius: 3px; - width: 6em; -} - -.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { - border: 1px solid $accent-color; -} - -.mx_InteractiveAuthEntryComponents_msisdnSubmit { - margin-top: 4px; - margin-bottom: 5px; -} - -// XXX: This should be a common button class -.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { - background-color: $light-fg-color; - cursor: default; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss deleted file mode 100644 index 894ce198..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ServerConfig { - margin-top: 7px; -} - -.mx_ServerConfig .mx_Login_field { - margin-top: 4px; - margin-bottom: 5px; -} - -.mx_ServerConfig_help:link { - opacity: 0.8; - font-size: 13px; - font-weight: 300; - color: $primary-fg-color; -} - -.mx_ServerConfig_selector { - text-align: center; - width: 302px; // for fr i18n -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MEmoteBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MEmoteBody.scss deleted file mode 100644 index cf722e5a..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MEmoteBody.scss +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MEmoteBody { - white-space: pre-wrap; -} - -.mx_MEmoteBody_sender { - cursor: pointer; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MFileBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MFileBody.scss deleted file mode 100644 index 6cbce687..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MFileBody.scss +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MFileBody_download { - color: $accent-color; -} - -.mx_MFileBody_download a { - color: $accent-color; - text-decoration: none; - cursor: pointer; -} - -.mx_MFileBody_download object { - margin-left: -16px; - padding-right: 4px; - margin-top: -4px; - vertical-align: middle; - pointer-events: none; -} - -/* Remove the border and padding for iframes for download links. */ -.mx_MFileBody_download iframe { - margin: 0px; - padding: 0px; - border: none; - width: 100%; - /* Set the height of the iframe to be 1 line of text. - * Iframes don't automatically size themselves to fit their content. - * So either we have to fix the height of the iframe using CSS or - * use javascript's cross-origin postMessage API to communicate how - * big the content of the iframe is. */ - height: 1.5em; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss deleted file mode 100644 index 1702aac8..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MImageBody { - display: block; - margin-right: 34px; -} - -.mx_MImageBody_thumbnail { - max-width: 100%; -/* - background-color: $primary-bg-color; - border: 2px solid $primary-bg-color; - border-radius: 1px; -*/ -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MNoticeBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MNoticeBody.scss deleted file mode 100644 index a88c2086..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MNoticeBody.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MNoticeBody { - white-space: pre-wrap; - opacity: 0.6; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss deleted file mode 100644 index 9adce42e..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_RoomAvatarEvent.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomAvatarEvent { - opacity: 0.5; - overflow-y: hidden; -} - -.mx_RoomAvatarEvent_avatar { - display: inline; - position: relative; - top: 5px; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_TextualEvent.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_TextualEvent.scss deleted file mode 100644 index be7565b3..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_TextualEvent.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_TextualEvent { - opacity: 0.5; - overflow-y: hidden; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_UnknownBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_UnknownBody.scss deleted file mode 100644 index 9036e12b..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_UnknownBody.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_UnknownBody { - white-space: pre-wrap; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss deleted file mode 100644 index 2d61ca77..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ /dev/null @@ -1,266 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_AppsDrawer { - margin: 5px; -} - -.mx_AppsContainer { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; -} - -.mx_AddWidget_button { - order: 2; - cursor: pointer; - padding-right: 12px; - padding: 0; - margin: 5px auto 5px auto; - color: $accent-color; - font-size: 12px; -} - -.mx_AddWidget_button_full_width { - max-width: 960px; -} - -.mx_SetAppURLDialog_input { - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-hairline-color; - background-color: $primary-bg-color; - font-size: 15px; -} - -.mx_AppTile { - max-width: 960px; - width: 50%; - margin-right: 5px; - border: 1px solid $primary-hairline-color; - border-radius: 2px; -} - -.mx_AppTile:last-child { - margin-right: 1px; -} - -.mx_AppTileFullWidth { - max-width: 960px; - width: 100%; - margin: 0; - padding: 0; - border: 1px solid $primary-hairline-color; - border-radius: 2px; - // height: 350px; - // display: inline-block; -} - -.mx_AppTile, .mx_AppTileFullWidth { - margin-top: 3px; -} - -.mx_AppTileMenuBar { - margin: 0; - padding: 2px 10px; - border-bottom: 1px solid $primary-hairline-color; - font-size: 10px; - background-color: $widget-menu-bar-bg-color; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - cursor: pointer; -} - -.mx_AppTileMenuBarTitle { - display: flex; - flex-direction: row; - align-items: center; - pointer-events: none; -} - -.mx_AppTileMenuBarWidgets { - float: right; - display: flex; - flex-direction: row; - align-items: center; -} - -.mx_AppTileMenuBarWidget { - // pointer-events: none; - cursor: pointer; - width: 10px; - height: 10px; - padding: 1px; - transition-duration: 500ms; - border: 1px solid transparent; -} - -.mx_AppTileMenuBarWidgetDelete { - filter: none; -} - -.mx_AppTileMenuBarWidget:hover { - border: 1px solid $primary-fg-color; - border-radius: 2px; -} - -.mx_AppTileBody{ - height: 350px; - width: 100%; - overflow: hidden; -} - -.mx_AppTileBody iframe { - width: 100%; - height: 350px; - overflow: hidden; - border: none; - padding: 0; - margin: 0; - display: block; -} - -// .mx_CloseAppWidget { -// } - -.mx_AppTileMenuBarWidgetPadding { - margin-right: 5px; -} - -.mx_AppIconTile { - background-color: $lightbox-bg-color; - border: 1px solid rgba(0, 0, 0, 0); - width: 200px; - box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); - transition: 0.3s; - border-radius: 3px; - margin: 5px; - display: inline-block; -} - -.mx_AppIconTile.mx_AppIconTile_active { - color: $accent-color; - border-color: $accent-color; -} - -.mx_AppIconTile:hover { - border: 1px solid $accent-color; - box-shadow: 0 0 10px 5px rgba(200,200,200,0.5); -} - -.mx_AppIconTile_content { - padding: 2px 16px; - height: 60px; - overflow: hidden; -} - -.mx_AppIconTile_content h4 { - margin-top: 5px; - margin-bottom: 2px; -} - -.mx_AppIconTile_content p { - margin-top: 0; - margin-bottom: 5px; - font-size: smaller; -} - -.mx_AppIconTile_image { - padding: 10px; - width: 75%; - max-width:100px; - max-height:100px; - width: auto; - height: auto; -} - -.mx_AppIconTile_imageContainer { - text-align: center; - width: 100%; - background-color: white; - border-radius: 3px 3px 0 0; - height: 155px; - display: flex; - justify-content: center; - align-items: center; -} - -form.mx_Custom_Widget_Form div { - margin-top: 10px; - margin-bottom: 10px; -} - -.mx_AppPermissionWarning { - text-align: center; - background-color: $primary-bg-color; - display: flex; - height: 100%; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.mx_AppPermissionWarningImage { - margin: 10px 0; -} - -.mx_AppPermissionWarningImage img { - width: 100px; -} - -.mx_AppPermissionWarningText { - max-width: 400px; - margin: 10px auto 10px auto; - color: $primary-fg-color; -} - -.mx_AppPermissionWarningTextLabel { - font-weight: bold; - display: block; -} - -.mx_AppPermissionWarningTextURL { - color: $accent-color; -} - -.mx_AppPermissionButton { - padding: 5px; - border-radius: 5px; - color: $warning-color; - background-color: $primary-bg-color; -} - -.mx_AppPermissionButton:hover { - background-color: $primary-fg-color; - cursor: pointer; -} - -.mx_AppLoading { - min-height: 305px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - font-weight: bold; -} - -.mx_AppLoading iframe { - display: none; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss deleted file mode 100644 index 732ada08..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss +++ /dev/null @@ -1,93 +0,0 @@ -.mx_Autocomplete { - position: absolute; - bottom: 0; - z-index: 1001; - width: 100%; - border: 1px solid $primary-hairline-color; - background: $primary-bg-color; - border-bottom: none; - border-radius: 4px 4px 0 0; - max-height: 50vh; - overflow: auto -} - -.mx_Autocomplete_ProviderSection { - border-bottom: 1px solid $primary-hairline-color; -} - -.mx_Autocomplete_Completion_container_pill { - margin: 12px; - display: flex; -} - -/* a "block" completion takes up a whole line */ -.mx_Autocomplete_Completion_block { - height: 34px; - display: flex; - padding: 0 12px; - user-select: none; - cursor: pointer; - align-items: center; - color: $primary-fg-color; -} - -.mx_Autocomplete_Completion_block * { - margin: 0 3px; -} - -.mx_Autocomplete_Completion_pill { - border-radius: 17px; - height: 34px; - padding: 0px 5px; - display: flex; - user-select: none; - cursor: pointer; - align-items: center; - color: $primary-fg-color; -} - -.mx_Autocomplete_Completion_pill > * { - margin: 0 3px; -} - -.mx_Autocomplete_Completion_container_truncate { - .mx_Autocomplete_Completion_title, - .mx_Autocomplete_Completion_subtitle, - .mx_Autocomplete_Completion_description { - /* Ellipsis for long names/subtitles/descriptions*/ - max-width: 150px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} - -/* container for pill-style completions */ -.mx_Autocomplete_Completion_container_pill { - margin: 12px; - display: flex; - flex-flow: wrap; -} - -.mx_Autocomplete_Completion.selected { - background: $menu-bg-color; - outline: none; -} - -.mx_Autocomplete_provider_name { - margin: 12px; - color: $primary-fg-color; - font-weight: 400; - opacity: 0.4; -} - -/* styling for common completion elements */ -.mx_Autocomplete_Completion_subtitle { - font-style: italic; - flex: 1; -} - -.mx_Autocomplete_Completion_description { - color: gray; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss deleted file mode 100644 index 031894af..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_EntityTile { - display: table-row; - position: relative; - color: $primary-fg-color; - cursor: pointer; -} - -.mx_EntityTile_invite { - display: table-cell; - vertical-align: middle; - margin-left: 10px; - width: 26px; -} - -.mx_EntityTile_avatar, -.mx_GroupRoomTile_avatar { - display: table-cell; - padding-left: 3px; - padding-right: 12px; - padding-top: 4px; - padding-bottom: 4px; - vertical-align: middle; - width: 36px; - height: 36px; - position: relative; -} - -.mx_EntityTile_power { - position: absolute; - width: 16px; - height: 17px; - top: 0px; - right: 6px; -} - -.mx_EntityTile_name, -.mx_GroupRoomTile_name { - display: table-cell; - vertical-align: middle; - overflow: hidden; - font-size: 14px; - text-overflow: ellipsis; - white-space: nowrap; - max-width: 155px; -} - -.mx_EntityTile_details { - display: table-cell; - padding-right: 14px; - vertical-align: middle; -} - -.mx_EntityTile_name_hover { - font-size: 13px; -} - -.mx_EntityTile_chevron { - margin-top: 8px; - margin-right: -4px; - margin-left: 6px; - float: right; -} - -.mx_EntityTile_ellipsis .mx_EntityTile_name { - font-style: italic; - color: $primary-fg-color; -} - -.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { - font-style: italic; - color: $primary-fg-color; -} - -.mx_EntityTile_unavailable .mx_EntityTile_avatar, -.mx_EntityTile_unavailable .mx_EntityTile_name, -.mx_EntityTile_unavailable .mx_EntityTile_name_hover, -.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, -.mx_EntityTile_offline_beenactive .mx_EntityTile_name, -.mx_EntityTile_offline_beenactive .mx_EntityTile_name_hover -{ - opacity: 0.66; -} - -.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, -.mx_EntityTile_offline_neveractive .mx_EntityTile_name, -.mx_EntityTile_offline_neveractive .mx_EntityTile_name_hover -{ - opacity: 0.25; -} - -.mx_EntityTile_unknown .mx_EntityTile_avatar, -.mx_EntityTile_unknown .mx_EntityTile_name, -.mx_EntityTile_unknown .mx_EntityTile_name_hover -{ - opacity: 0.25; -} - - diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss deleted file mode 100644 index 48afc86d..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ /dev/null @@ -1,502 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_EventTile { - max-width: 100%; - clear: both; - padding-top: 18px; - font-size: 14px; - position: relative; -} - -.mx_EventTile.mx_EventTile_info { - padding-top: 0px; -} - -.mx_EventTile_avatar { - position: absolute; - top: 14px; - left: 8px; - cursor: pointer; - z-index: 2; -} - -.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { - top: 8px; - left: 65px; -} - -.mx_EventTile_continuation { - padding-top: 0px ! important; -} - -.mx_EventTile .mx_SenderProfile { - color: $primary-fg-color; - font-size: 14px; - display: block; /* anti-zalgo, with overflow hidden */ - overflow-y: hidden; - cursor: pointer; - padding-left: 65px; /* left gutter */ - padding-bottom: 0px; - padding-top: 0px; - margin: 0px; - line-height: 22px; -} - -.mx_EventTile .mx_SenderProfile .mx_SenderProfile_name, -.mx_EventTile .mx_SenderProfile .mx_SenderProfile_aux { - opacity: 0.5; -} - -.mx_EventTile .mx_SenderProfile .mx_Flair { - opacity: 0.7; - margin-left: 5px; -} - -.mx_EventTile .mx_SenderProfile .mx_Flair img { - vertical-align: -2px; - margin-right: 2px; - border-radius: 8px; -} - -.mx_EventTile .mx_MessageTimestamp { - display: block; - visibility: hidden; - white-space: nowrap; - color: $event-timestamp-color; - font-size: 10px; - left: 0px; - width: 46px; /* 8 + 30 (avatar) + 8 */ - text-align: center; - position: absolute; -} - -.mx_EventTile_line { - position: relative; - /* ideally should be 100px, but 95px gives us a max thumbnail size of 800x600, which is nice */ - margin-right: 110px; - padding-left: 65px; /* left gutter */ - padding-top: 4px; - padding-bottom: 2px; - border-radius: 4px; - min-height: 24px; - line-height: 22px; -} - -.mx_EventTile_quote { - margin-right: 10px; -} - -.mx_EventTile_info .mx_EventTile_line { - padding-left: 83px; -} - -/* HACK to override line-height which is already marked important elsewhere */ -.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { - font-size: 48px ! important; - line-height: 48px ! important; -} - -/* this is used for the tile for the event which is selected via the URL. - * TODO: ultimately we probably want some transition on here. - */ -.mx_EventTile_selected > .mx_EventTile_line { - border-left: $accent-color 5px solid; - padding-left: 60px; - background-color: $event-selected-color; -} - -.mx_EventTile:hover .mx_EventTile_line:not(.mx_EventTile_quote), -.mx_EventTile.menu .mx_EventTile_line -{ - background-color: $event-selected-color; -} - -.mx_EventTile_searchHighlight { - background-color: $accent-color; - color: $accent-fg-color; - border-radius: 5px; - padding-left: 2px; - padding-right: 2px; - cursor: pointer; -} - -.mx_EventTile_searchHighlight a { - background-color: $accent-color; - color: $accent-fg-color; -} - -.mx_EventTile_encrypting { - color: $event-encrypting-color ! important; -} - -.mx_EventTile_sending { - color: $event-sending-color; -} - -.mx_EventTile_sending .mx_UserPill, -.mx_EventTile_sending .mx_RoomPill, -.mx_EventTile_sending .mx_emojione { - opacity: 0.5; -} - -.mx_EventTile_notSent { - color: $event-notsent-color; -} - -.mx_EventTile_redacted .mx_EventTile_line .mx_UnknownBody { - display: block; - width: 100%; - height: 22px; - width: 250px; - border-radius: 11px; - background: repeating-linear-gradient( - -45deg, - $event-redacted-fg-color, - $event-redacted-fg-color 3px, - transparent 3px, - transparent 6px - ); - box-shadow: 0px 0px 3px $event-redacted-border-color inset; -} - -.mx_EventTile_highlight, -.mx_EventTile_highlight .markdown-body - { - color: $warning-color; -} - -.mx_EventTile_contextual { - opacity: 0.4; -} - -.mx_EventTile_msgOption { - float: right; - text-align: right; - z-index: 1; - position: relative; - width: 90px; - - /* Hack to stop the height of this pushing the messages apart. - Replaces margin-top: -6px. This interacts better with a read - marker being in between. Content overflows. */ - height: 1px; - - margin-right: 10px; -} - -.mx_EventTile_msgOption a { - text-decoration: none; -} - -.mx_EventTile_last .mx_MessageTimestamp, -.mx_EventTile:hover .mx_MessageTimestamp, -.mx_EventTile.menu .mx_MessageTimestamp -{ - visibility: visible; -} - -.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { - visibility: visible; -} - -.mx_EventTile_selected > div > a > .mx_MessageTimestamp { - left: 3px; - width: auto; -} - -.mx_EventTile_editButton { - position: absolute; - display: inline-block; - visibility: hidden; - cursor: pointer; - top: 6px; - right: 6px; - width: 19px; - height: 19px; - background-image: url($edit-button-url); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_EventTile:hover .mx_EventTile_editButton, -.mx_EventTile.menu .mx_EventTile_editButton -{ - visibility: visible; -} - -.mx_EventTile.menu .mx_MessageTimestamp { - visibility: visible; -} - -.mx_EventTile_readAvatars { - position: relative; - display: inline-block; - width: 14px; - height: 14px; - top: 29px; -} - -.mx_EventTile_continuation .mx_EventTile_readAvatars, -.mx_EventTile_info .mx_EventTile_readAvatars, -.mx_EventTile_emote .mx_EventTile_readAvatars { - top: 7px; -} - -.mx_EventTile_readAvatars .mx_BaseAvatar { - position: absolute; - display: inline-block; -} - -.mx_EventTile_readAvatarRemainder { - color: $event-timestamp-color; - font-size: 11px; - position: absolute; -} - -/* all the overflow-y: hidden; are to trap Zalgos - - but they introduce an implicit overflow-x: auto. - so make that explicitly hidden too to avoid random - horizontal scrollbars occasionally appearing, like in - https://github.com/vector-im/vector-web/issues/1154 - */ -.mx_EventTile_content { - display: block; - overflow-y: hidden; - overflow-x: hidden; - margin-right: 34px; -} - -/* De-zalgoing */ -.mx_EventTile_body { - overflow-y: hidden; -} - -/* End to end encryption stuff */ - -.mx_EventTile_e2eIcon { - display: block; - position: absolute; - top: 9px; - left: 46px; - z-index: 2; - cursor: pointer; -} - -.mx_EventTile_12hr .mx_EventTile_e2eIcon { - padding-left: 5px; -} - -.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { - padding-left: 60px; -} - -.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line { - padding-left: 78px; -} - -.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { - border-left: $e2e-verified-color 5px solid; -} -.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { - border-left: $e2e-unverified-color 5px solid; -} - -.mx_EventTile:hover.mx_EventTile_verified .mx_MessageTimestamp, -.mx_EventTile:hover.mx_EventTile_unverified .mx_MessageTimestamp { - left: 3px; - width: auto; -} - -/* -.mx_EventTile_verified .mx_EventTile_e2eIcon { - display: none; -} -*/ - -.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_e2eIcon, -.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_e2eIcon { - display: block; - left: 41px; -} - -/* Various markdown overrides */ - -.mx_EventTile_content .markdown-body { - font-family: inherit ! important; - white-space: normal ! important; - line-height: inherit ! important; - color: inherit; // inherit the colour from the dark or light theme by default (but not for code blocks) - font-size: 14px; -} - -/* have to use overlay rather than auto otherwise Linux and Windows - Chrome gets very confused about vertical spacing: - https://github.com/vector-im/vector-web/issues/754 -*/ -.mx_EventTile_content .markdown-body pre { - overflow-x: overlay; - overflow-y: visible; -} - -.mx_EventTile_content .markdown-body code { - // deliberate constants as we're behind an invert filter - background-color: #f8f8f8; - color: #333; -} - -.mx_EventTile_copyButton { - position: absolute; - display: inline-block; - visibility: hidden; - cursor: pointer; - top: 6px; - right: 6px; - width: 19px; - height: 19px; - background-image: url($copy-button-url); -} - -.mx_EventTile_body pre { - position: relative; - border: 1px solid transparent; -} - -.mx_EventTile:hover .mx_EventTile_body pre -{ - border: 1px solid #e5e5e5; // deliberate constant as we're behind an invert filter -} - -.mx_EventTile_body pre:hover .mx_EventTile_copyButton -{ - visibility: visible; -} - -.mx_EventTile_content .markdown-body h1, -.mx_EventTile_content .markdown-body h2, -.mx_EventTile_content .markdown-body h3, -.mx_EventTile_content .markdown-body h4, -.mx_EventTile_content .markdown-body h5, -.mx_EventTile_content .markdown-body h6 -{ - font-family: inherit ! important; - color: inherit; -} - - -/* Make h1 and h2 the same size as h3. */ -.mx_EventTile_content .markdown-body h1, -.mx_EventTile_content .markdown-body h2 -{ - font-size: 1.5em; -} - -.mx_EventTile_content .markdown-body a { - color: $accent-color; -} - -.mx_EventTile_content .markdown-body .hljs { - display: inline ! important; -} - -/* end of overrides */ - -.mx_MatrixChat_useCompactLayout { - .mx_EventTile { - padding-top: 4px; - } - - .mx_EventTile.mx_EventTile_info { - // same as the padding for non-compact .mx_EventTile.mx_EventTile_info - padding-top: 0px; - font-size: 13px; - .mx_EventTile_line { - line-height: 20px; - } - .mx_EventTile_avatar { - top: 4px; - } - } - - .mx_EventTile .mx_SenderProfile { - font-size: 13px; - } - - .mx_EventTile.mx_EventTile_emote { - // add a bit more space for emotes so that avatars don't collide - padding-top: 8px; - .mx_EventTile_avatar { - top: 2px; - } - .mx_EventTile_line { - padding-top: 0px; - padding-bottom: 1px; - } - } - - .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { - padding-top: 0; - .mx_EventTile_line { - padding-top: 0px; - padding-bottom: 0px; - } - } - - .mx_EventTile_line { - padding-top: 0px; - padding-bottom: 0px; - } - - .mx_EventTile_avatar { - top: 2px; - } - - .mx_EventTile_e2eIcon { - top: 7px; - } - - .mx_EventTile_editButton { - top: 3px; - } - - .mx_EventTile_readAvatars { - top: 27px; - } - - .mx_EventTile_continuation .mx_EventTile_readAvatars, - .mx_EventTile_emote .mx_EventTile_readAvatars { - top: 5px; - } - - .mx_EventTile_info .mx_EventTile_readAvatars { - top: 4px; - } - - .mx_RoomView_MessageList h2 { - margin-top: 6px; - } - - .mx_EventTile_content .markdown-body { - p, ul, ol, dl, blockquote, pre, table { - margin-bottom: 4px; // 1/4 of the non-compact margin-bottom - } - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss deleted file mode 100644 index 4495b142..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_LinkPreviewWidget { - margin-top: 15px; - margin-right: 15px; - margin-bottom: 15px; - display: flex; - border-left: 4px solid $preview-widget-bar-color; - color: $preview-widget-fg-color; -} - -.mx_LinkPreviewWidget_image { - flex: 0 0 100px; - margin-left: 15px; - text-align: center; - cursor: pointer; -} - -.mx_LinkPreviewWidget_caption { - margin-left: 15px; - flex: 1 1 auto; -} - -.mx_LinkPreviewWidget_title { - display: inline; - font-weight: bold; - white-space: normal; -} - -.mx_LinkPreviewWidget_siteName { - display: inline; -} - -.mx_LinkPreviewWidget_description { - margin-top: 8px; - white-space: normal; - word-wrap: break-word; -} - -.mx_LinkPreviewWidget_cancel { - visibility: hidden; - cursor: pointer; - flex: 0 0 40px; -} - -.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { - visibility: visible; -} - -.mx_MatrixChat_useCompactLayout { - .mx_LinkPreviewWidget { - margin-top: 6px; - margin-bottom: 6px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss deleted file mode 100644 index 5888820e..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss +++ /dev/null @@ -1,74 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MemberDeviceInfo { - padding: 10px 0px; -} - -.mx_MemberDeviceInfo.mx_DeviceVerifyButtons { - padding: 6px 0; - display: flex; - flex-wrap: wrap; - justify-content: space-between; -} - -.mx_MemberDeviceInfo_textButton { - @mixin mx_DialogButton_small; - margin: 2px; - flex: 1; -} - -.mx_MemberDeviceInfo_textButton:hover { - @mixin mx_DialogButton_hover; -} - -.mx_MemberDeviceInfo_deviceId { - font-size: 13px; -} - -.mx_MemberDeviceInfo_deviceInfo { - margin-bottom: 10px; - padding-bottom: 10px; - border-bottom: 1px solid rgba(0,0,0,0.1); -} - -/* "Unblacklist" is too long for a regular button: make it wider and - reduce the padding. */ -.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, -.mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { - width: 8em; - padding-left: 1em; - padding-right: 1em; -} - -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { - float: right; - padding-left: 1em; -} - -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified { - color: $e2e-verified-color; -} - -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified { - color: $e2e-unverified-color; -} - -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { - color: $e2e-warning-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss deleted file mode 100644 index 5d47275e..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss +++ /dev/null @@ -1,112 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MemberInfo { - margin-top: 20px; - padding-right: 20px; - height: 100%; - overflow-y: auto; -} - -.mx_MemberInfo h2 { - margin-top: 6px; -} - -.mx_MemberInfo .mx_RoomTile_nameContainer { - width: 154px; -} - -.mx_MemberInfo .mx_RoomTile_badge { - display: none; -} - -.mx_MemberInfo .mx_RoomTile_name { - width: 160px; -} - -.mx_MemberInfo_cancel { - float: right; - margin-right: 10px; - cursor: pointer; -} - -.mx_MemberInfo_avatar { - clear: both; -} - -.mx_MemberInfo_avatar .mx_BaseAvatar { -} - -.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { - cursor: zoom-in; -} - -.mx_MemberInfo_profile { - margin-bottom: 16px; -} - -.mx_MemberInfo h3 { - text-transform: uppercase; - color: $h3-color; - font-weight: 600; - font-size: 13px; - margin-top: 16px; - margin-bottom: 14px; -} - -.mx_MemberInfo_profileField { - font-size: 13px; - position: relative; - background-color: $primary-bg-color; -} - -.mx_MemberInfo_buttons { - margin-bottom: 16px; -} - -.mx_MemberInfo_field { - cursor: pointer; - font-size: 13px; - color: $accent-color; - margin-left: 8px; - line-height: 23px; -} - -.mx_MemberInfo_createRoom { - cursor: pointer; -} - -.mx_MemberInfo_createRoom_label { - width: initial ! important; - cursor: pointer; -} - -.mx_MemberInfo label { - font-size: 13px; -} - -.mx_MemberInfo label .mx_MemberInfo_label_text { - display: inline-block; - max-width: 180px; - vertical-align: text-top; -} - -.mx_MemberInfo input[type="radio"] { - vertical-align: -2px; - margin-right: 5px; - margin-left: 8px; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss deleted file mode 100644 index 83fc70ae..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ /dev/null @@ -1,116 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MemberList, -.mx_GroupMemberList, -.mx_GroupRoomList { - height: 100%; - - margin-top: 12px; - margin-right: 20px; - - flex: 1; - - display: flex; - - flex-direction: column; -} - -.mx_MemberList .mx_Spinner { - flex: 0 0 auto; -} - -.mx_MemberList_chevron { - position: absolute; - right: 35px; - margin-top: -15px; -} - -.mx_MemberList_border { - overflow-y: auto; - - order: 1; - flex: 1 1 0px; -} - -.mx_MemberList_query, -.mx_GroupMemberList_query, -.mx_GroupRoomList_query { - font-family: $font-family; - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; - margin-left: 3px; - font-size: 14px; - margin-bottom: 8px; - width: 189px; -} - -.mx_MemberList_query::-moz-placeholder, -.mx_GroupMemberList_query::-moz-placeholder, -.mx_GroupRoomList_query::-moz-placeholder { - color: $primary-fg-color; - opacity: 0.5; - font-size: 14px; -} - -.mx_MemberList_query::-webkit-input-placeholder, -.mx_GroupMemberList_query::-webkit-input-placeholder, -.mx_GroupRoomList_query::-webkit-input-placeholder { - color: $primary-fg-color; - opacity: 0.5; - font-size: 14px; -} - -.mx_MemberList_joined { - order: 2; - flex: 1 0 0; - - overflow-y: auto; -} - -/* -.mx_MemberList_invited { - order: 3; - flex: 0 0 100px; - overflow-y: auto; -} -*/ - -.mx_GroupMemberList_invited h2, -.mx_MemberList_invited h2 { - text-transform: uppercase; - color: $h3-color; - font-weight: 600; - font-size: 13px; - padding-left: 3px; - padding-right: 12px; - margin-top: 8px; - margin-bottom: 4px; -} - -/* we have to have display: table in order for the horizontal wrapping to work */ -.mx_MemberList_wrapper { - display: table; - table-layout: fixed; - width: 100%; -} - -.mx_MemberList_outerWrapper { - height: 0px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss deleted file mode 100644 index 98be3885..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ /dev/null @@ -1,240 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MessageComposer_wrapper { - max-width: 960px; - vertical-align: middle; - margin: auto; - border-top: 1px solid $primary-hairline-color; - position: relative; -} - -.mx_MessageComposer_autocomplete_wrapper { - position: relative; - height: 0; -} - -.mx_MessageComposer_row { - display: flex; - flex-direction: row; - align-items: center; - width: 100%; -} - -.mx_MessageComposer .mx_MessageComposer_avatar { - padding-left: 10px; - padding-right: 28px; -} - -.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { - display: block; -} - -.mx_MessageComposer_composecontrols { - width: 100%; -} - -.mx_MessageComposer_e2eIcon { - position: absolute; - left: 44px; -} - -.mx_MessageComposer_noperm_error { - width: 100%; - height: 60px; - font-style: italic; - color: $greyed-fg-color; - display: flex; - align-items: center; - justify-content: center; -} - -.mx_MessageComposer_input_wrapper { - flex: 1; - display: flex; - flex-direction: column; -} - -.mx_MessageComposer_input { - flex: 1; - vertical-align: middle; - display: flex; - flex-direction: column; - min-height: 60px; - justify-content: center; - align-items: flex-start; - font-size: 14px; - margin-right: 6px; -} - -@keyframes visualbell -{ - from { background-color: #faa } - to { background-color: $primary-bg-color } -} - -.mx_MessageComposer_input_error { - animation: 0.2s visualbell; -} - -.mx_MessageComposer_input_empty .public-DraftEditorPlaceholder-root { - display: none; -} - -.mx_MessageComposer_input .DraftEditor-root { - width: 100%; - flex: 1; - word-break: break-word; - max-height: 120px; - min-height: 21px; - overflow: auto; -} - -.mx_MessageComposer_input .DraftEditor-root .DraftEditor-editorContainer { - /* Ensure mx_UserPill and mx_RoomPill (see _RichText) are not obscured from the top */ - padding-top: 2px; -} - -.mx_MessageComposer .public-DraftStyleDefault-block { - overflow-x: hidden; -} - -.mx_MessageComposer_input blockquote { - color: $blockquote-fg-color; - margin: 0 0 16px; - padding: 0 15px; - border-left: 4px solid $blockquote-bar-color; -} - -.mx_MessageComposer_input pre.public-DraftStyleDefault-pre pre { - background-color: $rte-code-bg-color; - border-radius: 3px; - padding: 10px; -} - -.mx_MessageComposer_input textarea { - display: block; - width: 100%; - padding: 0px; - margin-top: 6px; - margin-bottom: 6px; - border: 0px; - resize: none; - outline: none; - box-shadow: none; - color: $primary-fg-color; - background-color: $primary-bg-color; - font-size: 14px; - max-height: 120px; - overflow: auto; - /* needed for FF */ - font-family: $font-family; -} - -/* hack for FF as vertical alignment of custom placeholder text is broken */ -.mx_MessageComposer_input textarea::-moz-placeholder { - line-height: 100%; - color: $accent-color; - opacity: 1.0; -} -.mx_MessageComposer_input textarea::-webkit-input-placeholder { - color: $accent-color; -} - -.mx_MessageComposer_upload, -.mx_MessageComposer_hangup, -.mx_MessageComposer_voicecall, -.mx_MessageComposer_videocall, -.mx_MessageComposer_apps { - /*display: table-cell;*/ - /*vertical-align: middle;*/ - /*padding-left: 10px;*/ - padding-right: 5px; - cursor: pointer; - padding-top: 4px; -} - -.mx_MessageComposer_upload object, -.mx_MessageComposer_hangup object, -.mx_MessageComposer_voicecall object, -.mx_MessageComposer_videocall object, -.mx_MessageComposer_apps object { - pointer-events: none; -} - -.mx_MessageComposer_formatting { - cursor: pointer; - margin: 0 11px; - width: 24px; - height: 18px; -} - -.mx_MessageComposer_formatbar_wrapper { - width: 100%; - background-color: $menu-bg-color; - box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); -} - -.mx_MessageComposer_formatbar { - margin: auto; - max-width: 960px; - display: flex; - - height: 30px; - - box-sizing: border-box; - padding-left: 62px; - - flex-direction: row; - align-items: center; - font-size: 10px; - color: $greyed-fg-color; -} - -.mx_MessageComposer_formatbar * { - margin-right: 4px; -} - -.mx_MessageComposer_format_button, -.mx_MessageComposer_formatbar_cancel, -.mx_MessageComposer_formatbar_markdown { - cursor: pointer; -} - -.mx_MessageComposer_formatbar_cancel { - margin-right: 22px; -} - -.mx_MessageComposer_formatbar_markdown { - margin-right: 64px; -} - -.mx_MessageComposer_input_markdownIndicator { - cursor: pointer; - height: 10px; - padding: 4px 4px 4px 0; - opacity: 0.8; -} - -.mx_MatrixChat_useCompactLayout { - .mx_MessageComposer_input { - min-height: 50px; - } - - .mx_MessageComposer_noperm_error { - height: 50px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventTile.scss deleted file mode 100644 index ca790ef8..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventTile.scss +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2017 Travis Ralston - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_PinnedEventTile { - min-height: 40px; - margin-bottom: 5px; - width: 100%; - border-radius: 5px; // for the hover -} - -.mx_PinnedEventTile:hover { - background-color: $event-selected-color; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_sender { - color: #868686; - font-size: 0.8em; - vertical-align: top; - display: block; - padding-bottom: 3px; -} - -.mx_PinnedEventTile .mx_EventTile_content { - margin-left: 50px; - position: relative; - top: 0; - left: 0; -} - -.mx_PinnedEventTile .mx_BaseAvatar { - float: left; - margin-right: 10px; -} - -.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { - display: block; -} - -.mx_PinnedEventTile_actions { - float: right; - margin-right: 10px; - display: none; -} - -.mx_PinnedEventTile_unpinButton { - display: inline-block; - cursor: pointer; - margin-left: 10px; -} - -.mx_PinnedEventTile_gotoButton { - display: inline-block; - font-size: 0.8em; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss deleted file mode 100644 index 663d5bdf..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2017 Travis Ralston - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_PinnedEventsPanel { - border-top: 1px solid $primary-hairline-color; -} - -.mx_PinnedEventsPanel_body { - max-height: 300px; - overflow-y: auto; - padding-bottom: 15px; -} - -.mx_PinnedEventsPanel_header { - margin: 0; - padding-top: 8px; - padding-bottom: 15px; -} - -.mx_PinnedEventsPanel_cancel { - margin: 12px; - float: right; - display: inline-block; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PresenceLabel.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_PresenceLabel.scss deleted file mode 100644 index 682c849c..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_PresenceLabel.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_PresenceLabel { - font-size: 11px; - opacity: 0.5; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_QuotePreview.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_QuotePreview.scss deleted file mode 100644 index 86fd79d4..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_QuotePreview.scss +++ /dev/null @@ -1,36 +0,0 @@ -.mx_QuotePreview { - position: absolute; - bottom: 0; - z-index: 1000; - width: 100%; - border: 1px solid $primary-hairline-color; - background: $primary-bg-color; - border-bottom: none; - border-radius: 4px 4px 0 0; - max-height: 50vh; - overflow: auto -} - -.mx_QuotePreview_section { - border-bottom: 1px solid $primary-hairline-color; -} - -.mx_QuotePreview_header { - margin: 12px; - color: $primary-fg-color; - font-weight: 400; - opacity: 0.4; -} - -.mx_QuotePreview_title { - float: left; -} - -.mx_QuotePreview_cancel { - float: right; - cursor: pointer; -} - -.mx_QuotePreview_clear { - clear: both; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss deleted file mode 100644 index 9c1349ad..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ /dev/null @@ -1,245 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* add 20px to the height of the header when editing */ -.mx_RoomHeader_editing { - flex: 0 0 93px ! important; -} - -.mx_RoomHeader_wrapper { - max-width: 960px; - margin: auto; - height: 70px; - align-items: center; - display: flex; -} - -.mx_RoomHeader_leftRow { - margin-left: -2px; - order: 1; - flex: 1; - overflow: hidden; -} - -.mx_RoomHeader_spinner { - height: 36px; - order: 2; - padding-left: 12px; - padding-right: 12px; -} - -.mx_RoomHeader_textButton { - @mixin mx_DialogButton; - margin-right: 8px; - margin-top: -5px; - order: 2; -} - -.mx_RoomHeader_textButton:hover { - @mixin mx_DialogButton_hover; -} - -.mx_RoomHeader_textButton_danger { - background-color: $warning-color; -} - -.mx_RoomHeader_cancelButton { - order: 2; - cursor: pointer; - padding-left: 12px; - padding-right: 12px; -} - -.mx_RoomHeader_rightRow { - margin-top: 4px; - background-color: $primary-bg-color; - display: flex; - align-items: center; - order: 3; -} - -.mx_RoomHeader_info { - display: table-cell; - width: 100%; - vertical-align: middle; -} - -.mx_RoomHeader_simpleHeader { - line-height: 70px; - color: $primary-fg-color; - font-size: 22px; - font-weight: bold; - overflow: hidden; - margin-left: 63px; - text-overflow: ellipsis; - width: 100%; -} - -.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { - float: right; -} - -.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { - margin-left: 14px; - margin-right: 24px; - vertical-align: -4px; -} - -.mx_RoomHeader_name { - vertical-align: middle; - width: 100%; - height: 31px; - overflow: hidden; - color: $primary-fg-color; - font-weight: bold; - font-size: 22px; - padding-left: 19px; - padding-right: 16px; - /* why isn't text-overflow working? */ - text-overflow: ellipsis; - border-bottom: 1px solid transparent; -} - -.mx_RoomHeader_nametext { - display: inline-block; -} - -.mx_RoomHeader_settingsHint { - color: $settings-grey-fg-color ! important; -} - -.mx_RoomHeader_searchStatus { - display: inline-block; - font-weight: normal; - opacity: 0.6; -} - -.mx_RoomHeader_settingsButton object { - pointer-events: none; -} - -.mx_RoomHeader_name, -.mx_RoomHeader_avatar, -.mx_RoomHeader_avatarPicker, -.mx_RoomHeader_avatarPicker_edit, -.mx_RoomHeader_avatarPicker_remove { - cursor: pointer; -} - -.mx_RoomHeader_avatarPicker_remove { - position: absolute; - top: -11px; - right: -9px; -} - -.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { - color: $accent-color; -} - -.mx_RoomHeader_placeholder { - color: $settings-grey-fg-color ! important; -} - -.mx_RoomHeader_editable { - border-bottom: 1px solid $strong-input-border-color ! important; - min-width: 150px; - cursor: text; -} - -.mx_RoomHeader_editable:focus { - border-bottom: 1px solid $accent-color ! important; - outline: none; - box-shadow: none; -} - -.mx_RoomHeader_topic { - vertical-align: bottom; - float: left; - max-height: 38px; - color: $settings-grey-fg-color; - font-weight: 300; - font-size: 13px; - margin-left: 19px; - margin-right: 16px; - overflow: hidden; - text-overflow: ellipsis; - border-bottom: 1px solid transparent; - column-width: 960px; -} - -.mx_RoomHeader_avatar { - display: table-cell; - width: 48px; - height: 50px; - vertical-align: middle; -} - -.mx_RoomHeader_avatar .mx_BaseAvatar_image { - object-fit: cover; -} - -.mx_RoomHeader_avatarPicker { - margin-top: 23px; - position: relative; -} - -.mx_RoomHeader_avatarPicker_edit { - margin-left: 16px; - margin-top: 4px; -} - -.mx_RoomHeader_avatarPicker_edit > label { - cursor: pointer; -} - -.mx_RoomHeader_avatarPicker_edit > input { - display: none; -} - -.mx_RoomHeader_button { - margin-left: 12px; - cursor: pointer; -} - -.mx_RoomHeader_button object { - pointer-events: none; -} - -.mx_RoomHeader_voipButton { - display: table-cell; -} - -.mx_RoomHeader_voipButtons { - margin-top: 18px; -} - -.mx_RoomHeader_pinnedButton { - position: relative; -} - -.mx_RoomHeader_pinsIndicator { - position: absolute; - right: 0; - bottom: 4px; - width: 8px; - height: 8px; - border-radius: 8px; - background-color: $pinned-color; -} - -.mx_RoomHeader_pinsIndicatorUnread { - background-color: $pinned-unread-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss deleted file mode 100644 index d8a8d58a..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomList { - padding-bottom: 12px; - min-height: 400px; -} - -.mx_RoomList_expandButton { - margin-left: 8px; - cursor: pointer; - padding-left: 12px; - padding-right: 12px; -} - -/* Evil hacky override until Chrome fixes drop and drag table cells - and we can correctly fix horizontal wrapping in the sidebar again */ -.mx_RoomList_scrollbar .gm-scroll-view { - overflow-x: hidden ! important; - overflow-y: scroll ! important; -} - -/* Make sure the scrollbar is above the sticky headers from RoomList */ -.mx_RoomList_scrollbar .gm-scrollbar.-vertical { - z-index: 6; -} - -.mx_RoomList_emptySubListTip { - font-size: 13px; - margin-left: 18px; - margin-right: 18px; - margin-top: 8px; - margin-bottom: 7px; - padding: 5px; - border: 1px dashed $accent-color; - color: $primary-fg-color; - background-color: $droptarget-bg-color; - border-radius: 4px; - line-height: 16px; -} - -.mx_RoomList_emptySubListTip .mx_RoleButton { - vertical-align: -2px; -} - -.mx_RoomList_headerButtons { - position: absolute; - right: 60px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss deleted file mode 100644 index 331eb582..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomPreviewBar { - text-align: center; - height: 176px; - background-color: $event-selected-color; - align-items: center; - flex-direction: column; - justify-content: center; - display: flex; - background-color: $preview-bar-bg-color; - -webkit-align-items: center; -} - -.mx_RoomPreviewBar_wrapper { -} - -.mx_RoomPreviewBar_invite_text { - color: $primary-fg-color; -} - -.mx_RoomPreviewBar_join_text { - color: $warning-color; -} - -.mx_RoomPreviewBar_preview_text { - margin-top: 25px; - color: $settings-grey-fg-color; -} - -.mx_RoomPreviewBar_join_text a { - text-decoration: underline; - cursor: pointer; -} - -.mx_RoomPreviewBar_warning { - display: flex; - align-items: center; - padding: 8px; -} - -.mx_RoomPreviewBar_warningIcon { - padding: 12px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss deleted file mode 100644 index 4013af4c..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ /dev/null @@ -1,247 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomSettings { - margin-left: 65px; - margin-bottom: 20px; -} - -.mx_RoomSettings_leaveButton, -.mx_RoomSettings_unbanButton { - @mixin mx_DialogButton; - position: relative; - margin-right: 8px; -} - -.mx_RoomSettings_leaveButton:hover, -.mx_RoomSettings_unbanButton:hover { - @mixin mx_DialogButton_hover; -} - -.mx_RoomSettings_integrationsButton_error { - position: relative; - cursor: not-allowed; -} -.mx_RoomSettings_integrationsButton_error img { - position: absolute; - right: -5px; - top: -5px; -} -.mx_RoomSettings_leaveButton, -.mx_RoomSettings_integrationsButton_error { - float: right; -} -.mx_RoomSettings_integrationsButton_error .mx_RoomSettings_integrationsButton_errorPopup { - display: none; -} -.mx_RoomSettings_integrationsButton_error:hover .mx_RoomSettings_integrationsButton_errorPopup { - display: inline; -} -.mx_RoomSettings_integrationsButton_errorPopup { - position: absolute; - top: 110%; - left: -125%; - width: 348%; - padding: 2%; - font-size: 10pt; - line-height: 1.5em; - border-radius: 5px; - background-color: $accent-color; - color: $accent-fg-color; - text-align: center; -} -.mx_RoomSettings_unbanButton { - display: inline; -} - -.mx_RoomSettings_e2eIcon { - padding-left: 4px; - padding-right: 7px; -} - -.mx_RoomSettings_leaveButton { - margin-right: 32px; -} - -.mx_RoomSettings_powerLevels { - display: table; -} - -.mx_RoomSettings_powerLevel { - display: table-row; -} - -.mx_RoomSettings_powerLevelKey, -.mx_RoomSettings_powerLevel .mx_PowerSelector { - display: table-cell; - padding-bottom: 5px; -} - -.mx_RoomSettings_powerLevelKey { - text-align: right; - padding-right: 0.3em; -} - -.mx_RoomSettings h3 { - text-transform: uppercase; - color: $h3-color; - font-weight: 600; - font-size: 13px; - margin-top: 36px; - margin-bottom: 10px; -} - -.mx_RoomSettings .mx_RoomSettings_toggles label { - margin-bottom: 8px; - display: block; -} - -.mx_RoomSettings .mx_RoomSettings_toggles input[type="checkbox"], -.mx_RoomSettings .mx_RoomSettings_toggles input[type="radio"] { - margin-right: 7px; -} - -.mx_RoomSettings .mx_RoomSettings_tags input[type="checkbox"] { - margin-left: 1em; - margin-right: 7px; -} - -.mx_RoomSettings .mx_RoomSettings_tags { - margin-bottom: 8px; -} - -.mx_RoomSettings .mx_RoomSettings_roomColor { - display: inline-block; - position: relative; - width: 37px; - height: 37px; - border: 1px solid #979797; - margin-right: 13px; - cursor: pointer; -} - -.mx_RoomSettings .mx_RoomSettings_roomColor_selected { - position: absolute; - left: 10px; - top: 4px; - cursor: default ! important; -} - -.mx_RoomSettings .mx_RoomSettings_roomColorPrimary { - height: 10px; - position: absolute; - bottom: 0px; - width: 100%; -} - -.mx_RoomSettings .mx_RoomSettings_aliasLabel { - margin-bottom: 8px; -} - -.mx_RoomSettings .mx_RoomSettings_aliasesTable { - margin-top: 12px; - margin-bottom: 0px; - margin-left: 56px; - display: table; -} - -.mx_RoomSettings .mx_RoomSettings_aliasesTableRow { - display: table-row; - margin-bottom: 16px; -} - -.mx_RoomSettings .mx_RoomSettings_alias { - max-width: 400px; - margin-bottom: 16px; - /* - commented out so margin applies - display: table-cell; */ -} - -.mx_RoomSettings .mx_RoomSettings_addAlias, -.mx_RoomSettings .mx_RoomSettings_deleteAlias { - display: table-cell; - padding-left: 0.5em; - position: relative; - cursor: pointer; -} - -.mx_RoomSettings .mx_RoomSettings_addAlias img, -.mx_RoomSettings .mx_RoomSettings_deleteAlias img { - visibility: hidden; -} - -.mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_addAlias img, -.mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_deleteAlias img { - visibility: visible; -} - -.mx_RoomSettings_warning { - color: $warning-color; - font-weight: bold; - margin-top: 8px; - margin-bottom: 8px; -} - -.mx_RoomSettings_editable { - border: 0px; - border-bottom: 1px solid $strong-input-border-color; - padding: 0px; - min-width: 240px; -} - -.mx_RoomSettings_editable:focus { - border-bottom: 1px solid $accent-color; - outline: none; - box-shadow: none; -} - -.mx_RoomSettings_deleteAlias, -.mx_RoomSettings_addAlias { - display: table-cell; - visibility: visible; -} - -.mx_RoomSettings_deleteAlias:hover, -.mx_RoomSettings_addAlias:hover { - visibility: visible; -} - -.mx_RoomSettings_aliasPlaceholder { - color: $settings-grey-fg-color; -} - -.mx_RoomSettings_buttons { - text-align: right; - margin-bottom: 16px; -} - -.mx_RoomSettings_button { - display: inline; - border: 0px; - height: 36px; - border-radius: 36px; - font-weight: 400; - font-size: 15px; - color: $accent-fg-color; - background-color: $accent-color; - width: auto; - margin: auto; - padding: 6px; - padding-left: 1em; - padding-right: 1em; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss deleted file mode 100644 index a59cd3e8..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss +++ /dev/null @@ -1,182 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomTile { - position: relative; - cursor: pointer; - font-size: 13px; - display: block; - height: 34px; - - background-color: $secondary-accent-color; -} - -.mx_RoomTile_tooltip { - display: inline-block; - position: relative; - top: -54px; - left: -12px; -} - - -.mx_RoomTile_nameContainer { - display: inline-block; - width: 180px; - height: 24px; -} - -.mx_RoomTile_avatar_container { - position: relative; -} - -.mx_RoomTile_avatar { - display: inline-block; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 16px; - padding-right: 6px; - width: 24px; - height: 24px; - vertical-align: middle; -} - -.mx_RoomTile_dm { - display: block; - position: absolute; - bottom: 0; - right: -5px; - z-index: 2; -} - -.mx_RoomTile_name { - display: inline-block; - position: relative; - width: 165px; - vertical-align: middle; - padding-left: 6px; - padding-right: 6px; - padding-top: 2px; - padding-bottom: 3px; - color: $roomtile-name-color; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_RoomTile_invite { -/* color: rgba(69, 69, 69, 0.5); */ -} - -.collapsed .mx_RoomTile_nameContainer { - width: 60px; /* colapsed panel width */ -} - -.collapsed .mx_RoomTile_name { - display: none; -} - -.collapsed .mx_RoomTile_badge { - top: 0px; - min-width: 12px; - border-radius: 16px; - padding: 0px 4px 0px 4px; - z-index: 3; -} - -/* Hide the bottom of speech bubble */ -.collapsed .mx_RoomTile_highlight .mx_RoomTile_badge:after { - display: none; -} - -/* This is the bottom of the speech bubble */ -.mx_RoomTile_highlight .mx_RoomTile_badge:after { - content: ""; - position: absolute; - display: block; - width: 0; - height: 0; - margin-left: 5px; - border-top: 5px solid $warning-color; - border-right: 7px solid transparent; -} - -.mx_RoomTile_badge { - display: inline-block; - min-width: 15px; - height: 15px; - position: absolute; - right: 8px; /*gutter */ - top: 9px; - border-radius: 8px; - color: $accent-fg-color; - font-weight: 600; - font-size: 10px; - text-align: center; - padding-top: 1px; - padding-left: 4px; - padding-right: 4px; -} - -.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton, -.mx_RoomTile.mx_RoomTile_menuDisplayed .mx_RoomTile_badge { - letter-spacing: 0.1em; - opacity: 1; -} - -.mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, -.mx_RoomTile.mx_RoomTile_menuDisplayed.mx_RoomTile_noBadges .mx_RoomTile_badge { - background-color: $neutral-badge-color; -} - -.mx_RoomTile_unreadNotify .mx_RoomTile_badge { - background-color: $accent-color; -} - -.mx_RoomTile_highlight .mx_RoomTile_badge { - background-color: $warning-color; -} - -.mx_RoomTile_unread, .mx_RoomTile_highlight { - font-weight: 800; -} - -.mx_RoomTile_selected { - background-color: $roomtile-selected-bg-color; -} - -.mx_DNDRoomTile { - transform: none; - transition: transform 0.2s; -} - -.mx_DNDRoomTile_dragging { - transform: scale(1.05, 1.05); -} - -.mx_RoomTile:focus { - filter: none ! important; - background-color: $roomtile-focused-bg-color; -} - -.mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { - width: 140px; -} - -.mx_RoomTile_arrow { - position: absolute; - right: 0px; -} - diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss deleted file mode 100644 index 37a66312..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SearchableEntityList { - display: flex; - - flex-direction: column; -} - -.mx_SearchableEntityList_query { - font-family: $font-family; - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; - margin-left: 3px; - font-size: 15px; - margin-bottom: 8px; - width: 189px; -} - -.mx_SearchableEntityList_query::-moz-placeholder { - color: $primary-fg-color; - opacity: 0.5; - font-size: 12px; -} - -.mx_SearchableEntityList_query::-webkit-input-placeholder { - color: $primary-fg-color; - opacity: 0.5; - font-size: 12px; -} - -.mx_SearchableEntityList_listWrapper { - flex: 1; - - overflow-y: auto; -} - -.mx_SearchableEntityList_list { - display: table; - table-layout: fixed; - width: 100%; -} - -.mx_SearchableEntityList_list .mx_EntityTile_chevron { - display: none; -} - -.mx_SearchableEntityList_hrWrapper { - width: 100%; - flex: 0 0 auto; -} - -.mx_SearchableEntityList hr { - height: 1px; - border: 0px; - color: $primary-fg-color; - background-color: $primary-fg-color; - margin-right: 15px; - margin-top: 11px; - margin-bottom: 11px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss deleted file mode 100644 index 1ee56d95..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_TopUnreadMessagesBar { - margin: auto; /* centre horizontally */ - max-width: 960px; - padding-top: 10px; - padding-bottom: 10px; - border-bottom: 1px solid $primary-hairline-color; -} - -.mx_TopUnreadMessagesBar_scrollUp { - display: inline; - cursor: pointer; - text-decoration: underline; -} - -.mx_TopUnreadMessagesBar_scrollUp img { - padding-left: 10px; - padding-right: 31px; - vertical-align: middle; -} - -.mx_TopUnreadMessagesBar_scrollUp span { - opacity: 0.5; -} - -.mx_TopUnreadMessagesBar_close { - float: right; - padding-right: 14px; - padding-top: 3px; - cursor: pointer; -} - -.mx_MatrixChat_useCompactLayout { - .mx_TopUnreadMessagesBar { - padding-top: 4px; - padding-bottom: 4px; - } -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/settings/_DevicesPanel.scss b/src/skins/vector/css/matrix-react-sdk/views/settings/_DevicesPanel.scss deleted file mode 100644 index e4856531..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/settings/_DevicesPanel.scss +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_DevicesPanel { - display: table; - table-layout: fixed; - width: 880px; - border-spacing: 2px; -} - -.mx_DevicesPanel_header { - display: table-header-group; - font-weight: bold; -} - -.mx_DevicesPanel_header > div { - display: table-cell; -} - -.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { - width: 30%; -} - -.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { - width: 20%; -} - -.mx_DevicesPanel_device { - display: table-row; -} - -.mx_DevicesPanel_device > div { - display: table-cell; -} - -.mx_DevicesPanel_myDevice { - font-weight: bold; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss b/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss deleted file mode 100644 index 93ee0e20..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_IntegrationsManager .mx_Dialog { - width: 60%; - height: 70%; - overflow: hidden; - padding: 0px; - max-width: initial; - max-height: initial; -} - -.mx_IntegrationsManager iframe { - background-color: #fff; - border: 0px; - width: 100%; - height: 100%; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss deleted file mode 100644 index deb89a83..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_CallView_voice { - background-color: $accent-color; - color: $accent-fg-color; - cursor: pointer; - text-align: center; - padding: 6px; - font-weight: bold; - font-size: 13px; -} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss deleted file mode 100644 index 64eac25d..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_IncomingCallBox { - text-align: center; - border: 1px solid #a4a4a4; - border-radius: 8px; - background-color: $primary-bg-color; - position: fixed; - z-index: 1000; - padding: 6px; - margin-top: -3px; - margin-left: -20px; - width: 200px; -} - -.mx_IncomingCallBox_chevron { - padding: 12px; - position: absolute; - left: -21px; - top: 0px; -} - -.mx_IncomingCallBox_title { - padding: 6px; - font-weight: bold; -} - -.mx_IncomingCallBox_buttons { - display: flex; -} - -.mx_IncomingCallBox_buttons_cell { - vertical-align: middle; - padding: 6px; - flex: 1; -} - -.mx_IncomingCallBox_buttons_decline, -.mx_IncomingCallBox_buttons_accept { - vertical-align: middle; - width: 80px; - height: 36px; - line-height: 36px; - border-radius: 36px; - color: $accent-fg-color; - margin: auto; -} - -.mx_IncomingCallBox_buttons_decline { - background-color: $voip-decline-color; -} - -.mx_IncomingCallBox_buttons_accept { - background-color: $voip-accept-color; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_VideoView.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_VideoView.scss deleted file mode 100644 index feb60f47..00000000 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_VideoView.scss +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_VideoView { - width: 100%; - position: relative; - z-index: 30; -} - -.mx_VideoView video { - width: 100%; -} - -.mx_VideoView_remoteVideoFeed { - width: 100%; - background-color: #000; - z-index: 50; -} - -.mx_VideoView_localVideoFeed { - width: 25%; - height: 25%; - position: absolute; - left: 10px; - bottom: 10px; - z-index: 100; -} - -.mx_VideoView_localVideoFeed video { - width: auto; - height: 100%; -} - -.mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { - transform: scale(-1, 1); -} diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh deleted file mode 100755 index a7d9a657..00000000 --- a/src/skins/vector/css/rethemendex.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -cd `dirname $0` - -{ - echo "// autogenerated by rethemendex.sh" - - find . \! \( -path ./themes -prune \) -iname _\*.scss | - fgrep -v _components.scss | LC_ALL=C sort | - while read i; do - echo "@import \"$i\";" - done -} > _components.scss diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss deleted file mode 100644 index 35fc1a79..00000000 --- a/src/skins/vector/css/themes/_base.scss +++ /dev/null @@ -1,180 +0,0 @@ -/* Open Sans lacks combining diacritics, so these will fall through - to the next font. Helevetica's diacritics however do not combine - nicely with Open Sans (on OSX, at least) and result in a huge - horizontal mess. Arial empirically gets it right, hence prioritising - Arial here. */ -$font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; - -// typical text (dark-on-white in light skin) -$primary-fg-color: #454545; -$primary-bg-color: #ffffff; - -// used for dialog box text -$light-fg-color: #747474; - -// used for focusing form controls -$focus-bg-color: #dddddd; - -// button UI (white-on-green in light skin) -$accent-fg-color: #ffffff; -$accent-color: #76CFA6; - -$selection-fg-color: $primary-bg-color; - -$focus-brightness: 125%; - -// red warning colour -$warning-color: #ff0064; -$mention-user-pill-bg-color: #ff0064; -$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); - -// pinned events indicator -$pinned-unread-color: #ff0064; // $warning-color -$pinned-color: #888; - -// informational plinth -$info-plinth-bg-color: #f7f7f7; -$info-plinth-fg-color: #888; - -$preview-bar-bg-color: #f7f7f7; - -// left-panel style muted accent color -$secondary-accent-color: #eaf5f0; -$tertiary-accent-color: #d3efe1; - -// used by RoomDirectory permissions -$plinth-bg-color: $secondary-accent-color; - -// used by RoomDropTarget -$droptarget-bg-color: rgba(255,255,255,0.5); - -// used by AddressSelector -$selected-color: $secondary-accent-color; - -// selected for hoverover & selected event tiles -$event-selected-color: #f7f7f7; - -// used for the hairline dividers in RoomView -$primary-hairline-color: #e5e5e5; - -// used for the border of input text fields -$input-border-color: #f0f0f0; - -// apart from login forms, which have stronger border -$strong-input-border-color: #c7c7c7; - -// used for UserSettings EditableText -$input-underline-color: rgba(151, 151, 151, 0.5); -$input-fg-color: rgba(74, 74, 74, 0.9); - -// context menus -$menu-border-color: rgba(187, 187, 187, 0.5); -$menu-bg-color: #f6f6f6; - -$avatar-initial-color: #ffffff; -$avatar-bg-color: #ffffff; - -$h3-color: #3d3b39; - -$dialog-background-bg-color: #e9e9e9; -$lightbox-background-bg-color: #000; - -$greyed-fg-color: #888; - -$neutral-badge-color: #dbdbdb; - -$preview-widget-bar-color: #ddd; -$preview-widget-fg-color: $greyed-fg-color; - -$blockquote-bar-color: #ddd; -$blockquote-fg-color: #777; - -$settings-grey-fg-color: #a2a2a2; - -$voip-decline-color: #f48080; -$voip-accept-color: #80f480; - -$rte-bg-color: #e9e9e9; -$rte-code-bg-color: rgba(0, 0, 0, 0.04); -$rte-room-pill-color: #aaa; - -// ******************** - -$roomtile-name-color: rgba(69, 69, 69, 0.8); -$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); -$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); - -$roomsublist-background: #badece; -$roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: $tertiary-accent-color; -$roomsublist-chevron-color: $accent-color; - -$panel-divider-color: rgba(118, 207, 166, 0.2); - -// ******************** - -$widget-menu-bar-bg-color: $tertiary-accent-color; - -// ******************** - -// event tile lifecycle -$event-encrypting-color: #abddbc; -$event-sending-color: #ddd; -$event-notsent-color: #f44; - -// event redaction -$event-redacted-fg-color: #e2e2e2; -$event-redacted-border-color: #cccccc; - -// event timestamp -$event-timestamp-color: #acacac; - -$edit-button-url: "../../img/icon_context_message.svg"; -$copy-button-url: "../../img/icon_copy_message.svg"; - -// e2e -$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color -$e2e-unverified-color: #e8bf37; -$e2e-warning-color: #ba6363; - -// presence -$presence-online: #60de00; -$presence-unavailable: #deb800; -$presence-offline: #b7b7b7; - -/*** ImageView ***/ -$lightbox-bg-color: #454545; -$lightbox-fg-color: #ffffff; -$lightbox-border-color: #ffffff; - -// unused? -$progressbar-color: #000; - -// ***** Mixins! ***** - -@define-mixin mx_DialogButton { - /* align images in buttons (eg spinners) */ - vertical-align: middle; - border: 0px; - border-radius: 36px; - font-family: $font-family; - font-size: 14px; - color: $accent-fg-color; - background-color: $accent-color; - width: auto; - padding: 7px; - padding-left: 1.5em; - padding-right: 1.5em; - cursor: pointer; - display: inline-block; - outline: none; -} - -@define-mixin mx_DialogButton_hover { -} - -@define-mixin mx_DialogButton_small { - @mixin mx_DialogButton; - font-size: 15px; - padding: 0px 1.5em 0px 1.5em; -} diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss deleted file mode 100644 index b0ca76b8..00000000 --- a/src/skins/vector/css/themes/_dark.scss +++ /dev/null @@ -1,199 +0,0 @@ - -// typical text (dark-on-white in light skin) -$primary-fg-color: #dddddd; -$primary-bg-color: #2d2d2d; - -// used for focusing form controls -$focus-bg-color: #101010; - -// used for dialog box text -$light-fg-color: #747474; - -// button UI (white-on-green in light skin) -$accent-fg-color: $primary-bg-color; -$accent-color: #76CFA6; - -$selection-fg-color: $primary-fg-color; - -$focus-brightness: 200%; - -// red warning colour -$warning-color: #ff0064; - -// groups -$info-plinth-bg-color: #454545; - -$other-user-pill-bg-color: rgba(255, 255, 255, 0.1); - -$preview-bar-bg-color: #333; - -// left-panel style muted accent color -$secondary-accent-color: $primary-bg-color; -$tertiary-accent-color: #454545; - -// stop the tinter trying to change the secondary accent color -// by overriding the key to something untintable -// XXX: this is a bit of a hack. -#mx_theme_secondaryAccentColor { - color: #c0ffee ! important; -} - -#mx_theme_tertiaryAccentColor { - color: #c0ffee ! important; -} - -// used by RoomDirectory permissions -$plinth-bg-color: #474747; - -// used by RoomDropTarget -$droptarget-bg-color: rgba(45,45,45,0.5); - -// used by AddressSelector -$selected-color: #000000; - -// selected for hoverover & selected event tiles -$event-selected-color: #353535; - -// used for the hairline dividers in RoomView -$primary-hairline-color: #474747; - -// used for the border of input text fields -$input-border-color: #3a3a3a; - -// apart from login forms, which have stronger border -$strong-input-border-color: #656565; - -// used for UserSettings EditableText -$input-underline-color: $primary-fg-color; -$input-fg-color: $primary-fg-color; - -// context menus -$menu-border-color: rgba(187, 187, 187, 0.5); -$menu-bg-color: #373737; - -$avatar-initial-color: #2d2d2d; -$avatar-bg-color: #ffffff; - -$h3-color: $primary-fg-color; - -$dialog-background-bg-color: #000; -$lightbox-background-bg-color: #000; - -$greyed-fg-color: #888; - -$neutral-badge-color: #888; - -$preview-widget-bar-color: $menu-bg-color; -$preview-widget-fg-color: $greyed-fg-color; - -$blockquote-bar-color: #ddd; -$blockquote-fg-color: #777; - -$settings-grey-fg-color: #a2a2a2; - -$voip-decline-color: #f48080; -$voip-accept-color: #80f480; - -$rte-bg-color: #353535; -$rte-code-bg-color: #000; - -// ******************** - -$roomtile-name-color: rgba(186, 186, 186, 0.8); -$roomtile-selected-bg-color: #333; -$roomtile-focused-bg-color: rgba(255, 255, 255, 0.2); - -$roomsublist-background: #222; -$roomsublist-label-fg-color: $h3-color; -$roomsublist-label-bg-color: $tertiary-accent-color; -$roomsublist-chevron-color: $accent-color; - -$panel-divider-color: rgba(118, 207, 166, 0.2); - -// ******************** - -$widget-menu-bar-bg-color: $tertiary-accent-color; - -// ******************** - -// event tile lifecycle -$event-encrypting-color: rgba(171, 221, 188, 0.4); -$event-sending-color: #888; -$event-notsent-color: #f44; - -// event redaction -$event-redacted-fg-color: #606060; -$event-redacted-border-color: #000000; - -// event timestamp -$event-timestamp-color: #acacac; - -$edit-button-url: "../../img/icon_context_message_dark.svg"; -$copy-button-url: "../../img/icon_copy_message_dark.svg"; - -// e2e -$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color -$e2e-unverified-color: #e8bf37; -$e2e-warning-color: #ba6363; - -/*** ImageView ***/ -$lightbox-bg-color: #454545; -$lightbox-fg-color: #ffffff; -$lightbox-border-color: #ffffff; - -// unused? -$progressbar-color: #000; - -// XXX: copypasted from _base in order to pick up the right FG color... -@define-mixin mx_DialogButton { - /* align images in buttons (eg spinners) */ - vertical-align: middle; - border: 0px; - border-radius: 36px; - font-family: $font-family; - font-size: 14px; - color: $accent-fg-color; - background-color: $accent-color; - width: auto; - padding: 7px; - padding-left: 1.5em; - padding-right: 1.5em; - cursor: pointer; - display: inline-block; - outline: none; -} - -// Nasty hacks to apply a filter to arbitrary monochrome artwork to make it -// better match the theme. Typically applied to dark grey 'off' buttons or -// light grey 'on' buttons. -.mx_filterFlipColor { - filter: invert(1); -} - -.gm-scrollbar .thumb { - filter: invert(1); -} - -// markdown overrides: -.mx_EventTile_content .markdown-body pre:hover { - border-color: #808080 !important; // inverted due to rules below -} -.mx_EventTile_content .markdown-body { - pre, code { - filter: invert(1); - } - - pre code { - filter: none; - } - - table { - tr { - background-color: #000000; - } - - tr:nth-child(2n) { - background-color: #080808; - } - } -} diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss deleted file mode 100644 index 5a37d036..00000000 --- a/src/skins/vector/css/themes/dark.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "_base.scss"; -@import "_dark.scss"; -@import "../_components.scss"; diff --git a/src/skins/vector/css/themes/light.scss b/src/skins/vector/css/themes/light.scss deleted file mode 100644 index ea0f93d5..00000000 --- a/src/skins/vector/css/themes/light.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import "_base.scss"; -@import "../_components.scss"; \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/_fonts.scss b/src/skins/vector/css/vector-web/_fonts.scss deleted file mode 100644 index 52ac95b5..00000000 --- a/src/skins/vector/css/vector-web/_fonts.scss +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Open Sans - * Includes extended Latin, Greek, Cyrillic and Vietnamese character sets - */ - -/* the 'src' links are relative to the bundle.css, which is in a subdirectory. - */ -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); - font-weight: 400; - font-style: italic; -} - -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); - font-weight: 600; - font-style: normal; -} - -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); - font-weight: 600; - font-style: italic; -} - -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Open Sans'; - src: url('../../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); - font-weight: 700; - font-style: italic; -} - -/* - * Fira Mono - * Used for monospace copy, i.e. code - */ - -@font-face { - font-family: 'Fira Mono'; - src: url('../../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Fira Mono'; - src: url('../../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); - font-weight: 700; - font-style: normal; -} diff --git a/src/skins/vector/css/vector-web/structures/_CompatibilityPage.scss b/src/skins/vector/css/vector-web/structures/_CompatibilityPage.scss deleted file mode 100644 index f3f032c9..00000000 --- a/src/skins/vector/css/vector-web/structures/_CompatibilityPage.scss +++ /dev/null @@ -1,19 +0,0 @@ -.mx_CompatibilityPage { - width: 100%; - height: 100%; - background-color: #e55; -} - -.mx_CompatibilityPage_box { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - width: 500px; - height: 300px; - border: 1px solid; - padding: 10px; - background-color: #fcc; -} \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/structures/_HomePage.scss b/src/skins/vector/css/vector-web/structures/_HomePage.scss deleted file mode 100644 index cdac1bcc..00000000 --- a/src/skins/vector/css/vector-web/structures/_HomePage.scss +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_HomePage { - max-width: 960px; - width: 100%; - height: 100%; - margin-left: auto; - margin-right: auto; -} - -.mx_HomePage iframe { - display: block; - width: 100%; - height: 100%; - border: 0px; -} - -.mx_HomePage_body { -// margin-left: 63px; -} diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss deleted file mode 100644 index 96ed5878..00000000 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_LeftPanel { - position: relative; - - display: flex; - flex-direction: column; -} - -.mx_LeftPanel_container { - display: flex; - /* LeftPanel 235px */ - flex: 0 0 235px; -} - -.mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { - /* TagPanel 60px + LeftPanel 235px */ - flex: 0 0 295px; -} - -.mx_LeftPanel_container_collapsed { - /* Collapsed LeftPanel 60px */ - flex: 0 0 60px; -} - -.mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { - /* TagPanel 60px + Collapsed LeftPanel 60px */ - flex: 0 0 120px; -} - -.mx_LeftPanel_hideButton { - position: absolute; - top: 10px; - right: 0px; - padding: 8px; - cursor: pointer; -} - -.mx_LeftPanel_callView { - -} - -.mx_LeftPanel .mx_RoomList_scrollbar { - order: 1; - - flex: 1 1 0; - - overflow-y: auto; - z-index: 6; -} - -.mx_LeftPanel.collapsed .mx_BottomLeftMenu { - flex: 0 0 160px; - margin-bottom: 9px; -} - -.mx_LeftPanel .mx_BottomLeftMenu { - order: 3; - - border-top: 1px solid $panel-divider-color; - margin-left: 16px; /* gutter */ - margin-right: 16px; /* gutter */ - flex: 0 0 60px; - z-index: 1; -} - -.mx_LeftPanel .mx_BottomLeftMenu_options { - margin-top: 18px; -} - -.mx_BottomLeftMenu_options object { - pointer-events: none; -} - -.collapsed .mx_RoleButton { - margin-right: 0px ! important; - padding-top: 3px ! important; - padding-bottom: 3px ! important; -} - -.mx_BottomLeftMenu_options > div { - display: inline-block; -} - -.mx_BottomLeftMenu_options .mx_RoleButton { - margin-left: 0px; - margin-right: 10px; - height: 30px; -} - -.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { - float: right; -} - -.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { - margin-right: 0px; -} - -.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { - float: none; -} - -.mx_MatrixChat_useCompactLayout { - .mx_LeftPanel .mx_BottomLeftMenu { - flex: 0 0 50px; - } - - .mx_LeftPanel.collapsed .mx_BottomLeftMenu { - flex: 0 0 160px; - } - - .mx_LeftPanel .mx_BottomLeftMenu_options { - margin-top: 12px; - } -} diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss deleted file mode 100644 index 85057410..00000000 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RightPanel { - position: relative; - - display: flex; - flex-direction: column; -} - -.mx_RightPanel_header { - order: 1; - - border-bottom: 1px solid $primary-hairline-color; - margin-right: 20px; - - flex: 0 0 70px; -} - -/** Fixme - factor this out with the main header **/ - -.mx_RightPanel_headerButtonGroup { - margin-top: 6px; - display: flex; - width: 100%; - background-color: $primary-bg-color; - margin-left: 0px; -} - -.mx_RightPanel_headerButton { - cursor: pointer; - flex: 0 0 auto; - vertical-align: top; - padding-left: 4px; - padding-right: 5px; - text-align: center; - position: relative; -} - -.mx_RightPanel_headerButton object { - pointer-events: none; - padding-bottom: 3px; -} - -.mx_RightPanel_headerButton_highlight { - width: 25px; - height: 5px; - border-radius: 5px; - background-color: $accent-color; - opacity: 0.2; -} - -.mx_RightPanel_headerButton_badge { - font-size: 11px; - color: $accent-color; - font-weight: bold; - padding-bottom: 2px; -} - -.mx_RightPanel_collapsebutton { - flex: 1; - text-align: right; - margin-top: 20px; -} - -.mx_RightPanel .mx_MemberList, -.mx_RightPanel .mx_MemberInfo, -.mx_RightPanel .mx_GroupRoomList, -.mx_RightPanel_blank { - order: 2; - flex: 1 1 0; -} - -.mx_RightPanel_footer { - order: 3; - - border-top: 1px solid $primary-hairline-color; - margin-right: 20px; - - flex: 0 0 60px; -} - -.mx_RightPanel_footer .mx_RightPanel_invite { - font-size: 14px; - color: $primary-fg-color; - padding-top: 13px; - padding-left: 5px; - cursor: pointer; - display: flex; - align-items: center; -} - -.collapsed .mx_RightPanel_footer .mx_RightPanel_invite { - display: none; -} - -.mx_RightPanel_invite .mx_RightPanel_icon object { - pointer-events: none; -} - -.mx_RightPanel_invite .mx_RightPanel_message { - padding-left: 10px; - line-height: 18px; -} - -.mx_MatrixChat_useCompactLayout { - .mx_RightPanel_footer { - flex: 0 0 50px; - } - - .mx_RightPanel_footer .mx_RightPanel_invite { - line-height: 25px; - padding-top: 8px; - } -} diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss deleted file mode 100644 index 9cd3e728..00000000 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomDirectory { - max-width: 960px; - width: 100%; - margin-left: auto; - margin-right: auto; - margin-bottom: 12px; - color: $primary-fg-color; - word-break: break-word; - - display: flex; - - flex-direction: column; -} - -.mx_RoomDirectory .mx_RoomHeader_simpleHeader { - margin-left: 0px; -} - -.mx_RoomDirectory_list { - flex: 1; - - display: flex; - - flex-direction: column; -} - -.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { - justify-content: flex-start; -} - -.mx_RoomDirectory_listheader { - display: table; - table-layout: fixed; - width: 100%; - margin-top: 12px; - margin-bottom: 12px; - border-spacing: 5px; -} - -.mx_RoomDirectory_searchbox { - display: table-cell; - vertical-align: middle; -} - -.mx_RoomDirectory_listheader .mx_NetworkDropdown { - display: table-cell; - width: 200px; -} - -.mx_RoomDirectory_tableWrapper { - overflow-y: auto; - flex: 1 1 0; -} - -.mx_RoomDirectory_table { - font-size: 14px; - color: $primary-fg-color; - width: 100%; - text-align: left; - table-layout: fixed; -} - -.mx_RoomDirectory_roomAvatar { - width: 24px; - padding-left: 12px; - padding-right: 24px; - vertical-align: top; -} - -.mx_RoomDirectory_roomDescription { - padding-bottom: 16px; -} - -.mx_RoomDirectory_name { - display: inline-block; - font-weight: 600; -} - -.mx_RoomDirectory_perms { - display: inline-block; -} - -.mx_RoomDirectory_perm { - display: inline; - padding-left: 5px; - padding-right: 5px; - margin-right: 5px; - height: 15px; - border-radius: 11px; - background-color: $plinth-bg-color; - text-transform: uppercase; - font-weight: 600; - font-size: 11px; - color: $accent-color; -} - -.mx_RoomDirectory_topic { - cursor: initial; -} - -.mx_RoomDirectory_alias { - font-size: 12px; - color: $settings-grey-fg-color; -} - -.mx_RoomDirectory_roomMemberCount { - text-align: right; - width: 100px; - padding-right: 10px; -} - -.mx_RoomDirectory_table tr { - padding-bottom: 10px; - cursor: pointer; -} diff --git a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss deleted file mode 100644 index a2863460..00000000 --- a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss +++ /dev/null @@ -1,244 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomSubList { - display: table; - table-layout: fixed; - width: 100%; - - background-color: $roomsublist-background; -} - -.mx_RoomSubList_labelContainer { - height: 31px; /* mx_RoomSubList_label height including border */ - width: 235px; /* LHS Panel width */ - position: relative; -} - -.mx_RoomSubList_label { - position: relative; - text-transform: uppercase; - color: $roomsublist-label-fg-color; - font-weight: 600; - font-size: 12px; - width: 203px; /* padding + width = LHS Panel width */ - height: 19px; /* height + padding = 31px = mx_RoomSubList_label height */ - padding-left: 16px; /* gutter */ - padding-right: 16px; /* gutter */ - padding-top: 6px; - padding-bottom: 6px; - cursor: pointer; - background-color: $secondary-accent-color; -} - -.mx_RoomSubList_label.mx_RoomSubList_fixed { - position: fixed; - top: 0; - z-index: 5; - /* pointer-events: none; */ -} - -.collapsed .mx_RoomSubList_label { - height: 17px; - width: 28px; /* collapsed LHS Panel width */ -} - -.collapsed .mx_RoomSubList_labelContainer { - width: 28px; /* collapsed LHS Panel width */ -} - -.mx_RoomSubList_roomCount { - display: inline-block; - font-size: 12px; - font-weight: normal; - color: $accent-color; - padding-left: 5px; - text-transform: none; -} - -.collapsed .mx_RoomSubList_roomCount { - display: none; -} - -.mx_RoomSubList_badge { - display: inline-block; - min-width: 15px; - height: 15px; - position: absolute; - right: 8px; /*gutter */ - top: 7px; - border-radius: 8px; - color: $accent-fg-color; - font-weight: 600; - font-size: 10px; - text-align: center; - padding-top: 1px; - padding-left: 4px; - padding-right: 4px; - background-color: $accent-color; -} - -/* -.collapsed .mx_RoomSubList_badge { - display: none; -} -*/ - -.mx_RoomSubList_badgeHighlight { - background-color: $warning-color; -} - -/* This is the bottom of the speech bubble */ -.mx_RoomSubList_badgeHighlight:after { - content: ""; - position: absolute; - display: block; - width: 0; - height: 0; - margin-left: 5px; - border-top: 5px solid $warning-color; - border-right: 7px solid transparent; -} - -/* Hide the bottom of speech bubble */ -.collapsed .mx_RoomSubList_badgeHighlight:after { - display: none; -} - -.mx_RoomSubList_chevron { - pointer-events: none; - position: absolute; - right: 41px; - top: 11px; -} - -.mx_RoomSubList_chevronDown { - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 6px solid $roomsublist-chevron-color; -} - -.mx_RoomSubList_chevronUp { - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-bottom: 6px solid $roomsublist-chevron-color; -} - -.mx_RoomSubList_chevronRight { - width: 0; - height: 0; - border-top: 5px solid transparent; - border-left: 6px solid $roomsublist-chevron-color; - border-bottom: 5px solid transparent; -} - -/* The overflow section */ -.mx_RoomSubList_ellipsis { - display: block; - line-height: 11px; - height: 18px; - position: relative; - cursor: pointer; - font-size: 13px; - - background-color: $secondary-accent-color; -} - -.collapsed .mx_RoomSubList_ellipsis { - height: 20px; -} - -.mx_RoomSubList_line { - display: inline-block; - width: 159px; - border-top: dotted 2px $accent-color; - vertical-align: middle; -} - -.collapsed .mx_RoomSubList_line { - display: none; -} - -.mx_RoomSubList_more { - display: inline-block; - text-transform: uppercase; - font-size: 10px; - font-weight: 600; - text-align: left; - color: $accent-color; - padding-left: 7px; - padding-right: 7px; - padding-left: 7px; - vertical-align: middle; -} - -.collapsed .mx_RoomSubList_more { - display: none; -} - -.mx_RoomSubList_moreBadge { - display: inline-block; - min-width: 15px; - height: 13px; - position: absolute; - right: 8px; /*gutter */ - top: -2px; - border-radius: 8px; - border: solid 1px $accent-color; - color: $accent-fg-color; - font-weight: 600; - font-size: 10px; - text-align: center; - padding-top: 1px; - padding-left: 3px; - padding-right: 3px; - background-color: $primary-bg-color; - vertical-align: middle; -} - -.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeNotify { - background-color: $accent-color; - border: 0; - padding-top: 3px; - padding-left: 4px; - padding-right: 4px; -} - -.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeHighlight { - background-color: $warning-color; - border: 0; - padding-top: 3px; - padding-left: 4px; - padding-right: 4px; -} - -.collapsed .mx_RoomSubList_moreBadge { - position: static; - margin-left: 16px; - margin-top: 2px; -} - -.mx_RoomSubList_ellipsis .mx_RoomSubList_chevronDown { - position: relative; - top: 4px; - left: 2px; -} - - diff --git a/src/skins/vector/css/vector-web/structures/_ViewSource.scss b/src/skins/vector/css/vector-web/structures/_ViewSource.scss deleted file mode 100644 index a4c7dcf5..00000000 --- a/src/skins/vector/css/vector-web/structures/_ViewSource.scss +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ViewSource pre { - text-align: left; - font-size: 12px; - padding: 0.5em 1em 0.5em 1em; - word-wrap: break-word; - white-space: pre-wrap; -} diff --git a/src/skins/vector/css/vector-web/views/context_menus/_MessageContextMenu.scss b/src/skins/vector/css/vector-web/views/context_menus/_MessageContextMenu.scss deleted file mode 100644 index 85e8080c..00000000 --- a/src/skins/vector/css/vector-web/views/context_menus/_MessageContextMenu.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MessageContextMenu_field { - padding: 3px 6px 3px 6px; - cursor: pointer; - white-space: nowrap; -} - -.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { - font-weight: bold; -} diff --git a/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss b/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss deleted file mode 100644 index bfe81125..00000000 --- a/src/skins/vector/css/vector-web/views/context_menus/_PresenceContextMenuOption.scss +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2017 Travis Ralston - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -.mx_PresenceContextMenuOption_indicator { - width: 10px; - height: 10px; - border-radius: 10px; - display: inline-block; - margin-right: 5px; -} - -.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_online { - background-color: $presence-online; -} - -.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_unavailable { - background-color: $presence-unavailable; -} - -.mx_PresenceContextMenuOption_indicator.mx_PresenceContextMenuOption_indicator_offline { - background-color: $presence-offline; -} - -.mx_PresenceContextMenuOption { - padding: 2px; -} - -.mx_PresenceContextMenuOption.mx_PresenceContextMenuOption_current { - font-weight: 700; -} diff --git a/src/skins/vector/css/vector-web/views/context_menus/_RoomTileContextMenu.scss b/src/skins/vector/css/vector-web/views/context_menus/_RoomTileContextMenu.scss deleted file mode 100644 index 598f8ac2..00000000 --- a/src/skins/vector/css/vector-web/views/context_menus/_RoomTileContextMenu.scss +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomTileContextMenu_tag_field, .mx_RoomTileContextMenu_leave { - padding-top: 8px; - padding-right: 20px; - padding-bottom: 8px; - cursor: pointer; - white-space: nowrap; - display: flex; - align-items: center; - line-height: 16px; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { - font-weight: bold; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { - display: none; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon_set { - display: inline-block; -} - -.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldDisabled { - color: rgba(0, 0, 0, 0.2); -} - -.mx_RoomTileContextMenu_tag_icon { - padding-right: 8px; - padding-left: 4px; - display: inline-block -} - -.mx_RoomTileContextMenu_tag_icon_set { - padding-right: 8px; - padding-left: 4px; - display: none; -} - -.mx_RoomTileContextMenu_separator { - margin-top: 0; - margin-bottom: 0; - border-bottom-style: none; - border-left-style: none; - border-right-style: none; - border-top-style: solid; - border-top-width: 1px; - border-color: $menu-border-color; -} - -.mx_RoomTileContextMenu_leave { - color: $warning-color; -} - -.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { - /* Something to indicate that the icon is the set tag */ -} - -.mx_RoomTileContextMenu_notif_picker { - position: absolute; - top: 16px; - left: 5px; -} - -.mx_RoomTileContextMenu_notif_field { - padding-top: 4px; - padding-right: 6px; - padding-bottom: 10px; - padding-left: 8px; /* 20px */ - cursor: pointer; - white-space: nowrap; - display: flex; - align-items: center; -} - -.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { - font-weight: bold; -} - -.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldDisabled { - color: rgba(0, 0, 0, 0.2); -} - -.mx_RoomTileContextMenu_notif_icon { - padding-right: 4px; - padding-left: 4px; -} - -.mx_RoomTileContextMenu_notif_activeIcon { - display: inline-block; - opacity: 0; - position: relative; - left: -5px; -} - -.mx_RoomTileContextMenu_notif_fieldSet .mx_RoomTileContextMenu_notif_activeIcon { - opacity: 1; -} diff --git a/src/skins/vector/css/vector-web/views/context_menus/_TagTileContextMenu.scss b/src/skins/vector/css/vector-web/views/context_menus/_TagTileContextMenu.scss deleted file mode 100644 index 759b92bd..00000000 --- a/src/skins/vector/css/vector-web/views/context_menus/_TagTileContextMenu.scss +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2018 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_TagTileContextMenu_item { - padding-top: 8px; - padding-right: 20px; - padding-bottom: 8px; - cursor: pointer; - white-space: nowrap; - display: flex; - align-items: center; - line-height: 16px; -} - - -.mx_TagTileContextMenu_item_icon { - padding-right: 8px; - padding-left: 4px; - display: inline-block -} - -.mx_TagTileContextMenu_separator { - margin-top: 0; - margin-bottom: 0; - border-bottom-style: none; - border-left-style: none; - border-right-style: none; - border-top-style: solid; - border-top-width: 1px; - border-color: $menu-border-color; -} diff --git a/src/skins/vector/css/vector-web/views/dialogs/_ChangelogDialog.scss b/src/skins/vector/css/vector-web/views/dialogs/_ChangelogDialog.scss deleted file mode 100644 index 460a5f94..00000000 --- a/src/skins/vector/css/vector-web/views/dialogs/_ChangelogDialog.scss +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2016 Aviral Dasgupta - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_ChangelogDialog_content { - max-height: 300px; - overflow: auto; -} - -.mx_ChangelogDialog_li { - padding: 0.2em; -} diff --git a/src/skins/vector/css/vector-web/views/dialogs/_DevtoolsDialog.scss b/src/skins/vector/css/vector-web/views/dialogs/_DevtoolsDialog.scss deleted file mode 100644 index 8918373e..00000000 --- a/src/skins/vector/css/vector-web/views/dialogs/_DevtoolsDialog.scss +++ /dev/null @@ -1,166 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_DevTools_RoomStateExplorer_button, .mx_DevTools_RoomStateExplorer_query { - margin-bottom: 10px; -} - -.mx_DevTools_label_left { - float: left; -} - -.mx_DevTools_label_right { - float: right; -} - -.mx_DevTools_label_bottom { - clear: both; - border-bottom: 1px solid #e5e5e5; -} - -.mx_DevTools_inputRow -{ - display: table-row; -} - -.mx_DevTools_inputLabelCell -{ - padding-bottom: 21px; - display: table-cell; - font-weight: bold; - padding-right: 24px; -} - -.mx_DevTools_inputCell { - display: table-cell; - padding-bottom: 21px; - width: 240px; -} - -.mx_DevTools_inputCell input -{ - display: inline-block; - border: 0; - border-bottom: 1px solid $input-underline-color; - padding: 0; - width: 240px; - color: $input-fg-color; - font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; - font-size: 16px; -} - -.mx_DevTools_tgl { - display: none; - - // add default box-sizing for this scope - &, - &:after, - &:before, - & *, - & *:after, - & *:before, - & + .mx_DevTools_tgl-btn { - box-sizing: border-box; - &::selection { - background: none; - } - } - - + .mx_DevTools_tgl-btn { - outline: 0; - display: block; - width: 7em; - height: 2em; - position: relative; - cursor: pointer; - user-select: none; - &:after, - &:before { - position: relative; - display: block; - content: ""; - width: 50%; - height: 100%; - } - - &:after { - left: 0; - } - - &:before { - display: none; - } - } - - &:checked + .mx_DevTools_tgl-btn:after { - left: 50%; - } -} - -.mx_DevTools_tgl-flip { - + .mx_DevTools_tgl-btn { - padding: 2px; - transition: all .2s ease; - font-family: sans-serif; - perspective: 100px; - &:after, - &:before { - display: inline-block; - transition: all .4s ease; - width: 100%; - text-align: center; - position: absolute; - line-height: 2em; - font-weight: bold; - color: #fff; - top: 0; - left: 0; - backface-visibility: hidden; - border-radius: 4px; - } - - &:after { - content: attr(data-tg-on); - background: #02C66F; - transform: rotateY(-180deg); - } - - &:before { - background: #FF3A19; - content: attr(data-tg-off); - } - - &:active:before { - transform: rotateY(-20deg); - } - } - - &:checked + .mx_DevTools_tgl-btn { - &:before { - transform: rotateY(180deg); - } - - &:after { - transform: rotateY(0); - left: 0; - background: #7FC6A6; - } - - &:active:after { - transform: rotateY(20deg); - } - } -} diff --git a/src/skins/vector/css/vector-web/views/dialogs/_SetEmailDialog.scss b/src/skins/vector/css/vector-web/views/dialogs/_SetEmailDialog.scss deleted file mode 100644 index 588f10c9..00000000 --- a/src/skins/vector/css/vector-web/views/dialogs/_SetEmailDialog.scss +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SetEmailDialog_email_input { - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $input-fg-color; - background-color: $primary-bg-color; - font-size: 15px; - width: 100%; - max-width: 280px; - margin-bottom: 10px; -} - -.mx_SetEmailDialog_email_input:focus { - outline: none; - box-shadow: none; - border: 1px solid $accent-color; -} - -.mx_SetEmailDialog_email_input_placeholder { -} diff --git a/src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss b/src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss deleted file mode 100644 index 28a8b7c9..00000000 --- a/src/skins/vector/css/vector-web/views/dialogs/_SetPasswordDialog.scss +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SetPasswordDialog_change_password input { - border-radius: 3px; - border: 1px solid $input-border-color; - padding: 9px; - color: $primary-fg-color; - background-color: $primary-bg-color; - font-size: 15px; - width: 100%; - max-width: 280px; - margin-bottom: 10px; -} - -.mx_SetPasswordDialog_change_password_button { - margin-top: 68px; -} - -.mx_SetPasswordDialog .mx_Dialog_content { - margin-bottom: 0px; -} diff --git a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss deleted file mode 100644 index 98503795..00000000 --- a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss +++ /dev/null @@ -1,84 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_NetworkDropdown { - position: relative; -} - -.mx_NetworkDropdown_input { - position: relative; - border-radius: 3px; - border: 1px solid $strong-input-border-color; - font-weight: 300; - font-size: 13px; - user-select: none; -} - -.mx_NetworkDropdown_arrow { - border-color: $primary-fg-color transparent transparent; - border-style: solid; - border-width: 5px 5px 0; - display: block; - height: 0; - position: absolute; - right: 10px; - top: 14px; - width: 0 -} - -.mx_NetworkDropdown_networkoption { - height: 35px; - line-height: 35px; - padding-left: 8px; - padding-right: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.mx_NetworkDropdown_networkoption img { - margin: 5px; - width: 25px; - vertical-align: middle; -} - -input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:focus { - border: 0; - padding-top: 0; - padding-bottom: 0; -} - -.mx_NetworkDropdown_menu { - position: absolute; - left: -1px; - right: -1px; - top: 100%; - z-index: 2; - margin: 0; - padding: 0px; - border-radius: 3px; - border: 1px solid $accent-color; - background-color: $primary-bg-color; -} - -.mx_NetworkDropdown_menu .mx_NetworkDropdown_networkoption:hover { - background-color: $focus-bg-color; -} - -.mx_NetworkDropdown_menu_network { - font-weight: bold; -} - diff --git a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss deleted file mode 100644 index 8ed0698a..00000000 --- a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss +++ /dev/null @@ -1,134 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* This has got to be the most fragile piece of CSS ever written. - But empirically it works on Chrome/FF/Safari - */ - -.mx_ImageView { - display: flex; - width: 100%; - height: 100%; - align-items: center; -} - -.mx_ImageView_lhs { - order: 1; - flex: 1 1 10%; - min-width: 60px; - // background-color: #080; - // height: 20px; -} - -.mx_ImageView_content { - order: 2; - /* min-width hack needed for FF */ - min-width: 0px; - height: 90%; - flex: 15 15 0; - display: flex; - align-items: center; - justify-content: center; -} - -.mx_ImageView_content img { - max-width: 100%; - /* XXX: max-height interacts badly with flex on Chrome and doesn't relayout properly until you refresh */ - max-height: 100%; - /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ - object-fit: contain; - /* background-image: url('../../img/trans.png'); */ - pointer-events: all; -} - -.mx_ImageView_labelWrapper { - position: absolute; - top: 0px; - right: 0px; - height: 100%; - overflow: auto; - pointer-events: all; -} - -.mx_ImageView_label { - text-align: left; - display: flex; - justify-content: center; - flex-direction: column; - padding-left: 30px; - padding-right: 30px; - min-height: 100%; - max-width: 240px; - color: $lightbox-fg-color; -} - -.mx_ImageView_cancel { - position: absolute; - top: 0px; - right: 0px; - padding: 35px; - cursor: pointer; -} - -.mx_ImageView_name { - font-size: 18px; - margin-bottom: 6px; - word-wrap: break-word; -} - -.mx_ImageView_metadata { - font-size: 15px; - opacity: 0.5; -} - -.mx_ImageView_download { - display: table; - margin-top: 24px; - margin-bottom: 6px; - border-radius: 5px; - background-color: $lightbox-bg-color; - font-size: 14px; - padding: 9px; - border: 1px solid $lightbox-border-color; -} - -.mx_ImageView_size { - font-size: 11px; -} - -.mx_ImageView_link { - color: $lightbox-fg-color ! important; - text-decoration: none ! important; -} - -.mx_ImageView_button { - font-size: 15px; - opacity: 0.5; - margin-top: 18px; - cursor: pointer; -} - -.mx_ImageView_shim { - height: 30px; -} - -.mx_ImageView_rhs { - order: 3; - flex: 1 1 10%; - min-width: 300px; - // background-color: #800; - // height: 20px; -} diff --git a/src/skins/vector/css/vector-web/views/elements/_InlineSpinner.scss b/src/skins/vector/css/vector-web/views/elements/_InlineSpinner.scss deleted file mode 100644 index 612b6209..00000000 --- a/src/skins/vector/css/vector-web/views/elements/_InlineSpinner.scss +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2017 New Vector Ltd. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_InlineSpinner { - display: inline; -} - -.mx_InlineSpinner img { - margin: 0px 6px; - vertical-align: -3px; -} diff --git a/src/skins/vector/css/vector-web/views/elements/_Spinner.scss b/src/skins/vector/css/vector-web/views/elements/_Spinner.scss deleted file mode 100644 index aea57379..00000000 --- a/src/skins/vector/css/vector-web/views/elements/_Spinner.scss +++ /dev/null @@ -1,28 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_Spinner { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - flex: 1; -} - -.mx_MatrixChat_middlePanel .mx_Spinner { - height: auto; -} \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/views/elements/_SyntaxHighlight.scss b/src/skins/vector/css/vector-web/views/elements/_SyntaxHighlight.scss deleted file mode 100644 index e97401a1..00000000 --- a/src/skins/vector/css/vector-web/views/elements/_SyntaxHighlight.scss +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SyntaxHighlight { - /* inhibit hljs styling */ - background: none !important; - color: $light-fg-color !important; -} diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss deleted file mode 100644 index be69b15f..00000000 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MatrixToolbar { - background-color: $accent-color; - color: $accent-fg-color; - - display: flex; - align-items: center; -} - -.mx_MatrixToolbar_warning { - margin-left: 16px; - margin-right: 8px; - margin-top: -2px; -} - -.mx_MatrixToolbar_content { - flex: 1; -} - -.mx_MatrixToolbar_link -{ - color: $accent-fg-color ! important; - text-decoration: underline ! important; - cursor: pointer; -} - -.mx_MatrixToolbar_clickable { - cursor: pointer; -} - -.mx_MatrixToolbar_close { - cursor: pointer; -} - -.mx_MatrixToolbar_close img { - display: block; - float: right; - margin-right: 10px; -} - -.mx_MatrixToolbar_action { - margin-right: 16px; -} - -.mx_MatrixToolbar_changelog { - white-space: pre; -} \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/views/messages/_DateSeparator.scss b/src/skins/vector/css/vector-web/views/messages/_DateSeparator.scss deleted file mode 100644 index f676d24b..00000000 --- a/src/skins/vector/css/vector-web/views/messages/_DateSeparator.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2017 Vector Creations Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_DateSeparator { - clear: both; - margin-top: 32px; - margin-bottom: 8px; - margin-left: 63px; - padding-bottom: 6px; - border-bottom: 1px solid $primary-hairline-color; -} - diff --git a/src/skins/vector/css/vector-web/views/messages/_MessageTimestamp.scss b/src/skins/vector/css/vector-web/views/messages/_MessageTimestamp.scss deleted file mode 100644 index e21189c5..00000000 --- a/src/skins/vector/css/vector-web/views/messages/_MessageTimestamp.scss +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_MessageTimestamp { -} diff --git a/src/skins/vector/css/vector-web/views/messages/_SenderProfile.scss b/src/skins/vector/css/vector-web/views/messages/_SenderProfile.scss deleted file mode 100644 index 060709b8..00000000 --- a/src/skins/vector/css/vector-web/views/messages/_SenderProfile.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss deleted file mode 100644 index 08229e37..00000000 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomDropTarget { - font-size: 13px; - margin-left: 18px; - margin-right: 18px; - margin-top: 8px; - margin-bottom: 7px; - padding-top: 5px; - padding-bottom: 5px; - border: 1px dashed $accent-color; - color: $primary-fg-color; - background-color: $droptarget-bg-color; - border-radius: 4px; -} - -.collapsed .mx_RoomDropTarget { - margin-right: 10px; - margin-left: 10px; -} - -.mx_RoomDropTarget_label { - position: relative; - margin-top: 3px; - line-height: 21px; - z-index: 1; - text-align: center; -} - -.collapsed .mx_RoomDropTarget_avatar { - float: none; -} - -.collapsed .mx_RoomDropTarget_label { - display: none; -} diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss deleted file mode 100644 index 5469a9e6..00000000 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_RoomTooltip_chevron { - position: absolute; - left: -8px; - top: 4px; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-right: 8px solid $menu-border-color; - border-bottom: 8px solid transparent; -} - -.mx_RoomTooltip_chevron:after { - content:''; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-right: 7px solid $primary-bg-color; - border-bottom: 7px solid transparent; - position:absolute; - top: -7px; - left: 1px; -} - -.mx_RoomTooltip { - display: none; - position: fixed; - border: 1px solid $menu-border-color; - border-radius: 5px; - background-color: $primary-bg-color; - z-index: 2000; - padding: 5px; - pointer-events: none; - line-height: 14px; - font-size: 13px; - color: $primary-fg-color; -} - diff --git a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss deleted file mode 100644 index 079ea16c..00000000 --- a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_SearchBar { - padding-top: 5px; - padding-bottom: 5px; - display: flex; - align-items: center; -} - -.mx_SearchBar_input { - display: inline block; - border-radius: 3px 0px 0px 3px; - border: 1px solid $input-border-color; - font-size: 15px; - padding: 9px; - padding-left: 11px; - width: auto; - flex: 1 1 0; -} - -.mx_SearchBar_searchButton { - cursor: pointer; - margin-right: 10px; - width: 37px; - height: 37px; - border-radius: 0px 3px 3px 0px; - background-color: $accent-color; -} - -@keyframes pulsate { - 0% { opacity: 1.0; } - 50% { opacity: 0.1; } - 100% { opacity: 1.0; } -} - -.mx_SearchBar_searching img { - animation: pulsate 0.5s ease-out; - animation-iteration-count: infinite; -} - -.mx_SearchBar_button { - display: inline; - border: 0px; - border-radius: 36px; - font-weight: 400; - font-size: 15px; - color: $accent-fg-color; - background-color: $accent-color; - width: auto; - margin: auto; - margin-left: 7px; - padding-top: 6px; - padding-bottom: 4px; - padding-left: 24px; - padding-right: 24px; - cursor: pointer; -} - -.mx_SearchBar_unselected { - background-color: $primary-bg-color; - color: $accent-color; - border: $accent-color 1px solid; -} - -.mx_SearchBar_cancel { - padding-left: 14px; - padding-right: 14px; - cursor: pointer; -} diff --git a/src/skins/vector/css/vector-web/views/settings/_Notifications.scss b/src/skins/vector/css/vector-web/views/settings/_Notifications.scss deleted file mode 100644 index 4c88e449..00000000 --- a/src/skins/vector/css/vector-web/views/settings/_Notifications.scss +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -.mx_UserNotifSettings_tableRow -{ - display: table-row; -} - -.mx_UserNotifSettings_inputCell { - display: table-cell; - padding-bottom: 8px; - padding-right: 8px; - width: 16px; -} - -.mx_UserNotifSettings_labelCell -{ - padding-bottom: 8px; - width: 400px; - display: table-cell; -} - -.mx_UserNotifSettings_pushRulesTableWrapper { - padding-bottom: 8px; -} - -.mx_UserNotifSettings_pushRulesTable { - width: 100%; - table-layout: fixed; -} - -.mx_UserNotifSettings_pushRulesTable thead { - font-weight: bold; - font-size: 15px; -} - -.mx_UserNotifSettings_pushRulesTable tbody th { - font-weight: 400; - font-size: 15px; -} - -.mx_UserNotifSettings_pushRulesTable tbody th:first-child { - text-align: left; -} - -.mx_UserNotifSettings_keywords { - cursor: pointer; - color: $accent-color; -} - -.mx_UserSettings_devicesTable td { - padding-left: 20px; - padding-right: 20px; -} -.mx_UserSettings_devicesTable_nodevices { - font-style: italic; -} diff --git a/src/skins/vector/fonts/Fira_Mono/FiraMono-Bold.ttf b/src/skins/vector/fonts/Fira_Mono/FiraMono-Bold.ttf deleted file mode 100755 index 4b8b1cfb..00000000 Binary files a/src/skins/vector/fonts/Fira_Mono/FiraMono-Bold.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Fira_Mono/FiraMono-Regular.ttf b/src/skins/vector/fonts/Fira_Mono/FiraMono-Regular.ttf deleted file mode 100755 index 5238c09e..00000000 Binary files a/src/skins/vector/fonts/Fira_Mono/FiraMono-Regular.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Fira_Mono/OFL.txt b/src/skins/vector/fonts/Fira_Mono/OFL.txt deleted file mode 100755 index ba853c04..00000000 --- a/src/skins/vector/fonts/Fira_Mono/OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A. -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/skins/vector/fonts/Open_Sans/LICENSE.txt b/src/skins/vector/fonts/Open_Sans/LICENSE.txt deleted file mode 100755 index 75b52484..00000000 --- a/src/skins/vector/fonts/Open_Sans/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-Bold.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-Bold.ttf deleted file mode 100755 index fd79d43b..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-Bold.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-BoldItalic.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-BoldItalic.ttf deleted file mode 100755 index 9bc80095..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-BoldItalic.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-Italic.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-Italic.ttf deleted file mode 100755 index c90da48f..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-Italic.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-Regular.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-Regular.ttf deleted file mode 100755 index db433349..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-Regular.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-Semibold.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-Semibold.ttf deleted file mode 100755 index 1a7679e3..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-Semibold.ttf and /dev/null differ diff --git a/src/skins/vector/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf b/src/skins/vector/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf deleted file mode 100755 index 59b6d16b..00000000 Binary files a/src/skins/vector/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf and /dev/null differ diff --git a/src/skins/vector/img/50e2c2.png b/src/skins/vector/img/50e2c2.png deleted file mode 100644 index ee0f8558..00000000 Binary files a/src/skins/vector/img/50e2c2.png and /dev/null differ diff --git a/src/skins/vector/img/76cfa6.png b/src/skins/vector/img/76cfa6.png deleted file mode 100644 index de1ea60d..00000000 Binary files a/src/skins/vector/img/76cfa6.png and /dev/null differ diff --git a/src/skins/vector/img/80cef4.png b/src/skins/vector/img/80cef4.png deleted file mode 100644 index 637d03f6..00000000 Binary files a/src/skins/vector/img/80cef4.png and /dev/null differ diff --git a/src/skins/vector/img/admin.svg b/src/skins/vector/img/admin.svg deleted file mode 100644 index 7ea74593..00000000 --- a/src/skins/vector/img/admin.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="16px" height="17px" viewBox="-1 -1 15 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4.4 (395) - http://www.bohemiancoding.com/sketch --> - <title>icons_owner</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_19-Room-contextual-menu-hover" sketch:type="MSArtboardGroup" transform="translate(-1000.000000, -128.000000)"> - <g id="people_open" sketch:type="MSLayerGroup" transform="translate(966.000000, 59.000000)"> - <g id="icons_owner" transform="translate(35.000000, 70.000000)" sketch:type="MSShapeGroup"> - <path d="M0.441894529,1.80537109 C2.59277353,3.03442388 4.25305977,2.17675781 5.9832796,0.805371094 C8.01666135,2.17675787 9.50756797,3.12670903 11.6293941,1.80537109 C11.6293941,7.01538067 11.9379879,12.2253912 5.9832796,12.2253906 C0.0285712975,12.2253901 0.441894531,7.01538067 0.441894529,1.80537109 Z" id="Path-2-Copy" stroke="#FFFFFF" fill="#F6A623"></path> - <polygon id="Star-1" fill="#FFFFFF" points="6 8.8 3.88397309 9.91246118 4.28809827 7.55623059 2.57619654 5.88753882 4.94198655 5.54376941 6 3.4 7.05801345 5.54376941 9.42380346 5.88753882 7.71190173 7.55623059 8.11602691 9.91246118 "></polygon> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/attach.png b/src/skins/vector/img/attach.png deleted file mode 100644 index 1bcb7004..00000000 Binary files a/src/skins/vector/img/attach.png and /dev/null differ diff --git a/src/skins/vector/img/avatar-error.svg b/src/skins/vector/img/avatar-error.svg deleted file mode 100644 index c5e16894..00000000 --- a/src/skins/vector/img/avatar-error.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>5EF602F6-A36C-41EE-BAEC-50801DFD5492</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="1:1-chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Chat-People-2c-Invite-modal-ERROR" transform="translate(-611.000000, -358.000000)"> - <g id="avatar_error" transform="translate(611.000000, 358.000000)"> - <circle id="Oval-2" fill="#FF0064" cx="12.5" cy="12.5" r="12.5"></circle> - <path d="M11.2470703,15.0292969 C11.2470703,14.5901671 11.2733559,14.2082536 11.3259277,13.8835449 C11.3784996,13.5588363 11.4650873,13.2619642 11.5856934,12.9929199 C11.7062994,12.7238756 11.8624665,12.4687512 12.0541992,12.2275391 C12.2459319,11.9863269 12.4809556,11.7296563 12.7592773,11.4575195 C12.9695649,11.2534169 13.1659333,11.0601409 13.3483887,10.8776855 C13.530844,10.6952302 13.6916497,10.508139 13.8308105,10.3164062 C13.9699714,10.1246735 14.0797522,9.920574 14.1601562,9.70410156 C14.2405603,9.48762913 14.2807617,9.2464206 14.2807617,8.98046875 C14.2807617,8.39908563 14.1369643,7.9553238 13.8493652,7.64916992 C13.5617661,7.34301605 13.1396512,7.18994141 12.5830078,7.18994141 C12.3603504,7.18994141 12.1438813,7.22086558 11.9335938,7.28271484 C11.7233062,7.34456411 11.5346688,7.44352146 11.3676758,7.57958984 C11.2006828,7.71565823 11.0661626,7.88883358 10.9641113,8.09912109 C10.86206,8.3094086 10.8110352,8.5629868 10.8110352,8.85986328 L8.55664062,8.85986328 C8.56282555,8.27848017 8.66951394,7.76668515 8.87670898,7.32446289 C9.08390403,6.88224063 9.36840639,6.51115059 9.73022461,6.21118164 C10.0920428,5.91121269 10.515704,5.68546625 11.0012207,5.53393555 C11.4867375,5.38240484 12.0139946,5.30664062 12.5830078,5.30664062 C13.2076854,5.30664062 13.7643205,5.38704347 14.2529297,5.54785156 C14.7415389,5.70865966 15.1559228,5.94368335 15.4960938,6.25292969 C15.8362647,6.56217603 16.0944815,6.9394509 16.270752,7.38476562 C16.4470224,7.83008035 16.5351562,8.33414432 16.5351562,8.89697266 C16.5351562,9.30517782 16.4702155,9.68554511 16.340332,10.0380859 C16.2104486,10.3906268 16.0372732,10.7215154 15.8208008,11.0307617 C15.6043283,11.3400081 15.356935,11.6368801 15.0786133,11.9213867 C14.8002916,12.2058933 14.5126968,12.4873033 14.2158203,12.765625 C13.8756493,13.0748713 13.6483567,13.413491 13.5339355,13.7814941 C13.4195144,14.1494973 13.3592123,14.5654274 13.3530273,15.0292969 L11.2470703,15.0292969 Z M11.0893555,17.9145508 C11.0893555,17.7413728 11.1171872,17.5805671 11.1728516,17.4321289 C11.2285159,17.2836907 11.310465,17.1538092 11.4187012,17.0424805 C11.5269374,16.9311518 11.6599113,16.8445641 11.817627,16.7827148 C11.9753426,16.7208656 12.156249,16.6899414 12.3603516,16.6899414 C12.5644541,16.6899414 12.7453605,16.7208656 12.9030762,16.7827148 C13.0607918,16.8445641 13.1937657,16.9311518 13.302002,17.0424805 C13.4102382,17.1538092 13.4937334,17.2836907 13.5524902,17.4321289 C13.611247,17.5805671 13.640625,17.7413728 13.640625,17.9145508 C13.640625,18.2547218 13.529298,18.5392241 13.3066406,18.7680664 C13.0839833,18.9969087 12.7685567,19.1113281 12.3603516,19.1113281 C11.9521464,19.1113281 11.6382661,18.9969087 11.4187012,18.7680664 C11.1991363,18.5392241 11.0893555,18.2547218 11.0893555,17.9145508 L11.0893555,17.9145508 Z" id="?" fill="#FFFFFF"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/button-md-false.png b/src/skins/vector/img/button-md-false.png deleted file mode 100644 index 6debbccc..00000000 Binary files a/src/skins/vector/img/button-md-false.png and /dev/null differ diff --git a/src/skins/vector/img/button-md-false.svg b/src/skins/vector/img/button-md-false.svg deleted file mode 100644 index 6414933d..00000000 --- a/src/skins/vector/img/button-md-false.svg +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="23px" height="15px" viewBox="0 0 23 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>D335F9E8-C813-47D7-B1BE-C8DEF2C8214F</title> - <desc>Created with sketchtool.</desc> - <defs> - <text id="text-1" font-family="markdown" font-size="14" font-weight="normal" fill="#DDDDDD"> - <tspan x="829.125" y="759"></tspan> - </text> - <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2"> - <feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset> - <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite> - <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0526494565 0" type="matrix" in="shadowInnerInner1"></feColorMatrix> - </filter> - <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-3"> - <feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset> - <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite> - <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0526494565 0" type="matrix" in="shadowInnerInner1"></feColorMatrix> - </filter> - </defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" fill-opacity="1"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-829.000000, -745.000000)" fill="#DDDDDD"> - <g id="button_md_off"> - <use filter="url(#filter-2)" xlink:href="#text-1"></use> - <use filter="url(#filter-3)" xlink:href="#text-1"></use> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-md-false@2x.png b/src/skins/vector/img/button-md-false@2x.png deleted file mode 100644 index 497f5385..00000000 Binary files a/src/skins/vector/img/button-md-false@2x.png and /dev/null differ diff --git a/src/skins/vector/img/button-md-false@3x.png b/src/skins/vector/img/button-md-false@3x.png deleted file mode 100644 index 1184e6b3..00000000 Binary files a/src/skins/vector/img/button-md-false@3x.png and /dev/null differ diff --git a/src/skins/vector/img/button-md-true.png b/src/skins/vector/img/button-md-true.png deleted file mode 100644 index 2e39c55e..00000000 Binary files a/src/skins/vector/img/button-md-true.png and /dev/null differ diff --git a/src/skins/vector/img/button-md-true.svg b/src/skins/vector/img/button-md-true.svg deleted file mode 100644 index 2acc4f67..00000000 --- a/src/skins/vector/img/button-md-true.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="23px" height="15px" viewBox="0 0 23 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>2A63B135-4281-4FBB-A88C-012AE22E9594</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" font-size="14" font-family="markdown" font-weight="normal"> - <g id="02_x-Chat-text-input-markdown-panel-MD_on" transform="translate(-829.000000, -745.000000)" fill="#4A4A4A"> - <text id="button_markdown_on"> - <tspan x="829.125" y="759"></tspan> - </text> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-md-true@2x.png b/src/skins/vector/img/button-md-true@2x.png deleted file mode 100644 index ad9067f3..00000000 Binary files a/src/skins/vector/img/button-md-true@2x.png and /dev/null differ diff --git a/src/skins/vector/img/button-md-true@3x.png b/src/skins/vector/img/button-md-true@3x.png deleted file mode 100644 index d615867d..00000000 Binary files a/src/skins/vector/img/button-md-true@3x.png and /dev/null differ diff --git a/src/skins/vector/img/button-text-bold-o-n.svg b/src/skins/vector/img/button-text-bold-o-n.svg deleted file mode 100644 index 161e740e..00000000 --- a/src/skins/vector/img/button-text-bold-o-n.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>01F3F9B2-8F38-4BAF-A345-AECAC3D88E79</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-294.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_bold_ON"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M10.9882812,3.92523872 L13.4321289,3.92523872 C14.5457412,3.92523872 15.3540828,4.0836844 15.8571777,4.40058051 C16.3602727,4.71747663 16.6118164,5.22145922 16.6118164,5.9125434 C16.6118164,6.38162127 16.5017101,6.76654581 16.2814941,7.06732856 C16.0612782,7.36811131 15.7685565,7.54893633 15.4033203,7.60980903 L15.4033203,7.66351997 C15.9010442,7.77452312 16.2600087,7.98220334 16.4802246,8.28656684 C16.7004406,8.59093034 16.8105469,8.99554869 16.8105469,9.50043403 C16.8105469,10.2165834 16.5518418,10.7751716 16.0344238,11.1762153 C15.5170059,11.5772589 14.8142948,11.7777778 13.9262695,11.7777778 L10.9882812,11.7777778 L10.9882812,3.92523872 Z M12.6533203,7.035102 L13.6201172,7.035102 C14.0712913,7.035102 14.3980296,6.96527848 14.6003418,6.82562934 C14.802654,6.6859802 14.9038086,6.45502548 14.9038086,6.13275825 C14.9038086,5.83197549 14.7937023,5.61623872 14.5734863,5.48554145 C14.3532704,5.35484418 14.005048,5.28949653 13.5288086,5.28949653 L12.6533203,5.28949653 L12.6533203,7.035102 Z M12.6533203,8.35639106 L12.6533203,10.4027778 L13.7382812,10.4027778 C14.1966169,10.4027778 14.5349924,10.3150508 14.753418,10.1395942 C14.9718435,9.96413758 15.0810547,9.69558558 15.0810547,9.33393012 C15.0810547,8.68223415 14.6155646,8.35639106 13.6845703,8.35639106 L12.6533203,8.35639106 Z" id="B" fill="#FFFFFF"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-bold.svg b/src/skins/vector/img/button-text-bold.svg deleted file mode 100644 index 0fd0baa0..00000000 --- a/src/skins/vector/img/button-text-bold.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>9BC64A5B-F157-43FF-BCC4-02D30CDF520B</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-294.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_bold"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M10.9882812,3.92523872 L13.4321289,3.92523872 C14.5457412,3.92523872 15.3540828,4.0836844 15.8571777,4.40058051 C16.3602727,4.71747663 16.6118164,5.22145922 16.6118164,5.9125434 C16.6118164,6.38162127 16.5017101,6.76654581 16.2814941,7.06732856 C16.0612782,7.36811131 15.7685565,7.54893633 15.4033203,7.60980903 L15.4033203,7.66351997 C15.9010442,7.77452312 16.2600087,7.98220334 16.4802246,8.28656684 C16.7004406,8.59093034 16.8105469,8.99554869 16.8105469,9.50043403 C16.8105469,10.2165834 16.5518418,10.7751716 16.0344238,11.1762153 C15.5170059,11.5772589 14.8142948,11.7777778 13.9262695,11.7777778 L10.9882812,11.7777778 L10.9882812,3.92523872 Z M12.6533203,7.035102 L13.6201172,7.035102 C14.0712913,7.035102 14.3980296,6.96527848 14.6003418,6.82562934 C14.802654,6.6859802 14.9038086,6.45502548 14.9038086,6.13275825 C14.9038086,5.83197549 14.7937023,5.61623872 14.5734863,5.48554145 C14.3532704,5.35484418 14.005048,5.28949653 13.5288086,5.28949653 L12.6533203,5.28949653 L12.6533203,7.035102 Z M12.6533203,8.35639106 L12.6533203,10.4027778 L13.7382812,10.4027778 C14.1966169,10.4027778 14.5349924,10.3150508 14.753418,10.1395942 C14.9718435,9.96413758 15.0810547,9.69558558 15.0810547,9.33393012 C15.0810547,8.68223415 14.6155646,8.35639106 13.6845703,8.35639106 L12.6533203,8.35639106 Z" id="B" fill="#4A4A4A"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-bullet-o-n.svg b/src/skins/vector/img/button-text-bullet-o-n.svg deleted file mode 100644 index d4a40e88..00000000 --- a/src/skins/vector/img/button-text-bullet-o-n.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>654917CF-20A4-49B6-B0A1-9875D7B733C8</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-422.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_bullet_ON" transform="translate(128.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M5.57421875,5.39496528 C5.57421875,4.79339977 5.71874855,4.33344343 6.0078125,4.01508247 C6.29687645,3.6967215 6.71288791,3.5375434 7.25585938,3.5375434 C7.7910183,3.5375434 8.20507666,3.69769805 8.49804688,4.01801215 C8.79101709,4.33832625 8.9375,4.79730604 8.9375,5.39496528 C8.9375,5.98871825 8.79004054,6.44769803 8.49511719,6.7719184 C8.20019384,7.09613877 7.78711203,7.25824653 7.25585938,7.25824653 C6.71679418,7.25824653 6.30175927,7.09613877 6.01074219,6.7719184 C5.71972511,6.44769803 5.57421875,5.98871825 5.57421875,5.39496528 L5.57421875,5.39496528 Z" id="•" fill="#FFFFFF"></path> - <path d="M11.5,5.5 L19.5,5.5" id="Line" stroke="#FFFFFF" stroke-linecap="round"></path> - <path d="M11.5,8.5 L19.5,8.5" id="Line-Copy" stroke="#FFFFFF" stroke-linecap="round"></path> - <path d="M11.5,11.5 L19.5,11.5" id="Line-Copy-3" stroke="#FFFFFF" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-bullet.svg b/src/skins/vector/img/button-text-bullet.svg deleted file mode 100644 index ae3e640d..00000000 --- a/src/skins/vector/img/button-text-bullet.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>B7D94619-44BC-4184-A60A-DBC5BB54E5F9</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-422.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_bullet" transform="translate(128.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M5.57421875,5.39496528 C5.57421875,4.79339977 5.71874855,4.33344343 6.0078125,4.01508247 C6.29687645,3.6967215 6.71288791,3.5375434 7.25585938,3.5375434 C7.7910183,3.5375434 8.20507666,3.69769805 8.49804688,4.01801215 C8.79101709,4.33832625 8.9375,4.79730604 8.9375,5.39496528 C8.9375,5.98871825 8.79004054,6.44769803 8.49511719,6.7719184 C8.20019384,7.09613877 7.78711203,7.25824653 7.25585938,7.25824653 C6.71679418,7.25824653 6.30175927,7.09613877 6.01074219,6.7719184 C5.71972511,6.44769803 5.57421875,5.98871825 5.57421875,5.39496528 L5.57421875,5.39496528 Z" id="•" fill="#4A4A4A"></path> - <path d="M11.5,5.5 L19.5,5.5" id="Line" stroke="#4A4A4A" stroke-linecap="round"></path> - <path d="M11.5,8.5 L19.5,8.5" id="Line-Copy" stroke="#4A4A4A" stroke-linecap="round"></path> - <path d="M11.5,11.5 L19.5,11.5" id="Line-Copy-3" stroke="#4A4A4A" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-code-o-n.svg b/src/skins/vector/img/button-text-code-o-n.svg deleted file mode 100644 index 8d1439c9..00000000 --- a/src/skins/vector/img/button-text-code-o-n.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>B76754AB-42E6-48D2-9443-80CBC0DE02ED</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-422.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_code_ON" transform="translate(128.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <polygon id="/" fill="#FFFFFF" points="15.9262695 4.14746094 12.9990234 12 12.1074219 12 15.034668 4.14746094"></polygon> - <g id="Group-5" opacity="0.5" transform="translate(17.000000, 5.000000)" stroke="#FFFFFF" stroke-linecap="round"> - <path d="M0.5,0.5 L2.97487373,2.97487373" id="Line"></path> - <path d="M0.5,3.02512627 L2.97487373,5.5" id="Line-Copy-4" transform="translate(1.737437, 4.262563) scale(1, -1) translate(-1.737437, -4.262563) "></path> - </g> - <g id="Group-5-Copy" opacity="0.5" transform="translate(9.500000, 8.000000) scale(-1, 1) translate(-9.500000, -8.000000) translate(8.000000, 5.000000)" stroke="#FFFFFF" stroke-linecap="round"> - <path d="M0.5,0.5 L2.97487373,2.97487373" id="Line"></path> - <path d="M0.5,3.02512627 L2.97487373,5.5" id="Line-Copy-4" transform="translate(1.737437, 4.262563) scale(1, -1) translate(-1.737437, -4.262563) "></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-code.svg b/src/skins/vector/img/button-text-code.svg deleted file mode 100644 index 24026cb7..00000000 --- a/src/skins/vector/img/button-text-code.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>4CAFF494-61AE-4916-AFE8-D1E62F7CF0DE</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_on" transform="translate(-422.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_code" transform="translate(128.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <polygon id="/" fill-opacity="0.7" fill="#000000" points="15.9262695 4.14746094 12.9990234 12 12.1074219 12 15.034668 4.14746094"></polygon> - <g id="Group-5" opacity="0.5" transform="translate(17.000000, 5.000000)" stroke="#4A4A4A" stroke-linecap="round"> - <path d="M0.5,0.5 L2.97487373,2.97487373" id="Line"></path> - <path d="M0.5,3.02512627 L2.97487373,5.5" id="Line-Copy-4" transform="translate(1.737437, 4.262563) scale(1, -1) translate(-1.737437, -4.262563) "></path> - </g> - <g id="Group-5-Copy" opacity="0.5" transform="translate(9.500000, 8.000000) scale(-1, 1) translate(-9.500000, -8.000000) translate(8.000000, 5.000000)" stroke="#4A4A4A" stroke-linecap="round"> - <path d="M0.5,0.5 L2.97487373,2.97487373" id="Line"></path> - <path d="M0.5,3.02512627 L2.97487373,5.5" id="Line-Copy-4" transform="translate(1.737437, 4.262563) scale(1, -1) translate(-1.737437, -4.262563) "></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-formatting.svg b/src/skins/vector/img/button-text-formatting.svg deleted file mode 100644 index d697010d..00000000 --- a/src/skins/vector/img/button-text-formatting.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 18" style="enable-background:new 0 0 24 18;" xml:space="preserve"> -<style type="text/css"> - .st0{fill:#F6F6F6;} - .st1{enable-background:new ;} - .st2{fill:#4A4A4A;} -</style> -<path id="Rectangle-111" class="st0" d="M9,0h6c5,0,9,4,9,9l0,0c0,5-4,9-9,9H9c-5,0-9-4-9-9l0,0C0,4,4,0,9,0z"/> -<g class="st1"> - <path class="st2" d="M11.3,13l-0.6-2H7.6L7,13H5l3-8.6h2.2l3,8.6H11.3z M10.3,9.4c-0.6-1.8-0.9-2.9-1-3.1S9.2,5.9,9.1,5.7 - C9,6.2,8.6,7.5,8,9.4H10.3z"/> -</g> -<g class="st1"> - <path class="st2" d="M15.8,6.5c0.4,0,0.7,0.1,1,0.3s0.5,0.5,0.7,0.8h0.1l0.4-1h0.7L17.3,13h-0.8l0.2-1.2h0 - c-0.7,0.9-1.4,1.3-2.2,1.3c-0.5,0-1-0.2-1.3-0.6s-0.5-0.9-0.5-1.6c0-0.8,0.1-1.6,0.4-2.3s0.7-1.2,1.1-1.6S15.2,6.5,15.8,6.5z - M14.7,12.3c0.4,0,0.8-0.2,1.1-0.5s0.7-0.8,0.9-1.4s0.4-1.2,0.4-1.7c0-0.4-0.1-0.7-0.3-1s-0.5-0.4-0.9-0.4c-0.4,0-0.8,0.2-1.1,0.5 - S14.2,8.6,14,9.2s-0.3,1.2-0.3,1.8c0,0.4,0.1,0.8,0.3,1S14.4,12.3,14.7,12.3z"/> -</g> -</svg> diff --git a/src/skins/vector/img/button-text-italic-o-n.svg b/src/skins/vector/img/button-text-italic-o-n.svg deleted file mode 100644 index 15fe5885..00000000 --- a/src/skins/vector/img/button-text-italic-o-n.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>116426C2-0B55-480E-92B3-57D4B3ABAB90</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-326.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_italic_ON" transform="translate(32.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <polygon id="I" fill="#FFFFFF" points="12.4619141 11.7777778 14.1323242 3.92523872 15.034668 3.92523872 13.3642578 11.7777778"></polygon> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-italic.svg b/src/skins/vector/img/button-text-italic.svg deleted file mode 100644 index b5722e82..00000000 --- a/src/skins/vector/img/button-text-italic.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>9FBC844D-96CF-4DCB-B545-FCD23727218B</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-326.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_italic" transform="translate(32.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <polygon id="I" fill="#4A4A4A" points="12.4619141 11.7777778 14.1323242 3.92523872 15.034668 3.92523872 13.3642578 11.7777778"></polygon> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-numbullet-o-n.svg b/src/skins/vector/img/button-text-numbullet-o-n.svg deleted file mode 100644 index 869a2c2c..00000000 --- a/src/skins/vector/img/button-text-numbullet-o-n.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>294F929B-31AA-4D0C-98B3-9CA96764060D</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-454.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_numbullet_ON" transform="translate(160.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M8.3046875,8.77777778 L7.09765625,8.77777778 L7.09765625,5.47309028 L7.109375,4.93012153 L7.12890625,4.33637153 C6.92838441,4.53689336 6.78906289,4.66840247 6.7109375,4.73090278 L6.0546875,5.25824653 L5.47265625,4.53168403 L7.3125,3.06684028 L8.3046875,3.06684028 L8.3046875,8.77777778 Z" id="1" fill="#FFFFFF"></path> - <path d="M11.5,5.5 L19.5,5.5" id="Line" stroke="#FFFFFF" stroke-linecap="round"></path> - <path d="M11.5,8.5 L19.5,8.5" id="Line-Copy" stroke="#FFFFFF" stroke-linecap="round"></path> - <path d="M11.5,11.5 L19.5,11.5" id="Line-Copy-3" stroke="#FFFFFF" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-numbullet.svg b/src/skins/vector/img/button-text-numbullet.svg deleted file mode 100644 index 8e5b8b87..00000000 --- a/src/skins/vector/img/button-text-numbullet.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>F0F58459-A13A-48C5-9332-ABFB96726F05</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-454.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_numbullet" transform="translate(160.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M8.3046875,8.77777778 L7.09765625,8.77777778 L7.09765625,5.47309028 L7.109375,4.93012153 L7.12890625,4.33637153 C6.92838441,4.53689336 6.78906289,4.66840247 6.7109375,4.73090278 L6.0546875,5.25824653 L5.47265625,4.53168403 L7.3125,3.06684028 L8.3046875,3.06684028 L8.3046875,8.77777778 Z" id="1" fill="#4A4A4A"></path> - <path d="M11.5,5.5 L19.5,5.5" id="Line" stroke="#4A4A4A" stroke-linecap="round"></path> - <path d="M11.5,8.5 L19.5,8.5" id="Line-Copy" stroke="#4A4A4A" stroke-linecap="round"></path> - <path d="M11.5,11.5 L19.5,11.5" id="Line-Copy-3" stroke="#4A4A4A" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-quote-o-n.svg b/src/skins/vector/img/button-text-quote-o-n.svg deleted file mode 100644 index f8a86125..00000000 --- a/src/skins/vector/img/button-text-quote-o-n.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>3B24B8C7-64BE-4B3E-A748-94DB72E1210F</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-390.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_quote_ON" transform="translate(96.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M13.6762695,4.58734809 C13.2019833,4.85981039 12.8185236,5.09442718 12.5258789,5.29120551 C12.2332342,5.48798384 11.9355484,5.74782825 11.6328125,6.07074653 C11.350259,6.37348242 11.1333015,6.69135033 10.9819336,7.02435981 C10.8305656,7.35736929 10.7246097,7.7862387 10.6640625,8.3109809 L11.390625,8.3109809 C12.0162792,8.3109809 12.5082176,8.46486934 12.8664551,8.77265082 C13.2246925,9.08043231 13.4038086,9.53200657 13.4038086,10.1273872 C13.4038086,10.5512174 13.2448746,10.9472909 12.927002,11.3156196 C12.6091293,11.6839482 12.1726916,11.8681098 11.6176758,11.8681098 C10.7498329,11.8681098 10.1292336,11.5830378 9.75585938,11.0128852 C9.38248511,10.4427326 9.19580078,9.69347252 9.19580078,8.76508247 C9.19580078,8.10915471 9.33707541,7.51126029 9.61962891,6.97138129 C9.9021824,6.43150229 10.2452779,5.9496549 10.6489258,5.52582465 C11.0626648,5.09190321 11.5016253,4.72358007 11.9658203,4.42084418 C12.4300153,4.1181083 12.8185206,3.87087769 13.1313477,3.67914497 L13.6762695,4.58734809 Z M19.2768555,4.58734809 C18.8025692,4.85981039 18.4191095,5.09442718 18.1264648,5.29120551 C17.8338202,5.48798384 17.5361343,5.74782825 17.2333984,6.07074653 C16.9407537,6.38357361 16.7212735,6.70396429 16.5749512,7.03192817 C16.4286288,7.35989205 16.3251956,7.7862387 16.2646484,8.3109809 L16.9912109,8.3109809 C17.6168651,8.3109809 18.1088035,8.46486934 18.467041,8.77265082 C18.8252785,9.08043231 19.0043945,9.53200657 19.0043945,10.1273872 C19.0043945,10.5512174 18.8454606,10.9472909 18.5275879,11.3156196 C18.2097152,11.6839482 17.7732775,11.8681098 17.2182617,11.8681098 C16.3504188,11.8681098 15.7298196,11.5830378 15.3564453,11.0128852 C14.983071,10.4427326 14.7963867,9.69347252 14.7963867,8.76508247 C14.7963867,8.10915471 14.9376613,7.51126029 15.2202148,6.97138129 C15.5027683,6.43150229 15.8458639,5.9496549 16.2495117,5.52582465 C16.6632508,5.09190321 17.1022112,4.72358007 17.5664062,4.42084418 C18.0306013,4.1181083 18.4191065,3.87087769 18.7319336,3.67914497 L19.2768555,4.58734809 Z" id="“" fill="#FFFFFF"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-quote.svg b/src/skins/vector/img/button-text-quote.svg deleted file mode 100644 index d70c261f..00000000 --- a/src/skins/vector/img/button-text-quote.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>BFC0418B-9081-4789-A231-B75953157748</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-390.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_quote" transform="translate(96.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M13.6762695,4.58734809 C13.2019833,4.85981039 12.8185236,5.09442718 12.5258789,5.29120551 C12.2332342,5.48798384 11.9355484,5.74782825 11.6328125,6.07074653 C11.350259,6.37348242 11.1333015,6.69135033 10.9819336,7.02435981 C10.8305656,7.35736929 10.7246097,7.7862387 10.6640625,8.3109809 L11.390625,8.3109809 C12.0162792,8.3109809 12.5082176,8.46486934 12.8664551,8.77265082 C13.2246925,9.08043231 13.4038086,9.53200657 13.4038086,10.1273872 C13.4038086,10.5512174 13.2448746,10.9472909 12.927002,11.3156196 C12.6091293,11.6839482 12.1726916,11.8681098 11.6176758,11.8681098 C10.7498329,11.8681098 10.1292336,11.5830378 9.75585938,11.0128852 C9.38248511,10.4427326 9.19580078,9.69347252 9.19580078,8.76508247 C9.19580078,8.10915471 9.33707541,7.51126029 9.61962891,6.97138129 C9.9021824,6.43150229 10.2452779,5.9496549 10.6489258,5.52582465 C11.0626648,5.09190321 11.5016253,4.72358007 11.9658203,4.42084418 C12.4300153,4.1181083 12.8185206,3.87087769 13.1313477,3.67914497 L13.6762695,4.58734809 Z M19.2768555,4.58734809 C18.8025692,4.85981039 18.4191095,5.09442718 18.1264648,5.29120551 C17.8338202,5.48798384 17.5361343,5.74782825 17.2333984,6.07074653 C16.9407537,6.38357361 16.7212735,6.70396429 16.5749512,7.03192817 C16.4286288,7.35989205 16.3251956,7.7862387 16.2646484,8.3109809 L16.9912109,8.3109809 C17.6168651,8.3109809 18.1088035,8.46486934 18.467041,8.77265082 C18.8252785,9.08043231 19.0043945,9.53200657 19.0043945,10.1273872 C19.0043945,10.5512174 18.8454606,10.9472909 18.5275879,11.3156196 C18.2097152,11.6839482 17.7732775,11.8681098 17.2182617,11.8681098 C16.3504188,11.8681098 15.7298196,11.5830378 15.3564453,11.0128852 C14.983071,10.4427326 14.7963867,9.69347252 14.7963867,8.76508247 C14.7963867,8.10915471 14.9376613,7.51126029 15.2202148,6.97138129 C15.5027683,6.43150229 15.8458639,5.9496549 16.2495117,5.52582465 C16.6632508,5.09190321 17.1022112,4.72358007 17.5664062,4.42084418 C18.0306013,4.1181083 18.4191065,3.87087769 18.7319336,3.67914497 L19.2768555,4.58734809 Z" id="“" fill="#4A4A4A"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-strike-o-n.svg b/src/skins/vector/img/button-text-strike-o-n.svg deleted file mode 100644 index 2914fcab..00000000 --- a/src/skins/vector/img/button-text-strike-o-n.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>69B11088-0F3A-4E14-BD9F-4FEF4115E99B</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-358.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_strike_ON" transform="translate(64.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M16.5107422,9.68842231 C16.5107422,10.3795065 16.2600937,10.9184008 15.7587891,11.3051215 C15.2574845,11.6918422 14.5771527,11.8851997 13.7177734,11.8851997 C12.7867792,11.8851997 12.0706405,11.7652464 11.5693359,11.5253364 L11.5693359,10.644477 C11.8916032,10.7805454 12.2425111,10.8879662 12.6220703,10.9667426 C13.0016295,11.0455191 13.3776023,11.0849067 13.75,11.0849067 C14.358727,11.0849067 14.8170558,10.9694293 15.125,10.7384711 C15.4329442,10.507513 15.5869141,10.1861457 15.5869141,9.77435981 C15.5869141,9.50222303 15.5323085,9.27932487 15.4230957,9.10565864 C15.3138829,8.9319924 15.1312676,8.77175638 14.8752441,8.62494575 C14.6192207,8.47813512 14.2298203,8.31163288 13.7070312,8.12543403 C12.9765588,7.86403949 12.4546728,7.55430952 12.1413574,7.19623481 C11.8280421,6.8381601 11.6713867,6.37087962 11.6713867,5.79437934 C11.6713867,5.18923309 11.8987607,4.70762983 12.3535156,4.34955512 C12.8082705,3.99148041 13.409827,3.81244575 14.1582031,3.81244575 C14.938806,3.81244575 15.656735,3.95567348 16.3120117,4.24213325 L16.0273438,5.03705512 C15.3792285,4.76491834 14.7490265,4.628852 14.1367188,4.628852 C13.6533179,4.628852 13.2755547,4.7326921 13.003418,4.94037543 C12.7312812,5.14805876 12.5952148,5.43630458 12.5952148,5.80512153 C12.5952148,6.07725831 12.6453446,6.30015647 12.7456055,6.4738227 C12.8458664,6.64748893 13.0150541,6.80682979 13.2531738,6.95185004 C13.4912935,7.0968703 13.8556291,7.25710633 14.3461914,7.43256293 C15.1697632,7.72618419 15.736408,8.04128521 16.0461426,8.37787543 C16.3558772,8.71446566 16.5107422,9.15131025 16.5107422,9.68842231 L16.5107422,9.68842231 Z" id="S-" fill="#FFFFFF"></path> - <path d="M9.5,8.5 L18.7195444,7.5" id="Line" stroke="#FFFFFF" stroke-linecap="round" opacity="0.5" transform="translate(14.109772, 8.000000) scale(1, -1) translate(-14.109772, -8.000000) "></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-strike.svg b/src/skins/vector/img/button-text-strike.svg deleted file mode 100644 index 5f262dc3..00000000 --- a/src/skins/vector/img/button-text-strike.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>A34F2223-34C6-46AE-AA47-38EC8984E9B3</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off" transform="translate(-358.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_strike" transform="translate(64.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M16.5107422,9.68842231 C16.5107422,10.3795065 16.2600937,10.9184008 15.7587891,11.3051215 C15.2574845,11.6918422 14.5771527,11.8851997 13.7177734,11.8851997 C12.7867792,11.8851997 12.0706405,11.7652464 11.5693359,11.5253364 L11.5693359,10.644477 C11.8916032,10.7805454 12.2425111,10.8879662 12.6220703,10.9667426 C13.0016295,11.0455191 13.3776023,11.0849067 13.75,11.0849067 C14.358727,11.0849067 14.8170558,10.9694293 15.125,10.7384711 C15.4329442,10.507513 15.5869141,10.1861457 15.5869141,9.77435981 C15.5869141,9.50222303 15.5323085,9.27932487 15.4230957,9.10565864 C15.3138829,8.9319924 15.1312676,8.77175638 14.8752441,8.62494575 C14.6192207,8.47813512 14.2298203,8.31163288 13.7070312,8.12543403 C12.9765588,7.86403949 12.4546728,7.55430952 12.1413574,7.19623481 C11.8280421,6.8381601 11.6713867,6.37087962 11.6713867,5.79437934 C11.6713867,5.18923309 11.8987607,4.70762983 12.3535156,4.34955512 C12.8082705,3.99148041 13.409827,3.81244575 14.1582031,3.81244575 C14.938806,3.81244575 15.656735,3.95567348 16.3120117,4.24213325 L16.0273438,5.03705512 C15.3792285,4.76491834 14.7490265,4.628852 14.1367188,4.628852 C13.6533179,4.628852 13.2755547,4.7326921 13.003418,4.94037543 C12.7312812,5.14805876 12.5952148,5.43630458 12.5952148,5.80512153 C12.5952148,6.07725831 12.6453446,6.30015647 12.7456055,6.4738227 C12.8458664,6.64748893 13.0150541,6.80682979 13.2531738,6.95185004 C13.4912935,7.0968703 13.8556291,7.25710633 14.3461914,7.43256293 C15.1697632,7.72618419 15.736408,8.04128521 16.0461426,8.37787543 C16.3558772,8.71446566 16.5107422,9.15131025 16.5107422,9.68842231 L16.5107422,9.68842231 Z" id="S-" fill="#4A4A4A"></path> - <path d="M9.5,8.5 L18.7195444,7.5" id="Line" stroke="#4A4A4A" stroke-linecap="round" opacity="0.5" transform="translate(14.109772, 8.000000) scale(1, -1) translate(-14.109772, -8.000000) "></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-underline-o-n.svg b/src/skins/vector/img/button-text-underline-o-n.svg deleted file mode 100644 index 870be3ce..00000000 --- a/src/skins/vector/img/button-text-underline-o-n.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>FD84FF7C-43E4-4312-90AB-5A59AD018377</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-390.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_underline_ON" transform="translate(96.000000, 0.000000)"> - <rect id="Rectangle-108" fill="#4A4A4A" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M17.0092773,4.14746094 L17.0092773,9.22851562 C17.0092773,10.1237024 16.738935,10.8273086 16.1982422,11.3393555 C15.6575494,11.8514023 14.9145555,12.1074219 13.9692383,12.1074219 C13.0239211,12.1074219 12.2925644,11.849612 11.7751465,11.3339844 C11.2577285,10.8183568 10.9990234,10.1093795 10.9990234,9.20703125 L10.9990234,4.14746094 L11.9121094,4.14746094 L11.9121094,9.27148438 C11.9121094,9.92676109 12.091144,10.4298485 12.4492188,10.7807617 C12.8072935,11.1316749 13.3336554,11.3071289 14.0283203,11.3071289 C14.6907585,11.3071289 15.2010073,11.1307798 15.559082,10.7780762 C15.9171567,10.4253726 16.0961914,9.91959965 16.0961914,9.26074219 L16.0961914,4.14746094 L17.0092773,4.14746094 Z" id="U" fill="#FFFFFF"></path> - <path d="M9.5,13.5 L18.7195444,13.5" id="Line" stroke="#4A4A4A" stroke-linecap="round" opacity="0.5" transform="translate(14.109772, 13.500000) scale(1, -1) translate(-14.109772, -13.500000) "></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/button-text-underline.svg b/src/skins/vector/img/button-text-underline.svg deleted file mode 100644 index 26f44853..00000000 --- a/src/skins/vector/img/button-text-underline.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="28px" height="16px" viewBox="0 0 28 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>13E7EE68-9B16-4A3D-8F9F-31E4BAB7E438</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="02_x-Chat-text-input-markdown-panel-MD_on" transform="translate(-390.000000, -745.000000)"> - <g id="format-buttons-A-Copy" transform="translate(294.000000, 745.000000)"> - <g id="button_text_underline" transform="translate(96.000000, 0.000000)"> - <rect id="Rectangle-108" fill-opacity="0.1" fill="#000000" x="0" y="0" width="28" height="16" rx="8"></rect> - <path d="M17.0092773,4.14746094 L17.0092773,9.22851562 C17.0092773,10.1237024 16.738935,10.8273086 16.1982422,11.3393555 C15.6575494,11.8514023 14.9145555,12.1074219 13.9692383,12.1074219 C13.0239211,12.1074219 12.2925644,11.849612 11.7751465,11.3339844 C11.2577285,10.8183568 10.9990234,10.1093795 10.9990234,9.20703125 L10.9990234,4.14746094 L11.9121094,4.14746094 L11.9121094,9.27148438 C11.9121094,9.92676109 12.091144,10.4298485 12.4492188,10.7807617 C12.8072935,11.1316749 13.3336554,11.3071289 14.0283203,11.3071289 C14.6907585,11.3071289 15.2010073,11.1307798 15.559082,10.7780762 C15.9171567,10.4253726 16.0961914,9.91959965 16.0961914,9.26074219 L16.0961914,4.14746094 L17.0092773,4.14746094 Z" id="U" fill-opacity="0.7" fill="#000000"></path> - <path d="M9.5,13.5 L18.7195444,13.5" id="Line" stroke="#4A4A4A" stroke-linecap="round" opacity="0.5" transform="translate(14.109772, 13.500000) scale(1, -1) translate(-14.109772, -13.500000) "></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/call.png b/src/skins/vector/img/call.png deleted file mode 100644 index a7805e05..00000000 Binary files a/src/skins/vector/img/call.png and /dev/null differ diff --git a/src/skins/vector/img/call.svg b/src/skins/vector/img/call.svg deleted file mode 100644 index f528f9a2..00000000 --- a/src/skins/vector/img/call.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="30px" height="22px" viewBox="-1 -1 30 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icons_video</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_13-Chat-member-profile" sketch:type="MSArtboardGroup" transform="translate(-910.000000, -723.000000)" stroke="#76CFA6"> - <g id="icons_video" sketch:type="MSLayerGroup" transform="translate(910.000000, 722.000000)"> - <g id="Rectangle-20-+-Path-16" transform="translate(0.000000, 0.464286)" sketch:type="MSShapeGroup"> - <rect id="Rectangle-20" fill="#FFFFFF" x="0" y="0.535714286" width="20" height="20" rx="4"></rect> - <path d="M20.75,10.6964286 C20.75,14.0446429 24.188247,15.7371974 24.188247,15.7371974 C25.5057636,16.651593 26.5738219,16.0843085 26.5738219,14.4868066 L26.5738219,6.90605053 C26.5738219,5.30108314 25.4784055,4.70120148 24.188247,5.65565975 C24.188247,5.65565975 20.75,7.34821429 20.75,10.6964286 Z" id="Path-16"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/camera.svg b/src/skins/vector/img/camera.svg deleted file mode 100644 index 6519496f..00000000 --- a/src/skins/vector/img/camera.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="17px" height="15px" viewBox="-1 -1 16 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icon_camera</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="06a-Room-settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="06_4-Room-settings-admin" sketch:type="MSArtboardGroup" transform="translate(-248.000000, -71.000000)" fill="#454545"> - <path d="M255.5,76.25 C256.119795,76.25 256.649737,76.4700499 257.089844,76.9101562 C257.52995,77.3502626 257.75,77.8802052 257.75,78.5 C257.75,79.1197948 257.52995,79.6497374 257.089844,80.0898438 C256.649737,80.5299501 256.119795,80.75 255.5,80.75 C254.880205,80.75 254.350263,80.5299501 253.910156,80.0898438 C253.47005,79.6497374 253.25,79.1197948 253.25,78.5 C253.25,77.8802052 253.47005,77.3502626 253.910156,76.9101562 C254.350263,76.4700499 254.880205,76.25 255.5,76.25 L255.5,76.25 Z M261,73 C261.552086,73 262.023436,73.1953105 262.414062,73.5859375 C262.804689,73.9765645 263,74.4479139 263,75 L263,82 C263,82.5520861 262.804689,83.0234355 262.414062,83.4140625 C262.023436,83.8046895 261.552086,84 261,84 L250,84 C249.447914,84 248.976564,83.8046895 248.585938,83.4140625 C248.195311,83.0234355 248,82.5520861 248,82 L248,75 C248,74.4479139 248.195311,73.9765645 248.585938,73.5859375 C248.976564,73.1953105 249.447914,73 250,73 L251.75,73 L252.148438,71.9375 C252.247396,71.6822904 252.428384,71.4622405 252.691406,71.2773438 C252.954428,71.092447 253.223957,71 253.5,71 L257.5,71 C257.776043,71 258.045572,71.092447 258.308594,71.2773438 C258.571616,71.4622405 258.752604,71.6822904 258.851562,71.9375 L259.25,73 L261,73 Z M255.5,82 C256.463546,82 257.287757,81.6575555 257.972656,80.9726562 C258.657556,80.287757 259,79.4635465 259,78.5 C259,77.5364535 258.657556,76.712243 257.972656,76.0273438 C257.287757,75.3424445 256.463546,75 255.5,75 C254.536454,75 253.712243,75.3424445 253.027344,76.0273438 C252.342444,76.712243 252,77.5364535 252,78.5 C252,79.4635465 252.342444,80.287757 253.027344,80.9726562 C253.712243,81.6575555 254.536454,82 255.5,82 L255.5,82 Z" id="icon_camera" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/camera_green.svg b/src/skins/vector/img/camera_green.svg deleted file mode 100644 index 5aae5502..00000000 --- a/src/skins/vector/img/camera_green.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="2048px" height="1792px" viewBox="0 0 2048 1792" enable-background="new 0 0 2048 1792" xml:space="preserve"> -<path fill="#76CFA6" d="M1024,672c79.333,0,147.166,28.167,203.5,84.5c56.333,56.334,84.5,124.167,84.5,203.5 - c0,79.334-28.167,147.167-84.5,203.5c-56.334,56.334-124.167,84.5-203.5,84.5c-79.334,0-147.167-28.166-203.5-84.5 - C764.166,1107.167,736,1039.334,736,960c0-79.333,28.166-147.166,84.5-203.5C876.833,700.167,944.666,672,1024,672z M1728,256 - c70.666,0,131,25,181,75s75,110.334,75,181v896c0,70.667-25,131-75,181s-110.334,75-181,75H320c-70.667,0-131-25-181-75 - s-75-110.333-75-181V512c0-70.666,25-131,75-181s110.333-75,181-75h224l51-136c12.666-32.666,35.833-60.833,69.5-84.5 - C698.166,11.834,732.666,0,768,0h512c35.333,0,69.833,11.834,103.5,35.5c33.666,23.667,56.833,51.834,69.5,84.5l51,136H1728z - M1024,1408c123.333,0,228.833-43.833,316.5-131.5c87.666-87.666,131.5-193.166,131.5-316.5c0-123.333-43.834-228.833-131.5-316.5 - C1252.833,555.834,1147.333,512,1024,512c-123.334,0-228.834,43.834-316.5,131.5C619.833,731.167,576,836.667,576,960 - c0,123.334,43.833,228.834,131.5,316.5C795.166,1364.167,900.666,1408,1024,1408z"/> -</svg> diff --git a/src/skins/vector/img/cancel-black.png b/src/skins/vector/img/cancel-black.png deleted file mode 100644 index 87dcfd41..00000000 Binary files a/src/skins/vector/img/cancel-black.png and /dev/null differ diff --git a/src/skins/vector/img/cancel-black2.png b/src/skins/vector/img/cancel-black2.png deleted file mode 100644 index a928c61b..00000000 Binary files a/src/skins/vector/img/cancel-black2.png and /dev/null differ diff --git a/src/skins/vector/img/cancel-red.svg b/src/skins/vector/img/cancel-red.svg deleted file mode 100644 index a72a970b..00000000 --- a/src/skins/vector/img/cancel-red.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#ff0064" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path> - </g> -</svg> diff --git a/src/skins/vector/img/cancel-small.svg b/src/skins/vector/img/cancel-small.svg deleted file mode 100644 index e4c8cafc..00000000 --- a/src/skins/vector/img/cancel-small.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="14px" height="14px" viewBox="-1 -1 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Line + Line</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="Line-+-Line" sketch:type="MSLayerGroup" transform="translate(2.000000, 2.000000)" stroke="#4A4A4A" stroke-width="2.82" stroke-linecap="square"> - <path d="M8,0 L0,8" id="Line" sketch:type="MSShapeGroup"></path> - <path d="M0,0 L8,8" id="Line" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/cancel-white.svg b/src/skins/vector/img/cancel-white.svg deleted file mode 100644 index 65e14c2f..00000000 --- a/src/skins/vector/img/cancel-white.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#ffffff" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/cancel.png b/src/skins/vector/img/cancel.png deleted file mode 100644 index 2bda8ff5..00000000 Binary files a/src/skins/vector/img/cancel.png and /dev/null differ diff --git a/src/skins/vector/img/cancel.svg b/src/skins/vector/img/cancel.svg deleted file mode 100644 index e3206002..00000000 --- a/src/skins/vector/img/cancel.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#454545" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/cancel_green.svg b/src/skins/vector/img/cancel_green.svg deleted file mode 100644 index 2e3d759b..00000000 --- a/src/skins/vector/img/cancel_green.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#76CFA6" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/chevron-left.png b/src/skins/vector/img/chevron-left.png deleted file mode 100644 index efb0065d..00000000 Binary files a/src/skins/vector/img/chevron-left.png and /dev/null differ diff --git a/src/skins/vector/img/chevron-right.png b/src/skins/vector/img/chevron-right.png deleted file mode 100644 index 18a4684e..00000000 Binary files a/src/skins/vector/img/chevron-right.png and /dev/null differ diff --git a/src/skins/vector/img/chevron.png b/src/skins/vector/img/chevron.png deleted file mode 100644 index 81236f91..00000000 Binary files a/src/skins/vector/img/chevron.png and /dev/null differ diff --git a/src/skins/vector/img/close-white.png b/src/skins/vector/img/close-white.png deleted file mode 100644 index d8752ed9..00000000 Binary files a/src/skins/vector/img/close-white.png and /dev/null differ diff --git a/src/skins/vector/img/create-big.png b/src/skins/vector/img/create-big.png deleted file mode 100644 index b7307a11..00000000 Binary files a/src/skins/vector/img/create-big.png and /dev/null differ diff --git a/src/skins/vector/img/create-big.svg b/src/skins/vector/img/create-big.svg deleted file mode 100644 index 2450542b..00000000 --- a/src/skins/vector/img/create-big.svg +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="26px" height="26px" viewBox="-1 -1 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch --> - <title>icons_create_room</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="01-Sign-up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="01_2-Sign-up-2" sketch:type="MSArtboardGroup" transform="translate(-14.000000, -653.000000)"> - <g id="Left-panel" sketch:type="MSLayerGroup" transform="translate(-4.000000, 0.000000)"> - <g id="right_bottom" transform="translate(0.000000, 626.000000)" sketch:type="MSShapeGroup"> - <g id="Group-Copy-29" transform="translate(18.000000, 27.000000)"> - <g id="Group-Copy-15"> - <g id="icons_create_room"> - <g id="Oval-1-Copy-7-+-Group-Copy-5-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy" fill="#454545"> - <circle id="Oval-1-Copy-7" cx="12" cy="12" r="12"></circle> - </g> - <path d="M7,12 L17,12" id="Line" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"></path> - <path d="M12,7 L12,17" id="Line" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/create.png b/src/skins/vector/img/create.png deleted file mode 100644 index 2d6107ac..00000000 Binary files a/src/skins/vector/img/create.png and /dev/null differ diff --git a/src/skins/vector/img/delete.png b/src/skins/vector/img/delete.png deleted file mode 100644 index 8ff20a11..00000000 Binary files a/src/skins/vector/img/delete.png and /dev/null differ diff --git a/src/skins/vector/img/directory-big.png b/src/skins/vector/img/directory-big.png deleted file mode 100644 index 03cab69c..00000000 Binary files a/src/skins/vector/img/directory-big.png and /dev/null differ diff --git a/src/skins/vector/img/directory-big.svg b/src/skins/vector/img/directory-big.svg deleted file mode 100644 index 5631a2ae..00000000 --- a/src/skins/vector/img/directory-big.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="26px" height="26px" viewBox="-1 -2 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch --> - <title>icons_directory</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="01-Sign-up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="01_2-Sign-up-2" sketch:type="MSArtboardGroup" transform="translate(-14.000000, -689.000000)" fill="#454545"> - <g id="Left-panel" sketch:type="MSLayerGroup" transform="translate(-4.000000, 0.000000)"> - <g id="right_bottom" transform="translate(0.000000, 626.000000)" sketch:type="MSShapeGroup"> - <g id="Group-Copy-29" transform="translate(18.000000, 27.000000)"> - <g id="icons_directory" transform="translate(0.000000, 36.000000)"> - <path d="M8.74940618,2.46971496 C8.58491686,2.46971496 8.47565321,2.15795724 8.32719715,1.68349169 C8.11698337,1.01306413 7.80106888,0 6.69002375,0 L1.38182898,0 C0.63064133,0 0.0243467933,0.589073634 0.00118764846,1.35391924 L0,19.6264846 C0,20.3895487 0.620546318,21.0095012 1.38182898,21.0095012 L22.6187648,21.0095012 C23.3800475,21.0095012 24,20.3895487 24,19.6264846 L24,3.85213777 C24,3.08966746 23.3800475,2.46971496 22.6187648,2.46971496 L8.74940618,2.46971496 Z M23.1086698,19.5068597 C23.1086698,19.7757653 22.8889549,19.9946556 22.6187648,19.9946556 L1.38182898,19.9946556 C1.11163895,19.9946556 0.890736342,19.7757653 0.890736342,19.5068597 L0.89192399,6.49465558 L23.1086698,6.49465558 L23.1086698,19.5068597 L23.1086698,19.5068597 Z M23.1086698,5.60391924 L0.89192399,5.60391924 L0.89192399,1.36698337 C0.90023753,1.09976247 1.11579572,0.890736342 1.38182898,0.890736342 L6.69002375,0.890736342 C7.10273159,0.890736342 7.24643705,1.2131829 7.47624703,1.94893112 C7.66270784,2.54453682 7.91805226,3.36045131 8.74940618,3.36045131 L22.6187648,3.36045131 C22.8889549,3.36045131 23.1086698,3.5807601 23.1086698,3.85213777 L23.1086698,5.60391924 L23.1086698,5.60391924 Z" id="Fill-137"></path> - <path d="M23.1086698,19.5068597 C23.1086698,19.7757653 22.8889549,19.9946556 22.6187648,19.9946556 L1.38182898,19.9946556 C1.11163895,19.9946556 0.890736342,19.7757653 0.890736342,19.5068597 L0.89192399,6.49465558 L23.1086698,6.49465558 L23.1086698,19.5068597 L23.1086698,19.5068597 Z" id="Path-Copy-2" fill-opacity="0.1"></path> - <path d="M0.89192399,5.60391924 L0.89192399,1.36698337 C0.90023753,1.09976247 1.11579572,0.890736342 1.38182898,0.890736342 L6.69002375,0.890736342 C7.10273159,0.890736342 7.24643705,1.2131829 7.47624703,1.94893112 C7.66270784,2.54453682 7.91805226,3.36045131 8.74940618,3.36045131 L22.6187648,3.36045131 C22.8889549,3.36045131 23.1086698,3.5807601 23.1086698,3.85213777 L23.1086698,5.60391924 L0.89192399,5.60391924 Z" id="Path-Copy" fill-opacity="0.1"></path> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/download.png b/src/skins/vector/img/download.png deleted file mode 100644 index 1999ebf7..00000000 Binary files a/src/skins/vector/img/download.png and /dev/null differ diff --git a/src/skins/vector/img/download.svg b/src/skins/vector/img/download.svg deleted file mode 100644 index d0ea090d..00000000 --- a/src/skins/vector/img/download.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="12px" height="14px" viewBox="-1 -1 12 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Fill 75</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_x-Chat-MAX" sketch:type="MSArtboardGroup" transform="translate(-280.000000, -546.000000)" fill="#76CFA6"> - <g id="Group" sketch:type="MSLayerGroup" transform="translate(243.000000, 58.000000)"> - <g id="Group-Copy-13-+-Matrix-HQ-Copy-17-+-Bitmap" transform="translate(1.000000, 181.000000)" sketch:type="MSShapeGroup"> - <g id="Group-Copy-13"> - <path d="M45.3400426,312.526774 C45.4870048,312.526774 45.633967,312.470898 45.7464849,312.35838 C45.9699899,312.134109 45.9699899,311.771296 45.7464849,311.547026 L41.3659396,307.168011 C41.1424345,306.943741 40.7788562,306.944506 40.5545857,307.167246 L36.1686823,311.540137 C35.9444119,311.764408 35.9436465,312.127986 36.1671515,312.352256 C36.3906565,312.577292 36.7542349,312.577292 36.9785053,312.353787 L40.3915495,308.950694 L40.3930804,318.425929 C40.3930804,318.742816 40.6510296,319 40.9671515,319 C41.2848042,319 41.5412226,318.742816 41.5412226,318.425929 L41.5396917,308.965237 L44.9343656,312.35838 C45.0461182,312.470898 45.1930804,312.526774 45.3400426,312.526774 L45.3400426,312.526774 Z" id="Fill-75" transform="translate(40.957057, 313.000000) rotate(-180.000000) translate(-40.957057, -313.000000) "></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/e2e-blocked.svg b/src/skins/vector/img/e2e-blocked.svg deleted file mode 100644 index 0ab2c6ef..00000000 --- a/src/skins/vector/img/e2e-blocked.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>2805649B-D39D-43EA-A357-659EF9B97BA4</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="typing-indicator" transform="translate(-301.000000, -328.000000)" fill="#BA6363"> - <path d="M307,340 C310.313708,340 313,337.313708 313,334 C313,330.686292 310.313708,328 307,328 C303.686292,328 301,330.686292 301,334 C301,337.313708 303.686292,340 307,340 Z M304,333 L310,333 L310,335 L304,335 L304,333 Z" id="blocked_icon"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/e2e-unencrypted.svg b/src/skins/vector/img/e2e-unencrypted.svg deleted file mode 100644 index 14672236..00000000 --- a/src/skins/vector/img/e2e-unencrypted.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="14px" height="12px" viewBox="0 0 14 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>16F5F38E-A6A3-472A-BC13-13F0F12876CF</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.200000003"> - <g id="typing-indicator" transform="translate(-301.000000, -141.000000)" fill="#000000"> - <g id="unencrypted_icon" transform="translate(301.000000, 141.000000)"> - <g id="Lock-Copy" transform="translate(0.000000, 4.000000)"> - <g id="Layer_1"> - <polygon id="Shape" points="1.33333333 0.666666667 0 0.666666667 0 8 5 8 10 8 10 0.666666667 8.66666667 0.666666667"></polygon> - </g> - </g> - <g id="Lock-Copy-2" transform="translate(6.000000, 0.000000)"> - <g id="Layer_1"> - <path d="M7.66666667,3.66666667 C7.66666667,1.63333333 6.03333333,0 4,0 C1.96666667,0 0.333333333,1.63333333 0.333333333,3.66666667 L0.333333333,4.66666667 L7.66666667,4.66666667 L7.66666667,3.66666667 Z M1.66666667,4.66666667 L1.66666667,3.66666667 C1.66666667,2.36666667 2.7,1.33333333 4,1.33333333 C5.3,1.33333333 6.33333333,2.36666667 6.33333333,3.66666667 L6.33333333,4.66666667 L4,4.66666667 L1.66666667,4.66666667 Z" id="Shape"></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/e2e-verified.svg b/src/skins/vector/img/e2e-verified.svg deleted file mode 100644 index b65f50b2..00000000 --- a/src/skins/vector/img/e2e-verified.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="10px" height="12px" viewBox="0 0 10 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>48BF5D32-306C-4B20-88EB-24B1F743CAC9</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="typing-indicator" transform="translate(-301.000000, -172.000000)" fill="#76CFA6"> - <path d="M309.666667,175.666667 C309.666667,173.633333 308.033333,172 306,172 C303.966667,172 302.333333,173.633333 302.333333,175.666667 L302.333333,176.666667 L301,176.666667 L301,184 L306,184 L311,184 L311,176.666667 L309.666667,176.666667 L309.666667,175.666667 Z M306,176.666667 L303.666667,176.666667 L303.666667,175.666667 C303.666667,174.366667 304.7,173.333333 306,173.333333 C307.3,173.333333 308.333333,174.366667 308.333333,175.666667 L308.333333,176.666667 L306,176.666667 L306,176.666667 Z" id="verified_icon"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/e2e-warning.svg b/src/skins/vector/img/e2e-warning.svg deleted file mode 100644 index 8a55f199..00000000 --- a/src/skins/vector/img/e2e-warning.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="15px" height="12px" viewBox="0 0 15 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>CCDDE6F6-B552-48FD-AD54-6939841CA2DD</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="typing-indicator" transform="translate(-299.000000, -294.000000)" fill="#E9BF37"> - <path d="M313.568455,304.982113 L306.898576,294.310305 C306.776309,294.117108 306.563606,294 306.334971,294 C306.106335,294 305.893632,294.117108 305.771366,294.310305 L299.101486,304.982113 C298.971497,305.189962 298.966004,305.452367 299.087182,305.665474 C299.20836,305.87858 299.436676,306.008036 299.681766,306.002604 L313.021525,306.002604 C313.260642,305.995965 313.477893,305.861783 313.590891,305.650946 C313.703889,305.440108 313.695328,305.184904 313.568455,304.982113 L313.568455,304.982113 Z M307.018633,304.00164 L305.684657,304.00164 L305.684657,302.667664 L307.018633,302.667664 L307.018633,304.00164 Z M307.018633,301.333689 L305.684657,301.333689 L305.684657,297.998749 L307.018633,297.998749 L307.018633,301.333689 Z" id="unverified_icon"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/edit.png b/src/skins/vector/img/edit.png deleted file mode 100644 index 6f373d3f..00000000 Binary files a/src/skins/vector/img/edit.png and /dev/null differ diff --git a/src/skins/vector/img/edit.svg b/src/skins/vector/img/edit.svg deleted file mode 100644 index 9ba00607..00000000 --- a/src/skins/vector/img/edit.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve"> - <g> - <rect fill="#000000" x="167.664" y="69.108" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 219.262 633.2606)" width="146.238" height="404.224"/> - <path fill="#000000" d="M502.05,64.887L447.116,9.952c-13.386-13.385-36.032-12.44-50.585,2.113l-51.609,51.61L448.328,167.08l51.609-51.608 - C514.486,100.918,515.434,78.271,502.05,64.887z"/> - <polygon fill="#000000" points="36.56,378.704 0,512 133.283,475.439"/> - </g> -</svg> diff --git a/src/skins/vector/img/edit_green.svg b/src/skins/vector/img/edit_green.svg deleted file mode 100644 index f7f4c7ad..00000000 --- a/src/skins/vector/img/edit_green.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve"> - <g> - <rect fill="#76CFA6" x="167.664" y="69.108" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 219.262 633.2606)" width="146.238" height="404.224"/> - <path fill="#76CFA6" d="M502.05,64.887L447.116,9.952c-13.386-13.385-36.032-12.44-50.585,2.113l-51.609,51.61L448.328,167.08l51.609-51.608 - C514.486,100.918,515.434,78.271,502.05,64.887z"/> - <polygon fill="#76CFA6" points="36.56,378.704 0,512 133.283,475.439"/> - </g> -</svg> diff --git a/src/skins/vector/img/ellipsis.svg b/src/skins/vector/img/ellipsis.svg deleted file mode 100644 index d60c8440..00000000 --- a/src/skins/vector/img/ellipsis.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icons_archive</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="ellipsis" sketch:type="MSLayerGroup"> - <g id="03-Input" sketch:type="MSShapeGroup"> - <g id="03_3-Input-filled"> - <g id="right_default"> - <g id="right_middle"> - <g id="Left-panel"> - <g id="icons_archive"> - <rect id="Rectangle-1" fill="#ECECEC" x="0" y="0" width="24" height="24"></rect> - <path d="M7.338,13.154 C7.842,13.154 8.164,12.776 8.164,12.272 C8.164,11.754 7.842,11.39 7.338,11.39 C6.848,11.39 6.512,11.754 6.512,12.272 C6.498,12.776 6.848,13.154 7.338,13.154 L7.338,13.154 L7.338,13.154 Z M12,13.154 C12.504,13.154 12.84,12.776 12.84,12.272 C12.826,11.754 12.504,11.39 12.014,11.39 C11.524,11.39 11.174,11.754 11.174,12.272 C11.16,12.776 11.51,13.154 12,13.154 L12,13.154 L12,13.154 Z M16.662,13.154 C17.18,13.154 17.502,12.776 17.502,12.272 C17.502,11.754 17.166,11.39 16.676,11.39 C16.186,11.39 15.836,11.754 15.836,12.272 C15.836,12.776 16.172,13.154 16.662,13.154 L16.662,13.154 L16.662,13.154 Z" id="Matrix-HQ-Copy-15" fill="#454545"></path> - </g> - </g> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/eol.svg b/src/skins/vector/img/eol.svg deleted file mode 100644 index 02d1946c..00000000 --- a/src/skins/vector/img/eol.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="22px" height="16px" viewBox="-1 -1 22 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch --> - <title>icon_eol</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="03-Input" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="03_2-Mentions-autocomplete" sketch:type="MSArtboardGroup" transform="translate(-772.000000, -670.000000)"> - <g id="icon_eol" sketch:type="MSLayerGroup" transform="translate(772.000000, 670.000000)"> - <path d="M0,7.5 L17,7.5" id="Path-118" stroke="#76CFA6" sketch:type="MSShapeGroup"></path> - <path d="M13,2 L18,7.38056399 L13,12.761128" id="Path-119" stroke="#76CFA6" sketch:type="MSShapeGroup"></path> - <path d="M19.5,0 L19.5,14" id="Path-120" stroke="#76CFA6" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/f4c371.png b/src/skins/vector/img/f4c371.png deleted file mode 100644 index ad3b8f16..00000000 Binary files a/src/skins/vector/img/f4c371.png and /dev/null differ diff --git a/src/skins/vector/img/file.png b/src/skins/vector/img/file.png deleted file mode 100644 index 5904ea82..00000000 Binary files a/src/skins/vector/img/file.png and /dev/null differ diff --git a/src/skins/vector/img/filegrid.png b/src/skins/vector/img/filegrid.png deleted file mode 100644 index c2c2799f..00000000 Binary files a/src/skins/vector/img/filegrid.png and /dev/null differ diff --git a/src/skins/vector/img/fileicon.png b/src/skins/vector/img/fileicon.png deleted file mode 100644 index af018efa..00000000 Binary files a/src/skins/vector/img/fileicon.png and /dev/null differ diff --git a/src/skins/vector/img/filelist.png b/src/skins/vector/img/filelist.png deleted file mode 100644 index 3cf6cb49..00000000 Binary files a/src/skins/vector/img/filelist.png and /dev/null differ diff --git a/src/skins/vector/img/files.png b/src/skins/vector/img/files.png deleted file mode 100644 index 83932267..00000000 Binary files a/src/skins/vector/img/files.png and /dev/null differ diff --git a/src/skins/vector/img/files.svg b/src/skins/vector/img/files.svg deleted file mode 100644 index 20aba851..00000000 --- a/src/skins/vector/img/files.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="17px" height="22px" viewBox="0 0 17 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icons_browse_files</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_13-Chat-member-profile" sketch:type="MSArtboardGroup" transform="translate(-1025.000000, -33.000000)"> - <g id="icons_browse_files" sketch:type="MSLayerGroup" transform="translate(1025.000000, 32.000000)"> - <g id="Rectangle-5-+-Rectangle-6-Copy" transform="translate(0.000000, 1.000000)" sketch:type="MSShapeGroup"> - <path d="M0,4.00955791 C0,1.79514022 1.78163126,0 3.99825563,0 L9.59161955,0 C9.59161955,0 16.3225806,6.49234232 16.3225806,6.49234232 L16.3225806,18.0063928 C16.3225806,20.2120012 14.5290874,22 12.3296282,22 L3.99295243,22 C1.7877057,22 0,20.1996477 0,17.9904421 L0,4.00955791 Z" id="Rectangle-5" stroke="#76CFA6"></path> - <path d="M15.6804916,7.49527496 L11.5273266,7.49527496 C10.3308881,7.49527496 9.3609831,6.52527676 9.3609831,5.3289315 L9.3609831,1.88544393 L15.6804916,7.49527496 Z" id="Rectangle-6-Copy" fill="#FFFFFF"></path> - <path d="M16.3225806,7.09677419 L11.4129801,7.09677419 C10.2050375,7.09677419 9.22580645,6.11744908 9.22580645,4.90960051 L9.22580645,0" id="Rectangle-6" stroke="#76CFA6"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/fullscreen.svg b/src/skins/vector/img/fullscreen.svg deleted file mode 100644 index e333abb6..00000000 --- a/src/skins/vector/img/fullscreen.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="29px" height="22px" viewBox="-1 -1 29 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Zoom</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-824.000000, -667.000000)"> - <g id="Zoom" sketch:type="MSLayerGroup" transform="translate(824.000000, 667.000000)"> - <rect id="Rectangle-20" stroke="#FFFFFF" sketch:type="MSShapeGroup" x="0" y="0" width="27" height="20" rx="4"></rect> - <rect id="Rectangle-20" stroke="#FFFFFF" sketch:type="MSShapeGroup" x="6" y="2" width="15" height="11" rx="4"></rect> - <g id="Line-+-Triangle-3" transform="translate(4.474874, 15.181981) rotate(-45.000000) translate(-4.474874, -15.181981) translate(0.974874, 13.181981)" sketch:type="MSShapeGroup"> - <path d="M6.53553391,2 L3,2" id="Line" stroke="#FFFFFF" stroke-linecap="square"></path> - <path d="M3.26960678,3.51960678 L0.269606781,2.01960678 L3.26960678,0.519606781 L3.26960678,3.51960678 Z" id="Triangle-3" fill="#FFFFFF"></path> - </g> - <g id="Line-+-Triangle-3-Copy" transform="translate(22.681981, 15.181981) scale(-1, 1) rotate(-45.000000) translate(-22.681981, -15.181981) translate(19.181981, 13.181981)" sketch:type="MSShapeGroup"> - <path d="M6.53553391,2 L3,2" id="Line" stroke="#FFFFFF" stroke-linecap="square"></path> - <path d="M3.375,0.5 L3.375,3.5 L0.375,2 L3.375,0.5 Z" id="Triangle-3" fill="#FFFFFF"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/hangup.svg b/src/skins/vector/img/hangup.svg deleted file mode 100644 index be038d2b..00000000 --- a/src/skins/vector/img/hangup.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="26px" viewBox="-1 -1 25 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.3 (16618) - http://www.bohemiancoding.com/sketch --> - <title>Fill 72 + Path 98</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-910.000000, -719.000000)" stroke="#FF0064"> - <g id="Fill-72-+-Path-98" sketch:type="MSLayerGroup" transform="translate(910.000000, 719.000000)"> - <path d="M17.8404444,24 C15.8137778,24 10.8875556,21.408 6.75022222,15.8448889 C2.88088889,10.6413333 1,6.88222222 1,4.35244444 C1,2.36088889 2.37511111,1.41022222 3.11422222,0.9 L3.29644444,0.772888889 C4.11288889,0.188888889 5.38222222,0 5.86888889,0 C6.72222222,0 7.08177778,0.499555556 7.29955556,0.935111111 C7.48488889,1.30311111 9.01777778,4.59511111 9.17288889,5.00444444 C9.41111111,5.63377778 9.33288889,6.55111111 8.596,7.07822222 L8.46622222,7.16844444 C8.10044444,7.42222222 7.42,7.89333333 7.32577778,8.46622222 C7.28,8.74488889 7.37333333,9.03644444 7.61111111,9.35688889 C8.79777778,10.956 12.5862222,15.6506667 13.2693333,16.2884444 C13.8044444,16.7884444 14.4826667,16.8595556 14.9444444,16.4702222 C15.4222222,16.0675556 15.6342222,15.8297778 15.6364444,15.8271111 L15.6857778,15.7795556 C15.7257778,15.7457778 16.0991111,15.4497778 16.7093333,15.4497778 C17.1497778,15.4497778 17.5973333,15.6017778 18.04,15.9008889 C19.1884444,16.6768889 21.7808889,18.4106667 21.7808889,18.4106667 L21.8226667,18.4426667 C22.1542222,18.7266667 22.6333333,19.5453333 22.0751111,20.6106667 C21.496,21.7168889 19.6986667,24 17.8404444,24 L17.8404444,24 Z" id="Fill-72" sketch:type="MSShapeGroup"></path> - <path d="M19.8035085,4 L0,22.8035085" id="Path-98" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/hide.png b/src/skins/vector/img/hide.png deleted file mode 100644 index c5aaf0dd..00000000 Binary files a/src/skins/vector/img/hide.png and /dev/null differ diff --git a/src/skins/vector/img/icon-address-delete.svg b/src/skins/vector/img/icon-address-delete.svg deleted file mode 100644 index 1289d5aa..00000000 --- a/src/skins/vector/img/icon-address-delete.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="11px" height="9px" viewBox="0 0 11 9" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>943783E9-DBD7-4D4E-BAC9-35437C17C2C4</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="1:1-chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round"> - <g id="Chat-People-2b-Invite-modal" transform="translate(-579.000000, -346.000000)" stroke="#FF0064"> - <g id="icon_context_delete-copy" transform="translate(580.000000, 346.000000)"> - <path d="M0.45,0.45 L8.55,8.55" id="Line"></path> - <path d="M0.45,0.45 L8.55,8.55" id="Line-Copy-2" transform="translate(4.500000, 4.500000) scale(-1, 1) translate(-4.500000, -4.500000) "></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-call.svg b/src/skins/vector/img/icon-call.svg deleted file mode 100644 index 0ca5c29e..00000000 --- a/src/skins/vector/img/icon-call.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> - <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-109"/> - <path d="M23,28 C21.195,28 16.807,25.624 13.122,20.524 C9.675,15.755 8,12.309 8,9.99 C8,8.164 9.225,7.293 9.883,6.825 L10.045,6.708 C10.773,6.173 11.903,6 12.337,6 C13.097,6 13.417,6.458 13.611,6.857 C13.776,7.195 15.141,10.212 15.28,10.587 C15.492,11.164 15.422,12.005 14.766,12.488 L14.65,12.571 C14.324,12.804 13.718,13.236 13.634,13.761 C13.594,14.016 13.677,14.283 13.889,14.577 C14.946,16.043 18.32,20.346 18.928,20.931 C19.405,21.389 20.009,21.455 20.42,21.098 C20.846,20.729 21.035,20.511 21.037,20.508 L21.081,20.465 C21.116,20.434 21.449,20.162 21.992,20.162 C22.385,20.162 22.783,20.302 23.178,20.576 C24.201,21.287 26.51,22.876 26.51,22.876 L26.547,22.906 C26.842,23.166 27.269,23.917 26.772,24.893 C26.256,25.907 24.655,28 23,28 L23,28 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-1"/> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-delete.svg b/src/skins/vector/img/icon-context-delete.svg deleted file mode 100644 index fba9fa11..00000000 --- a/src/skins/vector/img/icon-context-delete.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="15" height="15" viewBox="0, 0, 15, 15"> - <g id="Extra-icons"> - <g> - <path d="M3.45,3.45 L11.55,11.55" fill-opacity="0" stroke="#FF0064" stroke-width="1" stroke-linecap="round" id="Line"/> - <path d="M11.55,3.45 L3.45,11.55" fill-opacity="0" stroke="#FF0064" stroke-width="1" stroke-linecap="round" id="Line-Copy-2"/> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-fave-on.svg b/src/skins/vector/img/icon-context-fave-on.svg deleted file mode 100644 index 2ae172d8..00000000 --- a/src/skins/vector/img/icon-context-fave-on.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="13px" height="13px" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>DAE17B64-40B5-478A-8E8D-97AD1A6E25C8</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Extra-icons-sheet" transform="translate(-93.000000, -313.000000)"> - <g id="icon_context_fave_on" transform="translate(92.000000, 312.000000)"> - <rect id="Rectangle" fill-opacity="0" fill="#D8D8D8" x="0" y="0" width="15" height="15"></rect> - <polygon id="Star-1" stroke="#4A4A4A" stroke-linejoin="round" fill="#4A4A4A" points="7.5 10.75 3.67939586 12.7586105 4.40906632 8.50430523 1.31813264 5.49138954 5.58969793 4.87069477 7.5 1 9.41030207 4.87069477 13.6818674 5.49138954 10.5909337 8.50430523 11.3206041 12.7586105"></polygon> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-fave.svg b/src/skins/vector/img/icon-context-fave.svg deleted file mode 100644 index 451e1849..00000000 --- a/src/skins/vector/img/icon-context-fave.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="13px" height="13px" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>8A6E1837-F0F1-432E-A0DA-6F3741F71EBF</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.2"> - <g id="Extra-icons-sheet" transform="translate(-63.000000, -313.000000)"> - <g id="icon_context_fave" transform="translate(62.000000, 312.000000)"> - <rect id="Rectangle" fill-opacity="0" fill="#D8D8D8" x="0" y="0" width="15" height="15"></rect> - <polygon id="Star-1" stroke="#000000" stroke-linejoin="round" points="7.5 10.75 3.67939586 12.7586105 4.40906632 8.50430523 1.31813264 5.49138954 5.58969793 4.87069477 7.5 1 9.41030207 4.87069477 13.6818674 5.49138954 10.5909337 8.50430523 11.3206041 12.7586105"></polygon> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-low-on.svg b/src/skins/vector/img/icon-context-low-on.svg deleted file mode 100644 index 7578c633..00000000 --- a/src/skins/vector/img/icon-context-low-on.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="13px" height="13px" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>CD51482C-F2D4-4F63-AF9E-86513F9AF87F</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Extra-icons-sheet" transform="translate(-93.000000, -338.000000)"> - <g id="icon_context_low_on" transform="translate(92.000000, 337.000000)"> - <rect id="Rectangle-Copy" fill-opacity="0" fill="#D8D8D8" x="0" y="0" width="15" height="15"></rect> - <path d="M12.7604081,8 C13.2413214,8 13.3067421,8.25679316 12.9190465,8.57356358 L8.20351162,12.4264364 C7.81340686,12.7451752 7.18723719,12.7432068 6.79954156,12.4264364 L2.08400668,8.57356358 C1.69390193,8.25482476 1.76733588,8 2.24264506,8 L4.46666667,8 L4.46666667,3.00292933 C4.46666667,2.44902676 4.84616384,2 5.33587209,2 L9.66412791,2 C10.1441768,2 10.5333333,2.43788135 10.5333333,3.00292933 L10.5333333,8 L12.7604081,8 Z" id="Combined-Shape" stroke="#4A4A4A" stroke-linejoin="round" fill="#4A4A4A"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-low.svg b/src/skins/vector/img/icon-context-low.svg deleted file mode 100644 index 663f3ca9..00000000 --- a/src/skins/vector/img/icon-context-low.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="13px" height="13px" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>B160345F-40D3-4BE6-A860-6D04BF223EF7</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Extra-icons-sheet" transform="translate(-63.000000, -338.000000)"> - <g id="icon_context_low" transform="translate(62.000000, 337.000000)"> - <rect id="Rectangle" fill-opacity="0" fill="#D8D8D8" x="0" y="0" width="15" height="15"></rect> - <path d="M12.7604081,8 C13.2413214,8 13.3067421,8.25679316 12.9190465,8.57356358 L8.20351162,12.4264364 C7.81340686,12.7451752 7.18723719,12.7432068 6.79954156,12.4264364 L2.08400668,8.57356358 C1.69390193,8.25482476 1.76733588,8 2.24264506,8 L4.46666667,8 L4.46666667,3.00292933 C4.46666667,2.44902676 4.84616384,2 5.33587209,2 L9.66412791,2 C10.1441768,2 10.5333333,2.43788135 10.5333333,3.00292933 L10.5333333,8 L12.7604081,8 Z" id="Combined-Shape" stroke="#000000" stroke-linejoin="round" opacity="0.2"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-mute-mentions.svg b/src/skins/vector/img/icon-context-mute-mentions.svg deleted file mode 100644 index 3693b7a8..00000000 --- a/src/skins/vector/img/icon-context-mute-mentions.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="16" height="12" viewBox="0, 0, 16, 12"> - <g id="Screens-revised" opacity="0.2"> - <g> - <path d="M7.142,0.009 C7.687,0.152 7.921,0.47 8,1 L8,11 C8,11.866 6.974,12.323 6.33,11.743 L3.288,9 L1,9 C0.448,9 0,8.552 0,8 L0,4 C0,3.448 0.448,3 1,3 L3.278,3 L6.332,0.256 C6.744,-0.016 6.487,0.101 7.142,0.009 z M7,1 L3.661,4 L1,4 L1,8 L3.672,8 L7,11 L7,1 z" fill="#000000" id="path-1"/> - <path d="M13,3.928 C13,4.757 12.328,5.428 11.5,5.428 C10.672,5.428 10,4.757 10,3.928 C10,3.1 10.672,2.428 11.5,2.428 C12.328,2.428 13,3.1 13,3.928 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" id="path-3"/> - <path d="M14,9.5 C14,6.84 12.881,6 11.5,6 C10.119,6 9,6.884 9,9.5 L14,9.5 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" id="path-5"/> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-mute-off-copy.svg b/src/skins/vector/img/icon-context-mute-off-copy.svg deleted file mode 100644 index 861f2975..00000000 --- a/src/skins/vector/img/icon-context-mute-off-copy.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="16" height="12" viewBox="0, 0, 16, 12"> - <g id="Screens-revised" opacity="0.2"> - <path d="M7.142,0.009 C7.687,0.152 7.921,0.47 8,1 L8,11 C8,11.866 6.974,12.323 6.33,11.743 L3.288,9 L1,9 C0.448,9 0,8.552 0,8 L0,4 C0,3.448 0.448,3 1,3 L3.278,3 L6.332,0.256 C6.744,-0.016 6.487,0.101 7.142,0.009 z M7,1 L3.661,4 L1,4 L1,8 L3.672,8 L7,11 L7,1 z" fill="#000000" id="path-1"/> - <path d="M9.878,7.667 C10.82,7.667 11.584,6.92 11.584,6 C11.584,5.08 10.82,4.333 9.878,4.333" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Oval-50"/> - <path d="M10.055,9.333 C11.939,9.333 13.466,7.841 13.466,6 C13.466,4.159 11.939,2.667 10.055,2.667" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Oval-50-Copy"/> - <path d="M10.055,11 C12.881,11 15.172,8.761 15.172,6 C15.172,3.239 12.881,1 10.055,1" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Oval-50-Copy-2"/> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-mute-off.svg b/src/skins/vector/img/icon-context-mute-off.svg deleted file mode 100644 index d801823b..00000000 --- a/src/skins/vector/img/icon-context-mute-off.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="16" height="12" viewBox="0, 0, 16, 12"> - <g id="Screens-revised" opacity="0.2"> - <path d="M7.142,0.009 C7.687,0.152 7.921,0.47 8,1 L8,11 C8,11.866 6.974,12.323 6.33,11.743 L3.288,9 L1,9 C0.448,9 0,8.552 0,8 L0,4 C0,3.448 0.448,3 1,3 L3.278,3 L6.332,0.256 C6.744,-0.016 6.487,0.101 7.142,0.009 z M7,1 L3.661,4 L1,4 L1,8 L3.672,8 L7,11 L7,1 z" fill="#000000" id="path-1"/> - <path d="M10,8 C11.105,8 12,7.105 12,6 C12,4.895 11.105,4 10,4" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Oval-50"/> - <path d="M10.207,10 C12.416,10 14.207,8.209 14.207,6 C14.207,3.791 12.416,2 10.207,2" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Oval-50-Copy"/> - </g> -</svg> diff --git a/src/skins/vector/img/icon-context-mute.svg b/src/skins/vector/img/icon-context-mute.svg deleted file mode 100644 index f53b868a..00000000 --- a/src/skins/vector/img/icon-context-mute.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="16" height="12" viewBox="0, 0, 16, 12"> - <g id="Screens-revised" opacity="0.2"> - <path d="M7.142,0.009 C7.687,0.152 7.921,0.47 8,1 L8,11 C8,11.866 6.974,12.323 6.33,11.743 L3.288,9 L1,9 C0.448,9 0,8.552 0,8 L0,4 C0,3.448 0.448,3 1,3 L3.278,3 L6.332,0.256 C6.744,-0.016 6.487,0.101 7.142,0.009 z M7,1 L3.661,4 L1,4 L1,8 L3.672,8 L7,11 L7,1 z" fill="#000000" id="path-1"/> - <path d="M12.55,4.45 L9.722,7.278" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Line-Copy-2"/> - <path d="M12.55,7.278 L9.722,4.45" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" id="Line-Copy-5"/> - </g> -</svg> diff --git a/src/skins/vector/img/icon-delete-pink.svg b/src/skins/vector/img/icon-delete-pink.svg deleted file mode 100644 index aafa87f1..00000000 --- a/src/skins/vector/img/icon-delete-pink.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="512px" height="533px" viewBox="0 -11.5 512 533" xml:space="preserve"> -<g> - <g> - <path fill="#FF0064" d="M142.423,517.05c-34.347,0-62.29-27.886-62.29-62.161V128.225c0-3.038,2.462-5.5,5.5-5.5h340.733 - c3.037,0,5.5,2.462,5.5,5.5v326.664c0,34.275-27.942,62.161-62.287,62.161H142.423z M43.042,91.133c-3.038,0-5.5-2.462-5.5-5.5 - V43.041c0-3.038,2.462-5.5,5.5-5.5h103.91L180.956-3.08c1.045-1.249,2.589-1.97,4.217-1.97h141.655 - c1.628,0,3.173,0.721,4.218,1.97l34.001,40.622h103.911c3.037,0,5.5,2.462,5.5,5.5v42.591c0,3.038-2.463,5.5-5.5,5.5H43.042z"/> - <path fill="#000000" d="M326.828,0.45l35.65,42.592h106.479v42.591H43.042V43.041h106.479L185.173,0.45H326.828 M426.366,128.225 - v326.664c0,31.168-25.553,56.661-56.787,56.661H142.423c-31.237,0-56.79-25.493-56.79-56.661V128.225H426.366 M326.828-10.55 - H185.173c-3.256,0-6.345,1.442-8.435,3.939l-32.354,38.651H43.042c-6.075,0-11,4.925-11,11v42.592c0,6.075,4.925,11,11,11h425.916 - c6.075,0,11-4.925,11-11V43.042c0-6.075-4.925-11-11-11H367.616L335.264-6.61C333.173-9.107,330.084-10.55,326.828-10.55 - L326.828-10.55z M426.366,117.225H85.633c-6.075,0-11,4.925-11,11v326.664c0,37.309,30.411,67.661,67.79,67.661h227.156 - c37.378,0,67.787-30.353,67.787-67.661V128.225C437.366,122.15,432.441,117.225,426.366,117.225L426.366,117.225z"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icon-email-user.svg b/src/skins/vector/img/icon-email-user.svg deleted file mode 100644 index 2d41e06f..00000000 --- a/src/skins/vector/img/icon-email-user.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>6F488856-F8EF-479C-9747-AB6E0945C7DE</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Create-group" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Chat-Group-5a-Invite-modal" transform="translate(-611.000000, -366.000000)"> - <g id="Group-6" transform="translate(604.000000, 364.000000)"> - <g id="icon_email_user" transform="translate(7.000000, 2.000000)"> - <circle id="Oval-2" fill="#D8D8D8" cx="12.5" cy="12.5" r="12.5"></circle> - <path d="M19.3007812,12.2265625 C19.3007812,12.9713579 19.1835949,13.6523407 18.9492188,14.2695312 C18.7148426,14.8867218 18.3854188,15.3671858 17.9609375,15.7109375 C17.5364562,16.0546892 17.0455757,16.2265625 16.4882812,16.2265625 C16.0768209,16.2265625 15.7200536,16.1171886 15.4179688,15.8984375 C15.1158839,15.6796864 14.9127609,15.3828144 14.8085938,15.0078125 L14.7148438,15.0078125 C14.4596341,15.4140645 14.1445331,15.718749 13.7695312,15.921875 C13.3945294,16.125001 12.9726586,16.2265625 12.5039062,16.2265625 C11.6549437,16.2265625 10.9869816,15.9531277 10.5,15.40625 C10.0130184,14.8593723 9.76953125,14.1197963 9.76953125,13.1875 C9.76953125,12.114578 10.0924447,11.2434929 10.7382812,10.5742188 C11.3841178,9.90494457 12.2512966,9.5703125 13.3398438,9.5703125 C13.7356791,9.5703125 14.1744768,9.6054684 14.65625,9.67578125 C15.1380232,9.7460941 15.5664044,9.84374937 15.9414062,9.96875 L15.7695312,13.6015625 L15.7695312,13.7890625 C15.7695312,14.6224 16.0403619,15.0390625 16.5820312,15.0390625 C16.9934916,15.0390625 17.3203113,14.7734402 17.5625,14.2421875 C17.8046887,13.7109348 17.9257812,13.0338583 17.9257812,12.2109375 C17.9257812,11.320308 17.7434914,10.5377638 17.3789062,9.86328125 C17.0143211,9.18879871 16.4960971,8.66927266 15.8242188,8.3046875 C15.1523404,7.94010234 14.3815148,7.7578125 13.5117188,7.7578125 C12.4023382,7.7578125 11.4375041,7.98697687 10.6171875,8.4453125 C9.7968709,8.90364813 9.17057508,9.55858949 8.73828125,10.4101562 C8.30598742,11.261723 8.08984375,12.2499944 8.08984375,13.375 C8.08984375,14.8854242 8.49348555,16.0468709 9.30078125,16.859375 C10.108077,17.6718791 11.2669195,18.078125 12.7773438,18.078125 C13.9283912,18.078125 15.1289,17.8437523 16.3789062,17.375 L16.3789062,18.65625 C15.2851508,19.1041689 14.0950585,19.328125 12.8085938,19.328125 C10.8815008,19.328125 9.37891164,18.8085989 8.30078125,17.7695312 C7.22265086,16.7304636 6.68359375,15.2812593 6.68359375,13.421875 C6.68359375,12.0624932 6.9752575,10.8528699 7.55859375,9.79296875 C8.14193,8.73306762 8.95051566,7.92187781 9.984375,7.359375 C11.0182343,6.79687219 12.1887955,6.515625 13.4960938,6.515625 C14.6263077,6.515625 15.6328081,6.74999766 16.515625,7.21875 C17.3984419,7.68750234 18.0833309,8.35546441 18.5703125,9.22265625 C19.0572941,10.0898481 19.3007812,11.0911402 19.3007812,12.2265625 L19.3007812,12.2265625 Z M11.2695312,13.21875 C11.2695312,14.4322977 11.746089,15.0390625 12.6992188,15.0390625 C13.7044321,15.0390625 14.2539058,14.2760493 14.3476562,12.75 L14.4414062,10.8828125 C14.1132796,10.7942704 13.7617206,10.75 13.3867188,10.75 C12.7200488,10.75 12.2005227,10.971352 11.828125,11.4140625 C11.4557273,11.856773 11.2695312,12.4583295 11.2695312,13.21875 L11.2695312,13.21875 Z" id="@" fill="#FFFFFF"></path> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-invite-people.svg b/src/skins/vector/img/icon-invite-people.svg deleted file mode 100644 index f13a03ed..00000000 --- a/src/skins/vector/img/icon-invite-people.svg +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>9BA71BF4-DC4F-42D2-B2D0-9EAE0F7F8D45</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Right-panel/Footer" transform="translate(-26.000000, -34.000000)"> - <g id="icon_invite_people" transform="translate(26.000000, 34.000000)"> - <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval" fill="#76CFA6"></path> - <g id="Group-5" transform="translate(8.000000, 9.000000)" stroke="#FFFFFF"> - <g id="Group-3" opacity="0.8" transform="translate(14.437500, 3.937500)" stroke-linecap="round"> - <path d="M0,3.28125 L6.5625,3.28125" id="Line"></path> - <path d="M3.28125,0 L3.28125,6.5625" id="Line"></path> - </g> - <g id="icons_people_svg"> - <path d="M13.78125,15.75 C13.78125,12.1256313 13.7812503,9.1875 7.21875,9.1875 C0.656249741,9.1875 0.65625,12.1256313 0.65625,15.75 C5.21807306,15.75 7.96856689,15.75 13.78125,15.75 Z" id="Oval-40" stroke-linecap="round" stroke-linejoin="round"></path> - <circle id="Oval" cx="7.21875" cy="3.609375" r="3.609375"></circle> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon-mx-user.svg b/src/skins/vector/img/icon-mx-user.svg deleted file mode 100644 index 5780277f..00000000 --- a/src/skins/vector/img/icon-mx-user.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 113 144" style="enable-background:new 0 0 113 144;" xml:space="preserve"> -<style type="text/css"> - .st0{fill:#7BC9A4;} - .st1{fill:#B47BB5;} -</style> -<path class="st0" d="M61.6,0H20.8c-0.1,0-0.2,0-0.3,0C9.2,0,0,9.2,0,20.6v102.9C0,134.8,9.2,144,20.6,144c11.3,0,20.6-9.2,20.6-20.6 - v-20.6h20.5c28.3,0,51.4-23.1,51.4-51.4S90,0,61.6,0"/> -<path class="st1" d="M37.4,8.8c6.5,9.3,4.3,22.1-5,28.7c-9.3,6.5-22.1,4.3-28.6-5.1c-6.5-9.3-4.3-22.1,5-28.7 - C18.1-2.8,30.9-0.5,37.4,8.8"/> -<path class="st1" d="M109.3,111.6c6.5,9.3,4.3,22.1-5,28.7c-9.3,6.5-22.1,4.3-28.6-5.1l-30.8-44c-6.5-9.3-4.3-22.1,5-28.7 - c9.3-6.5,22.1-4.3,28.6,5.1L109.3,111.6z"/> -</svg> diff --git a/src/skins/vector/img/icon-return.svg b/src/skins/vector/img/icon-return.svg deleted file mode 100644 index 80da0f82..00000000 --- a/src/skins/vector/img/icon-return.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="12px" height="11px" viewBox="0 0 12 11" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>B542A09B-DBBF-41D4-A5FD-D05EE1E6BBC4</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Create-group" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Chat-Directory-search-result-ID" transform="translate(-553.000000, -97.000000)" stroke="#4A4A4A"> - <g id="icon_return" transform="translate(554.000000, 97.000000)"> - <polyline id="Rectangle" points="7.5 0.5 10.5 0.5 10.5 6.5 0 6.5"></polyline> - <g id="Group" transform="translate(0.000000, 1.954545)" stroke-linecap="square"> - <path d="M0.227272727,4.40909091 L4.25946916,0.376894528" id="Line"></path> - <path d="M0.227272727,8.44128729 L4.25946916,4.40909091" id="Line-Copy-7" transform="translate(2.243371, 6.425189) scale(1, -1) translate(-2.243371, -6.425189) "></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icon-text-cancel.svg b/src/skins/vector/img/icon-text-cancel.svg deleted file mode 100644 index ce28d128..00000000 --- a/src/skins/vector/img/icon-text-cancel.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="11px" height="9px" viewBox="0 0 11 9" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch --> - <title>28D80248-63BA-4A5F-9216-4CFE72784BAC</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round"> - <g id="02_x-Chat-text-input-markdown-panel-MD_on" transform="translate(-915.000000, -749.000000)" stroke="#000000"> - <g id="icon_text_cancel" transform="translate(916.000000, 749.000000)"> - <path d="M0.45,0.45 L8.55,8.55" id="Line"></path> - <path d="M0.45,0.45 L8.55,8.55" id="Line-Copy-2" transform="translate(4.500000, 4.500000) scale(-1, 1) translate(-4.500000, -4.500000) "></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icon_context_delete.svg b/src/skins/vector/img/icon_context_delete.svg deleted file mode 100644 index 896b94ad..00000000 --- a/src/skins/vector/img/icon_context_delete.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> - <g transform="matrix(1,0,0,1,-0,-80)"> - <g id="icon_context_delete" transform="matrix(0.600982,0,0,0.600982,0,80)"> - <g transform="matrix(1.66394,0,0,1.66394,0,-133.116)"> - <path d="M7.508,86.728C8.739,85.523 9.979,84.326 11.196,83.109C11.277,83.034 11.364,82.99 11.472,82.968C11.512,82.964 11.549,82.962 11.589,82.964C11.668,82.973 11.743,82.994 11.811,83.036C11.994,83.148 12.086,83.371 12.036,83.579C12.017,83.657 11.98,83.724 11.93,83.787C10.749,85.064 9.524,86.299 8.285,87.52C9.489,88.752 10.686,89.991 11.904,91.209C11.958,91.267 12.001,91.331 12.026,91.408C12.042,91.458 12.05,91.51 12.05,91.562C12.05,91.82 11.846,92.041 11.589,92.061C11.454,92.071 11.33,92.025 11.225,91.942C9.948,90.762 8.713,89.536 7.492,88.297C6.261,89.501 5.021,90.698 3.804,91.916C3.745,91.97 3.681,92.013 3.605,92.038C3.555,92.054 3.502,92.062 3.45,92.062C3.192,92.062 2.972,91.858 2.952,91.602C2.941,91.466 2.987,91.342 3.07,91.238C4.251,89.96 5.476,88.726 6.715,87.505C5.511,86.273 4.314,85.034 3.096,83.816C3.042,83.757 2.999,83.693 2.974,83.617C2.908,83.413 2.983,83.184 3.156,83.058C3.221,83.01 3.294,82.984 3.372,82.968C3.412,82.964 3.449,82.962 3.489,82.964C3.598,82.977 3.689,83.014 3.775,83.082C5.052,84.263 6.287,85.488 7.508,86.728Z" style="fill:rgb(255,0,100);"/> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_fave.svg b/src/skins/vector/img/icon_context_fave.svg deleted file mode 100644 index da7b14a1..00000000 --- a/src/skins/vector/img/icon_context_fave.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> - <g transform="matrix(1,0,0,1,-0,-40)"> - <g id="icon_context_fave" transform="matrix(0.600982,0,0,0.600982,0,40)"> - <g transform="matrix(1.66394,0,0,1.66394,1.66394,2.71716)"> - <rect x="0" y="0" width="13" height="13" style="fill:rgb(224,223,224);fill-opacity:0;fill-rule:nonzero;"/> - <path d="M6.572,-0.495C6.614,-0.486 6.625,-0.486 6.666,-0.472C6.793,-0.427 6.884,-0.337 6.948,-0.221L8.742,3.414L12.754,3.997L12.801,4.006C12.88,4.029 12.951,4.062 13.013,4.117C13.161,4.248 13.218,4.459 13.157,4.646C13.132,4.725 13.087,4.789 13.031,4.849L10.128,7.679L10.813,11.674L10.819,11.722C10.821,11.804 10.812,11.882 10.779,11.958C10.7,12.139 10.517,12.259 10.32,12.259C10.237,12.259 10.162,12.236 10.088,12.201L6.5,10.315L2.912,12.201L2.868,12.222C2.791,12.249 2.714,12.264 2.631,12.256C2.435,12.237 2.265,12.1 2.204,11.913C2.178,11.834 2.177,11.756 2.187,11.674L2.872,7.679L-0.031,4.849L-0.064,4.814C-0.114,4.749 -0.152,4.681 -0.17,4.599C-0.213,4.407 -0.135,4.202 0.024,4.087C0.092,4.038 0.166,4.012 0.246,3.997L4.258,3.414L6.052,-0.221L6.075,-0.264C6.099,-0.299 6.104,-0.309 6.134,-0.34C6.211,-0.423 6.316,-0.478 6.428,-0.495C6.477,-0.502 6.523,-0.499 6.572,-0.495ZM5.038,4.092C5.017,4.13 5.013,4.14 4.987,4.174C4.928,4.251 4.847,4.31 4.755,4.342C4.715,4.357 4.704,4.357 4.662,4.365L1.393,4.841L3.758,7.146L3.791,7.182C3.817,7.216 3.825,7.224 3.846,7.261C3.903,7.364 3.916,7.474 3.902,7.589L3.343,10.845L6.267,9.307L6.311,9.287C6.42,9.249 6.531,9.237 6.643,9.271C6.684,9.283 6.694,9.289 6.733,9.307L9.657,10.845L9.098,7.589L9.092,7.541C9.089,7.425 9.113,7.317 9.18,7.22C9.204,7.185 9.213,7.178 9.242,7.146L11.607,4.841L8.338,4.365L8.291,4.356C8.25,4.344 8.239,4.342 8.2,4.324C8.093,4.275 8.018,4.193 7.962,4.092L6.5,1.13C6.013,2.117 5.525,3.105 5.038,4.092Z" style="fill:rgb(205,205,205);fill-rule:nonzero;"/> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_fave_on.svg b/src/skins/vector/img/icon_context_fave_on.svg deleted file mode 100644 index e22e92d3..00000000 --- a/src/skins/vector/img/icon_context_fave_on.svg +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> - <g transform="matrix(1,0,0,1,-20,-40)"> - <g id="icon_context_fave_on" transform="matrix(0.600982,0,0,0.600982,20,40)"> - <g transform="matrix(1.66394,0,0,1.66394,-14.9755,2.71716)"> - <g transform="matrix(1,0,0,1,10.0123,0)"> - <clipPath id="_clip1"> - <rect x="-1" y="-1" width="15" height="15"/> - </clipPath> - <g clip-path="url(#_clip1)"> - <g transform="matrix(0.575972,0,0,0.576771,2.73925,2.16505)"> - <rect x="-6" y="-6" width="25" height="25" style="fill:rgb(216,216,216);fill-opacity:0;fill-rule:nonzero;"/> - </g> - <clipPath id="_clip2"> - <path d="M6.5,9.75L2.679,11.759L3.409,7.504L0.318,4.491L4.59,3.871L6.5,0L8.41,3.871L12.682,4.491L9.591,7.504L10.321,11.759L6.5,9.75Z"/> - </clipPath> - <g clip-path="url(#_clip2)"> - <path d="M-0.682,-1L13.682,-1L13.682,12.759L-0.682,12.759L-0.682,-1Z" style="fill:rgb(74,74,74);fill-rule:nonzero;"/> - </g> - </g> - </g> - <g transform="matrix(1,0,0,1,10.0123,0)"> - <path d="M6.572,-0.495C6.614,-0.486 6.625,-0.486 6.666,-0.472C6.793,-0.427 6.884,-0.337 6.948,-0.221L8.742,3.414L12.754,3.997L12.801,4.006C12.88,4.029 12.951,4.062 13.013,4.117C13.161,4.248 13.218,4.459 13.157,4.646C13.132,4.725 13.087,4.789 13.031,4.849L10.128,7.679L10.813,11.674L10.819,11.722C10.821,11.804 10.812,11.882 10.779,11.958C10.7,12.139 10.517,12.259 10.32,12.259C10.237,12.259 10.162,12.236 10.088,12.201L6.5,10.315L2.912,12.201L2.868,12.222C2.791,12.249 2.714,12.264 2.631,12.256C2.435,12.237 2.265,12.1 2.204,11.913C2.178,11.834 2.177,11.756 2.187,11.674L2.872,7.679L-0.031,4.849L-0.064,4.814C-0.114,4.749 -0.152,4.681 -0.17,4.599C-0.213,4.407 -0.135,4.202 0.024,4.087C0.092,4.038 0.166,4.012 0.246,3.997L4.258,3.414L6.052,-0.221L6.075,-0.264C6.15,-0.372 6.25,-0.453 6.38,-0.485C6.422,-0.496 6.433,-0.495 6.476,-0.499C6.524,-0.499 6.524,-0.499 6.572,-0.495ZM5.038,4.092C5.017,4.13 5.013,4.14 4.987,4.174C4.928,4.251 4.847,4.31 4.755,4.342C4.715,4.357 4.704,4.357 4.662,4.365L1.393,4.841L3.758,7.146L3.791,7.182C3.861,7.273 3.906,7.375 3.909,7.492C3.91,7.536 3.907,7.546 3.902,7.589L3.343,10.845L6.267,9.307L6.311,9.287C6.42,9.249 6.531,9.237 6.643,9.271C6.684,9.283 6.694,9.289 6.733,9.307L9.657,10.845L9.098,7.589L9.092,7.541C9.091,7.498 9.089,7.487 9.095,7.444C9.109,7.328 9.163,7.231 9.242,7.146L11.607,4.841L8.338,4.365L8.291,4.356C8.18,4.323 8.084,4.267 8.013,4.174C7.987,4.14 7.983,4.13 7.962,4.092L6.5,1.13C6.013,2.117 5.525,3.105 5.038,4.092Z" style="fill:rgb(74,74,74);fill-rule:nonzero;"/> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_low.svg b/src/skins/vector/img/icon_context_low.svg deleted file mode 100644 index ea579ef4..00000000 --- a/src/skins/vector/img/icon_context_low.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> - <g transform="matrix(1,0,0,1,-0,-60)"> - <g id="icon_context_fave" transform="matrix(0.600982,0,0,0.600982,0,60)"> - <g transform="matrix(1.66394,0,0,1.66394,1.66394,1.96327)"> - <path d="M8.737,0.502C8.882,0.514 9.02,0.542 9.155,0.598C9.544,0.759 9.832,1.105 9.958,1.503C10.008,1.664 10.03,1.829 10.033,1.998L10.033,6.5C10.63,6.5 11.226,6.491 11.822,6.501C11.882,6.504 11.882,6.504 11.942,6.51C12.067,6.527 12.188,6.556 12.301,6.614C12.494,6.715 12.636,6.904 12.665,7.122C12.682,7.246 12.662,7.376 12.613,7.492C12.541,7.662 12.419,7.799 12.282,7.921C10.713,9.244 9.104,10.519 7.515,11.818C7.423,11.889 7.328,11.952 7.223,12.003C6.836,12.19 6.376,12.215 5.969,12.079C5.814,12.028 5.673,11.951 5.539,11.857C3.901,10.585 2.306,9.258 0.72,7.921C0.583,7.798 0.46,7.66 0.389,7.488C0.284,7.235 0.332,6.938 0.528,6.743C0.596,6.676 0.678,6.622 0.766,6.585C0.915,6.521 1.077,6.503 1.238,6.5L2.967,6.5L2.967,1.998C2.968,1.927 2.968,1.928 2.973,1.858C2.991,1.692 3.025,1.532 3.088,1.378C3.229,1.035 3.495,0.744 3.84,0.6C3.975,0.543 4.116,0.515 4.262,0.502C5.753,0.459 7.246,0.46 8.737,0.502ZM4.343,1.5C4.313,1.501 4.285,1.503 4.256,1.511C4.096,1.559 4.003,1.732 3.977,1.886C3.972,1.915 3.969,1.944 3.967,1.973C3.932,3.648 3.967,5.324 3.967,7C3.964,7.063 3.956,7.122 3.933,7.181C3.877,7.326 3.753,7.438 3.603,7.481C3.558,7.494 3.514,7.498 3.467,7.5L1.784,7.5C3.234,8.685 4.656,9.904 6.134,11.053C6.16,11.071 6.187,11.087 6.215,11.102C6.433,11.202 6.7,11.184 6.892,11.035L11.219,7.5L9.533,7.5L9.487,7.498C9.441,7.491 9.397,7.483 9.353,7.466C9.223,7.416 9.118,7.311 9.067,7.181C9.05,7.137 9.042,7.093 9.035,7.046C8.957,5.357 9.069,3.663 9.033,1.972C9.021,1.793 8.941,1.581 8.757,1.516C8.732,1.507 8.707,1.503 8.68,1.501C7.235,1.46 5.789,1.5 4.343,1.5Z" style="fill:rgb(206,206,206);fill-rule:nonzero;"/> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_low_on.svg b/src/skins/vector/img/icon_context_low_on.svg deleted file mode 100644 index 28300f9a..00000000 --- a/src/skins/vector/img/icon_context_low_on.svg +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> - <g transform="matrix(1,0,0,1,-20,-60)"> - <g id="icon_context_fave_on" transform="matrix(0.600982,0,0,0.600982,20,60)"> - <clipPath id="_clip1"> - <rect x="0" y="0" width="25" height="25"/> - </clipPath> - <g clip-path="url(#_clip1)"> - <g transform="matrix(1.66394,0,0,1.66394,1.68116,1.96327)"> - <clipPath id="_clip2"> - <rect x="-1" y="-1" width="15" height="15"/> - </clipPath> - <g clip-path="url(#_clip2)"> - <rect x="-6" y="-6" width="25" height="25" style="fill:rgb(74,74,74);fill-opacity:0;fill-rule:nonzero;"/> - <clipPath id="_clip3"> - <path d="M11.76,7C12.241,7 12.307,7.257 11.919,7.574L7.204,11.426C6.813,11.745 6.187,11.743 5.8,11.426L1.084,7.574C0.694,7.255 0.767,7 1.243,7L3.467,7L3.467,2.003C3.467,1.449 3.846,1 4.336,1L8.664,1C9.144,1 9.533,1.438 9.533,2.003L9.533,7L11.76,7Z"/> - </clipPath> - <g clip-path="url(#_clip3)"> - <rect x="-4.167" y="-4" width="21.338" height="20.665" style="fill:rgb(74,74,74);fill-rule:nonzero;"/> - </g> - </g> - </g> - <g transform="matrix(1.66394,0,0,1.66394,1.68116,1.96327)"> - <path d="M8.737,0.502C8.882,0.514 9.02,0.542 9.155,0.598C9.544,0.759 9.832,1.105 9.958,1.503C10.008,1.664 10.03,1.829 10.033,1.998L10.033,6.5C10.63,6.5 11.226,6.491 11.822,6.501C11.882,6.504 11.882,6.504 11.942,6.51C12.067,6.527 12.188,6.556 12.301,6.614C12.494,6.715 12.636,6.904 12.665,7.122C12.682,7.246 12.662,7.376 12.613,7.492C12.541,7.662 12.419,7.799 12.282,7.921C10.713,9.244 9.104,10.519 7.515,11.818C7.423,11.889 7.328,11.952 7.223,12.003C6.836,12.19 6.376,12.215 5.969,12.079C5.814,12.028 5.673,11.951 5.539,11.857C3.901,10.585 2.306,9.258 0.72,7.921C0.583,7.798 0.46,7.66 0.389,7.488C0.284,7.235 0.332,6.938 0.528,6.743C0.596,6.676 0.678,6.622 0.766,6.585C0.915,6.521 1.077,6.503 1.238,6.5L2.967,6.5L2.967,1.998C2.968,1.927 2.968,1.928 2.973,1.858C2.991,1.692 3.025,1.532 3.088,1.378C3.229,1.035 3.495,0.744 3.84,0.6C3.975,0.543 4.116,0.515 4.262,0.502C5.753,0.459 7.246,0.46 8.737,0.502ZM4.343,1.5C4.313,1.501 4.285,1.503 4.256,1.511C4.096,1.559 4.003,1.732 3.977,1.886C3.972,1.915 3.969,1.944 3.967,1.973C3.932,3.648 3.967,5.324 3.967,7C3.964,7.047 3.96,7.091 3.948,7.137C3.905,7.286 3.792,7.41 3.647,7.466C3.588,7.489 3.529,7.497 3.467,7.5L1.784,7.5C3.234,8.685 4.656,9.904 6.134,11.053C6.16,11.071 6.187,11.087 6.215,11.102C6.433,11.202 6.7,11.184 6.892,11.035L11.219,7.5L9.533,7.5L9.487,7.498C9.441,7.491 9.397,7.483 9.353,7.466C9.223,7.416 9.118,7.311 9.067,7.181C9.05,7.137 9.042,7.093 9.035,7.046C8.957,5.357 9.069,3.663 9.033,1.972C9.021,1.793 8.941,1.581 8.757,1.516C8.732,1.507 8.707,1.503 8.68,1.501C7.235,1.46 5.789,1.5 4.343,1.5Z" style="fill:rgb(74,74,74);fill-rule:nonzero;"/> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_message.svg b/src/skins/vector/img/icon_context_message.svg deleted file mode 100644 index f2ceccfa..00000000 --- a/src/skins/vector/img/icon_context_message.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="icon_context"> - <g> - <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#ECECEC"></path> - <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#9B9B9B"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_message_dark.svg b/src/skins/vector/img/icon_context_message_dark.svg deleted file mode 100644 index b4336cc3..00000000 --- a/src/skins/vector/img/icon_context_message_dark.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="icon_context"> - <g> - <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#000" opacity="0.2"></path> - <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#FFF" opacity="0.6"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_person.svg b/src/skins/vector/img/icon_context_person.svg deleted file mode 100644 index fff019d3..00000000 --- a/src/skins/vector/img/icon_context_person.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="11.000464" - height="13" - viewBox="0 0 11.000464 13" - version="1.1" - id="svg4500" - inkscape:version="0.91 r13725" - sodipodi:docname="icon_context_person.svg"> - <metadata - id="metadata4520"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>81230A28-D944-4572-B5DB-C03CAA2B1FCA</dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1013" - inkscape:window-height="777" - id="namedview4518" - showgrid="false" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:zoom="24.48" - inkscape:cx="4.9078557" - inkscape:cy="9.7756405" - inkscape:window-x="495" - inkscape:window-y="175" - inkscape:window-maximized="0" - inkscape:current-layer="icons_people_svg" /> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title - id="title4502">81230A28-D944-4572-B5DB-C03CAA2B1FCA</title> - <desc - id="desc4504">Created with sketchtool.</desc> - <defs - id="defs4506" /> - <g - style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" - id="g4511" - transform="translate(-56.999768,-730.5)"> - <g - transform="translate(50,725)" - id="icons_people"> - <g - style="stroke:#00000f;stroke-opacity:0.94117647" - transform="translate(7,6)" - id="icons_people_svg"> - <path - style="stroke:#cecece;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" - inkscape:connector-curvature="0" - id="Oval-40" - d="m 10.5,12 c 0,-2.7614237 0,-5 -5,-5 -5.0000002,0 -5,2.2385763 -5,5 3.4756747,0 5.5712891,0 10,0 z" /> - <circle - r="2.75" - cy="2.75" - cx="5.5" - id="Oval" - style="stroke:#cecece;stroke-opacity:1" /> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_context_person_on.svg b/src/skins/vector/img/icon_context_person_on.svg deleted file mode 100644 index 36294433..00000000 --- a/src/skins/vector/img/icon_context_person_on.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="11.000464" - height="13" - viewBox="0 0 11.000464 13" - version="1.1" - id="svg4500" - inkscape:version="0.91 r13725" - sodipodi:docname="icon_context_person_on.svg"> - <metadata - id="metadata4520"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>81230A28-D944-4572-B5DB-C03CAA2B1FCA</dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1013" - inkscape:window-height="777" - id="namedview4518" - showgrid="false" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - inkscape:zoom="24.48" - inkscape:cx="4.9078557" - inkscape:cy="9.7756405" - inkscape:window-x="495" - inkscape:window-y="175" - inkscape:window-maximized="0" - inkscape:current-layer="icons_people_svg" /> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title - id="title4502">81230A28-D944-4572-B5DB-C03CAA2B1FCA</title> - <desc - id="desc4504">Created with sketchtool.</desc> - <defs - id="defs4506" /> - <g - style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" - id="g4511" - transform="translate(-56.999768,-730.5)"> - <g - transform="translate(50,725)" - id="icons_people"> - <g - style="stroke:#00000f;stroke-opacity:0.94117647" - transform="translate(7,6)" - id="icons_people_svg"> - <path - style="stroke:#4a4a4a;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;fill:#4a4a4a;fill-opacity:1" - inkscape:connector-curvature="0" - id="Oval-40" - d="m 10.5,12 c 0,-2.7614237 0,-5 -5,-5 -5.0000002,0 -5,2.2385763 -5,5 3.4756747,0 5.5712891,0 10,0 z" /> - <circle - r="2.75" - cy="2.75" - cx="5.5" - id="Oval" - style="stroke:#4a4a4a;stroke-opacity:1;fill:#4a4a4a;fill-opacity:1" /> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_copy_message.svg b/src/skins/vector/img/icon_copy_message.svg deleted file mode 100644 index 8d8887bb..00000000 --- a/src/skins/vector/img/icon_copy_message.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="19px" - height="19px" - viewBox="0 0 19 19" - version="1.1" - id="svg3734" - sodipodi:docname="icon_copy_message.svg" - inkscape:version="0.92.1 r"> - <metadata - id="metadata3738"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1596" - inkscape:window-height="846" - id="namedview3736" - showgrid="false" - inkscape:zoom="12.421053" - inkscape:cx="3.4935767" - inkscape:cy="2.469644" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="Symbols" /> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title - id="title3722">ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> - <desc - id="desc3724">Created with sketchtool.</desc> - <defs - id="defs3726" /> - <g - id="Symbols" - stroke="none" - stroke-width="1" - fill="none" - fill-rule="evenodd"> - <path - d="M 9.5,19 C 14.746705,19 19,14.746705 19,9.5 19,4.2532949 14.746705,0 9.5,0 4.2532949,0 0,4.2532949 0,9.5 0,14.746705 4.2532949,19 9.5,19 Z" - id="Oval-69" - inkscape:connector-curvature="0" - style="fill:#ececec" /> - <g - id="g4632" - transform="translate(-2.3841858e-7,-1)"> - <rect - style="stroke:#9b9b9b;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - y="4.3017478" - x="4.6289611" - height="10.396504" - width="7.7420783" - id="rect3745-3" /> - <rect - style="fill:#ececec;fill-opacity:1;stroke:#9b9b9b;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - y="6.3017478" - x="6.6289611" - height="10.396504" - width="7.7420783" - id="rect3745" /> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icon_copy_message_dark.svg b/src/skins/vector/img/icon_copy_message_dark.svg deleted file mode 100644 index b81e617d..00000000 --- a/src/skins/vector/img/icon_copy_message_dark.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="19px" - height="19px" - viewBox="0 0 19 19" - version="1.1" - id="svg3734" - sodipodi:docname="icon_copy_message_dark.svg" - inkscape:version="0.92.1 r" - enable-background="new"> - <metadata - id="metadata3738"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1596" - inkscape:window-height="846" - id="namedview3736" - showgrid="false" - inkscape:zoom="12.421053" - inkscape:cx="3.4935767" - inkscape:cy="2.469644" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg3734" /> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title - id="title3722">ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> - <desc - id="desc3724">Created with sketchtool.</desc> - <defs - id="defs3726" /> - <path - style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1" - inkscape:connector-curvature="0" - id="Oval-69" - d="M 9.5,19 C 14.746705,19 19,14.746705 19,9.5 19,4.2532949 14.746705,0 9.5,0 4.2532949,0 0,4.2532949 0,9.5 0,14.746705 4.2532949,19 9.5,19 Z" /> - <g - id="g4675" - style="stroke:#ffffff;stroke-opacity:1;opacity:0.6"> - <path - id="rect3745-3" - d="M 4.6289062 3.3007812 L 4.6289062 13.699219 L 6.6289062 13.699219 L 6.6289062 5.3007812 L 12.371094 5.3007812 L 12.371094 3.3007812 L 4.6289062 3.3007812 z " - style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - id="rect3745-7" - width="7.7420783" - height="10.396504" - x="6.6289062" - y="5.3007812" - style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.91585475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> -</svg> diff --git a/src/skins/vector/img/icon_person.svg b/src/skins/vector/img/icon_person.svg deleted file mode 100644 index 4be70df0..00000000 --- a/src/skins/vector/img/icon_person.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="11px" height="13px" viewBox="0 0 11 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>815EF7DE-169A-4322-AE2A-B65CBE91DCED</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Left-menu" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Left-menu-option-B" transform="translate(-33.000000, -223.000000)" fill="#FFFFFF" stroke="#76CFA6"> - <g id="Left-panel"> - <g id="Room-list" transform="translate(0.000000, 69.000000)"> - <g id="Group-3" transform="translate(16.000000, 144.000000)"> - <g id="icon_person" transform="translate(18.000000, 11.000000)"> - <g> - <path d="M5.34291667,5.8555 C5.51425,5.86608333 5.68525,5.88091667 5.85566667,5.90108333 C5.987,5.91666667 6.118,5.93533333 6.24825,5.95783333 C6.96516667,6.08175 7.69391667,6.32633333 8.23175,6.83591667 C8.32116667,6.92058333 8.40433333,7.01166667 8.48041667,7.1085 C8.59608333,7.25566667 8.69475,7.41583333 8.77633333,7.58425 C8.92233333,7.8855 9.0125,8.21083333 9.06841667,8.54008333 C9.13758333,8.9475 9.15758333,9.36266667 9.1635,9.77533333 C9.1685,10.1279167 9.167,10.4805833 9.16725,10.8331667 L8.33333344e-05,10.8331667 C0.000250000001,10.4805833 -0.00125,10.1279167 0.00375,9.77533333 C0.00916666667,9.39616667 0.0268333333,9.01533333 0.083,8.63991667 C0.134833333,8.29291667 0.221666667,7.94891667 0.369333333,7.62966667 C0.44775,7.46033333 0.543,7.29875 0.65525,7.14958333 C0.729,7.05166667 0.809833333,6.95925 0.897,6.87308333 C1.41916667,6.35725 2.13533333,6.10216667 2.84408333,5.97125 C2.97233333,5.94758333 3.10125,5.92775 3.23058333,5.91108333 C3.39841667,5.8895 3.56683333,5.87333333 3.73558333,5.86133333 C3.95191667,5.846 4.16858333,5.8385 4.38533333,5.83458333 C4.48475,5.8335 4.58408333,5.83316667 4.6835,5.8335 C4.9035,5.83583333 5.12333333,5.84183333 5.34291667,5.8555 Z" id="Fill-1" stroke-linejoin="round"></path> - <path d="M4.99558333,0.031 C5.28133333,0.0745833333 5.55966667,0.1645 5.81691667,0.29625 C6.32075,0.554333333 6.7375,0.971 6.9955,1.47483333 C7.11691667,1.712 7.20291667,1.967 7.24975,2.22916667 C7.30216667,2.52283333 7.30583333,2.82525 7.26083333,3.12008333 C7.2205,3.38416667 7.14066667,3.642 7.02475,3.88266667 C6.88325,4.17633333 6.68833333,4.44375 6.45233333,4.66866667 C6.21591667,4.89408333 5.93891667,5.07633333 5.638,5.20358333 C5.30525,5.34433333 4.94491667,5.4165 4.58366667,5.4165 C4.22233333,5.4165 3.86208333,5.34433333 3.52925,5.20358333 C3.22833333,5.07633333 2.95133333,4.89408333 2.71491667,4.66866667 C2.479,4.44375 2.284,4.17633333 2.1425,3.88266667 C2.02658333,3.642 1.94675,3.38416667 1.90641667,3.12008333 C1.86141667,2.82525 1.86508333,2.52291667 1.91758333,2.22925 C1.96433333,1.967 2.05033333,1.712 2.17175,1.47483333 C2.42975,0.971 2.8465,0.554333333 3.35033333,0.29625 C3.60758333,0.1645 3.88591667,0.0745833333 4.17166667,0.031 C4.28525,0.0136666667 4.39916667,0.005 4.51391667,0.000666666667 C4.58391667,-0.000166666667 4.58366667,-0.000166666667 4.65333333,0.000666666667 C4.76808333,0.005 4.882,0.0136666667 4.99558333,0.031 Z" id="Fill-2"></path> - </g> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-apps-active.svg b/src/skins/vector/img/icons-apps-active.svg deleted file mode 100644 index ea222d05..00000000 --- a/src/skins/vector/img/icons-apps-active.svg +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" - height="35px" viewBox="0 0 35 35" enable-background="new 0 0 35 35" xml:space="preserve"> -<g id="Layer_1"> - <path id="Oval-109-Copy" fill="#76CFA6" enable-background="new " d="M17.5,35C27.165,35,35,27.165,35,17.5S27.165,0,17.5,0 - S0,7.835,0,17.5S7.835,35,17.5,35z"/> - <g id="Icon"> - <g> - <path fill="none" stroke="#FFFFFF" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5 - V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/> - </g> - </g> -</g> -<g id="Layer_2"> - <g id="Icon_1_" opacity="0.15"> - <g> - <path fill="none" stroke="#76CFA6" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5 - V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/> - </g> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-apps.svg b/src/skins/vector/img/icons-apps.svg deleted file mode 100644 index affd8e64..00000000 --- a/src/skins/vector/img/icons-apps.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="35px" height="35px" viewBox="0 0 35 35" enable-background="new 0 0 35 35" xml:space="preserve"> -<path id="Oval-109-Copy" opacity="0.15" fill="#76CFA6" enable-background="new " d="M17.5,35C27.165,35,35,27.165,35,17.5 - S27.165,0,17.5,0S0,7.835,0,17.5S7.835,35,17.5,35z"/> -<g id="Icon"> - <g> - <path fill="none" stroke="#76CFA6" d="M7.5,12.5h5v-5h-5V12.5z M15,27.5h5v-5h-5V27.5z M7.5,27.5h5v-5h-5V27.5z M7.5,20h5v-5h-5 - V20z M15,20h5v-5h-5V20z M22.5,7.5v5h5v-5H22.5z M15,12.5h5v-5h-5V12.5z M22.5,20h5v-5h-5V20z M22.5,27.5h5v-5h-5V27.5z"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-close-button.svg b/src/skins/vector/img/icons-close-button.svg deleted file mode 100644 index f960d73a..00000000 --- a/src/skins/vector/img/icons-close-button.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>206C270A-EB00-48E4-8CC3-5D403C59177C</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="1:1-chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Chat-People-2-Invite-modal-(similar-to-chat-group-5)" transform="translate(-909.000000, -263.000000)"> - <g id="icons_close" transform="translate(909.000000, 263.000000)"> - <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-1-Copy-7" fill="#76CFA6" opacity="0.15"></path> - <polyline id="icon_close" fill="#76CFA6" opacity="0.9" transform="translate(17.468897, 17.470577) rotate(-315.000000) translate(-17.468897, -17.470577) " points="18.2115394 5.97057742 16.674774 5.97057742 16.674774 16.7275762 5.9688975 16.7275762 5.9688975 18.2642903 16.674774 18.2642903 16.674774 28.9705774 18.2115394 28.9705774 18.2115394 18.2642903 28.9688975 18.2642903 28.9688975 16.7275762 18.2115394 16.7275762 18.2115394 5.97057742"></polyline> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-close.svg b/src/skins/vector/img/icons-close.svg deleted file mode 100644 index 453b5108..00000000 --- a/src/skins/vector/img/icons-close.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-11 13 24 24" xml:space="preserve"> -<style type="text/css"> - .st1{fill:none;stroke-width:2;stroke-linecap:round;} -</style> -<title>icons_create_room</title> -<desc>Created with sketchtool.</desc> -<g id="_x30_3-Input" sketch:type="MSPage"> - <g id="_x30_3_x5F_4-Uploading" transform="translate(-20.000000, -726.000000)" sketch:type="MSArtboardGroup"> - <g id="Room-list" sketch:type="MSLayerGroup"> - <g id="Room-list_x2F_Footer" transform="translate(0.000000, 708.000000)" sketch:type="MSShapeGroup"> - <g id="icons_create_room" transform="translate(20.000000, 18.000000)"> - <circle id="Oval-1-Copy-7" fill="#76CFA6" cx="1" cy="25" r="12"/> - <path id="Line" class="st1" stroke="#FFFFFF" d="M-2.5,28.5l7.1-7.1"/> - <path id="Line_1_" class="st1" stroke="#FFFFFF" d="M-2.5,21.5l7.1,7.1"/> - </g> - </g> - </g> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-create-room.svg b/src/skins/vector/img/icons-create-room.svg deleted file mode 100644 index 252bd2df..00000000 --- a/src/skins/vector/img/icons-create-room.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 3.8.3 (29802) - http://www.bohemiancoding.com/sketch --> - <title>0F9BCC43-B3A7-4C9F-8E34-1F38194362C2</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Room-list-Copy-3" transform="translate(-21.000000, -726.000000)"> - <g id="icons_create_room" transform="translate(21.000000, 726.000000)"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path> - <g id="Group-3" opacity="0.8" transform="translate(6.000000, 6.000000)" stroke="#FFFFFF" stroke-linecap="round"> - <path d="M0,6.5 L13,6.5" id="Line"></path> - <path d="M6.5,0 L6.5,13" id="Line"></path> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-directory.svg b/src/skins/vector/img/icons-directory.svg deleted file mode 100644 index 2688b847..00000000 --- a/src/skins/vector/img/icons-directory.svg +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --> - <title>icons_directory</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Left-panel" transform="translate(-83.000000, -726.000000)"> - <g id="icons_directory"> - <g transform="translate(83.000000, 726.000000)"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path> - <g id="Lines" transform="translate(6.000000, 7.000000)" stroke="#FFFFFF" stroke-linecap="round"> - <path d="M4,5.5 L9,5.5" id="Line"></path> - <path d="M4,1.5 L13,1.5" id="Line-Copy-4"></path> - <path d="M0,1.5 L2,1.5" id="Line" opacity="0.6"></path> - <path d="M0,5.5 L2,5.5" id="Line" opacity="0.6"></path> - <path d="M4,9.5 L11,9.5" id="Line-Copy-6"></path> - <path d="M0,9.5 L2,9.5" id="Line-Copy-3" opacity="0.6"></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icons-files.svg b/src/skins/vector/img/icons-files.svg deleted file mode 100644 index 97ba4228..00000000 --- a/src/skins/vector/img/icons-files.svg +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>7C98C075-AB4D-45A3-85F9-CCD46F84DA7F</title> - <desc>Created with sketchtool.</desc> - <defs> - <path d="M0,2.00276013 C0,0.896666251 0.889186576,0 1.99983124,0 L4.84793814,0 C4.84793814,0 9.25,4.54127763 9.25,4.54127763 L9.25,10.9954009 C9.25,12.1025104 8.36307111,13 7.24288777,13 L2.00711223,13 C0.898614756,13 0,12.1064574 0,10.9972399 L0,2.00276013 Z" id="path-1"></path> - <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="9.25" height="13" fill="white"> - <use xlink:href="#path-1"></use> - </mask> - <path d="M9.28225806,5 L5.82322134,5 C4.97217082,5 4.28225806,4.31002094 4.28225806,3.45903672 L4.28225806,0" id="path-3"></path> - <mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="5" height="5" fill="white"> - <use xlink:href="#path-3"></use> - </mask> - </defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Right-panel/Header" transform="translate(-66.000000, -23.000000)"> - <g id="icons_files" transform="translate(66.000000, 23.000000)"> - <g id="Group-5-Copy-2" fill="#76CFA6"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7"></path> - </g> - <g id="Rectangle-5-+-Rectangle-6-Copy-2" transform="translate(8.000000, 6.000000)" stroke="#FFFFFF" stroke-width="2"> - <use id="Rectangle-5" mask="url(#mask-2)" opacity="0.8" xlink:href="#path-1"></use> - <use id="Rectangle-6" mask="url(#mask-4)" xlink:href="#path-3"></use> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icons-groups.svg b/src/skins/vector/img/icons-groups.svg deleted file mode 100644 index 8f89ba83..00000000 --- a/src/skins/vector/img/icons-groups.svg +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 25 25" style="enable-background:new 0 0 25 25;" xml:space="preserve"> -<style type="text/css"> - .st4{fill:none;stroke-miterlimit:10;} -</style> -<g id="icons_people" transform="translate(50.000000, 725.000000)"> - <path id="Oval-1-Copy-7" fill="#76CFA6" d="M-37.5-700c6.9,0,12.5-5.6,12.5-12.5S-30.6-725-37.5-725S-50-719.4-50-712.5 - S-44.4-700-37.5-700z"/> - <g id="g4240_1_" transform="translate(6.945774,9.0366549)"> - <path id="path4242_1_" class="st4" stroke="#FFFFFF" d="M-38.8-714.1c0-3.2,0-5.7-5.7-5.7s-5.7,2.5-5.7,5.7C-46.2-714.1-43.8-714.1-38.8-714.1z"/> - <circle id="circle4244_1_" class="st4" stroke="#FFFFFF" cx="-44.5" cy="-724.7" r="3.2"/> - </g> - <g> - <path fill="#FFFFFF" d="M-45.8-708.7c0-2.5,0.3-4,4.5-4c0.3,0,0.6,0,0.8,0c-0.3-0.3-0.6-0.6-0.8-1c0,0,0,0-0.1,0 - c-5.5,0-5.5,2.7-5.5,5.5v0.5h2.7c0.1-0.3,0.1-0.7,0.2-1H-45.8z"/> - <path fill="#FFFFFF" d="M-43.6-717.4c0-1.3,1-2.3,2.3-2.3c0.6,0,1.1,0.2,1.5,0.5c0.3-0.2,0.6-0.3,1-0.5c-0.6-0.7-1.5-1.1-2.4-1.1 - c-1.8,0-3.3,1.5-3.3,3.3c0,1.8,1.4,3.2,3.2,3.3c-0.1-0.3-0.2-0.7-0.3-1C-42.8-715.3-43.6-716.2-43.6-717.4z"/> - <path fill="#FFFFFF" d="M-27.8-708.2c0-2.8,0-5.5-5.5-5.5c-0.2,0-0.3,0-0.5,0c-0.2,0.4-0.5,0.7-0.8,1c0.4,0,0.8-0.1,1.3-0.1 - c4.2,0,4.5,1.5,4.5,4h-2.4c0.1,0.3,0.2,0.7,0.2,1h3.1V-708.2z"/> - <path fill="#FFFFFF" d="M-33.3-719.7c1.3,0,2.3,1,2.3,2.3c0,1.3-1,2.3-2.3,2.3c0,0,0,0,0,0c0,0.3-0.1,0.7-0.3,1c0.1,0,0.2,0,0.3,0 - c1.8,0,3.3-1.5,3.3-3.3c0-1.8-1.5-3.3-3.3-3.3c-1,0-1.9,0.5-2.5,1.2c0.3,0.1,0.6,0.3,0.9,0.5C-34.6-719.4-34-719.7-33.3-719.7z"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-hide-apps.svg b/src/skins/vector/img/icons-hide-apps.svg deleted file mode 100644 index b622e97f..00000000 --- a/src/skins/vector/img/icons-hide-apps.svg +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xml:space="preserve"> -<style type="text/css"> - .st1{opacity:0.85;} - .st2{fill:none;stroke:#FFFFFF;stroke-width:1;stroke-linecap:round;stroke-miterlimit:10;} - .st3{fill:#FFFFFF;} - .st4{fill:none;stroke:#FFFFFF;stroke-linejoin:round;stroke-miterlimit:10;} -</style> -<g id="Layer_1_1_"> - <path id="Oval-109-Copy" fill="#76CFA6" d="M17.5,35C27.2,35,35,27.2,35,17.5S27.2,0,17.5,0S0,7.8,0,17.5S7.8,35,17.5,35z"/> -</g> -<g id="frame" class="st1"> - <g id="Layer_3"> - <g> - <g> - <line class="st2" x1="17.5" y1="21" x2="17.5" y2="26"/> - <g> - <polygon class="st3" points="15.5,21.8 17.5,18.3 19.5,21.8 "/> - </g> - </g> - </g> - </g> - <rect x="6.7" y="6.7" class="st4" width="21.6" height="21.6"/> - <line class="st4" x1="6.7" y1="16.7" x2="28.2" y2="16.7"/> - <path class="st3" d="M13.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3H9.9c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H13 - C13.2,13.5,13.3,13.4,13.3,13.3z"/> - <path class="st3" d="M19.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H19 - C19.2,13.5,19.3,13.4,19.3,13.3z"/> - <path class="st3" d="M25.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H25 - C25.2,13.5,25.3,13.4,25.3,13.3z"/> -</g> -</svg> diff --git a/src/skins/vector/img/icons-home.svg b/src/skins/vector/img/icons-home.svg deleted file mode 100644 index eb5484c8..00000000 --- a/src/skins/vector/img/icons-home.svg +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 25 25" style="enable-background:new 0 0 25 25;" xml:space="preserve"> -<style type="text/css"> - .st1{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} -</style> -<g id="Layer_1"> - <title>81230A28-D944-4572-B5DB-C03CAA2B1FCA</title> - <desc>Created with sketchtool.</desc> - <g id="Symbols"> - <g id="Left-nav-default" transform="translate(-50.000000, -725.000000)"> - <g id="Left-panel"> - <g> - <g id="icons_people" transform="translate(50.000000, 725.000000)"> - <path id="Oval-1-Copy-7" fill="#76cfa6" d="M12.5,25C19.4,25,25,19.4,25,12.5S19.4,0,12.5,0S0,5.6,0,12.5S5.6,25,12.5,25z"/> - </g> - </g> - </g> - </g> - </g> -</g> -<g id="Layer_2"> - <rect x="7.8" y="10.7" class="st1" stroke="#ffffff" width="9.4" height="7.4"/> - <polygon class="st1" stroke="#ffffff" points="12.5,6 6.2,10.7 18.8,10.7 "/> -</g> -</svg> diff --git a/src/skins/vector/img/icons-notifications.svg b/src/skins/vector/img/icons-notifications.svg deleted file mode 100644 index 66a49d6c..00000000 --- a/src/skins/vector/img/icons-notifications.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>5E723325-BD0B-454D-BE25-638AF09A97AC</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Right-panel/Header" transform="translate(-100.000000, -23.000000)"> - <g id="icons_notifications" transform="translate(100.000000, 23.000000)"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path> - <g id="Group-8" opacity="0.8" transform="translate(7.000000, 4.000000)"> - <path d="M5.41666667,16.7222222 C6.38316498,16.7222222 7.16666667,15.9387205 7.16666667,14.9722222 C7.16666667,14.0057239 6.38316498,13.2222222 5.41666667,13.2222222 C4.45016835,13.2222222 3.66666667,14.0057239 3.66666667,14.9722222 C3.66666667,15.9387205 4.45016835,16.7222222 5.41666667,16.7222222 Z" id="Oval-49" stroke="#FFFFFF"></path> - <path d="M1,12.4488669 C1,12.4468729 10.0044225,12.4444444 10.0044225,12.4444444 C10.0024284,12.4444444 10,7.94444444 10,7.94444444 C10,5.46303559 7.98297457,3.44444444 5.5,3.44444444 C3.01859115,3.44444444 1,5.46146988 1,7.94444444 L1,12.4488669 Z M5.5,2.44444444 C8.53756612,2.44444444 11,4.91305916 11,7.94444444 L11,12.4488669 C11,12.9987092 10.555163,13.4444444 10.0044225,13.4444444 L0.995577499,13.4444444 C0.445735229,13.4444444 0,12.9996075 0,12.4488669 L0,7.94444444 C0,4.90687832 2.46861471,2.44444444 5.5,2.44444444 Z" id="Rectangle-15" fill="#FFFFFF"></path> - <path d="M4.27777778,1.83333333 L6.72222222,1.83333333" id="Line" stroke="#FFFFFF" stroke-linecap="round"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icons-people.svg b/src/skins/vector/img/icons-people.svg deleted file mode 100644 index 88545061..00000000 --- a/src/skins/vector/img/icons-people.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>81230A28-D944-4572-B5DB-C03CAA2B1FCA</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Left-nav-default" transform="translate(-50.000000, -725.000000)"> - <g id="Left-panel"> - <g> - <g id="icons_people" transform="translate(50.000000, 725.000000)"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path> - <g id="icons_people_svg" transform="translate(7.000000, 6.000000)" stroke="#FFFFFF"> - <path d="M10.5,12 C10.5,9.23857625 10.5000002,7 5.5,7 C0.499999803,7 0.5,9.23857625 0.5,12 C3.97567472,12 6.07128906,12 10.5,12 Z" id="Oval-40" stroke-linecap="round" stroke-linejoin="round"></path> - <circle id="Oval" cx="5.5" cy="2.75" r="2.75"></circle> - </g> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-pin.svg b/src/skins/vector/img/icons-pin.svg deleted file mode 100644 index a6fbf13b..00000000 --- a/src/skins/vector/img/icons-pin.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg width="16px" height="16px" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> - <g transform="scale(0.03125)"> - <path id="svg_2" fill="none" stroke="#76cfa6" stroke-width="40" stroke-linecap="round" stroke-linejoin="round" d="m315.802,402.338c12.73,-33.537 13.503,-69.629 3.623,-102.697l93.245,-103.107l7.831,7.831c10.411,10.409 27.283,10.409 37.691,0c10.41,-10.408 10.41,-27.281 0.001,-37.69l-112.869,-112.867c-10.407,-10.409 -27.279,-10.41 -37.689,-0.001c-10.408,10.41 -10.409,27.283 0.001,37.693l7.833,7.833l-103.107,93.243c-33.069,-9.878 -69.163,-9.107 -102.697,3.626c-4.7,1.785 -8.001,5.646 -9.059,10.604c-1.175,5.473 0.627,11.402 4.697,15.472l184.42,184.421c4.069,4.07 10,5.871 15.472,4.695c4.959,-1.055 8.82,-4.357 10.607,-9.056z"/> - <polyline id="svg_3" fill="none" stroke="#76cfa6" stroke-width="40" stroke-linecap="round" stroke-linejoin="round" points=" 180.951,297.927 46,466 215.319,332.295 "/> - <!--<line id="svg_4" fill="none" stroke="#76cfa6" stroke-width="40" stroke-linecap="round" stroke-linejoin="round" y2="219.549" y1="138.166" x2="255.531" x1="336.915"/>--> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/icons-room-add.svg b/src/skins/vector/img/icons-room-add.svg deleted file mode 100644 index fc0ab750..00000000 --- a/src/skins/vector/img/icons-room-add.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" - id="svg4196" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 25 25" - style="enable-background:new 0 0 25 25;" xml:space="preserve"> -<style type="text/css"> - .st1{opacity:0.7;} - .st2{fill:none;stroke-linecap:round;} -</style> -<g id="icons_people" transform="translate(50.000000, 725.000000)"> - <path id="Oval-1-Copy-7" fill="#76CFA6" d="M-37.5-700c6.9,0,12.5-5.6,12.5-12.5S-30.6-725-37.5-725S-50-719.4-50-712.5 - S-44.4-700-37.5-700z"/> - <g id="text3879" transform="matrix(1.0243293,0,0,0.97624855,-24.996028,0.15844144)"> - <g id="Group-3" transform="translate(14.4375,3.9375)" class="st1"> - <path id="Line" class="st2" stroke="#ffffff" d="M-23.2-733.8h4.6"/> - <path id="path3142" class="st2" stroke="#ffffff" d="M-20.9-736.2v4.8"/> - </g> - <path id="path3002" fill="#ffffff" d="M-11.4-731.3l-0.5,2.6h2.2v1h-2.4l-0.7,3.3h-1.1l0.7-3.3 - h-2.3l-0.6,3.3h-1.1l0.6-3.3h-2v-1h2.2l0.5-2.6H-18v-1h2.3l0.6-3.4h1.1l-0.6,3.4h2.4l0.7-3.4h1l-0.7,3.4h2v1H-11.4 M-15.3-728.7 - h2.3l0.5-2.6h-2.3L-15.3-728.7"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-room.svg b/src/skins/vector/img/icons-room.svg deleted file mode 100644 index d2abb213..00000000 --- a/src/skins/vector/img/icons-room.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 25 25" style="enable-background:new 0 0 25 25;" xml:space="preserve"> -<g id="icons_people"> - <path id="Oval-1-Copy-7" fill="#76CFA6" d="M12.5,25C19.4,25,25,19.4,25,12.5S19.4,0,12.5,0S0,5.6,0,12.5S5.6,25,12.5,25z"/> - <g id="text3879" transform="scale(1.0243293,0.97624855)"> - <path id="path3002" fill="#ffffff" d="M15.3,11.1l-0.6,3.3h2.8v1.3h-3l-0.8,4.2h-1.3l0.8-4.2h-3l-0.8,4.2H8.1l0.8-4.2H6.3v-1.3h2.8 - l0.7-3.3H7.1V9.9H10l0.8-4.3h1.4l-0.8,4.3h3l0.8-4.3h1.3l-0.8,4.3h2.6v1.2H15.3 M10.4,14.5h3l0.6-3.3h-3L10.4,14.5"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/icons-search-copy.svg b/src/skins/vector/img/icons-search-copy.svg deleted file mode 100644 index b026718b..00000000 --- a/src/skins/vector/img/icons-search-copy.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="13" height="13" viewBox="0, 0, 13, 13"> - <g id="Symbols"> - <g> - <path d="M10.229,5.547 C10.229,8.133 8.133,10.229 5.547,10.229 C2.961,10.229 0.865,8.133 0.865,5.547 C0.865,2.961 2.961,0.865 5.547,0.865 C8.133,0.865 10.229,2.961 10.229,5.547 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="path-1" opacity="0.7"/> - <path d="M8.824,8.824 L12.135,12.135" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="Line" opacity="0.7"/> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-search.svg b/src/skins/vector/img/icons-search.svg deleted file mode 100644 index d85709e6..00000000 --- a/src/skins/vector/img/icons-search.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> - <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-1-Copy-7"/> - <path d="M22.4,15.4 C22.4,19.266 19.266,22.4 15.4,22.4 C11.534,22.4 8.4,19.266 8.4,15.4 C8.4,11.534 11.534,8.4 15.4,8.4 C19.266,8.4 22.4,11.534 22.4,15.4 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="path-1" opacity="0.7"/> - <path d="M20.3,20.3 L25.25,25.25" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="Line" opacity="0.7"/> - </g> -</svg> diff --git a/src/skins/vector/img/icons-settings-room.svg b/src/skins/vector/img/icons-settings-room.svg deleted file mode 100644 index 117d134c..00000000 --- a/src/skins/vector/img/icons-settings-room.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 3.8.3 (29802) - http://www.bohemiancoding.com/sketch --> - <title>69011392-CE9D-4404-A85C-A8548C5D850B</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Room-header/Vector-Design" transform="translate(-664.000000, -27.000000)"> - <g id="icons_settings_room" transform="translate(660.000000, 23.000000)"> - <path d="M19.2916667,13.5728624 C19.2916667,13.5393757 19.3017819,13.5102943 19.3113438,13.4971468 C19.3355672,13.4638396 19.3859829,13.4310694 19.4436252,13.4214623 L17.694545,13.6861316 L17.3974447,13.7310981 L17.2977123,14.0145482 C17.185604,14.3331717 17.0722755,14.597605 16.9592353,14.8067293 L16.8124355,15.0783089 L16.9894726,15.331219 C17.2195103,15.6598444 17.565037,16.1054769 18.0280062,16.6713281 C18.022664,16.6649493 18.0099284,16.6331101 18.0099284,16.5920681 C18.0099284,16.5496402 18.0279377,16.5036164 18.0528321,16.475956 C17.8694436,16.7228218 17.5714051,17.0479546 17.1334654,17.4798119 C16.7965085,17.8120888 16.5345801,18.0099284 16.5920681,18.0099284 C16.6214055,18.0099284 16.6291649,18.0126143 16.6155936,18.0038899 L15.3431476,17.005336 L15.0891758,16.8065755 L14.8033664,16.9559758 C14.5503526,17.088233 14.2889914,17.1973729 14.0189869,17.2835445 L13.7120738,17.3814955 L13.6744316,17.7014535 C13.5757258,18.5404536 13.4865723,19.1122657 13.4117593,19.4000077 C13.4220315,19.3588282 13.508382,19.2916667 13.5538737,19.2916667 L11.4461263,19.2916667 C11.4709448,19.2916667 11.5046771,19.3033697 11.5281137,19.3223422 C11.5674577,19.3541921 11.5985339,19.4122911 11.6028567,19.4684877 L11.3327968,17.6846531 L11.2864626,17.3801712 L10.9936883,17.2845714 C10.7078788,17.1912459 10.44734,17.0841355 10.2119332,16.9635612 L9.93214937,16.8202573 L9.68174016,17.0102842 L8.34303574,18.0261804 C8.34222864,18.0245539 8.3828551,18.0099284 8.40793186,18.0099284 C8.4560459,18.0099284 8.50260257,18.0304133 8.52412631,18.0519371 C7.73317304,17.3354714 7.2298153,16.8229617 7.00934352,16.5176931 C7.02916553,16.5459153 7.0375434,16.5734426 7.0375434,16.5920681 C7.0375434,16.6255549 7.02742813,16.6546363 7.01786631,16.6677838 C7.10938322,16.5396915 7.26666674,16.3346061 7.48982077,16.0525642 C7.72197376,15.7591487 7.89698984,15.5306554 8.01617299,15.3651233 L8.19916614,15.1109661 L8.05035851,14.8353965 C7.89620291,14.5499231 7.78028893,14.2700333 7.70189913,13.9956689 L7.61327161,13.6854726 L7.29411759,13.6383843 L5.55665014,13.3820367 C5.60547283,13.3895382 5.65427606,13.4185878 5.68200405,13.4549808 C5.69744497,13.475247 5.70833333,13.5072316 5.70833333,13.534885 L5.70833333,11.4271376 C5.70833333,11.4606243 5.69821806,11.4897057 5.68865624,11.5028532 C5.66733768,11.5321662 5.61852108,11.5655671 5.55412371,11.5772757 L7.3050617,11.3139278 L7.6170932,11.2669553 L7.70896845,10.9650795 C7.78753435,10.7069344 7.89777395,10.446882 8.04022371,10.1847745 L8.18820877,9.91248195 L8.0101898,9.65880492 C7.74852329,9.28593014 7.40215158,8.83920775 6.9702929,8.31710994 C6.97614867,8.32413164 6.99007161,8.35754672 6.99007161,8.40793186 C6.99007161,8.4608591 6.98258594,8.47998916 6.98661693,8.47416662 C7.12501718,8.28270528 7.42133693,7.95931063 7.86180475,7.52491822 C8.20132871,7.19007736 8.46567196,6.99007161 8.40793186,6.99007161 C8.37230936,6.99007161 8.35028571,6.98160098 8.34992978,6.98132719 L9.65863124,7.99604966 L9.91223703,8.19268603 L10.1966336,8.04402418 C10.4496474,7.91176698 10.7110086,7.80262714 10.9810131,7.71645547 L11.2879262,7.61850448 L11.3255684,7.29854649 C11.4242742,6.45954641 11.5134277,5.88773433 11.5882407,5.59999227 C11.5779685,5.64117182 11.491618,5.70833333 11.4461263,5.70833333 L13.5538737,5.70833333 C13.5290552,5.70833333 13.4953229,5.69663029 13.4718863,5.67765781 C13.4325423,5.64580789 13.4014661,5.58770895 13.3971433,5.53151231 L13.6672032,7.31534687 L13.7135374,7.61982882 L14.0063117,7.7154286 C14.2921212,7.80875413 14.55266,7.91586455 14.7880668,8.03643878 L15.0667962,8.17920261 L15.3169039,7.99074117 L16.6651027,6.97484491 C16.6763099,6.97052126 16.6241756,6.99007161 16.5920681,6.99007161 C16.5510262,6.99007161 16.519187,6.97733595 16.5093349,6.96912583 C17.2816391,7.68242394 17.786379,8.20245893 17.9875122,8.48739759 C17.9775221,8.4800961 17.9624566,8.43274744 17.9624566,8.40793186 C17.9624566,8.37444515 17.9725719,8.34536374 17.9821337,8.33221623 C17.8906168,8.46030849 17.7333333,8.66539387 17.5101792,8.94743577 C17.2780262,9.24085135 17.1030102,9.46934457 16.983827,9.63487672 L16.8039941,9.8846446 L16.9459858,10.1577054 C17.0973302,10.4487525 17.2157304,10.7317577 17.3016229,11.0066136 L17.3947182,11.3045187 L17.7032402,11.3517243 L19.4407076,11.6175663 C19.3945272,11.6104618 19.3457239,11.5814122 19.3179959,11.5450192 C19.302555,11.524753 19.2916667,11.4927684 19.2916667,11.465115 L19.2916667,13.5728624 L19.2916667,13.5728624 Z M20.2916667,13.5728624 L20.2916667,11.465115 C20.2916667,11.2728919 20.2301422,11.0921639 20.1134277,10.938976 C19.984426,10.7696613 19.8027031,10.6614929 19.5923589,10.6291323 L17.8544855,10.363228 L17.7788628,10.8574761 L18.2561028,10.7083386 C18.1521072,10.3755526 18.0109975,10.038266 17.8332026,9.69635271 L17.3895942,9.92702908 L17.7953614,10.2191814 C17.9040439,10.0682334 18.0708213,9.85049629 18.2943998,9.56791796 C18.5269772,9.27396595 18.6924986,9.05813902 18.7933685,8.91692118 C18.9017053,8.76798915 18.9624566,8.59332905 18.9624566,8.40793186 C18.9624566,8.20588738 18.9030846,8.01928953 18.7722844,7.86980369 C18.5498818,7.5500335 18.0102527,6.99405205 17.1684488,6.21750426 C16.9877567,6.06610236 16.7976798,5.99007161 16.5920681,5.99007161 C16.3700726,5.99007161 16.1660301,6.06658755 16.0106502,6.22196744 L14.7151056,7.19209303 L15.0160048,7.5914171 L15.2439427,7.14639542 C14.9603221,7.00112631 14.6512052,6.87404491 14.3167135,6.76482314 L14.1615126,7.24012587 L14.655822,7.16490487 L14.38998,5.41794306 C14.3772158,5.23404949 14.2733503,5.03986612 14.1010846,4.90041294 C13.9447263,4.7738372 13.755921,4.70833333 13.5538737,4.70833333 L11.4461263,4.70833333 C11.0335176,4.70833333 10.7193048,4.95272109 10.6192582,5.35290753 C10.5306614,5.69357671 10.4362592,6.2990532 10.3324178,7.18170524 L10.8289931,7.24012587 L10.676973,6.76379626 C10.3519948,6.86751269 10.0373707,6.99889418 9.73337941,7.15779874 L9.96500651,7.60091146 L10.2713818,7.20577326 L8.96116042,6.18987699 C8.79471492,6.06183733 8.60812404,5.99007161 8.40793186,5.99007161 C8.0716892,5.99007161 7.73789391,6.24262573 7.15962537,6.81291815 C6.6823007,7.28365902 6.35516387,7.64068653 6.17018122,7.89681636 C6.05452286,8.06370379 5.99007161,8.22841254 5.99007161,8.40793186 C5.99007161,8.61022748 6.06728965,8.79555076 6.20090455,8.95588864 C6.61604566,9.45778088 6.94693135,9.88453066 7.19163311,10.2332307 L7.60091146,9.9460178 L7.1615992,9.70726113 C6.98756879,10.0274771 6.85095757,10.3497395 6.75229457,10.6739179 L7.23063151,10.8194987 L7.15620132,10.3250696 L5.3902508,10.5909116 C5.17158962,10.6304328 5.00251236,10.7461172 4.87992015,10.9146815 C4.76908467,11.0670803 4.70833333,11.2417404 4.70833333,11.4271376 L4.70833333,13.534885 C4.70833333,13.7271081 4.76985777,13.9078361 4.88657233,14.061024 C5.01557399,14.2303387 5.19729689,14.3385071 5.40764111,14.3708677 L7.14815672,14.6276747 L7.22113715,14.1330295 L6.74037518,14.2703901 C6.83921427,14.6163269 6.98281014,14.9630584 7.17045312,15.3105454 L7.61040582,15.0729709 L7.20463865,14.7808186 C7.09595607,14.9317666 6.9291787,15.1495037 6.70560023,15.432082 C6.47302282,15.7260341 6.30750141,15.941861 6.20663153,16.0830788 C6.09829474,16.2320109 6.0375434,16.406671 6.0375434,16.5920681 C6.0375434,16.7752634 6.09022783,16.9483694 6.19438795,17.0971695 C6.47190158,17.4815122 7.01291273,18.0323599 7.83511625,18.7762583 C7.97779454,18.9198189 8.18258892,19.0099284 8.40793186,19.0099284 C8.62289672,19.0099284 8.82176089,18.9383373 8.97977316,18.7961262 L10.2862503,17.8068816 L9.98399523,17.4085829 L9.75605729,17.8536046 C10.0396779,17.9988737 10.3487948,18.1259551 10.6832865,18.2351769 L10.8384874,17.7598741 L10.344178,17.8350951 L10.61002,19.5820569 C10.6227842,19.7659505 10.7266497,19.9601339 10.8989154,20.0995871 C11.0552737,20.2261628 11.244079,20.2916667 11.4461263,20.2916667 L13.5538737,20.2916667 C13.9664824,20.2916667 14.2806952,20.0472789 14.3807418,19.6470925 C14.4693386,19.3064233 14.5637408,18.7009468 14.6675822,17.8182948 L14.1710069,17.7598741 L14.323027,18.2362037 C14.6480052,18.1324873 14.9626293,18.0011058 15.2666206,17.8422013 L15.0349935,17.3990885 L14.7268394,17.792841 L16.0370607,18.8182317 C16.2384937,18.9502769 16.4108203,19.0099284 16.5920681,19.0099284 C16.9280588,19.0099284 17.2611042,18.7583728 17.8356102,18.1918461 C18.3091333,17.7248997 18.6377162,17.3664456 18.8283746,17.1051729 C18.9349535,16.9906682 19.0099284,16.7990657 19.0099284,16.5920681 C19.0099284,16.3864565 18.9338976,16.1963796 18.7990954,16.034617 C18.3534697,15.4899313 18.021739,15.0620917 17.8087045,14.7577567 L17.3990885,15.0444878 L17.8389418,15.2822464 C17.9790857,15.0229801 18.112608,14.7114281 18.2410247,14.3464544 L17.7693685,14.1805013 L17.844192,14.674871 L19.6006482,14.409029 C19.8175769,14.3729308 19.9945828,14.2578769 20.1200798,14.0853185 C20.2309153,13.9329197 20.2916667,13.7582596 20.2916667,13.5728624 L20.2916667,13.5728624 Z" id="Path" fill="#76CFA6"></path> - <path d="M15.625,12.5 C15.625,11.6373655 15.3198273,10.900882 14.7094727,10.2905273 C14.099118,9.68017273 13.3626345,9.375 12.5,9.375 C11.6373655,9.375 10.900882,9.68017273 10.2905273,10.2905273 C9.68017273,10.900882 9.375,11.6373655 9.375,12.5 C9.375,13.3626345 9.68017273,14.099118 10.2905273,14.7094727 C10.900882,15.3198273 11.6373655,15.625 12.5,15.625 C13.3626345,15.625 14.099118,15.3198273 14.7094727,14.7094727 C15.3198273,14.099118 15.625,13.3626345 15.625,12.5 L15.625,12.5 Z" id="Path" stroke="#76CFA6"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-settings.svg b/src/skins/vector/img/icons-settings.svg deleted file mode 100644 index 3ca2b655..00000000 --- a/src/skins/vector/img/icons-settings.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 3.8.3 (29802) - http://www.bohemiancoding.com/sketch --> - <title>4D42A2A7-7430-4D4F-A0A2-E19278CF66E3</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Room-list-Copy-3" transform="translate(-165.000000, -726.000000)"> - <g id="icons_settings" transform="translate(165.000000, 726.000000)"> - <path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path> - <path d="M15.625,12.5 C15.625,11.6373655 15.3198273,10.900882 14.7094727,10.2905273 C14.099118,9.68017273 13.3626345,9.375 12.5,9.375 C11.6373655,9.375 10.900882,9.68017273 10.2905273,10.2905273 C9.68017273,10.900882 9.375,11.6373655 9.375,12.5 C9.375,13.3626345 9.68017273,14.099118 10.2905273,14.7094727 C10.900882,15.3198273 11.6373655,15.625 12.5,15.625 C13.3626345,15.625 14.099118,15.3198273 14.7094727,14.7094727 C15.3198273,14.099118 15.625,13.3626345 15.625,12.5 L15.625,12.5 Z M19.7916667,11.465115 L19.7916667,13.5728624 C19.7916667,13.6488177 19.7663486,13.721607 19.7157118,13.7912326 C19.665075,13.8608583 19.6017799,13.9020001 19.5258247,13.9146593 L17.7693685,14.1805013 C17.649106,14.5222999 17.5256806,14.8102925 17.3990885,15.0444878 C17.6206247,15.360968 17.9592534,15.7977041 18.4149848,16.3547092 C18.4782808,16.4306644 18.5099284,16.5097833 18.5099284,16.5920681 C18.5099284,16.674353 18.4814456,16.7471423 18.4244792,16.8104384 C18.2535799,17.0446337 17.9402692,17.3864272 17.4845378,17.835829 C17.0288063,18.2852308 16.7313194,18.5099284 16.5920681,18.5099284 C16.5161129,18.5099284 16.4338293,18.4814456 16.3452148,18.4244792 L15.0349935,17.3990885 C14.7564909,17.5446694 14.4684983,17.6649301 14.1710069,17.7598741 C14.0697333,18.6207002 13.9779554,19.2093445 13.8956706,19.5258247 C13.8513633,19.7030535 13.7374322,19.7916667 13.5538737,19.7916667 L11.4461263,19.7916667 C11.3575119,19.7916667 11.2799754,19.7647663 11.2135145,19.7109646 C11.1470537,19.657163 11.110659,19.5891208 11.1043294,19.5068359 L10.8384874,17.7598741 C10.5283368,17.6586005 10.243509,17.5415046 9.98399523,17.4085829 L8.6452908,18.4244792 C8.58199476,18.4814456 8.50287591,18.5099284 8.40793186,18.5099284 C8.31931741,18.5099284 8.24019855,18.4751161 8.17057292,18.4054905 C7.37304289,17.6839157 6.85085844,17.152237 6.60400391,16.8104384 C6.55969668,16.7471423 6.5375434,16.674353 6.5375434,16.5920681 C6.5375434,16.5161129 6.56286144,16.4433236 6.61349826,16.3736979 C6.70844231,16.2407762 6.86984478,16.0303201 7.0977105,15.7423231 C7.32557623,15.4543262 7.49647295,15.231211 7.61040582,15.0729709 C7.43950652,14.7564907 7.3097516,14.4431801 7.22113715,14.1330295 L5.4836697,13.8766819 C5.40138486,13.8640227 5.33492502,13.8244632 5.28428819,13.7580024 C5.23365137,13.6915416 5.20833333,13.6171698 5.20833333,13.534885 L5.20833333,11.4271376 C5.20833333,11.3511823 5.23365137,11.278393 5.28428819,11.2087674 C5.33492502,11.1391417 5.39505535,11.0979999 5.46468099,11.0853407 L7.23063151,10.8194987 C7.31924596,10.5283369 7.44267137,10.2371796 7.60091146,9.9460178 C7.34772732,9.5852304 7.00909862,9.14849432 6.58501519,8.63579644 C6.52171916,8.5598412 6.49007161,8.4838871 6.49007161,8.40793186 C6.49007161,8.34463582 6.5185544,8.27184648 6.57552083,8.18956163 C6.74009052,7.96169591 7.05181881,7.62148483 7.51071506,7.16891819 C7.96961131,6.71635154 8.26868058,6.49007161 8.40793186,6.49007161 C8.4902167,6.49007161 8.57250031,6.52171916 8.65478516,6.58501519 L9.96500651,7.60091146 C10.2435091,7.45533058 10.5315017,7.33506992 10.8289931,7.24012587 C10.9302667,6.3792998 11.0220446,5.79065552 11.1043294,5.47417535 C11.1486367,5.29694645 11.2625678,5.20833333 11.4461263,5.20833333 L13.5538737,5.20833333 C13.6424881,5.20833333 13.7200246,5.23523374 13.7864855,5.28903537 C13.8529463,5.342837 13.889341,5.41087922 13.8956706,5.49316406 L14.1615126,7.24012587 C14.4716632,7.34139952 14.756491,7.45849543 15.0160048,7.5914171 L16.3642036,6.57552083 C16.42117,6.5185544 16.4971241,6.49007161 16.5920681,6.49007161 C16.674353,6.49007161 16.7534718,6.52171916 16.8294271,6.58501519 C17.6459459,7.338238 18.1681304,7.87624622 18.3959961,8.19905599 C18.4403033,8.24969282 18.4624566,8.31931741 18.4624566,8.40793186 C18.4624566,8.4838871 18.4371386,8.55667645 18.3865017,8.62630208 C18.2915577,8.75922375 18.1301552,8.96967991 17.9022895,9.25767687 C17.6744238,9.54567382 17.503527,9.76878899 17.3895942,9.92702908 C17.5541639,10.2435093 17.6839188,10.5536552 17.7788628,10.8574761 L19.5163303,11.1233181 C19.5986151,11.1359773 19.665075,11.1755368 19.7157118,11.2419976 C19.7663486,11.3084584 19.7916667,11.3828302 19.7916667,11.465115 L19.7916667,11.465115 Z" id="icons_settings-copy" stroke="#FFFFFF" opacity="0.8"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons-show-apps.svg b/src/skins/vector/img/icons-show-apps.svg deleted file mode 100644 index 34381573..00000000 --- a/src/skins/vector/img/icons-show-apps.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xml:space="preserve"> -<style type="text/css"> - .st0{opacity:0.15;} - .st2{fill:none;stroke-width:1;stroke-linecap:round;stroke-miterlimit:10;} - .st3{fill:none;stroke-linejoin:round;stroke-miterlimit:10;} -</style> -<g id="Layer_1_1_" class="st0"> - <path id="Oval-109-Copy" fill="#76CFA6" d="M17.5,35C27.2,35,35,27.2,35,17.5S27.2,0,17.5,0S0,7.8,0,17.5S7.8,35,17.5,35z"/> -</g> -<g id="frame"> - <g id="Layer_3"> - <g> - <g> - <line class="st2" stroke="#76CFA6" x1="17.5" y1="23.9" x2="17.5" y2="18.9"/> - <g> - <polygon fill="#76CFA6" points="19.5,23.1 17.5,26.6 15.5,23.1 "/> - </g> - </g> - </g> - </g> - <rect x="6.7" y="6.7" class="st3" stroke="#76CFA6" width="21.6" height="21.6"/> - <line class="st3" stroke="#76CFA6" x1="6.7" y1="16.7" x2="28.2" y2="16.7"/> - <path fill="#76CFA6" d="M13.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3H9.9c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H13 - C13.2,13.5,13.3,13.4,13.3,13.3z"/> - <path fill="#76CFA6" d="M19.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H19 - C19.2,13.5,19.3,13.4,19.3,13.3z"/> - <path fill="#76CFA6" d="M25.3,13.3v-3.1c0-0.1-0.1-0.3-0.3-0.3h-3.1c-0.1,0-0.3,0.1-0.3,0.3v3.1c0,0.1,0.1,0.3,0.3,0.3H25 - C25.2,13.5,25.3,13.4,25.3,13.3z"/> -</g> -</svg> diff --git a/src/skins/vector/img/icons-upload.svg b/src/skins/vector/img/icons-upload.svg deleted file mode 100644 index b0101e87..00000000 --- a/src/skins/vector/img/icons-upload.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> - <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-109-Copy"/> - <g id="file"> - <path d="M10,10.01 C10,7.795 11.782,6 14.004,6 L18.402,6 C18.402,6 25,12.492 25,12.492 L25,24.006 C25,26.212 23.206,28 21,28 L14,28 C11.791,28 10,26.2 10,23.99 L10,10.01 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-1"/> - <path d="M25,13 L20.157,13 C18.966,13 18,12.034 18,10.843 L18,6" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-3"/> - </g> - <path d="M21.479,19.066 C21.612,19.066 21.746,19.015 21.848,18.912 C22.051,18.706 22.051,18.374 21.848,18.168 L17.871,14.154 C17.668,13.948 17.338,13.949 17.135,14.153 L13.153,18.162 C12.95,18.367 12.949,18.701 13.152,18.906 C13.355,19.113 13.685,19.113 13.888,18.908 L16.987,15.788 L16.988,24.474 C16.988,24.764 17.222,25 17.509,25 C17.798,25 18.03,24.764 18.03,24.474 L18.029,15.801 L21.111,18.912 C21.212,19.015 21.345,19.066 21.479,19.066 L21.479,19.066 z" fill="#76CFA6" id="Fill-75"/> - </g> -</svg> diff --git a/src/skins/vector/img/icons-video.svg b/src/skins/vector/img/icons-video.svg deleted file mode 100644 index d367f496..00000000 --- a/src/skins/vector/img/icons-video.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>05D354CE-86A7-4B6F-B9BE-F1CEBBD81B21</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Extra-icons-sheet" transform="translate(-542.000000, -366.000000)"> - <g id="icons_video" transform="translate(542.000000, 366.000000)"> - <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-109-Copy-2" fill="#76CFA6" opacity="0.15"></path> - <g transform="translate(9.000000, 11.500000)" id="Rectangle-20-+-Path-16" stroke="#76CFA6"> - <g transform="scale(1.0, 0.8)"> - <rect id="Rectangle-20" x="0" y="0" width="13" height="17" rx="4"></rect> - <path d="M13,8.50795206 C13,11.2533934 15.8192656,12.6412404 15.8192656,12.6412404 C16.8995921,13.391019 17.7753697,12.9258617 17.7753697,11.6159552 L17.7753697,5.39994895 C17.7753697,4.08392094 16.8771592,3.5920349 15.8192656,4.37466376 C15.8192656,4.37466376 13,5.76251076 13,8.50795206 Z" id="Path-16"></path> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/icons_ellipsis.svg b/src/skins/vector/img/icons_ellipsis.svg deleted file mode 100644 index ba600cca..00000000 --- a/src/skins/vector/img/icons_ellipsis.svg +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M7.831,13.382c0.504,0 0.826,-0.378 0.826,-0.882c0,-0.518 -0.322,-0.882 -0.826,-0.882c-0.49,0 -0.826,0.364 -0.826,0.882c-0.014,0.504 0.336,0.882 0.826,0.882ZM12.493,13.382c0.504,0 0.84,-0.378 0.84,-0.882c-0.014,-0.518 -0.336,-0.882 -0.826,-0.882c-0.49,0 -0.84,0.364 -0.84,0.882c-0.014,0.504 0.336,0.882 0.826,0.882ZM17.155,13.382c0.518,0 0.84,-0.378 0.84,-0.882c0,-0.518 -0.336,-0.882 -0.826,-0.882c-0.49,0 -0.84,0.364 -0.84,0.882c0,0.504 0.336,0.882 0.826,0.882Z" style="fill:#fff;"/></svg> diff --git a/src/skins/vector/img/info.png b/src/skins/vector/img/info.png deleted file mode 100644 index 699fd64e..00000000 Binary files a/src/skins/vector/img/info.png and /dev/null differ diff --git a/src/skins/vector/img/leave.svg b/src/skins/vector/img/leave.svg deleted file mode 100644 index 1acbe593..00000000 --- a/src/skins/vector/img/leave.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 20 26" - xml:space="preserve"> -<g id="Page-1" sketch:type="MSPage"> - <g id="Exit-Copy-6" sketch:type="MSLayerGroup"> - <path id="Rectangle-140_1_" sketch:type="MSShapeGroup" fill="none" stroke="#76CFA6" d="M4.4,0.5h7.5c2.2,0,4,1.8,4,4v14c0,2.2-1.8,4-4,4H4.4 - c-2.2,0-4-1.8-4-4v-14C0.4,2.3,2.2,0.5,4.4,0.5z"/> - <g id="Rectangle-140_2_"> - <g> - <path fill="#76CFA6" d="M12,23H4.5C2,23,0,21,0,18.5v-14C0,2,2,0,4.5,0H12c2.5,0,4.5,2,4.5,4.5v14C16.4,21,14.4,23,12,23z M4.4,1 - C2.5,1,0.9,2.6,0.9,4.5v14c0,1.9,1.6,3.5,3.5,3.5h7.5c1.9,0,3.5-1.6,3.5-3.5v-14c0-1.9-1.6-3.5-3.5-3.5H4.4z"/> - <g> - <path fill="none" stroke="#76CFA6" d="M3.2,20.6l8.3-1.8c1.1-0.2,2-1,2-1.7V5.7c0-0.7-0.9-1.4-2-1.7L3.2,2.2"/> - </g> - </g> - </g> - <circle id="Oval-605" sketch:type="MSShapeGroup" fill="#76CFA6" cx="10.7" cy="11.1" r="1"> - </circle> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/list-close.png b/src/skins/vector/img/list-close.png deleted file mode 100644 index 82b322f9..00000000 Binary files a/src/skins/vector/img/list-close.png and /dev/null differ diff --git a/src/skins/vector/img/list-close.svg b/src/skins/vector/img/list-close.svg deleted file mode 100644 index cd88b2a8..00000000 --- a/src/skins/vector/img/list-close.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-249 251 20 20" - style="enable-background:new -249 251 20 20;" xml:space="preserve"> -<style type="text/css"> - .st0{opacity:0.2;} - .st1{fill:#444444;} -</style> -<title>Slice 1</title> -<desc>Created with Sketch.</desc> -<g id="Page-1" sketch:type="MSPage" class="st0"> - <path id="Triangle-1" sketch:type="MSShapeGroup" class="st1" d="M-245,270v-18l12,9L-245,270z"/> -</g> -</svg> diff --git a/src/skins/vector/img/list-open.png b/src/skins/vector/img/list-open.png deleted file mode 100644 index f8c80631..00000000 Binary files a/src/skins/vector/img/list-open.png and /dev/null differ diff --git a/src/skins/vector/img/list-open.svg b/src/skins/vector/img/list-open.svg deleted file mode 100644 index e180be88..00000000 --- a/src/skins/vector/img/list-open.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-249 251 20 20" - style="enable-background:new -249 251 20 20;" xml:space="preserve"> -<style type="text/css"> - .st0{opacity:0.2;} - .st1{fill:#444444;} -</style> -<title>Slice 1</title> -<desc>Created with Sketch.</desc> -<g id="Page-1" sketch:type="MSPage" class="st0"> - <path id="Triangle-1" sketch:type="MSShapeGroup" class="st1" d="M-248,255h18l-9,12L-248,255z"/> -</g> -</svg> diff --git a/src/skins/vector/img/logos/riot-im-logo-1.png b/src/skins/vector/img/logos/riot-im-logo-1.png deleted file mode 100644 index 768679da..00000000 Binary files a/src/skins/vector/img/logos/riot-im-logo-1.png and /dev/null differ diff --git a/src/skins/vector/img/logos/riot-im-logo-1.svg b/src/skins/vector/img/logos/riot-im-logo-1.svg deleted file mode 100644 index a806c3bf..00000000 --- a/src/skins/vector/img/logos/riot-im-logo-1.svg +++ /dev/null @@ -1,158 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 163.60767 144.2" - xml:space="preserve" - sodipodi:docname="riot-im-logo-1.svg" - width="163.60767" - height="144.2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata3918"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs3916" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1918" - inkscape:window-height="2071" - id="namedview3914" - showgrid="false" - inkscape:zoom="0.98333333" - inkscape:cx="81.80767" - inkscape:cy="72.1" - inkscape:window-x="1912" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><style - type="text/css" - id="style3856"> - .st0{fill:#7DC8A2;} - .st1{fill:#AFDBC5;} - .st2{fill:#764D80;} - .st3{fill:#764D80;stroke:#764D80;stroke-miterlimit:10;} -</style><g - id="Layer_3" - transform="translate(-38.19233,-47.9)"><g - id="g3910"><g - id="g3886"><g - id="g3884"><path - class="st0" - d="M 100.6,48.1 H 59.7 c -0.1,0 -0.2,0 -0.3,0 -11.4,0 -20.6,9.2 -20.6,20.6 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.3,0 51.4,-23.1 51.4,-51.4 0,-28.3 -23.1,-51.4 -51.4,-51.4 z" - id="path3858" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="M 59.5,186.9 C 51,186.9 44.1,180 44.1,171.5 V 68.6 c 0,-8.5 6.9,-15.4 15.3,-15.4 0.1,0 0.2,0 0.3,0 h 40.9 c 25.5,0 46.3,20.8 46.3,46.3 0,25.5 -20.8,46.3 -46.3,46.3 H 74.9 v 25.7 c 0,8.4 -6.9,15.4 -15.4,15.4 z" - id="path3860" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 59.5,181.7 c -5.7,0 -10.3,-4.6 -10.3,-10.3 V 68.6 c 0,-5.6 4.5,-10.2 10.1,-10.3 0.1,0 0.2,0 0.3,0 h 41 c 22.7,0 41.1,18.5 41.1,41.1 0,22.6 -18.5,41.1 -41.1,41.1 H 69.8 v 30.8 c 0,5.8 -4.6,10.4 -10.3,10.4 z" - id="path3862" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 59.5,176.6 c -2.9,0 -5.2,-2.3 -5.2,-5.2 V 68.6 c 0,-2.8 2.2,-5.1 5,-5.2 h 0.2 41.1 c 19.9,0 36,16.2 36,36 0,19.8 -16.1,36 -36,36 H 64.7 v 36 c 0,2.9 -2.3,5.2 -5.2,5.2 z" - id="path3864" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 59.5,130.3 h 41.1 c 17,0 30.9,-13.8 30.9,-30.9 0,-17.1 -13.8,-30.9 -30.9,-30.9 H 59.5 Z" - id="path3866" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="M 64.7,125.2 V 73.7 h 36 c 14.2,0 25.7,11.5 25.7,25.7 0,14.2 -11.5,25.7 -25.7,25.7 z" - id="path3868" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="M 69.8,120.1 V 78.9 h 30.8 c 11.4,0 20.6,9.2 20.6,20.6 0,11.4 -9.2,20.6 -20.6,20.6 z" - id="path3870" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="M 74.9,115 V 84 h 25.7 c 8.5,0 15.5,6.9 15.5,15.5 0,8.6 -6.9,15.5 -15.5,15.5 z" - id="path3872" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="M 80,109.8 V 89.1 h 20.6 c 5.7,0 10.4,4.6 10.4,10.4 0,5.8 -4.6,10.4 -10.4,10.4 z" - id="path3874" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="M 85.2,104.7 V 94.2 h 15.4 c 2.9,0 5.2,2.3 5.2,5.2 0,2.9 -2.3,5.2 -5.2,5.2 z" - id="path3876" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><g - id="g3882"><circle - transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7245,46.1263)" - class="st2" - cx="58.799999" - cy="68.599998" - id="ellipse3878" - r="20.6" - style="fill:#764d80" /><path - class="st2" - d="m 147.6,159.6 c 6.5,9.3 4.3,22.1 -5,28.6 -9.3,6.5 -22.1,4.3 -28.6,-5 l -30.8,-44 c -6.5,-9.3 -4.3,-22.1 5,-28.6 9.3,-6.5 22.1,-4.3 28.6,5 z" - id="path3880" - inkscape:connector-curvature="0" - style="fill:#764d80" /></g></g></g><g - id="g3908"><g - id="g3896"><path - class="st2" - d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path3888" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z" - id="path3890" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path3892" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path3894" - inkscape:connector-curvature="0" - style="fill:#764d80" /></g><g - id="g3902"><path - class="st2" - d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z" - id="path3898" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z" - id="path3900" - inkscape:connector-curvature="0" - style="fill:#764d80" /></g><g - id="g3906"><path - class="st3" - d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path3904" - inkscape:connector-curvature="0" - style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g></g></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-im-logo-2.svg b/src/skins/vector/img/logos/riot-im-logo-2.svg deleted file mode 100644 index f9cc92f1..00000000 --- a/src/skins/vector/img/logos/riot-im-logo-2.svg +++ /dev/null @@ -1,165 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 163.7 144.10001" - xml:space="preserve" - sodipodi:docname="riot-im-logo-2.svg" - width="163.7" - height="144.10001" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata64"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs62" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview60" - showgrid="false" - inkscape:zoom="0.98333333" - inkscape:cx="81.9" - inkscape:cy="72" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><style - type="text/css" - id="style2"> - .st0{fill:#F69E98;} - .st1{fill:#764D80;} -</style><g - id="Layer_3" - transform="translate(-38.1,-47.9)"><g - id="g26"><g - id="g24"><g - id="g12"><path - class="st0" - d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path4" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z" - id="path6" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path8" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path10" - inkscape:connector-curvature="0" - style="fill:#f69e98" /></g><g - id="g18"><path - class="st0" - d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z" - id="path14" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z" - id="path16" - inkscape:connector-curvature="0" - style="fill:#f69e98" /></g><g - id="g22"><path - class="st0" - d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path20" - inkscape:connector-curvature="0" - style="fill:#f69e98" /></g></g></g></g><g - id="g57" - transform="translate(-38.1,-47.9)"><path - class="st1" - d="M 99.9,48 H 58.7 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.5 c 28.4,0 51.4,-23 51.4,-51.4 C 151.2,71 128.2,48 99.9,48 Z" - id="path29" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st0" - d="m 58.7,187.6 c -8.9,0 -16.2,-7.2 -16.2,-16.2 V 68.6 c 0,-8.9 7.1,-16.1 16,-16.2 h 41.3 c 26,0 47,21 47,47 0,26 -21,47 -47,47 H 74.9 v 25 c 0,9 -7.2,16.2 -16.2,16.2 z M 58.6,53.9 c -8,0.1 -14.5,6.6 -14.5,14.7 v 102.8 c 0,8.1 6.6,14.7 14.7,14.7 8.1,0 14.7,-6.6 14.7,-14.7 v -26.5 h 26.4 c 25.1,0 45.5,-20.4 45.5,-45.5 0,-25.1 -20.4,-45.5 -45.5,-45.5 0,0 -41.3,0 -41.3,0 z" - id="path31" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 58.7,182.4 c -6.1,0 -11,-4.9 -11,-11 V 68.6 c 0,-6 4.8,-10.8 10.8,-11 h 41.3 c 23.1,0 41.9,18.7 41.9,41.9 0,23.2 -18.7,41.8 -41.9,41.8 h -30 v 30.1 c 0,6.1 -4.9,11 -11.1,11 0.1,0 0.1,0 0,0 z M 58.5,59 c -5.2,0.1 -9.3,4.4 -9.3,9.6 v 102.8 c -0.2,5.3 4,9.7 9.2,9.8 5.2,0.1 9.7,-4 9.8,-9.2 0,-0.2 0,-0.4 0,-0.6 v -31.6 h 31.6 c 22.3,0 40.3,-18.1 40.3,-40.4 0,-22.3 -18.1,-40.3 -40.3,-40.3 z" - id="path33" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 58.7,177.3 c -3.2,0 -5.9,-2.6 -5.9,-5.9 V 68.6 c 0,-3.1 2.5,-5.7 5.6,-5.9 h 41.4 c 20.3,0 36.7,16.4 36.7,36.7 0,20.3 -16.4,36.7 -36.7,36.7 H 64.6 v 35.2 c 0,3.3 -2.6,6 -5.9,6 z M 58.5,64.2 c -2.3,0.2 -4.1,2.1 -4.1,4.4 v 102.8 c 0,2.4 2,4.4 4.4,4.4 2.4,0 4.4,-2 4.4,-4.4 v -36.8 h 36.7 c 19.4,0 35.2,-15.8 35.2,-35.2 0,-19.4 -15.8,-35.2 -35.2,-35.2 z" - id="path35" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,131 H 58 V 67.9 h 41.9 c 17.4,0 31.6,14.1 31.6,31.6 0,17.5 -14.2,31.5 -31.6,31.5 z M 59.5,129.5 H 99.9 C 116.5,129.5 130,116 130,99.4 130,82.8 116.5,69.3 99.9,69.3 H 59.5 Z" - id="path37" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,125.9 H 63.2 V 73 h 36.7 c 14.6,0.3 26.2,12.3 25.9,26.9 -0.3,14.3 -11.8,25.7 -25.9,26 z M 64.6,124.4 H 99.8 C 113.6,124.1 124.5,112.7 124.2,99 123.9,85.6 113.2,74.8 99.8,74.6 H 64.6 Z" - id="path39" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,120.7 H 68.3 V 78.2 h 31.6 c 11.8,0.3 21.1,10 20.8,21.7 -0.3,11.4 -9.5,20.6 -20.8,20.8 z M 69.8,119.2 H 99.9 C 110.8,119 119.5,109.9 119.2,99 119,88.4 110.4,79.9 99.9,79.7 H 69.8 Z" - id="path41" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,115.6 H 73.4 V 83.3 h 26.4 c 8.9,0 16.1,7.2 16.1,16.1 0,8.9 -7.1,16.2 -16,16.2 z m -25,-1.6 h 24.9 c 8.1,0 14.6,-6.6 14.6,-14.6 0,-8 -6.6,-14.6 -14.6,-14.6 v 0 H 74.9 Z" - id="path43" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,110.4 H 78.6 v -22 h 21.3 c 6.1,0 11,4.9 11,11 0,6.1 -5,11 -11,11 z m -19.8,-1.5 h 19.8 c 5.2,0 9.5,-4.3 9.5,-9.5 0,-5.2 -4.3,-9.5 -9.5,-9.5 H 80.1 Z" - id="path45" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="M 99.9,105.3 H 83.7 V 93.6 h 16.1 c 3.2,0 5.9,2.6 5.9,5.9 0,3.3 -2.6,5.8 -5.8,5.8 0,0 0,0 0,0 z m -14.7,-1.5 h 14.7 c 2.4,0 4.4,-2 4.4,-4.4 0,-2.4 -2,-4.4 -4.4,-4.4 H 85.2 Z" - id="path47" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 99.4,100.2 h -9.3 c -0.4,0 -0.8,-0.3 -0.8,-0.8 0,-0.5 0.3,-0.8 0.8,-0.8 h 9.3 c 0.4,0 0.8,0.3 0.8,0.8 0,0.5 -0.4,0.8 -0.8,0.8 z" - id="path49" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st0" - d="m 58.7,172.2 c -0.4,0 -0.8,-0.3 -0.8,-0.8 v -36 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.4,0 0.8,0.3 0.8,0.8 v 36 c 0,0.4 -0.3,0.8 -0.8,0.8 z" - id="path51" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><circle - transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7215,46.1209)" - class="st0" - cx="58.799999" - cy="68.599998" - id="ellipse53" - r="20.6" - style="fill:#f69e98" /><path - class="st0" - d="m 147.5,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 L 83,139.1 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z" - id="path55" - inkscape:connector-curvature="0" - style="fill:#f69e98" /></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-im-logo-3.svg b/src/skins/vector/img/logos/riot-im-logo-3.svg deleted file mode 100644 index 7f81dacd..00000000 --- a/src/skins/vector/img/logos/riot-im-logo-3.svg +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 163.89999 144.3" - xml:space="preserve" - sodipodi:docname="riot-im-logo-3.svg" - width="163.89999" - height="144.3" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata68"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs66" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview64" - showgrid="false" - inkscape:zoom="0.98333333" - inkscape:cx="82.1" - inkscape:cy="72.2" - inkscape:window-x="1034" - inkscape:window-y="234" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><style - type="text/css" - id="style2"> - .st0{fill:#FAC79E;} - .st1{fill:#E45E5D;} - .st2{fill:#F8A05F;} -</style><g - id="Layer_3" - transform="translate(-37.9,-47.9)"><g - id="g26"><g - id="g24"><g - id="g12"><path - class="st0" - d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path4" - inkscape:connector-curvature="0" - style="fill:#fac79e" /><path - class="st0" - d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z" - id="path6" - inkscape:connector-curvature="0" - style="fill:#fac79e" /><path - class="st0" - d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path8" - inkscape:connector-curvature="0" - style="fill:#fac79e" /><path - class="st0" - d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path10" - inkscape:connector-curvature="0" - style="fill:#fac79e" /></g><g - id="g18"><path - class="st0" - d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z" - id="path14" - inkscape:connector-curvature="0" - style="fill:#fac79e" /><path - class="st0" - d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z" - id="path16" - inkscape:connector-curvature="0" - style="fill:#fac79e" /></g><g - id="g22"><path - class="st0" - d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path20" - inkscape:connector-curvature="0" - style="fill:#fac79e" /></g></g></g></g><g - id="g61" - transform="translate(-37.9,-47.9)"><path - class="st1" - d="M 99.6,48.2 H 58.5 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 V 151 h 20.6 c 28.4,0 51.4,-23 51.4,-51.4 0,-28.4 -23.1,-51.4 -51.5,-51.4 z" - id="path29" - inkscape:connector-curvature="0" - style="fill:#e45e5d" /><polygon - class="st2" - points="37.9,96.3 37.9,104.3 85,48.2 78.3,48.2 " - id="polygon31" - style="fill:#f8a05f" /><polygon - class="st2" - points="37.9,112.3 37.9,120.2 98.4,48.2 91.7,48.2 " - id="polygon33" - style="fill:#f8a05f" /><path - class="st2" - d="m 110.8,49.5 c -1.9,-0.4 -3.9,-0.8 -5.9,-1 L 38,128.3 v 8 z" - id="path35" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><polygon - class="st2" - points="37.9,80.3 37.9,88.3 71.6,48.2 64.8,48.2 " - id="polygon37" - style="fill:#f8a05f" /><path - class="st2" - d="m 121.2,53 c -1.6,-0.8 -3.3,-1.4 -5,-2 l -78.3,93.2 v 8 z" - id="path39" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 79.1,151 h 0.2 L 144,73.8 c -0.9,-1.5 -1.9,-3 -2.9,-4.5 L 43.5,185.6 c 1.2,1.3 2.5,2.4 4,3.3 l 31.6,-37.7 z" - id="path41" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="M 150.2,90.4 99.4,151 h 0.2 c 2.3,0 4.6,-0.2 6.9,-0.5 l 44.5,-53 c -0.2,-2.4 -0.4,-4.7 -0.8,-7.1 z" - id="path43" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 78.7,175.7 -12.6,15 c 6.4,-2.6 11.2,-8.2 12.6,-15 z" - id="path45" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 147.9,117.1 c 1.3,-3.6 2.2,-7.4 2.7,-11.2 l -35.9,42.8 c 3.7,-1.1 7.3,-2.7 10.6,-4.6 z" - id="path47" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 130.2,58.3 c -1.4,-1 -2.8,-2 -4.3,-2.9 l -88,104.8 v 8 z" - id="path49" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 137.8,65.2 c -1.2,-1.3 -2.4,-2.5 -3.6,-3.7 L 38.4,175.7 c 0.4,1.9 1.1,3.8 2,5.6 z" - id="path51" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 79.1,167.2 v -8 l -26.8,32 c 1.9,0.6 3.9,1 5.9,1 z" - id="path53" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><path - class="st2" - d="m 148.7,84.2 c -0.6,-1.9 -1.3,-3.7 -2.1,-5.5 L 85.9,151 h 6.7 z" - id="path55" - inkscape:connector-curvature="0" - style="fill:#f8a05f" /><circle - transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.8644,46.014)" - class="st0" - cx="58.5" - cy="68.800003" - id="ellipse57" - r="20.6" - style="fill:#fac79e" /><path - class="st0" - d="m 147.3,159.8 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z" - id="path59" - inkscape:connector-curvature="0" - style="fill:#fac79e" /></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-im-logo-4.svg b/src/skins/vector/img/logos/riot-im-logo-4.svg deleted file mode 100644 index 307868e6..00000000 --- a/src/skins/vector/img/logos/riot-im-logo-4.svg +++ /dev/null @@ -1,185 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 163.89999 144.10001" - xml:space="preserve" - sodipodi:docname="riot-im-logo-4.svg" - width="163.89999" - height="144.10001" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata70"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs68" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview66" - showgrid="false" - inkscape:zoom="0.98333333" - inkscape:cx="82.1" - inkscape:cy="72" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><style - type="text/css" - id="style2"> - .st0{fill:#C7BDCD;} - .st1{fill:#E45E5D;} - .st2{fill:#F69E98;} -</style><g - id="Layer_3" - transform="translate(-37.9,-47.9)"><g - id="g26"><g - id="g24"><g - id="g12"><path - class="st0" - d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path4" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /><path - class="st0" - d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z" - id="path6" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /><path - class="st0" - d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path8" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /><path - class="st0" - d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path10" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /></g><g - id="g18"><path - class="st0" - d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z" - id="path14" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /><path - class="st0" - d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z" - id="path16" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /></g><g - id="g22"><path - class="st0" - d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path20" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /></g></g></g></g><g - id="g63" - transform="translate(-37.9,-47.9)"><path - class="st1" - d="M 99.6,48 H 58.5 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 V 150.8 H 99.6 C 128,150.8 151,127.8 151,99.4 151,71 128,48 99.6,48 Z" - id="path29" - inkscape:connector-curvature="0" - style="fill:#e45e5d" /><path - class="st2" - d="m 40.7,181.7 c 1.1,1.9 2.6,3.7 4.2,5.1 H 72 c 1.7,-1.5 3.1,-3.2 4.2,-5.1 z" - id="path31" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,140.6 v 5.1 h 84 c 3,-1.4 5.8,-3.2 8.4,-5.1 z" - id="path33" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><rect - x="37.900002" - y="150.8" - class="st2" - width="41.099998" - height="5.0999999" - id="rect35" - style="fill:#f69e98" /><rect - x="37.900002" - y="161.10001" - class="st2" - width="41.099998" - height="5.0999999" - id="rect37" - style="fill:#f69e98" /><path - class="st2" - d="m 38.6,63.4 h 97.6 c -1.8,-1.9 -3.8,-3.6 -5.9,-5.1 H 40.7 c -0.9,1.6 -1.6,3.3 -2.1,5.1 z" - id="path39" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,171.4 v 0 c 0,1.7 0.2,3.4 0.7,5.1 h 39.8 c 0.4,-1.7 0.7,-3.4 0.7,-5.1 0,0 -41.2,0 -41.2,0 z" - id="path41" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,104.6 h 112.8 c 0.2,-1.7 0.3,-3.4 0.3,-5.1 H 37.9 Z" - id="path43" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,130.3 v 5.1 h 98.3 c 1.6,-1.6 3.1,-3.3 4.4,-5.1 z" - id="path45" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,68.6 v 5.1 H 144 c -1,-1.8 -2.2,-3.5 -3.4,-5.1 z" - id="path47" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 58.7,48 h -0.2 c -5,0 -9.8,1.8 -13.6,5.1 h 77 C 114.9,49.7 107.3,48 99.6,48 Z" - id="path49" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="M 37.9,78.9 V 84 h 110.7 c -0.6,-1.7 -1.2,-3.5 -1.9,-5.1 z" - id="path51" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,120 v 5.1 H 144 c 1,-1.7 1.8,-3.4 2.6,-5.1 z" - id="path53" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,109.7 v 5.1 h 110.7 c 0.5,-1.7 1,-3.4 1.3,-5.1 z" - id="path55" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><path - class="st2" - d="m 37.9,89.3 v 5.1 h 112.8 c -0.2,-1.7 -0.4,-3.4 -0.8,-5.1 z" - id="path57" - inkscape:connector-curvature="0" - style="fill:#f69e98" /><circle - transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7665,45.9782)" - class="st0" - cx="58.5" - cy="68.599998" - id="ellipse59" - r="20.6" - style="fill:#c7bdcd" /><path - class="st0" - d="m 147.3,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z" - id="path61" - inkscape:connector-curvature="0" - style="fill:#c7bdcd" /></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-im-logo-5.svg b/src/skins/vector/img/logos/riot-im-logo-5.svg deleted file mode 100644 index 2653d7c9..00000000 --- a/src/skins/vector/img/logos/riot-im-logo-5.svg +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="Layer_1" - x="0px" - y="0px" - viewBox="0 0 164.01289 144.2" - xml:space="preserve" - sodipodi:docname="riot-im-logo-5.svg" - width="164.01289" - height="144.2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata42"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs40" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview38" - showgrid="false" - inkscape:zoom="0.98333333" - inkscape:cx="82.212895" - inkscape:cy="72.1" - inkscape:window-x="1100" - inkscape:window-y="295" - inkscape:window-maximized="0" - inkscape:current-layer="Layer_1" /><style - type="text/css" - id="style2"> - .st0{fill:#AFDBC5;} - .st1{fill:#764D80;} -</style><g - id="Layer_3" - transform="translate(-37.787105,-47.9)"><g - id="g26"><g - id="g24"><g - id="g12"><path - class="st0" - d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path4" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z" - id="path6" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path8" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path10" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /></g><g - id="g18"><path - class="st0" - d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z" - id="path14" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z" - id="path16" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /></g><g - id="g22"><path - class="st0" - d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path20" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /></g></g></g></g><g - id="g35" - transform="translate(-37.787105,-47.9)"><path - class="st1" - d="M 99.5,48.1 H 58.4 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.4,0 51.4,-23 51.4,-51.4 0,-28.4 -23.2,-51.4 -51.5,-51.4 z" - id="path29" - inkscape:connector-curvature="0" - style="fill:#764d80" /><circle - transform="matrix(0.8211,-0.5708,0.5708,0.8211,-28.7968,45.5905)" - class="st0" - cx="58.299999" - cy="68.699997" - id="ellipse31" - r="20.5" - style="fill:#afdbc5" /><path - class="st0" - d="m 147.2,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z" - id="path33" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-1.svg b/src/skins/vector/img/logos/riot-logo-1.svg deleted file mode 100644 index 297608b8..00000000 --- a/src/skins/vector/img/logos/riot-logo-1.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#7dc8a2;}.cls-3{fill:#afdbc5;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-3" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path class="cls-2" d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-3" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path class="cls-2" d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-3" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path class="cls-2" d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-3" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path class="cls-2" d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-3" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle class="cls-1" cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path class="cls-1" d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-2.svg b/src/skins/vector/img/logos/riot-logo-2.svg deleted file mode 100644 index 757f6230..00000000 --- a/src/skins/vector/img/logos/riot-logo-2.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.36 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#f69e98;}</style></defs><title>Asset 2</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M20.56,139.54A16.19,16.19,0,0,1,4.39,123.37V20.57a16.21,16.21,0,0,1,16-16.17H61.67a47,47,0,0,1,0,94H36.73v25A16.19,16.19,0,0,1,20.56,139.54ZM20.39,5.9A14.7,14.7,0,0,0,5.89,20.57v102.8a14.67,14.67,0,0,0,29.34,0V96.9H61.67a45.49,45.49,0,0,0,0-91H20.39Z"/><path class="cls-2" d="M20.56,134.4a11,11,0,0,1-11-11V20.57a11.09,11.09,0,0,1,10.79-11H61.67a41.85,41.85,0,0,1,0,83.7H31.59v30.11A11,11,0,0,1,20.56,134.4ZM20.3,11A9.57,9.57,0,0,0,11,20.57v102.8a9.53,9.53,0,1,0,19.05,0V91.75H61.67a40.35,40.35,0,0,0,0-80.7H20.3Z"/><path class="cls-2" d="M20.56,129.25a5.89,5.89,0,0,1-5.88-5.88V20.57a5.94,5.94,0,0,1,5.61-5.88H61.67a36.71,36.71,0,0,1,0,73.42H26.44v35.25A5.89,5.89,0,0,1,20.56,129.25ZM20.31,16.19a4.42,4.42,0,0,0-4.13,4.38v102.8a4.38,4.38,0,0,0,8.77,0V86.61H61.67a35.21,35.21,0,0,0,0-70.42Z"/><path class="cls-2" d="M61.67,83H19.81V19.83H61.67a31.57,31.57,0,0,1,0,63.14Zm-40.36-1.5H61.67a30.07,30.07,0,0,0,0-60.14H21.32Z"/><path class="cls-2" d="M61.67,77.83H25V25H61.67a26.43,26.43,0,0,1,0,52.85Zm-35.22-1.5H61.67a24.93,24.93,0,0,0,0-49.85H26.46Z"/><path class="cls-2" d="M61.67,72.69H30.1V30.12H61.67a21.29,21.29,0,0,1,0,42.57ZM31.6,71.19H61.67a19.79,19.79,0,0,0,0-39.57H31.6Z"/><path class="cls-2" d="M61.67,67.55H35.24V35.26H61.67a16.14,16.14,0,0,1,0,32.29ZM36.74,66H61.67a14.64,14.64,0,0,0,0-29.29H36.74Z"/><path class="cls-2" d="M61.67,62.41H40.38v-22H61.67a11,11,0,0,1,0,22Zm-19.79-1.5H61.67a9.5,9.5,0,0,0,0-19H41.88Z"/><path class="cls-2" d="M61.67,57.26H45.52V45.54H61.67a5.86,5.86,0,0,1,0,11.72ZM47,55.76H61.67a4.36,4.36,0,0,0,0-8.72H47Z"/><path class="cls-2" d="M61.18,52.16H51.89a.75.75,0,1,1,0-1.5h9.29a.75.75,0,0,1,0,1.5Z"/><path class="cls-2" d="M20.56,124.12a.75.75,0,0,1-.75-.75v-36a.75.75,0,0,1,1.5,0v36A.75.75,0,0,1,20.56,124.12Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M145.91,51.12h25.61a2.57,2.57,0,0,0,0-5.14H145.91a2.57,2.57,0,1,0,0,5.14Z"/><path class="cls-2" d="M145.91,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,171.51,0H145.91a2.57,2.57,0,1,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M171.51,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,171.51,118.28Z"/><path class="cls-2" d="M158.71,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,158.71,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,158.71,98.79Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-3.svg b/src/skins/vector/img/logos/riot-logo-3.svg deleted file mode 100644 index d71b489a..00000000 --- a/src/skins/vector/img/logos/riot-logo-3.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#fac79e;}.cls-2{fill:#e45e5d;}.cls-3{fill:#f8a05f;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><polygon class="cls-3" points="47.03 0.01 40.32 0.01 0 48.06 0 56.05 47.03 0.01"/><polygon class="cls-3" points="60.45 0.01 53.74 0.01 0 64.05 0 72.04 60.45 0.01"/><path class="cls-3" d="M72.83,1.24a51,51,0,0,0-5.9-1L0,80v8Z"/><polygon class="cls-3" points="33.61 0.01 26.9 0.01 0 32.06 0 40.06 33.61 0.01"/><path class="cls-3" d="M83.27,4.78a51,51,0,0,0-5-2L0,96v8Z"/><path class="cls-3" d="M41.12,102.78h.18l64.78-77.2a51.55,51.55,0,0,0-2.94-4.49L5.55,137.38a20.62,20.62,0,0,0,3.95,3.29L41.12,103Z"/><path class="cls-3" d="M112.22,42.23l-50.8,60.54h.25a51.55,51.55,0,0,0,6.85-.47L113,49.3A51.32,51.32,0,0,0,112.22,42.23Z"/><path class="cls-3" d="M40.71,127.46l-12.59,15A20.58,20.58,0,0,0,40.71,127.46Z"/><path class="cls-3" d="M110,68.88a51,51,0,0,0,2.67-11.18L76.73,100.52a51.1,51.1,0,0,0,10.6-4.64Z"/><path class="cls-3" d="M92.22,10.1a51.58,51.58,0,0,0-4.3-2.87L0,112v8Z"/><path class="cls-3" d="M99.83,17q-1.73-1.92-3.64-3.66L.42,127.5a20.41,20.41,0,0,0,2,5.58Z"/><path class="cls-3" d="M41.12,119v-8l-26.82,32a20.53,20.53,0,0,0,5.9,1Z"/><path class="cls-3" d="M110.71,36a51,51,0,0,0-2.09-5.5L48,102.78h6.71Z"/><circle class="cls-1" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-1" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-4.svg b/src/skins/vector/img/logos/riot-logo-4.svg deleted file mode 100644 index aa5522f6..00000000 --- a/src/skins/vector/img/logos/riot-logo-4.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175.64 143.93"><defs><style type="text/css">.cls-1{fill:#e45e5d;}.cls-2{fill:#c7bdcd;}.cls-3{fill:#f69e98;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M147.19,51.12h25.61a2.57,2.57,0,1,0,0-5.14H147.19a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M147.19,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.79,0H147.19a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.79,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.79,118.28Z"/><path class="cls-2" d="M160,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,160,72.63Zm0,26.16A10.51,10.51,0,1,1,170.5,88.28,10.52,10.52,0,0,1,160,98.79Z"/><path class="cls-3" d="M2.77,133.64A20.62,20.62,0,0,0,7,138.77H34.14a20.62,20.62,0,0,0,4.21-5.13Z"/><path class="cls-3" d="M0,92.52v5.14H84a51.48,51.48,0,0,0,8.41-5.14Z"/><rect class="cls-3" y="102.8" width="41.12" height="5.13"/><rect class="cls-3" y="113.08" width="41.12" height="5.14"/><path class="cls-3" d="M.68,15.41H98.3a51.8,51.8,0,0,0-5.86-5.14H2.78A20.41,20.41,0,0,0,.68,15.41Z"/><path class="cls-3" d="M0,123.36H0a20.53,20.53,0,0,0,.67,5.12H40.45a20.53,20.53,0,0,0,.67-5.12H0Z"/><path class="cls-3" d="M0,56.53H112.8c.17-1.69.26-3.4.26-5.13H0Z"/><path class="cls-3" d="M0,82.24v5.14H98.32a51.79,51.79,0,0,0,4.43-5.14Z"/><path class="cls-3" d="M0,20.57V25.7H106.14a51.58,51.58,0,0,0-3.39-5.14Z"/><path class="cls-3" d="M20.81,0h-.25A20.46,20.46,0,0,0,7,5.14H84A51.07,51.07,0,0,0,61.67,0Z"/><path class="cls-3" d="M0,30.85V36H110.69a51,51,0,0,0-1.94-5.14Z"/><path class="cls-3" d="M0,72v5.13H106.14A51.24,51.24,0,0,0,108.75,72Z"/><path class="cls-3" d="M0,61.68v5.14H110.69A50.92,50.92,0,0,0,112,61.68Z"/><path class="cls-3" d="M0,41.22v5.14H112.8a51.15,51.15,0,0,0-.77-5.14Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,0,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-5.svg b/src/skins/vector/img/logos/riot-logo-5.svg deleted file mode 100644 index 6cbc2592..00000000 --- a/src/skins/vector/img/logos/riot-logo-5.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#764d80;}.cls-2{fill:#afdbc5;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="matrix(0.82, -0.57, 0.57, 0.82, -8.07, 15.53)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,1,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-2" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-bw.svg b/src/skins/vector/img/logos/riot-logo-bw.svg deleted file mode 100644 index e7d6e869..00000000 --- a/src/skins/vector/img/logos/riot-logo-bw.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.cls-1{fill:#fff;}</style></defs><title>Asset 6</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-1" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-1" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-1" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-1" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-1" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo.svg b/src/skins/vector/img/logos/riot-logo.svg deleted file mode 100644 index cbfaa625..00000000 --- a/src/skins/vector/img/logos/riot-logo.svg +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve"> -<style type="text/css"> - .st0{fill:#7DC8A2;} - .st1{fill:#AFDBC5;} - .st2{fill:#764D80;} -</style> -<g> - <path class="st0" d="M212.8,38.8h-91.2c-0.2,0-0.4,0-0.6,0c-25.3,0-45.9,20.5-45.9,45.9v229.5c0,25.3,20.5,45.9,45.9,45.9 - s45.9-20.5,45.9-45.9v-45.9h45.9c63.2,0,114.7-51.5,114.7-114.7S276,38.8,212.8,38.8z"/> - <path class="st1" d="M121,348.6c-19,0-34.4-15.5-34.4-34.4V84.7c0-18.9,15.3-34.3,34.2-34.4c0.2,0,0.5,0,0.7,0h91.3 - c56.9,0,103.3,46.3,103.3,103.3s-46.3,103.3-103.3,103.3h-57.3v57.4C155.4,333.2,140,348.6,121,348.6z"/> - <path class="st0" d="M121,337.2c-12.7,0-23-10.3-23-23V84.7c0-12.5,10.1-22.7,22.5-23c0.2,0,0.5,0,0.7,0l91.5,0 - c50.6,0,91.8,41.2,91.8,91.8s-41.2,91.8-91.8,91.8H144v68.8C144,326.9,133.7,337.2,121,337.2z"/> - <path class="st1" d="M121,325.7c-6.4,0-11.6-5.2-11.6-11.6V84.7c0-6.2,5-11.3,11.1-11.5l0.5,0l91.8,0c44.3,0,80.4,36.1,80.4,80.4 - s-36,80.4-80.4,80.4h-80.2v80.3C132.6,320.5,127.4,325.7,121,325.7z"/> - <path class="st0" d="M121.1,222.4h91.7c38,0,68.9-30.9,68.9-68.9s-30.9-68.9-68.9-68.9H121L121.1,222.4z"/> - <path class="st1" d="M132.5,211l-0.1-114.9h80.3c31.7,0,57.5,25.8,57.5,57.5S244.5,211,212.8,211H132.5z"/> - <path class="st0" d="M144,199.6l-0.1-92h68.9c25.4,0,46,20.6,46,46s-20.6,46-46,46H144z"/> - <path class="st1" d="M155.4,188.1l-0.1-69.1h57.4c19.1,0,34.6,15.5,34.6,34.6s-15.5,34.6-34.6,34.6H155.4z"/> - <path class="st0" d="M166.9,176.7l0-46.3h45.9c12.8,0,23.1,10.4,23.1,23.1s-10.4,23.1-23.1,23.1H166.9z"/> - <path class="st1" d="M178.3,165.2l0-23.4h34.5c6.4,0,11.7,5.2,11.7,11.7s-5.2,11.7-11.7,11.7H178.3z"/> - <g> - - <ellipse transform="matrix(0.8192 -0.5736 0.5736 0.8192 -26.9642 83.8822)" class="st2" cx="119.5" cy="84.7" rx="45.9" ry="45.9"/> - <path class="st2" d="M317.7,287.8c14.5,20.8,9.5,49.4-11.3,63.9c-20.8,14.5-49.4,9.5-63.9-11.3l-68.7-98.2 - c-14.5-20.8-9.5-49.4,11.3-63.9c20.8-14.5,49.4-9.5,63.9,11.3L317.7,287.8z"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/logos/riot.im logo.svg b/src/skins/vector/img/logos/riot.im logo.svg deleted file mode 100644 index 5ebd96e8..00000000 --- a/src/skins/vector/img/logos/riot.im logo.svg +++ /dev/null @@ -1,169 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - x="0px" - y="0px" - viewBox="0 0 163.57917 144.19999" - xml:space="preserve" - id="svg75" - sodipodi:docname="riot.im logo.svg" - width="163.57916" - height="144.2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata - id="metadata81"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs79" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview77" - showgrid="false" - inkscape:zoom="0.28031832" - inkscape:cx="73.079153" - inkscape:cy="50.349988" - inkscape:window-x="1067" - inkscape:window-y="442" - inkscape:window-maximized="0" - inkscape:current-layer="svg75" /><style - type="text/css" - id="style2"> - .st0{fill:#7DC8A2;} - .st1{fill:#AFDBC5;} - .st2{fill:#764D80;} - .st3{fill:#764D80;stroke:#764D80;stroke-miterlimit:10;} -</style><g - id="Grid" - transform="translate(-522.22083,-327.1)"><g - id="g4" /><g - id="g6" /><g - id="g8" /><g - id="g10" /><g - id="g12" /></g><g - id="Design" - transform="translate(-522.22083,-327.1)"><g - id="g17"><g - id="g15" /></g></g><g - id="Layer_3" - transform="translate(-522.22083,-327.1)"><g - id="g72"><g - id="g48"><g - id="g46"><path - class="st0" - d="m 584.6,327.3 h -40.9 c -0.1,0 -0.2,0 -0.3,0 -11.4,0 -20.6,9.2 -20.6,20.6 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.3,0 51.4,-23.1 51.4,-51.4 0,-28.3 -23.1,-51.4 -51.4,-51.4 z" - id="path20" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 543.5,466.1 c -8.5,0 -15.4,-6.9 -15.4,-15.4 V 347.8 c 0,-8.5 6.9,-15.4 15.3,-15.4 0.1,0 0.2,0 0.3,0 h 40.9 c 25.5,0 46.3,20.8 46.3,46.3 0,25.5 -20.8,46.3 -46.3,46.3 h -25.7 v 25.7 c 0,8.4 -6.9,15.4 -15.4,15.4 z" - id="path22" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 543.5,460.9 c -5.7,0 -10.3,-4.6 -10.3,-10.3 V 347.8 c 0,-5.6 4.5,-10.2 10.1,-10.3 0.1,0 0.2,0 0.3,0 h 41 c 22.7,0 41.1,18.5 41.1,41.1 0,22.6 -18.5,41.1 -41.1,41.1 h -30.8 v 30.8 c 0,5.8 -4.6,10.4 -10.3,10.4 z" - id="path24" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 543.5,455.8 c -2.9,0 -5.2,-2.3 -5.2,-5.2 V 347.8 c 0,-2.8 2.2,-5.1 5,-5.2 h 0.2 41.1 c 19.9,0 36,16.2 36,36 0,19.8 -16.1,36 -36,36 h -35.9 v 36 c 0,2.9 -2.3,5.2 -5.2,5.2 z" - id="path26" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 543.5,409.5 h 41.1 c 17,0 30.9,-13.8 30.9,-30.9 0,-17.1 -13.8,-30.9 -30.9,-30.9 h -41.1 z" - id="path28" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 548.7,404.4 v -51.5 h 36 c 14.2,0 25.7,11.5 25.7,25.7 0,14.2 -11.5,25.7 -25.7,25.7 h -36 z" - id="path30" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 553.8,399.3 v -41.2 h 30.8 c 11.4,0 20.6,9.2 20.6,20.6 0,11.4 -9.2,20.6 -20.6,20.6 z" - id="path32" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 558.9,394.2 v -31 h 25.7 c 8.5,0 15.5,6.9 15.5,15.5 0,8.6 -6.9,15.5 -15.5,15.5 z" - id="path34" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><path - class="st0" - d="m 564,389 v -20.7 h 20.6 c 5.7,0 10.4,4.6 10.4,10.4 0,5.8 -4.6,10.4 -10.4,10.4 H 564 Z" - id="path36" - inkscape:connector-curvature="0" - style="fill:#7dc8a2" /><path - class="st1" - d="m 569.2,383.9 v -10.5 h 15.4 c 2.9,0 5.2,2.3 5.2,5.2 0,2.9 -2.3,5.2 -5.2,5.2 h -15.4 z" - id="path38" - inkscape:connector-curvature="0" - style="fill:#afdbc5" /><g - id="g44"><circle - transform="matrix(0.8192,-0.5736,0.5736,0.8192,-101.3379,374.2691)" - class="st2" - cx="542.79999" - cy="347.79999" - id="ellipse40" - r="20.6" - style="fill:#764d80" /><path - class="st2" - d="m 631.6,438.8 c 6.5,9.3 4.3,22.1 -5,28.6 -9.3,6.5 -22.1,4.3 -28.6,-5 l -30.8,-44 c -6.5,-9.3 -4.3,-22.1 5,-28.6 9.3,-6.5 22.1,-4.3 28.6,5 z" - id="path42" - inkscape:connector-curvature="0" - style="fill:#764d80" /></g></g></g><g - id="g70"><g - id="g58"><path - class="st2" - d="M 667.6,359.9 H 684 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z" - id="path50" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 667.6,330.5 h 4.9 v 5 c 0,0 0,0 0,0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 c 0,0 0,0 0,0 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 v 5.6 z" - id="path52" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 684,402.9 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z" - id="path54" - inkscape:connector-curvature="0" - style="fill:#764d80" /><path - class="st2" - d="m 675.8,373.7 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z" - id="path56" - inkscape:connector-curvature="0" - style="fill:#764d80" /></g><g - id="g64"><path - class="st3" - d="M 667.5,436.3 H 684 c 0.3,0 0.5,0.1 0.7,0.3 0.2,0.2 0.3,0.4 0.3,0.7 0,0.3 -0.1,0.5 -0.3,0.7 -0.2,0.2 -0.5,0.3 -0.7,0.3 h -16.5 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.4,-0.3 0.7,-0.3 z" - id="path60" - inkscape:connector-curvature="0" - style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /><path - class="st3" - d="M 667.5,453.3 H 684 c 0.3,0 0.5,0.1 0.7,0.3 0.2,0.2 0.3,0.4 0.3,0.7 v 0.2 c 0,0.4 -0.2,0.7 -0.5,1 l -9.8,6.5 9.8,6.5 c 0.4,0.2 0.5,0.5 0.5,1 v 0.2 c 0,0.3 -0.1,0.5 -0.3,0.7 -0.2,0.2 -0.4,0.3 -0.7,0.3 h -16.5 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.5,-0.3 0.7,-0.3 h 13.7 l -8.6,-5.9 c -0.3,-0.2 -0.5,-0.5 -0.5,-0.9 0,-0.3 0.2,-0.6 0.5,-0.9 l 8.6,-5.8 h -13.7 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.4,-0.2 0.7,-0.2 z" - id="path62" - inkscape:connector-curvature="0" - style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g><g - id="g68"><path - class="st3" - d="m 674.7,425.3 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z" - id="path66" - inkscape:connector-curvature="0" - style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g></g></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/maximise.svg b/src/skins/vector/img/maximise.svg deleted file mode 100644 index 79c6c0ab..00000000 --- a/src/skins/vector/img/maximise.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-254 253 10 16" - style="enable-background:new -254 253 10 16;" xml:space="preserve"> -<title>minimise</title> -<desc>Created with sketchtool.</desc> -<g id="_x30_2-Chat" sketch:type="MSPage"> - <g id="_x30_2_x5F_1-Chat-collapsed-w-topic" transform="translate(-176.000000, -27.000000)" sketch:type="MSArtboardGroup"> - <g id="Room-list" sketch:type="MSLayerGroup"> - <g id="Room-list_x2F_Header" sketch:type="MSShapeGroup"> - <g id="minimise" transform="translate(172.000000, 25.000000)"> - <path id="Path-53-Copy" fill="none" stroke-width="2" stroke="#76CFA6" d="M-248.7,256.3l5.7,5.7l-5.7,5.7"/> - </g> - </g> - </g> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/maximize.svg b/src/skins/vector/img/maximize.svg deleted file mode 100644 index 4f9e1019..00000000 --- a/src/skins/vector/img/maximize.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="1792px" height="1792px" viewBox="0 0 1792 1792" enable-background="new 0 0 1792 1792" xml:space="preserve"> -<path fill="#76CFA6" d="M256,1408h1280V640H256V1408z M1792,288v1216c0,44-15.667,81.667-47,113s-69,47-113,47H160 - c-44,0-81.667-15.667-113-47s-47-69-47-113V288c0-44,15.667-81.667,47-113s69-47,113-47h1472c44,0,81.667,15.667,113,47 - S1792,244,1792,288z"/> -</svg> diff --git a/src/skins/vector/img/member_chevron.png b/src/skins/vector/img/member_chevron.png deleted file mode 100644 index cbbd289d..00000000 Binary files a/src/skins/vector/img/member_chevron.png and /dev/null differ diff --git a/src/skins/vector/img/menu.png b/src/skins/vector/img/menu.png deleted file mode 100755 index b45f8895..00000000 Binary files a/src/skins/vector/img/menu.png and /dev/null differ diff --git a/src/skins/vector/img/minimise.svg b/src/skins/vector/img/minimise.svg deleted file mode 100644 index 491756b1..00000000 --- a/src/skins/vector/img/minimise.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="10px" height="16px" viewBox="-1 -1 10 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.5.1 (25234) - http://www.bohemiancoding.com/sketch --> - <title>minimise</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_1-Chat-collapsed-w-topic" sketch:type="MSArtboardGroup" transform="translate(-176.000000, -27.000000)" stroke-width="2" stroke="#76CFA6"> - <g id="Room-list" sketch:type="MSLayerGroup"> - <g id="Room-list/Header" sketch:type="MSShapeGroup"> - <g id="minimise" transform="translate(172.000000, 25.000000)"> - <path d="M7,5 L15,5 L15,13" id="Path-53-Copy" transform="translate(11.000000, 9.000000) scale(-1, -1) rotate(-315.000000) translate(-11.000000, -9.000000) "></path> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/minimize.svg b/src/skins/vector/img/minimize.svg deleted file mode 100644 index 410b0bc0..00000000 --- a/src/skins/vector/img/minimize.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="1792px" height="1792px" viewBox="0 0 1792 1792" enable-background="new 0 0 1792 1792" xml:space="preserve"> -<path fill="#76CFA6" d="M1792,1312v192c0,44-15.667,81.667-47,113s-69,47-113,47H160c-44,0-81.667-15.667-113-47s-47-69-47-113v-192 - c0-44,15.667-81.667,47-113s69-47,113-47h1472c44,0,81.667,15.667,113,47S1792,1268,1792,1312z"/> -</svg> diff --git a/src/skins/vector/img/mod.svg b/src/skins/vector/img/mod.svg deleted file mode 100644 index 847baf98..00000000 --- a/src/skins/vector/img/mod.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="16px" height="17px" viewBox="-1 -1 15 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4.4 (395) - http://www.bohemiancoding.com/sketch --> - <title>icons_admin</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_19-Room-contextual-menu-hover" sketch:type="MSArtboardGroup" transform="translate(-1000.000000, -172.000000)" stroke="#FFFFFF" fill="#C2C5AF"> - <g id="people_open" sketch:type="MSLayerGroup" transform="translate(966.000000, 59.000000)"> - <g id="icons_admin" transform="translate(35.000000, 114.000000)" sketch:type="MSShapeGroup"> - <path d="M0.441894529,1.80537109 C2.59277353,3.03442388 4.25305977,2.17675781 5.9832796,0.805371094 C8.01666135,2.17675787 9.50756797,3.12670903 11.6293941,1.80537109 C11.6293941,7.01538067 11.9379879,12.2253912 5.9832796,12.2253906 C0.0285712975,12.2253901 0.441894531,7.01538067 0.441894529,1.80537109 Z" id="Path-2-Copy-2"></path> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/network-matrix.svg b/src/skins/vector/img/network-matrix.svg deleted file mode 100644 index bb8278ae..00000000 --- a/src/skins/vector/img/network-matrix.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 520 520" style="enable-background:new 0 0 520 520;" xml:space="preserve"> -<path d="M13.7,11.9v496.2h35.7V520H0V0h49.4v11.9H13.7z"/> -<path d="M166.3,169.2v25.1h0.7c6.7-9.6,14.8-17,24.2-22.2c9.4-5.3,20.3-7.9,32.5-7.9c11.7,0,22.4,2.3,32.1,6.8 - c9.7,4.5,17,12.6,22.1,24c5.5-8.1,13-15.3,22.4-21.5c9.4-6.2,20.6-9.3,33.5-9.3c9.8,0,18.9,1.2,27.3,3.6c8.4,2.4,15.5,6.2,21.5,11.5 - c6,5.3,10.6,12.1,14,20.6c3.3,8.5,5,18.7,5,30.7v124.1h-50.9V249.6c0-6.2-0.2-12.1-0.7-17.6c-0.5-5.5-1.8-10.3-3.9-14.3 - c-2.2-4.1-5.3-7.3-9.5-9.7c-4.2-2.4-9.9-3.6-17-3.6c-7.2,0-13,1.4-17.4,4.1c-4.4,2.8-7.9,6.3-10.4,10.8c-2.5,4.4-4.2,9.4-5,15.1 - c-0.8,5.6-1.3,11.3-1.3,17v103.3h-50.9v-104c0-5.5-0.1-10.9-0.4-16.3c-0.2-5.4-1.3-10.3-3.1-14.9c-1.8-4.5-4.8-8.2-9-10.9 - c-4.2-2.7-10.3-4.1-18.5-4.1c-2.4,0-5.6,0.5-9.5,1.6c-3.9,1.1-7.8,3.1-11.5,6.1c-3.7,3-6.9,7.3-9.5,12.9c-2.6,5.6-3.9,13-3.9,22.1 - v107.6h-50.9V169.2H166.3z"/> -<path d="M506.3,508.1V11.9h-35.7V0H520v520h-49.4v-11.9H506.3z"/> -</svg> diff --git a/src/skins/vector/img/newmessages.png b/src/skins/vector/img/newmessages.png deleted file mode 100644 index a22156ab..00000000 Binary files a/src/skins/vector/img/newmessages.png and /dev/null differ diff --git a/src/skins/vector/img/newmessages.svg b/src/skins/vector/img/newmessages.svg deleted file mode 100644 index a2ffca90..00000000 --- a/src/skins/vector/img/newmessages.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icon_newmessages</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_7-Chat-new-messages" sketch:type="MSArtboardGroup" transform="translate(-244.000000, -665.000000)"> - <g id="icon_newmessages" sketch:type="MSLayerGroup" transform="translate(244.000000, 665.000000)"> - <circle id="Oval-1909" fill="#FF0064" sketch:type="MSShapeGroup" cx="12" cy="12" r="12"></circle> - <path d="M16.3400426,11.526774 C16.4870048,11.526774 16.633967,11.4708978 16.7464849,11.3583798 C16.9699899,11.1341094 16.9699899,10.7712964 16.7464849,10.547026 L12.3659396,6.16801148 C12.1424345,5.94374103 11.7788562,5.94450646 11.5545857,6.16724605 L7.16868234,10.5401371 C6.94441188,10.7644076 6.94364646,11.127986 7.16715148,11.3522564 C7.3906565,11.5772923 7.75423488,11.5772923 7.97850533,11.3537873 L11.3915495,7.95069367 L11.3930804,17.4259289 C11.3930804,17.7428161 11.6510296,18 11.9671515,18 C12.2848042,18 12.5412226,17.7428161 12.5412226,17.4259289 L12.5396917,7.9652368 L15.9343656,11.3583798 C16.0461182,11.4708978 16.1930804,11.526774 16.3400426,11.526774 L16.3400426,11.526774 Z" fill="#FFFFFF" sketch:type="MSShapeGroup" transform="translate(11.957057, 12.000000) rotate(-180.000000) translate(-11.957057, -12.000000) "></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/notif-active.svg b/src/skins/vector/img/notif-active.svg deleted file mode 100644 index 9eb279f8..00000000 --- a/src/skins/vector/img/notif-active.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="13px" height="13px" viewBox="0 0 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>E15782FC-B5FA-472A-AE12-CFFF484E7253</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Left-Panel-mention-states" transform="translate(-221.000000, -165.000000)"> - <g id="notification-shortcuts" transform="translate(206.000000, 119.000000)"> - <g id="slider" transform="translate(16.000000, 16.000000)"> - <g id="notif_active" transform="translate(0.000000, 31.000000)"> - <circle id="Oval-190" stroke="#62A887" fill="#76CFA6" cx="5.5" cy="5.5" r="5.5"></circle> - <path d="M2.5,6.5 L4,8" id="Line" stroke="#FFFFFF" stroke-linecap="round"></path> - <path d="M4,2.97753906 L8.30664062,8" id="Line-Copy" stroke="#FFFFFF" stroke-linecap="round" transform="translate(6.153320, 5.488770) scale(-1, 1) translate(-6.153320, -5.488770) "></path> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/notif-slider.svg b/src/skins/vector/img/notif-slider.svg deleted file mode 100644 index 55fa06d1..00000000 --- a/src/skins/vector/img/notif-slider.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="7px" height="109px" viewBox="0 0 7 109" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> - <title>16CB4618-0BD3-4568-BB20-FC56EBC46046</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.2"> - <g id="Left-Panel-mention-states" transform="translate(-224.000000, -134.000000)" stroke="#000000"> - <g id="notification-shortcuts" transform="translate(206.000000, 119.000000)"> - <g id="slider" transform="translate(16.000000, 16.000000)"> - <g id="notif_slider" transform="translate(3.000000, 0.000000)"> - <path d="M2.5,3.49505001 L2.5,104.507355" id="Line" stroke-linecap="square"></path> - <circle id="Oval-187" fill="#F7F7F7" cx="2.5" cy="36.5" r="2.5"></circle> - <path d="M2.5,73 C3.88071187,73 5,71.8807119 5,70.5 C5,69.1192881 3.88071187,68 2.5,68 C1.11928813,68 0,69.1192881 0,70.5 C0,71.8807119 1.11928813,73 2.5,73 Z" id="Oval-187-Copy" fill="#F7F7F7"></path> - <path d="M2.5,5 C3.88071187,5 5,3.88071187 5,2.5 C5,1.11928813 3.88071187,0 2.5,0 C1.11928813,0 0,1.11928813 0,2.5 C0,3.88071187 1.11928813,5 2.5,5 Z" id="Oval-187-Copy-3" fill="#F7F7F7"></path> - <circle id="Oval-187-Copy-2" fill="#F7F7F7" cx="2.5" cy="104.5" r="2.5"></circle> - </g> - </g> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/p/p0.png b/src/skins/vector/img/p/p0.png deleted file mode 100644 index 300cc226..00000000 Binary files a/src/skins/vector/img/p/p0.png and /dev/null differ diff --git a/src/skins/vector/img/p/p1.png b/src/skins/vector/img/p/p1.png deleted file mode 100644 index 5a6e3054..00000000 Binary files a/src/skins/vector/img/p/p1.png and /dev/null differ diff --git a/src/skins/vector/img/p/p10.png b/src/skins/vector/img/p/p10.png deleted file mode 100644 index 7cead0f2..00000000 Binary files a/src/skins/vector/img/p/p10.png and /dev/null differ diff --git a/src/skins/vector/img/p/p11.png b/src/skins/vector/img/p/p11.png deleted file mode 100644 index d744d8af..00000000 Binary files a/src/skins/vector/img/p/p11.png and /dev/null differ diff --git a/src/skins/vector/img/p/p12.png b/src/skins/vector/img/p/p12.png deleted file mode 100644 index 02492d55..00000000 Binary files a/src/skins/vector/img/p/p12.png and /dev/null differ diff --git a/src/skins/vector/img/p/p13.png b/src/skins/vector/img/p/p13.png deleted file mode 100644 index 0ae8029d..00000000 Binary files a/src/skins/vector/img/p/p13.png and /dev/null differ diff --git a/src/skins/vector/img/p/p14.png b/src/skins/vector/img/p/p14.png deleted file mode 100644 index 23a3840b..00000000 Binary files a/src/skins/vector/img/p/p14.png and /dev/null differ diff --git a/src/skins/vector/img/p/p15.png b/src/skins/vector/img/p/p15.png deleted file mode 100644 index b07f463a..00000000 Binary files a/src/skins/vector/img/p/p15.png and /dev/null differ diff --git a/src/skins/vector/img/p/p16.png b/src/skins/vector/img/p/p16.png deleted file mode 100644 index f8fa4abf..00000000 Binary files a/src/skins/vector/img/p/p16.png and /dev/null differ diff --git a/src/skins/vector/img/p/p17.png b/src/skins/vector/img/p/p17.png deleted file mode 100644 index 20e985bb..00000000 Binary files a/src/skins/vector/img/p/p17.png and /dev/null differ diff --git a/src/skins/vector/img/p/p18.png b/src/skins/vector/img/p/p18.png deleted file mode 100644 index 2ecd29b3..00000000 Binary files a/src/skins/vector/img/p/p18.png and /dev/null differ diff --git a/src/skins/vector/img/p/p19.png b/src/skins/vector/img/p/p19.png deleted file mode 100644 index ec35f0fc..00000000 Binary files a/src/skins/vector/img/p/p19.png and /dev/null differ diff --git a/src/skins/vector/img/p/p2.png b/src/skins/vector/img/p/p2.png deleted file mode 100644 index 82f16d60..00000000 Binary files a/src/skins/vector/img/p/p2.png and /dev/null differ diff --git a/src/skins/vector/img/p/p20.png b/src/skins/vector/img/p/p20.png deleted file mode 100644 index 0ff816d6..00000000 Binary files a/src/skins/vector/img/p/p20.png and /dev/null differ diff --git a/src/skins/vector/img/p/p3.png b/src/skins/vector/img/p/p3.png deleted file mode 100644 index ae215557..00000000 Binary files a/src/skins/vector/img/p/p3.png and /dev/null differ diff --git a/src/skins/vector/img/p/p4.png b/src/skins/vector/img/p/p4.png deleted file mode 100644 index 011ff6f5..00000000 Binary files a/src/skins/vector/img/p/p4.png and /dev/null differ diff --git a/src/skins/vector/img/p/p5.png b/src/skins/vector/img/p/p5.png deleted file mode 100644 index 1a90da9a..00000000 Binary files a/src/skins/vector/img/p/p5.png and /dev/null differ diff --git a/src/skins/vector/img/p/p6.png b/src/skins/vector/img/p/p6.png deleted file mode 100644 index 453110f6..00000000 Binary files a/src/skins/vector/img/p/p6.png and /dev/null differ diff --git a/src/skins/vector/img/p/p7.png b/src/skins/vector/img/p/p7.png deleted file mode 100644 index 6418817c..00000000 Binary files a/src/skins/vector/img/p/p7.png and /dev/null differ diff --git a/src/skins/vector/img/p/p8.png b/src/skins/vector/img/p/p8.png deleted file mode 100644 index 0e821fd6..00000000 Binary files a/src/skins/vector/img/p/p8.png and /dev/null differ diff --git a/src/skins/vector/img/p/p9.png b/src/skins/vector/img/p/p9.png deleted file mode 100644 index f4b6941b..00000000 Binary files a/src/skins/vector/img/p/p9.png and /dev/null differ diff --git a/src/skins/vector/img/p/piechart.pde b/src/skins/vector/img/p/piechart.pde deleted file mode 100644 index 44fe6283..00000000 --- a/src/skins/vector/img/p/piechart.pde +++ /dev/null @@ -1,19 +0,0 @@ -// a trivial processing.org snippet to generate these -// using java2d (ugh). Peity and JS might have been -// a better idea. Or SVG. - -size(48, 48); -g = createGraphics(48, 48, JAVA2D); - -for (int i = 0; i <= 20; i++) { - g.beginDraw(); - g.background(0.0, 0.0); - g.smooth(); - g.strokeCap(SQUARE); - g.strokeWeight(3); - g.stroke(0x80, 0xcf, 0xf4, 255.0); - g.fill(0.0, 0.0); - g.arc(24, 24, 43, 43, -PI/2, -PI/2 + (i*2*PI/20.0)); - g.save("p" + i + ".png"); - g.endDraw(); -} diff --git a/src/skins/vector/img/placeholder.png b/src/skins/vector/img/placeholder.png deleted file mode 100644 index 7da32f25..00000000 Binary files a/src/skins/vector/img/placeholder.png and /dev/null differ diff --git a/src/skins/vector/img/plus.svg b/src/skins/vector/img/plus.svg deleted file mode 100644 index e1d59ec6..00000000 --- a/src/skins/vector/img/plus.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="14px" height="14px" viewBox="-1 -1 13 13" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Line + Line</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="Line-+-Line" sketch:type="MSLayerGroup" transform="translate(2.000000, 2.000000)" stroke="#4A4A4A" stroke-width="2.82" stroke-linecap="square"> - <path d="M4,0.228763834 L4,7.77123617" id="Line" sketch:type="MSShapeGroup"></path> - <path d="M0.228763834,4 L7.77123617,4" id="Line" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/redacted-dark.jpg b/src/skins/vector/img/redacted-dark.jpg deleted file mode 100644 index f0a91cea..00000000 Binary files a/src/skins/vector/img/redacted-dark.jpg and /dev/null differ diff --git a/src/skins/vector/img/redacted.jpg b/src/skins/vector/img/redacted.jpg deleted file mode 100644 index e19d5cc4..00000000 Binary files a/src/skins/vector/img/redacted.jpg and /dev/null differ diff --git a/src/skins/vector/img/right_search.svg b/src/skins/vector/img/right_search.svg deleted file mode 100644 index b430a6be..00000000 --- a/src/skins/vector/img/right_search.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: Sketch 3.7 (28169) - http://www.bohemiancoding.com/sketch --> - <title>right_search</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Room-header/Vector-Design" transform="translate(-710.000000, -25.000000)"> - <g id="right_search" transform="translate(710.000000, 25.000000)"> - <g id="Oval-1-Copy-7-+-Group-Copy-5-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy-Copy" fill="#76CFA6"> - <circle id="Oval-1-Copy-7" cx="12" cy="12" r="12"></circle> - </g> - <path d="M14,10.5 C14,9.53645352 13.6575555,8.71224301 12.9726562,8.02734375 C12.287757,7.34244449 11.4635465,7 10.5,7 C9.53645352,7 8.71224301,7.34244449 8.02734375,8.02734375 C7.34244449,8.71224301 7,9.53645352 7,10.5 C7,11.4635465 7.34244449,12.287757 8.02734375,12.9726562 C8.71224301,13.6575555 9.53645352,14 10.5,14 C11.4635465,14 12.287757,13.6575555 12.9726562,12.9726562 C13.6575555,12.287757 14,11.4635465 14,10.5 L14,10.5 Z M18,17 C18,17.2708347 17.9010427,17.5052073 17.703125,17.703125 C17.5052073,17.9010427 17.2708347,18 17,18 C16.7187486,18 16.4843759,17.9010427 16.296875,17.703125 L13.6171875,15.03125 C12.6848912,15.6770866 11.6458391,16 10.5,16 C9.75520461,16 9.04297215,15.8554702 8.36328125,15.5664062 C7.68359035,15.2773423 7.09765871,14.8867212 6.60546875,14.3945312 C6.11327879,13.9023413 5.7226577,13.3164096 5.43359375,12.6367188 C5.1445298,11.9570279 5,11.2447954 5,10.5 C5,9.75520461 5.1445298,9.04297215 5.43359375,8.36328125 C5.7226577,7.68359035 6.11327879,7.09765871 6.60546875,6.60546875 C7.09765871,6.11327879 7.68359035,5.7226577 8.36328125,5.43359375 C9.04297215,5.1445298 9.75520461,5 10.5,5 C11.2447954,5 11.9570279,5.1445298 12.6367188,5.43359375 C13.3164096,5.7226577 13.9023413,6.11327879 14.3945312,6.60546875 C14.8867212,7.09765871 15.2773423,7.68359035 15.5664062,8.36328125 C15.8554702,9.04297215 16,9.75520461 16,10.5 C16,11.6458391 15.6770866,12.6848912 15.03125,13.6171875 L17.7109375,16.296875 C17.9036468,16.4895843 18,16.723957 18,17 L18,17 Z" id="" fill="#FFFFFF"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/scrolldown.svg b/src/skins/vector/img/scrolldown.svg deleted file mode 100644 index d6599c5f..00000000 --- a/src/skins/vector/img/scrolldown.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icon_newmessages</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_7-Chat-new-messages" sketch:type="MSArtboardGroup" transform="translate(-809.000000, -325.000000)"> - <g id="icon_newmessages" sketch:type="MSLayerGroup" transform="translate(809.000000, 325.000000)"> - <circle id="Oval-1909" fill-opacity="0.5" fill="#454545" sketch:type="MSShapeGroup" cx="12" cy="12" r="12"></circle> - <path d="M16.3400426,11.526774 C16.4870048,11.526774 16.633967,11.4708978 16.7464849,11.3583798 C16.9699899,11.1341094 16.9699899,10.7712964 16.7464849,10.547026 L12.3659396,6.16801148 C12.1424345,5.94374103 11.7788562,5.94450646 11.5545857,6.16724605 L7.16868234,10.5401371 C6.94441188,10.7644076 6.94364646,11.127986 7.16715148,11.3522564 C7.3906565,11.5772923 7.75423488,11.5772923 7.97850533,11.3537873 L11.3915495,7.95069367 L11.3930804,17.4259289 C11.3930804,17.7428161 11.6510296,18 11.9671515,18 C12.2848042,18 12.5412226,17.7428161 12.5412226,17.4259289 L12.5396917,7.9652368 L15.9343656,11.3583798 C16.0461182,11.4708978 16.1930804,11.526774 16.3400426,11.526774 L16.3400426,11.526774 Z" fill="#FFFFFF" sketch:type="MSShapeGroup" transform="translate(11.957057, 12.000000) rotate(-180.000000) translate(-11.957057, -12.000000) "></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/scrollto.svg b/src/skins/vector/img/scrollto.svg deleted file mode 100644 index 75df053a..00000000 --- a/src/skins/vector/img/scrollto.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --> - <title>Slice 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="scrollup"> - <g id="02-Chat" transform="translate(12.000000, 12.000000) scale(-1, 1) rotate(-180.000000) translate(-12.000000, -12.000000) "> - <g id="02_7-Chat-new-messages"> - <g id="icon_newmessages"> - <circle id="Oval-1909" fill-opacity="0.5" fill="#454545" fill-rule="nonzero" cx="12" cy="12" r="12"></circle> - <circle id="Oval" stroke="#FFFFFF" cx="12" cy="12" r="7"></circle> - <circle id="Oval" stroke="#FFFFFF" cx="12" cy="12" r="4"></circle> - <circle id="Oval" fill="#FFFFFF" cx="12" cy="12" r="1"></circle> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/scrollup.svg b/src/skins/vector/img/scrollup.svg deleted file mode 100644 index 1692f2a6..00000000 --- a/src/skins/vector/img/scrollup.svg +++ /dev/null @@ -1,91 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24px" - height="24px" - viewBox="0 0 24 24" - version="1.1" - id="svg2" - inkscape:version="0.48.4 r9939" - sodipodi:docname="scrollup.svg"> - <metadata - id="metadata18"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1058" - id="namedview16" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12.20339" - inkscape:cy="12" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title - id="title4">icon_newmessages</title> - <desc - id="desc6">Created with Sketch.</desc> - <defs - id="defs8" /> - <g - id="02-Chat" - sketch:type="MSPage" - transform="matrix(1,0,0,-1,0,24)" - style="fill:none;stroke:none"> - <g - id="02_7-Chat-new-messages" - sketch:type="MSArtboardGroup" - transform="translate(-809,-325)"> - <g - id="icon_newmessages" - sketch:type="MSLayerGroup" - transform="translate(809,325)"> - <circle - id="Oval-1909" - sketch:type="MSShapeGroup" - cx="12" - cy="12" - r="12" - d="M 24,12 C 24,18.627417 18.627417,24 12,24 5.372583,24 0,18.627417 0,12 0,5.372583 5.372583,0 12,0 18.627417,0 24,5.372583 24,12 z" - sodipodi:cx="12" - sodipodi:cy="12" - sodipodi:rx="12" - sodipodi:ry="12" - style="fill:#454545;fill-opacity:0.5" /> - <path - d="m 16.340043,11.526774 c 0.146962,0 0.293924,-0.05588 0.406442,-0.168394 0.223505,-0.224271 0.223505,-0.587084 0,-0.811354 L 12.36594,6.1680115 C 12.142435,5.943741 11.778856,5.9445065 11.554586,6.167246 l -4.3859037,4.372891 c -0.2242704,0.224271 -0.2250358,0.587849 -0.00153,0.812119 0.223505,0.225036 0.5870834,0.225036 0.8113538,0.0015 l 3.4130447,-3.4030933 0.0015,9.4752353 c 0,0.316887 0.25795,0.574071 0.574072,0.574071 0.317652,0 0.574071,-0.257184 0.574071,-0.574071 l -0.0015,-9.4606922 3.394674,3.3931432 c 0.111752,0.112518 0.258714,0.168394 0.405677,0.168394 l 0,0 z" - sketch:type="MSShapeGroup" - transform="matrix(-1,0,0,-1,23.914114,24)" - id="path14" - inkscape:connector-curvature="0" - style="fill:#ffffff" /> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/search-button.svg b/src/skins/vector/img/search-button.svg deleted file mode 100644 index f4808842..00000000 --- a/src/skins/vector/img/search-button.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="21px" height="19px" viewBox="-8 -8 37 37" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icon_search</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="icon_search" sketch:type="MSLayerGroup" transform="translate(-8.000000, -8.000000)" stroke="#FFFFFF"> - <path d="M21.328421,19.3333333 L27.5542961,24.7357275 C27.9574623,25.085568 28.0116667,25.70516 27.6700827,26.1261351 L27.6700827,26.1261351 C27.3308636,26.5441955 26.72562,26.5965299 26.3258751,26.2496583 L20.1,20.8472641" id="Rectangle-9" sketch:type="MSShapeGroup"></path> - <g id="search" transform="translate(15.617851, 15.853553) rotate(-45.000000) translate(-15.617851, -15.853553) translate(8.117851, 7.853553)" sketch:type="MSShapeGroup"> - <ellipse id="Search" cx="7.64433504" cy="7.90518519" rx="7.1665641" ry="7.41111111"></ellipse> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/search-icon-vector.svg b/src/skins/vector/img/search-icon-vector.svg deleted file mode 100644 index 5780277f..00000000 --- a/src/skins/vector/img/search-icon-vector.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 113 144" style="enable-background:new 0 0 113 144;" xml:space="preserve"> -<style type="text/css"> - .st0{fill:#7BC9A4;} - .st1{fill:#B47BB5;} -</style> -<path class="st0" d="M61.6,0H20.8c-0.1,0-0.2,0-0.3,0C9.2,0,0,9.2,0,20.6v102.9C0,134.8,9.2,144,20.6,144c11.3,0,20.6-9.2,20.6-20.6 - v-20.6h20.5c28.3,0,51.4-23.1,51.4-51.4S90,0,61.6,0"/> -<path class="st1" d="M37.4,8.8c6.5,9.3,4.3,22.1-5,28.7c-9.3,6.5-22.1,4.3-28.6-5.1c-6.5-9.3-4.3-22.1,5-28.7 - C18.1-2.8,30.9-0.5,37.4,8.8"/> -<path class="st1" d="M109.3,111.6c6.5,9.3,4.3,22.1-5,28.7c-9.3,6.5-22.1,4.3-28.6-5.1l-30.8-44c-6.5-9.3-4.3-22.1,5-28.7 - c9.3-6.5,22.1-4.3,28.6,5.1L109.3,111.6z"/> -</svg> diff --git a/src/skins/vector/img/search.png b/src/skins/vector/img/search.png deleted file mode 100644 index 2f98d290..00000000 Binary files a/src/skins/vector/img/search.png and /dev/null differ diff --git a/src/skins/vector/img/search.svg b/src/skins/vector/img/search.svg deleted file mode 100644 index bd4cd920..00000000 --- a/src/skins/vector/img/search.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="21px" height="19px" viewBox="0 0 21 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icons_search</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_13-Chat-member-profile" sketch:type="MSArtboardGroup" transform="translate(-910.000000, -34.000000)" stroke="#76CFA6"> - <g id="icons_search" sketch:type="MSLayerGroup" transform="translate(906.000000, 30.000000)"> - <path d="M17.328421,15.3333333 L23.5542961,20.7357275 C23.9574623,21.085568 24.0116667,21.70516 23.6700827,22.1261351 L23.6700827,22.1261351 C23.3308636,22.5441955 22.72562,22.5965299 22.3258751,22.2496583 L16.1,16.8472641" id="Rectangle-9" sketch:type="MSShapeGroup"></path> - <g id="search" transform="translate(11.617851, 11.853553) rotate(-45.000000) translate(-11.617851, -11.853553) translate(4.117851, 3.853553)" sketch:type="MSShapeGroup"> - <ellipse id="Search" cx="7.64433504" cy="7.90518519" rx="7.1665641" ry="7.41111111"></ellipse> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/selected.png b/src/skins/vector/img/selected.png deleted file mode 100644 index 8931cba7..00000000 Binary files a/src/skins/vector/img/selected.png and /dev/null differ diff --git a/src/skins/vector/img/settings-big.png b/src/skins/vector/img/settings-big.png deleted file mode 100644 index cb2e0a62..00000000 Binary files a/src/skins/vector/img/settings-big.png and /dev/null differ diff --git a/src/skins/vector/img/settings-big.svg b/src/skins/vector/img/settings-big.svg deleted file mode 100644 index c9587d58..00000000 --- a/src/skins/vector/img/settings-big.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="26px" height="26px" viewBox="-1 -1 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch --> - <title>icons_settings</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="01-Sign-up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="01_2-Sign-up-2" sketch:type="MSArtboardGroup" transform="translate(-14.000000, -720.000000)" fill="#454545" opacity="0.9"> - <g id="Left-panel" sketch:type="MSLayerGroup" transform="translate(-4.000000, 0.000000)"> - <g id="right_bottom" transform="translate(0.000000, 626.000000)" sketch:type="MSShapeGroup"> - <g id="Group-Copy-29" transform="translate(18.000000, 27.000000)"> - <path d="M16,79 C16,77.8958278 15.6093789,76.9531289 14.828125,76.171875 C14.0468711,75.3906211 13.1041722,75 12,75 C10.8958278,75 9.95312891,75.3906211 9.171875,76.171875 C8.39062109,76.9531289 8,77.8958278 8,79 C8,80.1041722 8.39062109,81.0468711 9.171875,81.828125 C9.95312891,82.6093789 10.8958278,83 12,83 C13.1041722,83 14.0468711,82.6093789 14.828125,81.828125 C15.6093789,81.0468711 16,80.1041722 16,79 L16,79 Z M24,77.296875 L24,80.765625 C24,80.8906256 23.9583338,81.0104161 23.875,81.125 C23.7916662,81.2395839 23.6875006,81.3072916 23.5625,81.328125 L20.671875,81.765625 C20.4739573,82.3281278 20.2708344,82.8020814 20.0625,83.1875 C20.4270852,83.7083359 20.9843712,84.4270787 21.734375,85.34375 C21.8385422,85.4687506 21.890625,85.5989577 21.890625,85.734375 C21.890625,85.8697923 21.8437505,85.9895828 21.75,86.09375 C21.4687486,86.4791686 20.9531288,87.041663 20.203125,87.78125 C19.4531212,88.520837 18.9635428,88.890625 18.734375,88.890625 C18.6093744,88.890625 18.4739591,88.8437505 18.328125,88.75 L16.171875,87.0625 C15.7135394,87.3020845 15.2395858,87.4999992 14.75,87.65625 C14.5833325,89.0729238 14.4322923,90.0416641 14.296875,90.5625 C14.223958,90.8541681 14.0364598,91 13.734375,91 L10.265625,91 C10.1197909,91 9.99218805,90.9557296 9.8828125,90.8671875 C9.77343695,90.7786454 9.71354172,90.6666673 9.703125,90.53125 L9.265625,87.65625 C8.75520578,87.4895825 8.28646047,87.2968761 7.859375,87.078125 L5.65625,88.75 C5.55208281,88.8437505 5.42187578,88.890625 5.265625,88.890625 C5.11979094,88.890625 4.98958391,88.8333339 4.875,88.71875 C3.56249344,87.5312441 2.70312703,86.6562528 2.296875,86.09375 C2.22395797,85.9895828 2.1875,85.8697923 2.1875,85.734375 C2.1875,85.6093744 2.22916625,85.4895839 2.3125,85.375 C2.46875078,85.1562489 2.73437313,84.8098982 3.109375,84.3359375 C3.48437688,83.8619768 3.76562406,83.494793 3.953125,83.234375 C3.67187359,82.7135391 3.45833406,82.1979192 3.3125,81.6875 L0.453125,81.265625 C0.317707656,81.2447916 0.20833375,81.179688 0.125,81.0703125 C0.04166625,80.960937 0,80.8385423 0,80.703125 L0,77.234375 C0,77.1093744 0.04166625,76.9895839 0.125,76.875 C0.20833375,76.7604161 0.307291094,76.6927084 0.421875,76.671875 L3.328125,76.234375 C3.47395906,75.7552059 3.67708203,75.2760441 3.9375,74.796875 C3.52083125,74.203122 2.96354516,73.4843792 2.265625,72.640625 C2.16145781,72.5156244 2.109375,72.3906256 2.109375,72.265625 C2.109375,72.1614578 2.15624953,72.0416673 2.25,71.90625 C2.52083469,71.5312481 3.03385039,70.9713579 3.7890625,70.2265625 C4.54427461,69.4817671 5.03645719,69.109375 5.265625,69.109375 C5.40104234,69.109375 5.53645766,69.1614578 5.671875,69.265625 L7.828125,70.9375 C8.28646063,70.6979155 8.76041422,70.5000008 9.25,70.34375 C9.4166675,68.9270762 9.56770766,67.9583359 9.703125,67.4375 C9.77604203,67.1458319 9.96354016,67 10.265625,67 L13.734375,67 C13.8802091,67 14.007812,67.0442704 14.1171875,67.1328125 C14.226563,67.2213546 14.2864583,67.3333327 14.296875,67.46875 L14.734375,70.34375 C15.2447942,70.5104175 15.7135395,70.7031239 16.140625,70.921875 L18.359375,69.25 C18.4531255,69.1562495 18.5781242,69.109375 18.734375,69.109375 C18.8697923,69.109375 18.9999994,69.1614578 19.125,69.265625 C20.4687567,70.5052145 21.3281231,71.3906223 21.703125,71.921875 C21.776042,72.0052088 21.8125,72.1197909 21.8125,72.265625 C21.8125,72.3906256 21.7708338,72.5104161 21.6875,72.625 C21.5312492,72.8437511 21.2656269,73.1901018 20.890625,73.6640625 C20.5156231,74.1380232 20.2343759,74.505207 20.046875,74.765625 C20.3177097,75.2864609 20.5312492,75.7968725 20.6875,76.296875 L23.546875,76.734375 C23.6822923,76.7552084 23.7916662,76.820312 23.875,76.9296875 C23.9583338,77.039063 24,77.1614577 24,77.296875 L24,77.296875 Z" id="icons_settings"></path> - </g> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/settings.png b/src/skins/vector/img/settings.png deleted file mode 100644 index 264b3c9b..00000000 Binary files a/src/skins/vector/img/settings.png and /dev/null differ diff --git a/src/skins/vector/img/settings.svg b/src/skins/vector/img/settings.svg deleted file mode 100644 index 4190c7b8..00000000 --- a/src/skins/vector/img/settings.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icon_settings_small</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="06a-Room-settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="06a_1-Room-settings-hover" sketch:type="MSArtboardGroup" transform="translate(-452.000000, -27.000000)" fill="#76CFA6"> - <path d="M460,33 C460,32.4479139 459.804689,31.9765645 459.414062,31.5859375 C459.023436,31.1953105 458.552086,31 458,31 C457.447914,31 456.976564,31.1953105 456.585938,31.5859375 C456.195311,31.9765645 456,32.4479139 456,33 C456,33.5520861 456.195311,34.0234355 456.585938,34.4140625 C456.976564,34.8046895 457.447914,35 458,35 C458.552086,35 459.023436,34.8046895 459.414062,34.4140625 C459.804689,34.0234355 460,33.5520861 460,33 L460,33 Z M464,32.1484375 L464,33.8828125 C464,33.9453128 463.979167,34.005208 463.9375,34.0625 C463.895833,34.119792 463.84375,34.1536458 463.78125,34.1640625 L462.335938,34.3828125 C462.236979,34.6640639 462.135417,34.9010407 462.03125,35.09375 C462.213543,35.354168 462.492186,35.7135394 462.867188,36.171875 C462.919271,36.2343753 462.945312,36.2994788 462.945312,36.3671875 C462.945312,36.4348962 462.921875,36.4947914 462.875,36.546875 C462.734374,36.7395843 462.476564,37.0208315 462.101562,37.390625 C461.726561,37.7604185 461.481771,37.9453125 461.367188,37.9453125 C461.304687,37.9453125 461.23698,37.9218752 461.164062,37.875 L460.085938,37.03125 C459.85677,37.1510423 459.619793,37.2499996 459.375,37.328125 C459.291666,38.0364619 459.216146,38.520832 459.148438,38.78125 C459.111979,38.9270841 459.01823,39 458.867188,39 L457.132812,39 C457.059895,39 456.996094,38.9778648 456.941406,38.9335938 C456.886718,38.8893227 456.856771,38.8333337 456.851562,38.765625 L456.632812,37.328125 C456.377603,37.2447912 456.14323,37.148438 455.929688,37.0390625 L454.828125,37.875 C454.776041,37.9218752 454.710938,37.9453125 454.632812,37.9453125 C454.559895,37.9453125 454.494792,37.916667 454.4375,37.859375 C453.781247,37.265622 453.351564,36.8281264 453.148438,36.546875 C453.111979,36.4947914 453.09375,36.4348962 453.09375,36.3671875 C453.09375,36.3046872 453.114583,36.244792 453.15625,36.1875 C453.234375,36.0781245 453.367187,35.9049491 453.554688,35.6679688 C453.742188,35.4309884 453.882812,35.2473965 453.976562,35.1171875 C453.835937,34.8567695 453.729167,34.5989596 453.65625,34.34375 L452.226562,34.1328125 C452.158854,34.1223958 452.104167,34.089844 452.0625,34.0351562 C452.020833,33.9804685 452,33.9192712 452,33.8515625 L452,32.1171875 C452,32.0546872 452.020833,31.994792 452.0625,31.9375 C452.104167,31.880208 452.153646,31.8463542 452.210938,31.8359375 L453.664062,31.6171875 C453.73698,31.377603 453.838541,31.138022 453.96875,30.8984375 C453.760416,30.601561 453.481773,30.2421896 453.132812,29.8203125 C453.080729,29.7578122 453.054688,29.6953128 453.054688,29.6328125 C453.054688,29.5807289 453.078125,29.5208337 453.125,29.453125 C453.260417,29.2656241 453.516925,28.9856789 453.894531,28.6132812 C454.272137,28.2408836 454.518229,28.0546875 454.632812,28.0546875 C454.700521,28.0546875 454.768229,28.0807289 454.835938,28.1328125 L455.914062,28.96875 C456.14323,28.8489577 456.380207,28.7500004 456.625,28.671875 C456.708334,27.9635381 456.783854,27.479168 456.851562,27.21875 C456.888021,27.0729159 456.98177,27 457.132812,27 L458.867188,27 C458.940105,27 459.003906,27.0221352 459.058594,27.0664062 C459.113282,27.1106773 459.143229,27.1666663 459.148438,27.234375 L459.367188,28.671875 C459.622397,28.7552088 459.85677,28.851562 460.070312,28.9609375 L461.179688,28.125 C461.226563,28.0781248 461.289062,28.0546875 461.367188,28.0546875 C461.434896,28.0546875 461.5,28.0807289 461.5625,28.1328125 C462.234378,28.7526073 462.664062,29.1953112 462.851562,29.4609375 C462.888021,29.5026044 462.90625,29.5598955 462.90625,29.6328125 C462.90625,29.6953128 462.885417,29.755208 462.84375,29.8125 C462.765625,29.9218755 462.632813,30.0950509 462.445312,30.3320312 C462.257812,30.5690116 462.117188,30.7526035 462.023438,30.8828125 C462.158855,31.1432305 462.265625,31.3984362 462.34375,31.6484375 L463.773438,31.8671875 C463.841146,31.8776042 463.895833,31.910156 463.9375,31.9648438 C463.979167,32.0195315 464,32.0807288 464,32.1484375 L464,32.1484375 Z" id="icon_settings_small" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/sound-indicator.svg b/src/skins/vector/img/sound-indicator.svg deleted file mode 100644 index 9b8de53d..00000000 --- a/src/skins/vector/img/sound-indicator.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="23px" height="20px" viewBox="-1 -1 23 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.3 (16618) - http://www.bohemiancoding.com/sketch --> - <title>sound_indicator</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-247.000000, -668.000000)" fill="#FFFFFF"> - <g id="sound_indicator" sketch:type="MSLayerGroup" transform="translate(247.000000, 668.000000)"> - <path d="M5.769,6.7284 L7.8,4.6968 L7.8,13.0626 L5.4174,10.68 L1.2,10.68 L1.2,7.08 L5.4174,7.08 L5.769,6.7284 L5.769,6.7284 Z M0,5.88 L0,11.88 L4.9206,11.88 L9,15.9594 L9,1.8 L4.9206,5.88 L0,5.88 L0,5.88 Z" id="Fill-28" sketch:type="MSShapeGroup"></path> - <path d="M17.1672,0 L16.2,0.72 C17.9172,3.021 18.9354,5.8728 18.9354,8.9586 C18.9354,12.0438 17.9172,14.8956 16.2,17.196 L17.1672,17.9166 C19.0314,15.417 20.1354,12.3168 20.1354,8.9586 C20.1354,5.6004 19.0314,2.4996 17.1672,0" id="Fill-29" sketch:type="MSShapeGroup"></path> - <path d="M14.1606,15.9948 C15.579,14.094 16.4304,11.7462 16.4304,9.1974 C16.4304,6.6486 15.579,4.3008 14.1606,2.4 L13.2,3.1152 C14.469,4.8156 15.2304,6.9168 15.2304,9.1974 C15.2304,11.478 14.4696,13.5786 13.2,15.2796 L14.1606,15.9948" id="Fill-30" sketch:type="MSShapeGroup"></path> - <path d="M11.7606,13.5024 C12.732,12.2016 13.314,10.5954 13.314,8.8512 C13.314,7.107 12.732,5.5002 11.7606,4.2 L10.8,4.9152 C11.6214,6.0156 12.114,7.3752 12.114,8.8512 C12.114,10.3272 11.6214,11.6862 10.8,12.7866 L11.7606,13.5024" id="Fill-31" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/spinner.gif b/src/skins/vector/img/spinner.gif deleted file mode 100644 index ab487121..00000000 Binary files a/src/skins/vector/img/spinner.gif and /dev/null differ diff --git a/src/skins/vector/img/tick.svg b/src/skins/vector/img/tick.svg deleted file mode 100644 index 6177f15f..00000000 --- a/src/skins/vector/img/tick.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="17px" height="14px" viewBox="-1 -1 17 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch --> - <title>icon_tick</title> - <desc>Created with sketchtool.</desc> - <defs></defs> - <g id="06a-Room-settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="06_4-Room-settings-admin" sketch:type="MSArtboardGroup" transform="translate(-310.000000, -206.000000)" fill="#4A4A4A"> - <path d="M315,218 L310,213 L312,211 L315,214 L323,206 L325,208 L315,218 Z" id="icon_tick" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/trans.png b/src/skins/vector/img/trans.png deleted file mode 100644 index 8ba2310a..00000000 Binary files a/src/skins/vector/img/trans.png and /dev/null differ diff --git a/src/skins/vector/img/typing.png b/src/skins/vector/img/typing.png deleted file mode 100644 index 066a0ce8..00000000 Binary files a/src/skins/vector/img/typing.png and /dev/null differ diff --git a/src/skins/vector/img/upload-big.png b/src/skins/vector/img/upload-big.png deleted file mode 100644 index c11c0c45..00000000 Binary files a/src/skins/vector/img/upload-big.png and /dev/null differ diff --git a/src/skins/vector/img/upload-big.svg b/src/skins/vector/img/upload-big.svg deleted file mode 100644 index 6099c2e9..00000000 --- a/src/skins/vector/img/upload-big.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="45px" height="59px" viewBox="-1 -1 45 59" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icons_upload_drop</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="03-Input" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="03_05-File-drop" sketch:type="MSArtboardGroup" transform="translate(-570.000000, -368.000000)"> - <g id="icons_upload_drop" sketch:type="MSLayerGroup" transform="translate(570.000000, 368.000000)"> - <g id="Rectangle-5-+-Rectangle-6" sketch:type="MSShapeGroup"> - <path d="M0,4.00812931 C0,1.79450062 1.78537926,0 4.00241155,0 L24.8253683,0 C24.8253683,0 42.2466793,16.8210687 42.2466793,16.8210687 L42.2466793,53.000599 C42.2466793,55.2094072 40.4583762,57 38.2531894,57 L3.99348992,57 C1.78794634,57 0,55.1999609 0,52.9918707 L0,4.00812931 Z" id="Rectangle-5" stroke="#76CFA6"></path> - <path d="M40.5848017,19.419576 L29.8354335,19.419576 C26.7387692,19.419576 24.2284269,16.9063989 24.2284269,13.8067771 L24.2284269,4.88501382 L40.5848017,19.419576 Z" id="Rectangle-6-Copy" fill="#FFFFFF"></path> - <path d="M42.2466793,18.3870968 L29.539478,18.3870968 C26.4130381,18.3870968 23.8785579,15.8497544 23.8785579,12.7203286 L23.8785579,0" id="Rectangle-6" stroke="#76CFA6"></path> - </g> - <path d="M31.3419737,32.9284726 C31.701384,32.9284726 32.0607942,32.8000473 32.3359677,32.5414375 C32.8825707,32.0259772 32.8825707,31.1920926 32.3359677,30.6766323 L21.622922,20.6119619 C21.076319,20.0965016 20.187153,20.0982608 19.638678,20.6102026 L8.9125289,30.6607991 C8.36405391,31.1762594 8.36218198,32.0119032 8.90878504,32.5273635 C9.4553881,33.0445831 10.344554,33.0445831 10.893029,32.530882 L19.2399573,24.7092556 L19.2437012,46.487014 C19.2437012,47.2153435 19.874541,47.8064516 20.6476474,47.8064516 C21.4244976,47.8064516 22.0515936,47.2153435 22.0515936,46.487014 L22.0478497,24.7426814 L30.3498517,32.5414375 C30.6231533,32.8000473 30.9825635,32.9284726 31.3419737,32.9284726 L31.3419737,32.9284726 Z" id="Fill-75" fill="#76CFA6" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> diff --git a/src/skins/vector/img/upload.png b/src/skins/vector/img/upload.png deleted file mode 100644 index 7457bcd0..00000000 Binary files a/src/skins/vector/img/upload.png and /dev/null differ diff --git a/src/skins/vector/img/upload.svg b/src/skins/vector/img/upload.svg deleted file mode 100644 index 039014a2..00000000 --- a/src/skins/vector/img/upload.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="19px" height="24px" viewBox="-1 -1 19 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch --> - <title>icons_upload</title> - <desc>Created with bin/sketchtool.</desc> - <defs></defs> - <g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="02_13-Chat-member-profile" sketch:type="MSArtboardGroup" transform="translate(-873.000000, -722.000000)"> - <g id="icons_upload" sketch:type="MSLayerGroup" transform="translate(873.000000, 722.000000)"> - <g id="Rectangle-5-+-Rectangle-6" sketch:type="MSShapeGroup"> - <path d="M0,4.00955791 C0,1.79514022 1.78163126,0 3.99825563,0 L9.59161955,0 C9.59161955,0 16.3225806,6.49234232 16.3225806,6.49234232 L16.3225806,18.0063928 C16.3225806,20.2120012 14.5290874,22 12.3296282,22 L3.99295243,22 C1.7877057,22 0,20.1996477 0,17.9904421 L0,4.00955791 Z" id="Rectangle-5" stroke="#76CFA6"></path> - <path d="M15.6804916,7.49527496 L11.5273266,7.49527496 C10.3308881,7.49527496 9.3609831,6.52527676 9.3609831,5.3289315 L9.3609831,1.88544393 L15.6804916,7.49527496 Z" id="Rectangle-6-Copy" fill="#FFFFFF"></path> - <path d="M16.3225806,7.09677419 L11.4129801,7.09677419 C10.2050375,7.09677419 9.22580645,6.11744908 9.22580645,4.90960051 L9.22580645,0" id="Rectangle-6" stroke="#76CFA6"></path> - </g> - <path d="M12.3736951,12.709235 C12.5125582,12.709235 12.6514212,12.6596674 12.7577382,12.5598531 C12.9689258,12.3609035 12.9689258,12.0390533 12.7577382,11.8401037 L8.61860697,7.95549406 C8.40741942,7.75654446 8.06387804,7.75722347 7.85196724,7.95481505 L3.70777326,11.8339926 C3.49586247,12.0329422 3.49513923,12.3554714 3.70632677,12.554421 C3.91751432,12.7540496 4.2610557,12.7540496 4.4729665,12.555779 L7.69791605,9.53690567 L7.69936254,17.9423563 C7.69936254,18.2234659 7.94309612,18.4516129 8.24179631,18.4516129 C8.541943,18.4516129 8.78423008,18.2234659 8.78423008,17.9423563 L8.78278359,9.54980684 L11.9903753,12.5598531 C12.095969,12.6596674 12.2348321,12.709235 12.3736951,12.709235 L12.3736951,12.709235 Z" id="Fill-75" fill="#76CFA6" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/video-mute.svg b/src/skins/vector/img/video-mute.svg deleted file mode 100644 index 6de60ba3..00000000 --- a/src/skins/vector/img/video-mute.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="31px" height="27px" viewBox="-2 -2 31 27" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.3 (16618) - http://www.bohemiancoding.com/sketch --> - <title>icons_video copy</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-871.000000, -667.000000)" stroke="#FFFFFF"> - <g id="icons_video-copy" sketch:type="MSLayerGroup" transform="translate(871.000000, 666.000000)"> - <g id="Rectangle-20-+-Path-16" transform="translate(0.000000, 0.464286)" sketch:type="MSShapeGroup"> - <rect id="Rectangle-20" x="0" y="0.535714286" width="20" height="20" rx="4"></rect> - <path d="M20.75,10.6964286 C20.75,14.0446429 24.188247,15.7371974 24.188247,15.7371974 C25.5057636,16.651593 26.5738219,16.0843085 26.5738219,14.4868066 L26.5738219,6.90605053 C26.5738219,5.30108314 25.4784055,4.70120148 24.188247,5.65565975 C24.188247,5.65565975 20.75,7.34821429 20.75,10.6964286 Z" id="Path-16"></path> - </g> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/video-unmute.svg b/src/skins/vector/img/video-unmute.svg deleted file mode 100644 index a6c6c3b6..00000000 --- a/src/skins/vector/img/video-unmute.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="31px" height="27px" viewBox="-1 -1 31 27" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>icons_video copy</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-870.000000, -666.000000)" stroke="#FFFFFF"> - <g id="icons_video-copy" sketch:type="MSLayerGroup" transform="translate(870.000000, 666.000000)"> - <g id="Rectangle-20-+-Path-16" transform="translate(1.000000, 0.464286)" sketch:type="MSShapeGroup"> - <rect id="Rectangle-20" x="0" y="0.535714286" width="20" height="20" rx="4"></rect> - <path d="M20.75,10.6964286 C20.75,14.0446429 24.188247,15.7371974 24.188247,15.7371974 C25.5057636,16.651593 26.5738219,16.0843085 26.5738219,14.4868066 L26.5738219,6.90605053 C26.5738219,5.30108314 25.4784055,4.70120148 24.188247,5.65565975 C24.188247,5.65565975 20.75,7.34821429 20.75,10.6964286 Z" id="Path-16"></path> - </g> - <path d="M24,1 L0.00856596586,23.6585766" id="Path-98" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/video.png b/src/skins/vector/img/video.png deleted file mode 100644 index 2a788f6f..00000000 Binary files a/src/skins/vector/img/video.png and /dev/null differ diff --git a/src/skins/vector/img/voice-mute.svg b/src/skins/vector/img/voice-mute.svg deleted file mode 100644 index 33664107..00000000 --- a/src/skins/vector/img/voice-mute.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="21px" height="26px" viewBox="-4 -1 21 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.3 (16618) - http://www.bohemiancoding.com/sketch --> - <title>Audio</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-915.000000, -665.000000)" fill="#FFFFFF"> - <g id="Audio" sketch:type="MSLayerGroup" transform="translate(915.000000, 665.000000)"> - <path d="M3.51108197,4.57927869 C3.51108197,2.62701639 5.09940984,1.03868852 7.05206557,1.03868852 C9.00472131,1.03868852 10.5930492,2.62701639 10.5930492,4.57927869 L10.5930492,12.448918 C10.5930492,14.4015738 9.00472131,15.9899016 7.05206557,15.9899016 C5.09940984,15.9899016 3.51108197,14.4015738 3.51108197,12.448918 L3.51108197,4.57927869 L3.51108197,4.57927869 Z M7.05206557,16.7767869 C9.44183607,16.7767869 11.3799344,14.839082 11.3799344,12.448918 L11.3799344,4.57927869 C11.3799344,2.18911475 9.44183607,0.251803279 7.05206557,0.251803279 C4.66229508,0.251803279 2.72419672,2.18911475 2.72419672,4.57927869 L2.72419672,12.448918 C2.72419672,14.839082 4.66229508,16.7767869 7.05206557,16.7767869 Z M12.9517377,8.51409836 L12.9517377,12.448918 C12.9517377,15.703082 10.3042623,18.3505574 7.05009836,18.3505574 C3.79554098,18.3505574 1.14845902,15.703082 1.14845902,12.448918 L1.14845902,8.51409836 L0.36157377,8.51409836 L0.36157377,12.448918 C0.36157377,16.0217705 3.17980328,18.9407213 6.70898361,19.1201311 L6.65862295,19.1201311 L6.65862295,23.080918 L3.11567213,23.080918 L3.11567213,23.8678033 L10.9845246,23.8678033 L10.9845246,23.080918 L7.4455082,23.080918 L7.4455082,19.1201311 L7.39121311,19.1201311 C10.9203934,18.9407213 13.738623,16.0217705 13.738623,12.448918 L13.738623,8.51409836 L12.9517377,8.51409836 Z" id="Fill-16" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/voice-unmute.svg b/src/skins/vector/img/voice-unmute.svg deleted file mode 100644 index 0d7e6f42..00000000 --- a/src/skins/vector/img/voice-unmute.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="21px" height="26px" viewBox="-1 -1 21 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Audio</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-912.000000, -665.000000)"> - <g id="Audio" sketch:type="MSLayerGroup" transform="translate(912.000000, 665.000000)"> - <path d="M6.51108197,4.57927869 C6.51108197,2.62701639 8.09940984,1.03868852 10.0520656,1.03868852 C12.0047213,1.03868852 13.5930492,2.62701639 13.5930492,4.57927869 L13.5930492,12.448918 C13.5930492,14.4015738 12.0047213,15.9899016 10.0520656,15.9899016 C8.09940984,15.9899016 6.51108197,14.4015738 6.51108197,12.448918 L6.51108197,4.57927869 L6.51108197,4.57927869 Z M10.0520656,16.7767869 C12.4418361,16.7767869 14.3799344,14.839082 14.3799344,12.448918 L14.3799344,4.57927869 C14.3799344,2.18911475 12.4418361,0.251803279 10.0520656,0.251803279 C7.66229508,0.251803279 5.72419672,2.18911475 5.72419672,4.57927869 L5.72419672,12.448918 C5.72419672,14.839082 7.66229508,16.7767869 10.0520656,16.7767869 Z M15.9517377,8.51409836 L15.9517377,12.448918 C15.9517377,15.703082 13.3042623,18.3505574 10.0500984,18.3505574 C6.79554098,18.3505574 4.14845902,15.703082 4.14845902,12.448918 L4.14845902,8.51409836 L3.36157377,8.51409836 L3.36157377,12.448918 C3.36157377,16.0217705 6.17980328,18.9407213 9.70898361,19.1201311 L9.65862295,19.1201311 L9.65862295,23.080918 L6.11567213,23.080918 L6.11567213,23.8678033 L13.9845246,23.8678033 L13.9845246,23.080918 L10.4455082,23.080918 L10.4455082,19.1201311 L10.3912131,19.1201311 C13.9203934,18.9407213 16.738623,16.0217705 16.738623,12.448918 L16.738623,8.51409836 L15.9517377,8.51409836 Z" id="Fill-16" fill="#FFFFFF" sketch:type="MSShapeGroup"></path> - <path d="M19,3 L0.272141024,20.6874224" id="Path-98" stroke="#FFFFFF" sketch:type="MSShapeGroup"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/voice.png b/src/skins/vector/img/voice.png deleted file mode 100644 index 5ba765b0..00000000 Binary files a/src/skins/vector/img/voice.png and /dev/null differ diff --git a/src/skins/vector/img/voice.svg b/src/skins/vector/img/voice.svg deleted file mode 100644 index ff87270b..00000000 --- a/src/skins/vector/img/voice.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="16px" height="26px" viewBox="0 0 16 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch --> - <title>icon_voice</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="icon_voice" sketch:type="MSLayerGroup" fill="#76CFA6"> - <path d="M15.690213,10.5130204 C15.690213,9.68172789 15.0096307,9.00560998 14.1739648,9.00560998 C13.3355096,9.00560998 12.6543693,9.68172789 12.6543693,10.5130204 L12.6554851,13.5200825 C12.6510222,13.5599846 11.9274851,17.4980943 7.84566437,17.4980943 C3.7599387,17.4980943 3.03472797,13.5815982 3.03361226,13.5500091 L3.03361226,10.5130204 C3.03361226,9.68172789 2.35302989,9.00560998 1.51680613,9.00560998 C0.680024521,9.00560998 0,9.68172789 0,10.5130204 L0,13.5500091 C0,15.5922177 1.86211801,19.602927 6.32830038,20.3771374 L6.32830038,22.9513732 L2.35358774,22.9513732 C1.51680613,22.9513732 0.836781609,23.6280454 0.836781609,24.4593379 C0.836781609,25.2900762 1.51680613,25.9661941 2.35358774,25.9661941 L13.3371831,25.9661941 C14.1717333,25.9661941 14.8506421,25.2900762 14.8506421,24.4593379 C14.8506421,23.6280454 14.1717333,22.9513732 13.3371831,22.9513732 L9.36079693,22.9513732 L9.36079693,20.3771374 C13.828095,19.602927 15.690213,15.5922177 15.690213,13.5500091 L15.690213,10.5130204 Z M13.3371831,23.7826658 C13.7098299,23.7826658 14.0138605,24.0863646 14.0138605,24.4593379 C14.0138605,24.8317569 13.7098299,25.1349016 13.3371831,25.1349016 L2.35358774,25.1349016 C1.97870958,25.1349016 1.67356322,24.8317569 1.67356322,24.4593379 C1.67356322,24.0863646 1.97870958,23.7826658 2.35358774,23.7826658 L6.74613333,23.7826658 C6.97764291,23.7826658 7.16508199,23.5970104 7.16508199,23.3670195 L7.16508199,20.0196816 C7.16508199,19.8113043 7.00888276,19.6350703 6.80024521,19.6079147 C2.63809349,19.0681288 0.836781609,15.334517 0.836781609,13.5500091 L0.836781609,10.5130204 C0.836781609,10.1400472 1.14192797,9.83690249 1.51680613,9.83690249 C1.89168429,9.83690249 2.19683065,10.1400472 2.19683065,10.5130204 L2.19683065,13.555551 C2.20519847,14.1812372 3.30696092,18.3293868 7.84566437,18.3293868 C12.2990161,18.3293868 13.491151,14.1175048 13.491151,13.5500091 L13.491151,10.5130204 C13.491151,10.1400472 13.797413,9.83690249 14.1739648,9.83690249 C14.5488429,9.83690249 14.8539893,10.1400472 14.8539893,10.5130204 L14.8539893,13.5500091 C14.8539893,15.334517 13.0532352,19.0681288 8.88940996,19.6079147 C8.68077241,19.6350703 8.52401533,19.8113043 8.52401533,20.0196816 L8.52401533,23.3670195 C8.52401533,23.5970104 8.71201226,23.7826658 8.94296398,23.7826658 L13.3371831,23.7826658 Z" id="Fill-200" sketch:type="MSShapeGroup"></path> - <path d="M3.04309579,10.1578404 L3.04309579,8.37998277 L3.04309579,7.54869025 L3.04309579,6.79997279 L3.04309579,5.96868027 L3.04309579,5.63727166 C3.04309579,5.49650612 3.05257931,5.35795737 3.06429425,5.21996281 L3.21324138,4.38867029 C3.76384368,2.3436907 5.62875096,0.831292517 7.84510651,0.831292517 C10.0609042,0.831292517 11.9263693,2.3436907 12.4775295,4.38867029 L12.6259188,5.21996281 C12.6376337,5.35795737 12.6476751,5.49650612 12.6476751,5.63727166 L12.6476751,5.96868027 L12.6476751,6.79997279 L12.6476751,7.54869025 L12.6476751,8.37998277 L12.6476751,10.1578404 C12.6476751,10.3872771 12.8351142,10.5734866 13.0660659,10.5734866 C13.2970176,10.5734866 13.4844567,10.3872771 13.4844567,10.1578404 L13.4844567,5.63727166 C13.4844567,2.52934603 10.954587,0 7.84510651,0 C4.7350682,0 2.20631418,2.52934603 2.20631418,5.63727166 L2.20631418,10.1578404 C2.20631418,10.3872771 2.39375326,10.5734866 2.62470498,10.5734866 C2.8556567,10.5734866 3.04309579,10.3872771 3.04309579,10.1578404 Z" id="Path" sketch:type="MSShapeGroup"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/voip-chevron.svg b/src/skins/vector/img/voip-chevron.svg deleted file mode 100644 index 5f7cbe71..00000000 --- a/src/skins/vector/img/voip-chevron.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="22px" height="17px" viewBox="-1 -1 22 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> - <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch --> - <title>Triangle 1</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="05-Voice-and-video" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> - <g id="05_2-Video-call" sketch:type="MSArtboardGroup" transform="translate(-912.000000, -693.000000)" fill="#76CFA6"> - <polygon id="Triangle-1" sketch:type="MSShapeGroup" transform="translate(922.000000, 700.500000) scale(1, -1) translate(-922.000000, -700.500000) " points="922 693 932 708 912 708 "></polygon> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/img/voip-mute.png b/src/skins/vector/img/voip-mute.png deleted file mode 100644 index a16d1001..00000000 Binary files a/src/skins/vector/img/voip-mute.png and /dev/null differ diff --git a/src/skins/vector/img/voip.png b/src/skins/vector/img/voip.png deleted file mode 100644 index e8f05bcc..00000000 Binary files a/src/skins/vector/img/voip.png and /dev/null differ diff --git a/src/skins/vector/img/warning.png b/src/skins/vector/img/warning.png deleted file mode 100644 index c5553530..00000000 Binary files a/src/skins/vector/img/warning.png and /dev/null differ diff --git a/src/skins/vector/img/warning.svg b/src/skins/vector/img/warning.svg deleted file mode 100644 index b9a96a88..00000000 --- a/src/skins/vector/img/warning.svg +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 24 23" style="enable-background:new 0 0 24 23;" xml:space="preserve"> -<style type="text/css"> - .st0{clip-path:url(#SVGID_2_);fill:#FF0064;} - .st1{clip-path:url(#SVGID_4_);fill:#FFFFFF;} -</style> -<g> - <g> - <defs> - <path id="SVGID_1_" d="M9.2,2.2c1.6-2.9,4.1-2.9,5.7,0l8.3,15.4c1.6,2.9,0.2,5.3-3.2,5.3H4c-3.3,0-4.7-2.4-3.2-5.3L9.2,2.2 - L9.2,2.2z M9.2,2.2"/> - </defs> - <clipPath id="SVGID_2_"> - <use xlink:href="#SVGID_1_" style="overflow:visible;"/> - </clipPath> - <rect x="-4.8" y="-5" class="st0" width="33.6" height="32.9"/> - </g> - <g> - <defs> - <path id="SVGID_3_" d="M12.7,15L13,5.4H11l0.3,9.6H12.7L12.7,15z M12,19.1c0.7,0,1.2-0.5,1.2-1.2c0-0.7-0.5-1.2-1.2-1.2 - c-0.7,0-1.2,0.5-1.2,1.2C10.8,18.6,11.3,19.1,12,19.1L12,19.1L12,19.1z M12,19.1"/> - </defs> - <clipPath id="SVGID_4_"> - <use xlink:href="#SVGID_3_" style="overflow:visible;"/> - </clipPath> - <rect x="5.8" y="0.4" class="st1" width="12.4" height="23.7"/> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/warning2.png b/src/skins/vector/img/warning2.png deleted file mode 100644 index db0fd4a8..00000000 Binary files a/src/skins/vector/img/warning2.png and /dev/null differ diff --git a/src/skins/vector/img/warning_yellow.svg b/src/skins/vector/img/warning_yellow.svg deleted file mode 100644 index 4d227517..00000000 --- a/src/skins/vector/img/warning_yellow.svg +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"> -<g> - <g> - <g> - <defs> - <path id="SVGID_1_" d="M191.667,56.25c33.333-60.417,85.417-60.417,118.75,0l172.916,320.834 - C516.667,437.5,487.5,487.5,416.667,487.5H83.333c-68.75,0-97.917-50-66.667-110.416L191.667,56.25L191.667,56.25z"/> - </defs> - <use xlink:href="#SVGID_1_" overflow="visible" fill="#E8BF37"/> - <clipPath id="SVGID_2_"> - <use xlink:href="#SVGID_1_" overflow="visible"/> - </clipPath> - <rect x="-100" y="-93.75" clip-path="url(#SVGID_2_)" fill="#E8BF37" width="700" height="685.417"/> - </g> - </g> - <g> - <g> - <defs> - <path id="SVGID_3_" d="M264.584,322.916l6.25-200h-41.667l6.25,200H264.584L264.584,322.916z M250,408.334 - c14.584,0,25-10.418,25-25c0-14.584-10.416-25-25-25c-14.583,0-25,10.416-25,25C225,397.916,235.417,408.334,250,408.334 - L250,408.334L250,408.334z"/> - </defs> - <clipPath id="SVGID_4_"> - <use xlink:href="#SVGID_3_" overflow="visible"/> - </clipPath> - <rect x="120.833" y="18.75" clip-path="url(#SVGID_4_)" fill="#FFFFFF" width="258.333" height="493.75"/> - </g> - </g> -</g> -</svg> diff --git a/src/skins/vector/img/zoom.png b/src/skins/vector/img/zoom.png deleted file mode 100644 index f05ea959..00000000 Binary files a/src/skins/vector/img/zoom.png and /dev/null differ diff --git a/src/skins/vector/themes/status/css/_StatusLogin.scss b/src/skins/vector/themes/status/css/_StatusLogin.scss deleted file mode 100644 index 68727274..00000000 --- a/src/skins/vector/themes/status/css/_StatusLogin.scss +++ /dev/null @@ -1,232 +0,0 @@ -/* -Copyright 2017 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// overrides for mx_Login* specific to Status. -// Ideally this would be all Status prefixes for a Status specific version of the component -// but given we're not doing Status as a dedicated 'skin' yet... - -.mx_StatusLogin { - - width: 100%; - height: 100%; - - display: flex; - align-items: center; - justify-content: center; - - overflow: auto; - - .mx_StatusLogin_brand { - position: absolute; - top: 30px; - left: 30px; - } - - .mx_StatusLogin_content { - margin: auto; - } - - .mx_StatusLogin_header { - text-align: center; - margin-top: 70px; - margin-bottom: 50px; - } - - .mx_StatusLogin_header h1 { - font-size: 29px; - margin-bottom: 3px; - } - - .mx_StatusLogin_subtitle { - font-size: 18px; - } - - .mx_StatusLogin_subtitle a { - color: $riot-link-color; - } - - .mx_StatusLogin_footer { - margin-top: 30px; - margin-bottom: 30px; - text-align: center; - font-size: 16px; - color: $footer-color; - } - - .mx_StatusLogin_footer p { - margin-top: 0.5em; - margin-bottom: 0.5em; - } - - .mx_StatusLogin_footer_cta { - color: $callout-color; - font-family: $header-font-family; - letter-spacing: 1px; - font-size: 13px; - text-transform: uppercase; - opacity: 1.0; - transition: opacity .2s ease; - } - - .mx_StatusLogin_footer_cta:hover { - opacity: 0.5; - text-decoration: none; - } - - // overrides of .mx_Login - - .mx_Login_box { - width: 330px; - min-height: initial; - padding-top: 40px; - padding-bottom: 20px; - padding-left: 10px; - padding-right: 10px; - border-radius: 8px; - color: $form-fg-color; - font-size: 16px; - line-height: 25px; - background-color: $form-bg-color; - background-image: url(../../themes/status/img/dot.svg); - box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); - position: relative; - text-align: center; - } - - .mx_Login_logo { - background-color: #fff; - width: 74px; - height: 74px; - border-radius: 37px; - box-shadow: 0px 5px 16px 0px rgba(0,0,0,0.2); - position: absolute; - top: -36px; - left: 50%; - margin-left: -36px; - } - - .mx_Login_logo img { - width: 36px; - height: 36px; - padding: 19px; - } - - .mx_Login_box h2 { - text-align: center; - color: $form-fg-color; - font-size: 25px; - margin-bottom: 24px; - } - - .mx_Login_field { - width: 260px; - height: 27px; - padding: 8px 20px 10px 20px; - border-radius: 10px; - text-align: left; - border: 1px solid transparent; - background-color: $form-field-bg-color; - color: $form-field-fg-color; - font-weight: 300; - font-size: 15px; - margin-bottom: 14px; - transition: background-color .2s ease; - } - - .mx_Login_field:focus { - border: 1px solid transparent; - background-color: $form-field-bg-hover-color; - } - - .mx_Login_field::-webkit-input-placeholder { - font-family: $font-family; - color: $form-field-fg-color; - opacity: 0.6; - } - - .mx_Login_field::-moz-placeholder { - font-family: $font-family; - color: $form-field-fg-color; - opacity: 0.6; - } - - .mx_Login_field_disabled { - opacity: 0.3; - } - - .mx_Login_prompt { - font-size: 16px; - } - - .mx_Login_submit { - min-width: 200px; - width: auto; - margin-top: 13px; - margin-bottom: 10px; - } - - .mx_Login_submit:disabled { - opacity: 0.3; - } - - .mx_Login_create { - margin-top: 10px; - display: block; - text-align: center; - width: 100%; - font-size: 15px; - opacity: 1.0; - } - - .mx_Login_create:link, - .mx_Login_create:hover, - .mx_Login_create:visited - { - color: $form-fg-color; - } - - .mx_Login_forgot { - display: block; - font-size: 15px; - } - - .mx_Login_forgot:link, - .mx_Login_forgot:hover, - .mx_Login_forgot:visited - { - color: $form-fg-color; - } - - .mx_Login_error { - color: $warning-color; - font-size: 18px; - width: 300px; - height: 44px; - display: flex; - justify-content: center; - align-items: center; - margin: auto; - text-align: center; - margin-top: 12px; - margin-bottom: 16px; - } - - .mx_Login_smallError { - font-size: 13px; - line-height: initial; - } - -} diff --git a/src/skins/vector/themes/status/css/_status.scss b/src/skins/vector/themes/status/css/_status.scss deleted file mode 100644 index be4c3c7f..00000000 --- a/src/skins/vector/themes/status/css/_status.scss +++ /dev/null @@ -1,286 +0,0 @@ -@font-face { - font-family:PostGrotesk-Medium; - src:url('https://status.im/fonts/PostGrotesk-Medium.eot'); - src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg"); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family:PostGrotesk-Book; - src:url('https://status.im/fonts/PostGrotesk-Book.eot'); - src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg"); - font-weight: 400; - font-style: normal; -} - -// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss) -// N.B. that the status.im website uses: -// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; -// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now. - -$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; - -// typical text (dark-on-white in light skin) -$primary-fg-color: #70808D; -$primary-bg-color: #EEF2F5; - -// ***** Start of Status theme specifics ****** -$header-color: #49555F; -$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; - -$footer-color: #8D99A4; - -$riot-link-color: #A26988; - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -h1,h2,h3,h4,h5 { - color: $header-color; - font-family: $header-font-family; - font-weight: 400 ! important; -} - -$callout-color: #4360DF; // or #4957b8 from status.im homepage - -$form-bg-color: $callout-color; -$form-fg-color: #ffffff; - -$form-field-bg-color: rgba(244, 242, 247, 0.12); -$form-field-bg-hover-color: rgba(255, 255, 255, 0.2); -$form-field-fg-color: #ffffff; - -// ***** End of Status theme specifics ****** - - -// used for dialog box text -$light-fg-color: #747474; - -// used for focusing form controls -$focus-bg-color: #dddddd; - -// button UI (white-on-green in light skin) -$accent-fg-color: #ffffff; -$accent-color: #6CC1F6; -$accent-hover-color: #84cfff; - -$selection-fg-color: $primary-bg-color; - -$focus-brightness: 125%; - -// red warning colour -$warning-color: #F69E98; -$mention-user-pill-bg-color: #ff0064; -$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); - -$group-alert-color: #774f7e; - -$preview-bar-bg-color: #f7f7f7; - -// left-panel style muted accent color -$secondary-accent-color: #586C7B; -$tertiary-accent-color: #DBEBF6; - -// stop the tinter trying to change the secondary accent color -// by overriding the key to something untintable -// XXX: this is a bit of a hack. -#mx_theme_secondaryAccentColor { - color: #c0ffee ! important; -} - -#mx_theme_tertiaryAccentColor { - color: #c0ffee ! important; -} - -// used by RoomDirectory permissions -$plinth-bg-color: $secondary-accent-color; - -// used by RoomDropTarget -$droptarget-bg-color: rgba(255,255,255,0.5); - -// used by AddressSelector -$selected-color: #eaf5f0; - -// selected for hoverover & selected event tiles -$event-selected-color: #f7f7f7; - -// used for the hairline dividers in RoomView -$primary-hairline-color: #e5e5e5; - -// used for the border of input text fields -$input-border-color: #c9cfd4; - -// apart from login forms, which have stronger border -$strong-input-border-color: #c7c7c7; - -// used for UserSettings EditableText -$input-underline-color: rgba(151, 151, 151, 0.5); -$input-fg-color: rgba(74, 74, 74, 0.9); - -// context menus -$menu-border-color: rgba(187, 187, 187, 0.5); -$menu-bg-color: #f6f6f6; - -$avatar-initial-color: #ffffff; -$avatar-bg-color: transparent; - -$h3-color: #3d3b39; - -$dialog-background-bg-color: #e9e9e9; -$lightbox-background-bg-color: #000; - -$greyed-fg-color: #888; - -$neutral-badge-color: #dbdbdb; - -$preview-widget-bar-color: #ddd; -$preview-widget-fg-color: $greyed-fg-color; - -$blockquote-bar-color: #ddd; -$blockquote-fg-color: #777; - -$settings-grey-fg-color: #a2a2a2; - -$voip-decline-color: #f48080; -$voip-accept-color: #80f480; - -$rte-bg-color: #e9e9e9; -$rte-code-bg-color: rgba(0, 0, 0, 0.04); -$rte-room-pill-color: #aaa; - -// ******************** - -$roomtile-name-color: #ffffff; -$roomtile-selected-bg-color: #465561; -$roomtile-focused-bg-color: #6d8597; - -$roomsublist-background: #465561; -$roomsublist-label-fg-color: #ffffff; -$roomsublist-label-bg-color: $secondary-accent-color; -$roomsublist-chevron-color: #ffffff; - -$panel-divider-color: rgba(0, 0, 0, 0.2); - -// ******************** - -$widget-menu-bar-bg-color: #f7f7f7; - -// ******************** - -// event tile lifecycle -$event-encrypting-color: #abddbc; -$event-sending-color: #ddd; -$event-notsent-color: #f44; - -// event redaction -$event-redacted-fg-color: #e2e2e2; -$event-redacted-border-color: #cccccc; - -// event timestamp -$event-timestamp-color: #acacac; - -$edit-button-url: "../../img/icon_context_message.svg"; -$copy-button-url: "../../img/icon_copy_message.svg"; - -// e2e -$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color -$e2e-unverified-color: #e8bf37; -$e2e-warning-color: #ba6363; - -/*** ImageView ***/ -$lightbox-bg-color: #454545; -$lightbox-fg-color: #ffffff; -$lightbox-border-color: #ffffff; - -// unused? -$progressbar-color: #000; - -@define-mixin mx_DialogButton { - /* align images in buttons (eg spinners) */ - vertical-align: middle; - border-radius: 8px; - border: 1px solid rgba(199, 206, 209, 0.12); - background-color: $accent-color; - font-size: 13px; - font-family: $header-font-family; - text-transform: uppercase; - letter-spacing: 1px; - color: $accent-fg-color; - cursor: pointer; - outline: none; - padding: 14px; - box-sizing: border-box; - padding-left: 1.5em; - padding-right: 1.5em; - display: inline-block; - transition: background-color .2s ease; -} - -@define-mixin mx_DialogButton_hover { - background-color: $accent-hover-color; -} - -@define-mixin mx_DialogButton_small { - @mixin mx_DialogButton; - height: auto; - padding-top: 7px; - padding-bottom: 7px; - padding-left: 1em; - padding-right: 1em; -} - -.mx_RoomSubList_label { - font-size: 13px; - font-family: $header-font-family; - letter-spacing: 1px; -} - -// FIXME: all these ! importants are horrid - we should instead go and define -// variables or something. -.mx_SearchBox_search { - color: #fff ! important; -} - -.mx_SearchBox_search::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.6) ! important; -} - -.mx_SearchBox_search::-moz-placeholder { - color: rgba(255, 255, 255, 0.6) ! important; -} - -.mx_RoomList_emptySubListTip, -.mx_RoomDropTarget { - font-size: 14px ! important; - border: 1.5px dashed rgba(0,0,0,0.2) ! important; - color: #fff ! important; - background-color: transparent ! important; - border-radius: 6px ! important; - margin-left: 6px ! important; - margin-right: 6px ! important; - margin-top: 8px ! important; - margin-bottom: 7px ! important; - padding: 8px ! important; -} - -.mx_RoomDirectory_perm { - font-family: $header-font-family ! important; - background-color: #fff ! important; -} - -.mx_RoomTile_badge, -.mx_RoomSubList_badge { - height: 12px ! important; - padding-top: 1px ! important; - padding-bottom: 1px ! important; -} - -.mx_RoomSubList_chevron { - top: 8px ! important; -} \ No newline at end of file diff --git a/src/skins/vector/themes/status/css/status.scss b/src/skins/vector/themes/status/css/status.scss deleted file mode 100644 index 09f5c78f..00000000 --- a/src/skins/vector/themes/status/css/status.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "../../../css/themes/_base.scss"; -@import "_status.scss"; -@import "../../../css/_components.scss"; -@import "_StatusLogin.scss"; diff --git a/src/skins/vector/themes/status/fonts/README b/src/skins/vector/themes/status/fonts/README deleted file mode 100644 index d7900145..00000000 --- a/src/skins/vector/themes/status/fonts/README +++ /dev/null @@ -1 +0,0 @@ -We link out to status.im for fonts, although ideally we'd put them here. diff --git a/src/skins/vector/themes/status/img/a.png b/src/skins/vector/themes/status/img/a.png deleted file mode 100644 index defbcc4b..00000000 Binary files a/src/skins/vector/themes/status/img/a.png and /dev/null differ diff --git a/src/skins/vector/themes/status/img/d.png b/src/skins/vector/themes/status/img/d.png deleted file mode 100644 index daeb0b07..00000000 Binary files a/src/skins/vector/themes/status/img/d.png and /dev/null differ diff --git a/src/skins/vector/themes/status/img/dot.svg b/src/skins/vector/themes/status/img/dot.svg deleted file mode 100644 index 45df23c0..00000000 --- a/src/skins/vector/themes/status/img/dot.svg +++ /dev/null @@ -1 +0,0 @@ -<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title>Artboard</title><circle cx="10" cy="10" r="1" fill="#FFF" fill-rule="evenodd" opacity=".11"/></svg> \ No newline at end of file diff --git a/src/skins/vector/themes/status/img/g.png b/src/skins/vector/themes/status/img/g.png deleted file mode 100644 index f675a330..00000000 Binary files a/src/skins/vector/themes/status/img/g.png and /dev/null differ diff --git a/src/skins/vector/themes/status/img/i.png b/src/skins/vector/themes/status/img/i.png deleted file mode 100644 index b63eeae1..00000000 Binary files a/src/skins/vector/themes/status/img/i.png and /dev/null differ diff --git a/src/skins/vector/themes/status/img/logo.svg b/src/skins/vector/themes/status/img/logo.svg deleted file mode 100644 index 68e4a77a..00000000 --- a/src/skins/vector/themes/status/img/logo.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg width="211px" height="53px" viewBox="0 0 211 53" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: Sketch 47 (45396) - http://www.bohemiancoding.com/sketch --> - <title>Status logo</title> - <desc>Created with Sketch.</desc> - <defs></defs> - <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="Status-logo"> - <g> - <path d="M66.843,12.101 C66.843,12.7730034 67.0914975,13.2699984 67.5885,13.592 C68.0855025,13.9140016 68.9849935,14.179999 70.287,14.39 C72.0510088,14.6840015 73.3494958,15.1599967 74.1825,15.818 C75.0155042,16.4760033 75.432,17.4559935 75.432,18.758 C75.432,20.1160068 74.9140052,21.2079959 73.878,22.034 C72.8419948,22.8600041 71.4770085,23.273 69.783,23.273 C68.0329912,23.273 66.6400052,22.8495042 65.604,22.0025 C64.5679948,21.1554958 64.0220003,20.1020063 63.966,18.842 L66.423,18.464 C66.4930004,19.2760041 66.8044972,19.9479973 67.3575,20.48 C67.9105028,21.0120027 68.7189947,21.278 69.783,21.278 C70.7350048,21.278 71.4874972,21.0715021 72.0405,20.6585 C72.5935028,20.2454979 72.87,19.6610038 72.87,18.905 C72.87,18.2329966 72.6180025,17.7150018 72.114,17.351 C71.6099975,16.9869982 70.7280063,16.7140009 69.468,16.532 C67.7739915,16.2799987 66.4895044,15.8320032 65.6145,15.188 C64.7394956,14.5439968 64.302,13.5850064 64.302,12.311 C64.302,10.9669933 64.7919951,9.91700378 65.772,9.161 C66.7520049,8.40499622 68.039992,8.027 69.636,8.027 C71.1340075,8.027 72.3729951,8.3769965 73.353,9.077 C74.3330049,9.7770035 74.9349989,10.7429938 75.159,11.975 L72.66,12.542 C72.4079987,10.8619916 71.379009,10.022 69.573,10.022 C68.6769955,10.022 67.9980023,10.2074981 67.536,10.5785 C67.0739977,10.9495019 66.843,11.4569968 66.843,12.101 Z M82.803,20.984 L83.454,22.853 C82.8939972,23.1330014 82.215004,23.273 81.417,23.273 C80.4789953,23.273 79.7475026,23.0280025 79.2225,22.538 C78.6974974,22.0479976 78.435,21.3480046 78.435,20.438 L78.435,14.81 L76.755,14.81 L76.755,13.046 L78.435,13.046 L78.435,10.211 L80.808,9.119 L80.808,13.046 L83.055,13.046 L83.055,14.81 L80.808,14.81 L80.808,20.144 C80.808,20.9280039 81.1229968,21.32 81.753,21.32 C82.0330014,21.32 82.3829979,21.2080011 82.803,20.984 Z M91.392,23 C91.2519993,22.7479987 91.182,22.321003 91.182,21.719 C90.4539964,22.7550052 89.3970069,23.273 88.011,23.273 C87.002995,23.273 86.194503,23.0175026 85.5855,22.5065 C84.976497,21.9954974 84.672,21.3060043 84.672,20.438 C84.672,19.7939968 84.8434983,19.2410023 85.1865,18.779 C85.5295017,18.3169977 86.0124969,17.9565013 86.6355,17.6975 C87.2585031,17.4384987 87.9409963,17.2530006 88.683,17.141 C89.4250037,17.0289994 90.2439955,16.973 91.14,16.973 L91.14,16.343 C91.14,15.7969973 90.9860015,15.3630016 90.678,15.041 C90.3699985,14.7189984 89.915003,14.558 89.313,14.558 C88.710997,14.558 88.2490016,14.7049985 87.927,14.999 C87.6049984,15.2930015 87.4370001,15.6639978 87.423,16.112 L85.113,15.776 C85.2110005,14.8379953 85.662496,14.1030027 86.4675,13.571 C87.272504,13.0389973 88.2489943,12.773 89.397,12.773 C90.6290062,12.773 91.6159963,13.0844969 92.358,13.7075 C93.1000037,14.3305031 93.471,15.2229942 93.471,16.385 L93.471,21.635 C93.471,22.0830022 93.5479992,22.5379977 93.702,23 L91.392,23 Z M88.662,21.509 C89.3340034,21.509 89.9149976,21.309502 90.405,20.9105 C90.8950025,20.511498 91.14,19.9830033 91.14,19.325 L91.14,18.506 C88.3959863,18.506 87.024,19.1009941 87.024,20.291 C87.024,20.683002 87.1744985,20.983999 87.4755,21.194 C87.7765015,21.404001 88.1719976,21.509 88.662,21.509 Z M101.199,20.984 L101.85,22.853 C101.289997,23.1330014 100.611004,23.273 99.813,23.273 C98.8749953,23.273 98.1435026,23.0280025 97.6185,22.538 C97.0934974,22.0479976 96.831,21.3480046 96.831,20.438 L96.831,14.81 L95.151,14.81 L95.151,13.046 L96.831,13.046 L96.831,10.211 L99.204,9.119 L99.204,13.046 L101.451,13.046 L101.451,14.81 L99.204,14.81 L99.204,20.144 C99.204,20.9280039 99.5189969,21.32 100.149,21.32 C100.429001,21.32 100.778998,21.2080011 101.199,20.984 Z M112.56,13.046 L112.56,23 L110.292,23 L110.292,21.509 C109.591997,22.6850059 108.563007,23.273 107.205,23.273 C106.210995,23.273 105.385003,22.9825029 104.727,22.4015 C104.068997,21.8204971 103.74,20.9980053 103.74,19.934 L103.74,13.046 L106.113,13.046 L106.113,19.346 C106.113,20.0180034 106.284498,20.5149984 106.6275,20.837 C106.970502,21.1590016 107.400997,21.32 107.919,21.32 C108.535003,21.32 109.066998,21.0540027 109.515,20.522 C109.963002,19.9899973 110.187,19.2550047 110.187,18.317 L110.187,13.046 L112.56,13.046 Z M117.39,15.692 C117.39,16.098002 117.557998,16.3919991 117.894,16.574 C118.230002,16.7560009 118.747996,16.9029994 119.448,17.015 C120.022003,17.0990004 120.522498,17.2039994 120.9495,17.33 C121.376502,17.4560006 121.785998,17.6309989 122.178,17.855 C122.570002,18.0790011 122.867499,18.3764981 123.0705,18.7475 C123.273501,19.1185019 123.375,19.5559975 123.375,20.06 C123.375,21.054005 122.986504,21.8379971 122.2095,22.412 C121.432496,22.9860029 120.393007,23.273 119.091,23.273 C117.844994,23.273 116.833504,23.0140026 116.0565,22.496 C115.279496,21.9779974 114.835001,21.2360048 114.723,20.27 L117.033,19.934 C117.131,20.9980053 117.823994,21.53 119.112,21.53 C119.686003,21.53 120.140998,21.4215011 120.477,21.2045 C120.813002,20.9874989 120.981,20.6620022 120.981,20.228 C120.981,19.835998 120.823502,19.5455009 120.5085,19.3565 C120.193498,19.1674991 119.616004,19.0100006 118.776,18.884 C117.543994,18.7019991 116.606003,18.3800023 115.962,17.918 C115.317997,17.4559977 114.996,16.7700045 114.996,15.86 C114.996,14.865995 115.391496,14.1030027 116.1825,13.571 C116.973504,13.0389973 117.942994,12.773 119.091,12.773 C120.197006,12.773 121.127996,13.0179976 121.884,13.508 C122.640004,13.9980025 123.087999,14.6629958 123.228,15.503 L120.918,15.986 C120.791999,14.991995 120.169006,14.495 119.049,14.495 C118.572998,14.495 118.177502,14.5999989 117.8625,14.81 C117.547498,15.020001 117.39,15.3139981 117.39,15.692 Z" id="Status" fill="#49555F"></path> - <path d="M68.31,32.5 L72.135,43 L70.77,43 L69.75,40.15 L65.58,40.15 L64.56,43 L63.285,43 L67.11,32.5 L68.31,32.5 Z M67.665,34.195 L67.635,34.195 L65.94,39.13 L69.39,39.13 C68.4299952,36.4099864 67.855001,34.7650029 67.665,34.195 Z M82.905,43 L81.78,43 C80.1199917,38.8699794 79.0300026,35.9650084 78.51,34.285 L78.48,34.285 L78.48,43 L77.295,43 L77.295,32.5 L79.02,32.5 C80.9700098,37.6500257 82.0949985,40.619996 82.395,41.41 L85.68,32.5 L87.39,32.5 L87.39,43 L86.205,43 L86.205,34.285 L86.175,34.285 C85.5449969,36.2050096 84.4550077,39.1099806 82.905,43 Z M92.805,35.74 C93.8650053,35.74 94.697497,36.0849965 95.3025,36.775 C95.907503,37.4650034 96.21,38.3599945 96.21,39.46 C96.21,40.5600055 95.907503,41.4549966 95.3025,42.145 C94.697497,42.8350035 93.8650053,43.18 92.805,43.18 C91.7449947,43.18 90.912503,42.8350035 90.3075,42.145 C89.702497,41.4549966 89.4,40.5600055 89.4,39.46 C89.4,38.3599945 89.702497,37.4650034 90.3075,36.775 C90.912503,36.0849965 91.7449947,35.74 92.805,35.74 Z M92.805,42.175 C93.4850034,42.175 94.0049982,41.9175026 94.365,41.4025 C94.7250018,40.8874974 94.905,40.2400039 94.905,39.46 C94.905,38.6799961 94.7250018,38.0325026 94.365,37.5175 C94.0049982,37.0024974 93.4850034,36.745 92.805,36.745 C92.1249966,36.745 91.6050018,37.0024974 91.245,37.5175 C90.8849982,38.0325026 90.705,38.6799961 90.705,39.46 C90.705,40.2400039 90.8849982,40.8874974 91.245,41.4025 C91.6050018,41.9175026 92.1249966,42.175 92.805,42.175 Z M101.58,35.74 C102.530005,35.74 103.309997,36.0774966 103.92,36.7525 C104.530003,37.4275034 104.835,38.3299943 104.835,39.46 C104.835,40.5900057 104.530003,41.4924966 103.92,42.1675 C103.309997,42.8425034 102.530005,43.18 101.58,43.18 C100.549995,43.18 99.7750026,42.7650041 99.255,41.935 L99.255,43 L98.07,43 L98.07,32.5 L99.33,32.5 L99.33,36.82 C99.9000029,36.0999964 100.649995,35.74 101.58,35.74 Z M99.33,38.98 L99.33,39.94 C99.33,40.6700036 99.5474978,41.2199982 99.9825,41.59 C100.417502,41.9600018 100.904997,42.145 101.445,42.145 C102.075003,42.145 102.579998,41.8925025 102.96,41.3875 C103.340002,40.8824975 103.53,40.2400039 103.53,39.46 C103.53,38.6799961 103.340002,38.0375025 102.96,37.5325 C102.579998,37.0274975 102.075003,36.775 101.445,36.775 C100.904997,36.775 100.417502,36.9599982 99.9825,37.33 C99.5474978,37.7000018 99.33,38.2499964 99.33,38.98 Z M106.5,33.16 C106.5,32.9099987 106.577499,32.7100007 106.7325,32.56 C106.887501,32.4099992 107.084999,32.335 107.325,32.335 C107.565001,32.335 107.762499,32.4099992 107.9175,32.56 C108.072501,32.7100007 108.15,32.9099987 108.15,33.16 C108.15,33.3800011 108.072501,33.5699992 107.9175,33.73 C107.762499,33.8900008 107.565001,33.97 107.325,33.97 C107.084999,33.97 106.887501,33.8900008 106.7325,33.73 C106.577499,33.5699992 106.5,33.3800011 106.5,33.16 Z M106.695,43 L106.695,35.92 L107.955,35.92 L107.955,43 L106.695,43 Z M110.355,43 L110.355,32.5 L111.615,32.5 L111.615,43 L110.355,43 Z M118.65,40.93 L119.76,41.38 C119.159997,42.580006 118.190007,43.18 116.85,43.18 C115.809995,43.18 114.987503,42.8325035 114.3825,42.1375 C113.777497,41.4424965 113.475,40.5450055 113.475,39.445 C113.475,38.3649946 113.777497,37.4775035 114.3825,36.7825 C114.987503,36.0874965 115.794995,35.74 116.805,35.74 C117.825005,35.74 118.612497,36.0824966 119.1675,36.7675 C119.722503,37.4525034 120,38.2849951 120,39.265 L120,39.685 L114.765,39.685 C114.795,40.4150037 114.982498,41.0174976 115.3275,41.4925 C115.672502,41.9675024 116.184997,42.205 116.865,42.205 C117.325002,42.205 117.689999,42.1000011 117.96,41.89 C118.230001,41.6799989 118.459999,41.3600021 118.65,40.93 Z M116.775,36.715 C116.224997,36.715 115.775002,36.9024981 115.425,37.2775 C115.074998,37.6525019 114.87,38.139997 114.81,38.74 L118.71,38.74 C118.68,38.1199969 118.487502,37.6275018 118.1325,37.2625 C117.777498,36.8974982 117.325003,36.715 116.775,36.715 Z M131.67,43 L125.415,43 L125.415,32.5 L131.565,32.5 L131.565,33.55 L126.72,33.55 L126.72,37.06 L131.25,37.06 L131.25,38.11 L126.72,38.11 L126.72,41.95 L131.67,41.95 L131.67,43 Z M136.605,41.905 L137.01,42.895 C136.679998,43.085001 136.255003,43.18 135.735,43.18 C135.144997,43.18 134.692502,43.0150017 134.3775,42.685 C134.062498,42.3549984 133.905,41.9400025 133.905,41.44 L133.905,36.88 L132.705,36.88 L132.705,35.92 L133.905,35.92 L133.905,33.895 L135.165,33.325 L135.165,35.92 L136.815,35.92 L136.815,36.88 L135.165,36.88 L135.165,41.32 C135.165,41.5700013 135.229999,41.7674993 135.36,41.9125 C135.490001,42.0575007 135.669999,42.13 135.9,42.13 C136.150001,42.13 136.384999,42.0550007 136.605,41.905 Z M138.585,43 L138.585,32.5 L139.845,32.5 L139.845,36.895 C140.345002,36.1249962 141.064995,35.74 142.005,35.74 C142.725004,35.74 143.324998,35.944998 143.805,36.355 C144.285002,36.765002 144.525,37.3449963 144.525,38.095 L144.525,43 L143.265,43 L143.265,38.29 C143.265,37.7899975 143.115002,37.4125013 142.815,37.1575 C142.514998,36.9024987 142.160002,36.775 141.75,36.775 C141.229997,36.775 140.782502,36.9924978 140.4075,37.4275 C140.032498,37.8625022 139.845,38.4349964 139.845,39.145 L139.845,43 L138.585,43 Z M151.485,40.93 L152.595,41.38 C151.994997,42.580006 151.025007,43.18 149.685,43.18 C148.644995,43.18 147.822503,42.8325035 147.2175,42.1375 C146.612497,41.4424965 146.31,40.5450055 146.31,39.445 C146.31,38.3649946 146.612497,37.4775035 147.2175,36.7825 C147.822503,36.0874965 148.629995,35.74 149.64,35.74 C150.660005,35.74 151.447497,36.0824966 152.0025,36.7675 C152.557503,37.4525034 152.835,38.2849951 152.835,39.265 L152.835,39.685 L147.6,39.685 C147.63,40.4150037 147.817498,41.0174976 148.1625,41.4925 C148.507502,41.9675024 149.019997,42.205 149.7,42.205 C150.160002,42.205 150.524999,42.1000011 150.795,41.89 C151.065001,41.6799989 151.294999,41.3600021 151.485,40.93 Z M149.61,36.715 C149.059997,36.715 148.610002,36.9024981 148.26,37.2775 C147.909998,37.6525019 147.705,38.139997 147.645,38.74 L151.545,38.74 C151.515,38.1199969 151.322502,37.6275018 150.9675,37.2625 C150.612498,36.8974982 150.160003,36.715 149.61,36.715 Z M158.7,35.905 L158.415,37.075 C158.194999,36.874999 157.925002,36.775 157.605,36.775 C157.114998,36.775 156.697502,36.9999977 156.3525,37.45 C156.007498,37.9000023 155.835,38.4749965 155.835,39.175 L155.835,43 L154.575,43 L154.575,35.92 L155.76,35.92 L155.76,37.03 C155.940001,36.6099979 156.214998,36.2900011 156.585,36.07 C156.955002,35.8499989 157.369998,35.74 157.83,35.74 C158.180002,35.74 158.469999,35.7949994 158.7,35.905 Z M164.61,40.93 L165.72,41.38 C165.119997,42.580006 164.150007,43.18 162.81,43.18 C161.769995,43.18 160.947503,42.8325035 160.3425,42.1375 C159.737497,41.4424965 159.435,40.5450055 159.435,39.445 C159.435,38.3649946 159.737497,37.4775035 160.3425,36.7825 C160.947503,36.0874965 161.754995,35.74 162.765,35.74 C163.785005,35.74 164.572497,36.0824966 165.1275,36.7675 C165.682503,37.4525034 165.96,38.2849951 165.96,39.265 L165.96,39.685 L160.725,39.685 C160.755,40.4150037 160.942498,41.0174976 161.2875,41.4925 C161.632502,41.9675024 162.144997,42.205 162.825,42.205 C163.285002,42.205 163.649999,42.1000011 163.92,41.89 C164.190001,41.6799989 164.419999,41.3600021 164.61,40.93 Z M162.735,36.715 C162.184997,36.715 161.735002,36.9024981 161.385,37.2775 C161.034998,37.6525019 160.83,38.139997 160.77,38.74 L164.67,38.74 C164.64,38.1199969 164.447502,37.6275018 164.0925,37.2625 C163.737498,36.8974982 163.285003,36.715 162.735,36.715 Z M173.505,35.92 L173.505,43 L172.32,43 L172.32,41.935 C171.779997,42.7650041 171.045005,43.18 170.115,43.18 C169.404996,43.18 168.812502,42.9750021 168.3375,42.565 C167.862498,42.154998 167.625,41.5750038 167.625,40.825 L167.625,35.92 L168.885,35.92 L168.885,40.63 C168.885,41.1300025 169.032499,41.5074987 169.3275,41.7625 C169.622501,42.0175013 169.969998,42.145 170.37,42.145 C170.880003,42.145 171.319998,41.9275022 171.69,41.4925 C172.060002,41.0574978 172.245,40.4850036 172.245,39.775 L172.245,35.92 L173.505,35.92 Z M175.905,43 L175.905,35.92 L177.09,35.92 L177.09,36.985 C177.590002,36.1549958 178.299995,35.74 179.22,35.74 C179.720002,35.74 180.157498,35.8524989 180.5325,36.0775 C180.907502,36.3025011 181.179999,36.6199979 181.35,37.03 C181.560001,36.6799982 181.872498,36.3775013 182.2875,36.1225 C182.702502,35.8674987 183.154998,35.74 183.645,35.74 C184.315003,35.74 184.872498,35.944998 185.3175,36.355 C185.762502,36.765002 185.985,37.3449963 185.985,38.095 L185.985,43 L184.725,43 L184.725,38.29 C184.725,37.7899975 184.592501,37.4125013 184.3275,37.1575 C184.062499,36.9024987 183.740002,36.775 183.36,36.775 C182.869998,36.775 182.450002,36.9924978 182.1,37.4275 C181.749998,37.8625022 181.575,38.4349964 181.575,39.145 L181.575,43 L180.315,43 L180.315,38.29 C180.315,37.7899975 180.180001,37.4125013 179.91,37.1575 C179.639999,36.9024987 179.315002,36.775 178.935,36.775 C178.454998,36.775 178.040002,36.9924978 177.69,37.4275 C177.339998,37.8625022 177.165,38.4349964 177.165,39.145 L177.165,43 L175.905,43 Z M191.43,37.75 C191.43,36.0899917 191.859996,34.7700049 192.72,33.79 C193.580004,32.8099951 194.709993,32.32 196.11,32.32 C197.510007,32.32 198.639996,32.8099951 199.5,33.79 C200.360004,34.7700049 200.79,36.0899917 200.79,37.75 C200.79,39.4100083 200.360004,40.7299951 199.5,41.71 C198.639996,42.6900049 197.510007,43.18 196.11,43.18 C194.709993,43.18 193.580004,42.6900049 192.72,41.71 C191.859996,40.7299951 191.43,39.4100083 191.43,37.75 Z M192.78,37.75 C192.78,39.0300064 193.067497,40.0774959 193.6425,40.8925 C194.217503,41.7075041 195.039995,42.115 196.11,42.115 C197.180005,42.115 198.002497,41.7075041 198.5775,40.8925 C199.152503,40.0774959 199.44,39.0300064 199.44,37.75 C199.44,36.4699936 199.152503,35.4225041 198.5775,34.6075 C198.002497,33.7924959 197.180005,33.385 196.11,33.385 C195.039995,33.385 194.217503,33.7924959 193.6425,34.6075 C193.067497,35.4225041 192.78,36.4699936 192.78,37.75 Z M203.955,35.17 C203.955,35.7100027 204.129998,36.1049988 204.48,36.355 C204.830002,36.6050013 205.484995,36.8099992 206.445,36.97 C207.695006,37.170001 208.624997,37.4974977 209.235,37.9525 C209.845003,38.4075023 210.15,39.0949954 210.15,40.015 C210.15,40.9650047 209.807503,41.7299971 209.1225,42.31 C208.437497,42.8900029 207.505006,43.18 206.325,43.18 C205.094994,43.18 204.132503,42.8875029 203.4375,42.3025 C202.742497,41.7174971 202.375,40.9650046 202.335,40.045 L203.625,39.85 C203.665,40.4900032 203.899998,41.0324978 204.33,41.4775 C204.760002,41.9225022 205.424995,42.145 206.325,42.145 C207.105004,42.145 207.707498,41.9650018 208.1325,41.605 C208.557502,41.2449982 208.77,40.7500031 208.77,40.12 C208.77,39.5399971 208.575002,39.1025015 208.185,38.8075 C207.794998,38.5124985 207.110005,38.2950007 206.13,38.155 C204.939994,37.9849992 204.055003,37.6750022 203.475,37.225 C202.894997,36.7749977 202.605,36.1300042 202.605,35.29 C202.605,34.3799954 202.934997,33.6575027 203.595,33.1225 C204.255003,32.5874973 205.124995,32.32 206.205,32.32 C207.235005,32.32 208.077497,32.5649976 208.7325,33.055 C209.387503,33.5450024 209.784999,34.2199957 209.925,35.08 L208.635,35.41 C208.444999,34.0499932 207.630007,33.37 206.19,33.37 C205.449996,33.37 204.892502,33.5324984 204.5175,33.8575 C204.142498,34.1825016 203.955,34.6199972 203.955,35.17 Z" id="A-Mobile-Ethereum-OS" fill="#49555F" opacity="0.400000006"></path> - <path d="M32.4973501,25.5505037 C38.4424686,25.2185283 42.0452893,22.1564608 41.7899347,17.5784494 C41.5299374,12.9215068 36.7362358,10.0521244 31.9425343,10.3214192 C24.1286847,10.7578625 18.383207,17.6411301 17.7378564,25.5063951 C18.7987386,25.2579939 19.9153344,25.1094174 20.9692523,25.0513798 C25.356708,24.8053 28.107573,25.7965834 32.4973501,25.5505037 M20.5026499,27.6653964 C14.5575314,27.9973719 10.9547107,31.0594393 11.2100653,35.6374507 C11.472384,40.2943933 16.2637642,43.1614542 21.0574657,42.8944809 C28.8713153,42.4580377 34.616793,35.57477 35.2621436,27.7071835 C34.2012614,27.9579063 33.0846656,28.1064827 32.0330691,28.1645204 C27.643292,28.4106001 24.892427,27.4193167 20.5026499,27.6653964 M18.0210678,0 L34.9789322,0 C40.8544085,0 42.7277824,0 45.3765056,0.88217258 C48.4686172,1.98720981 51.0128772,4.52693824 52.1155447,7.61918528 C53,10.2680245 53,12.1461235 53,18.0195357 L53,34.9804643 C53,40.8538765 53,42.7319755 52.1155447,45.3831362 C51.0128772,48.5055629 48.5034383,51.0127902 45.3811484,52.1178274 C42.7301038,53 40.8544085,53 34.9789322,53 L18.0210678,53 C12.1455915,53 10.2698962,53 7.61885156,52.1178274 C4.49656169,51.0127902 1.98944418,48.5055629 0.884455346,45.3831362 C0,42.7319755 0,40.8538765 0,34.9804643 L0,18.0195357 C0,12.1461235 0,10.2680245 0.884455346,7.61918528 C1.98712277,4.49675865 4.49656169,1.98720981 7.61885156,0.88217258 C10.2698962,0 12.1455915,0 18.0210678,0" id="Fill-1" fill="#4360DF"></path> - </g> - </g> - </g> -</svg> \ No newline at end of file diff --git a/src/skins/vector/themes/status/img/n.png b/src/skins/vector/themes/status/img/n.png deleted file mode 100644 index b8e33d41..00000000 Binary files a/src/skins/vector/themes/status/img/n.png and /dev/null differ diff --git a/src/utils/DirectoryUtils.js b/src/utils/DirectoryUtils.js deleted file mode 100644 index 72e44681..00000000 --- a/src/utils/DirectoryUtils.js +++ /dev/null @@ -1,23 +0,0 @@ -// Find a protocol 'instance' with a given instance_id -// in the supplied protocols dict -export function instanceForInstanceId(protocols, instance_id) { - if (!instance_id) return null; - for (const proto of Object.keys(protocols)) { - if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue; - for (const instance of protocols[proto].instances) { - if (instance.instance_id == instance_id) return instance; - } - } -} - -// given an instance_id, return the name of the protocol for -// that instance ID in the supplied protocols dict -export function protocolNameForInstanceId(protocols, instance_id) { - if (!instance_id) return null; - for (const proto of Object.keys(protocols)) { - if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue; - for (const instance of protocols[proto].instances) { - if (instance.instance_id == instance_id) return proto; - } - } -} diff --git a/src/vector/getconfig.js b/src/vector/getconfig.js new file mode 100644 index 00000000..984b1051 --- /dev/null +++ b/src/vector/getconfig.js @@ -0,0 +1,71 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import Promise from 'bluebird'; +import request from 'browser-request'; + +// Load the config file. First try to load up a domain-specific config of the +// form "config.$domain.json" and if that fails, fall back to config.json. +export async function getVectorConfig(relativeLocation) { + if (relativeLocation === undefined) relativeLocation = ''; + if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/'; + try { + const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`); + // 404s succeed with an empty json config, so check that there are keys + if (Object.keys(configJson).length === 0) { + throw new Error(); // throw to enter the catch + } + return configJson; + } catch (e) { + return await getConfig(relativeLocation + "config.json"); + } +} + +function getConfig(configJsonFilename) { + return new Promise(function(resolve, reject) { + request( + { method: "GET", url: configJsonFilename, qs: { cachebuster: Date.now() } }, + (err, response, body) => { + try { + if (err || response.status < 200 || response.status >= 300) { + // Lack of a config isn't an error, we should + // just use the defaults. + // Also treat a blank config as no config, assuming + // the status code is 0, because we don't get 404s + // from file: URIs so this is the only way we can + // not fail if the file doesn't exist when loading + // from a file:// URI. + if (response) { + if (response.status == 404 || (response.status == 0 && body == '')) { + resolve({}); + } + } + reject({err: err, response: response}); + return; + } + + // We parse the JSON ourselves rather than use the JSON + // parameter, since this throws a parse error on empty + // which breaks if there's no config.json and we're + // loading from the filesystem (see above). + resolve(JSON.parse(body)); + } catch (e) { + reject({err: e}); + } + }, + ); + }); +} diff --git a/src/vector/index.html b/src/vector/index.html index ec1b2025..864337ea 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -3,25 +3,25 @@ <head> <meta charset="utf-8"> <title>Riot</title> - <link rel="apple-touch-icon" sizes="57x57" href="vector-icons/apple-touch-icon-57x57.png"> - <link rel="apple-touch-icon" sizes="60x60" href="vector-icons/apple-touch-icon-60x60.png"> - <link rel="apple-touch-icon" sizes="72x72" href="vector-icons/apple-touch-icon-72x72.png"> - <link rel="apple-touch-icon" sizes="76x76" href="vector-icons/apple-touch-icon-76x76.png"> - <link rel="apple-touch-icon" sizes="114x114" href="vector-icons/apple-touch-icon-114x114.png"> - <link rel="apple-touch-icon" sizes="120x120" href="vector-icons/apple-touch-icon-120x120.png"> - <link rel="apple-touch-icon" sizes="144x144" href="vector-icons/apple-touch-icon-144x144.png"> - <link rel="apple-touch-icon" sizes="152x152" href="vector-icons/apple-touch-icon-152x152.png"> - <link rel="apple-touch-icon" sizes="180x180" href="vector-icons/apple-touch-icon-180x180.png"> + <link rel="apple-touch-icon" sizes="57x57" href="<%= require('../../res/vector-icons/apple-touch-icon-57x57.png') %>"> + <link rel="apple-touch-icon" sizes="60x60" href="<%= require('../../res/vector-icons/apple-touch-icon-60x60.png') %>"> + <link rel="apple-touch-icon" sizes="72x72" href="<%= require('../../res/vector-icons/apple-touch-icon-72x72.png') %>"> + <link rel="apple-touch-icon" sizes="76x76" href="<%= require('../../res/vector-icons/apple-touch-icon-76x76.png') %>"> + <link rel="apple-touch-icon" sizes="114x114" href="<%= require('../../res/vector-icons/apple-touch-icon-114x114.png') %>"> + <link rel="apple-touch-icon" sizes="120x120" href="<%= require('../../res/vector-icons/apple-touch-icon-120x120.png') %>"> + <link rel="apple-touch-icon" sizes="144x144" href="<%= require('../../res/vector-icons/apple-touch-icon-144x144.png') %>"> + <link rel="apple-touch-icon" sizes="152x152" href="<%= require('../../res/vector-icons/apple-touch-icon-152x152.png') %>"> + <link rel="apple-touch-icon" sizes="180x180" href="<%= require('../../res/vector-icons/apple-touch-icon-180x180.png') %>"> <link rel="manifest" href="manifest.json"> <meta name="referrer" content="no-referrer"> - <link rel="shortcut icon" href="vector-icons/favicon.ico"> + <link rel="shortcut icon" href="<%= require('../../res/vector-icons/favicon.ico') %>"> <meta name="apple-mobile-web-app-title" content="Riot"> <meta name="application-name" content="Riot"> <meta name="msapplication-TileColor" content="#da532c"> - <meta name="msapplication-TileImage" content="vector-icons/mstile-144x144.png"> - <meta name="msapplication-config" content="vector-icons/browserconfig.xml"> + <meta name="msapplication-TileImage" content="<%= require('../../res/vector-icons/mstile-144x144.png') %>"> + <meta name="msapplication-config" content="<%= require('../../res/vector-icons/browserconfig.xml') %>"> <meta name="theme-color" content="#ffffff"> - <meta property="og:image" content="https://chat.status.im/img/logos/riot-im-logo-1.png" /> + <meta property="og:image" content="<%= htmlWebpackPlugin.options.vars.og_image_url %>" /> <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { var file = htmlWebpackPlugin.files.css[i]; var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); @@ -35,23 +35,14 @@ } %> </head> <body style="height: 100%;"> - <section id="matrixchat" style="height: 100%;"></section> + <section id="matrixchat" style="height: 100%; overflow: auto;"></section> <noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? --> - <% for (var i=0; i < htmlWebpackPlugin.files.js.length; i++) { - // Not a particularly graceful way of not putting the indexeddb worker script - // into the main page - if (_.endsWith(htmlWebpackPlugin.files.js[i], 'indexeddb-worker.js')) { - %> - <script> - window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.js[i] %>'; - </script> - <% - continue; - } - %> - <script src="<%= htmlWebpackPlugin.files.js[i] %>"></script> - <% } %> - <img src="img/warning.svg" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> + <script> + window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.chunks['indexeddb-worker'].entry %>'; + </script> + <script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script> + <img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> + <img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> <audio id="messageAudio"> <source src="media/message.ogg" type="audio/ogg" /> <source src="media/message.mp3" type="audio/mpeg" /> @@ -72,8 +63,8 @@ <source src="media/busy.ogg" type="audio/ogg" /> <source src="media/busy.mp3" type="audio/mpeg" /> </audio> - <audio id="remoteAudio"/> + <audio id="remoteAudio"></audio> <!-- let CSS themes pass constants to the app --> - <div id="mx_theme_accentColor"></div><div id="mx_theme_secondaryAccentColor"/></div><div id="mx_theme_tertiaryAccentColor"/></div> + <div id="mx_theme_accentColor"></div><div id="mx_theme_secondaryAccentColor"></div><div id="mx_theme_tertiaryAccentColor"></div> </body> </html> diff --git a/src/vector/index.js b/src/vector/index.js index a00af4f8..afdad64f 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -1,6 +1,8 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd +Copyright 2018, 2019 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,20 +17,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - -// for ES6 stuff like startsWith() that Safari doesn't handle -// and babel doesn't do by default -// Note we use this, as well as the babel transform-runtime plugin -// since transform-runtime does not cover instance methods -// such as "foobar".includes("foo") which bits of our library -// code use, but the babel transform-runtime plugin allows the -// regenerator runtime to be injected early enough in the process -// (it can't be here as it's too late: the alternative is to put -// the babel-polyfill as the first 'entry' in the webpack config). -// https://babeljs.io/docs/plugins/transform-runtime/ -require('babel-polyfill'); - // Require common CSS here; this will make webpack process it into bundle.css. // Our own CSS (which is themed) is imported via separate webpack entry points // in webpack.config.js @@ -37,68 +25,61 @@ require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); require('draft-js/dist/Draft.css'); -const rageshake = require("./rageshake"); -rageshake.init().then(() => { - console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome."); - rageshake.cleanup(); -}, (err) => { - console.error("Failed to initialise rageshake: " + err); -}); +import olmWasmPath from 'olm/olm.wasm'; -window.addEventListener('beforeunload', (e) => { - console.log('riot-web closing'); - // try to flush the logs to indexeddb - rageshake.flush(); -}); +import './rageshakesetup'; +import React from 'react'; +// add React and ReactPerf to the global namespace, to make them easier to +// access via the console +global.React = React; - // add React and ReactPerf to the global namespace, to make them easier to - // access via the console -global.React = require("react"); -if (process.env.NODE_ENV !== 'production') { - global.Perf = require("react-addons-perf"); -} - -var RunModernizrTests = require("./modernizr"); // this side-effects a global -var ReactDOM = require("react-dom"); -var sdk = require("matrix-react-sdk"); -const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg"); +import './modernizr'; +import ReactDOM from 'react-dom'; +import sdk from 'matrix-react-sdk'; +import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; sdk.loadSkin(require('../component-index')); -var VectorConferenceHandler = require('../VectorConferenceHandler'); +import VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler'; import Promise from 'bluebird'; -var request = require('browser-request'); import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; -// Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects -import { _t } from 'matrix-react-sdk/lib/languageHandler'; +import {_t, _td, newTranslatableError} from 'matrix-react-sdk/lib/languageHandler'; +import AutoDiscoveryUtils from 'matrix-react-sdk/lib/utils/AutoDiscoveryUtils'; +import {AutoDiscovery} from "matrix-js-sdk/lib/autodiscovery"; +import * as Lifecycle from "matrix-react-sdk/lib/Lifecycle"; import url from 'url'; import {parseQs, parseQsFromFragment} from './url_utils'; -import Platform from './platform'; + +import ElectronPlatform from './platform/ElectronPlatform'; +import WebPlatform from './platform/WebPlatform'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore"; +import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore"; import Tinter from 'matrix-react-sdk/lib/Tinter'; import SdkConfig from "matrix-react-sdk/lib/SdkConfig"; -var lastLocationHashSet = null; +import Olm from 'olm'; -var CallHandler = require("matrix-react-sdk/lib/CallHandler"); -CallHandler.setConferenceHandler(VectorConferenceHandler); +import CallHandler from 'matrix-react-sdk/lib/CallHandler'; -MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script); +let lastLocationHashSet = null; + +// Disable warnings for now: we use deprecated bluebird functions +// and need to migrate, but they spam the console with warnings. +Promise.config({warnings: false}); function checkBrowserFeatures(featureList) { if (!window.Modernizr) { console.error("Cannot check features - Modernizr global is missing."); return false; } - var featureComplete = true; - for (var i = 0; i < featureList.length; i++) { + let featureComplete = true; + for (let i = 0; i < featureList.length; i++) { if (window.Modernizr[featureList[i]] === undefined) { console.error( "Looked for feature '%s' but Modernizr has no results for this. " + - "Has it been configured correctly?", featureList[i] + "Has it been configured correctly?", featureList[i], ); return false; } @@ -112,11 +93,6 @@ function checkBrowserFeatures(featureList) { return featureComplete; } -var validBrowser = checkBrowserFeatures([ - "displaytable", "flexbox", "es5object", "es5function", "localstorage", - "objectfit", "indexeddb", "webworkers", -]); - // Parse the given window.location and return parameters that can be used when calling // MatrixChat.showScreen(screen, params) function getScreenFromLocation(location) { @@ -124,7 +100,7 @@ function getScreenFromLocation(location) { return { screen: fragparts.location.substring(1), params: fragparts.params, - } + }; } // Here, we do some crude URL analysis to allow @@ -138,7 +114,7 @@ function routeUrl(location) { } function onHashChange(ev) { - if (decodeURIComponent(window.location.hash) == lastLocationHashSet) { + if (decodeURIComponent(window.location.hash) === lastLocationHashSet) { // we just set this: no need to route it! return; } @@ -147,12 +123,12 @@ function onHashChange(ev) { // This will be called whenever the SDK changes screens, // so a web page can update the URL bar appropriately. -var onNewScreen = function(screen) { +function onNewScreen(screen) { console.log("newscreen "+screen); - var hash = '#/' + screen; + const hash = '#/' + screen; lastLocationHashSet = hash; window.location.hash = hash; -}; +} // We use this to work out what URL the SDK should // pass through when registering to allow the user to @@ -163,9 +139,9 @@ var onNewScreen = function(screen) { // If we're in electron, we should never pass through a file:// URL otherwise // the identity server will try to 302 the browser to it, which breaks horribly. // so in that instance, hardcode to use riot.im/app for now instead. -var makeRegistrationUrl = function(params) { +function makeRegistrationUrl(params) { let url; - if (window.location.protocol === "file:") { + if (window.location.protocol === "vector:") { url = 'https://riot.im/app/#/register'; } else { url = ( @@ -178,7 +154,7 @@ var makeRegistrationUrl = function(params) { const keys = Object.keys(params); for (let i = 0; i < keys.length; ++i) { - if (i == 0) { + if (i === 0) { url += '?'; } else { url += '&'; @@ -189,120 +165,96 @@ var makeRegistrationUrl = function(params) { return url; } -window.addEventListener('hashchange', onHashChange); - -function getConfig(configJsonFilename) { - let deferred = Promise.defer(); - - request( - { method: "GET", url: configJsonFilename }, - (err, response, body) => { - if (err || response.status < 200 || response.status >= 300) { - // Lack of a config isn't an error, we should - // just use the defaults. - // Also treat a blank config as no config, assuming - // the status code is 0, because we don't get 404s - // from file: URIs so this is the only way we can - // not fail if the file doesn't exist when loading - // from a file:// URI. - if (response) { - if (response.status == 404 || (response.status == 0 && body == '')) { - deferred.resolve({}); - } - } - deferred.reject({err: err, response: response}); - return; - } - - // We parse the JSON ourselves rather than use the JSON - // parameter, since this throws a parse error on empty - // which breaks if there's no config.json and we're - // loading from the filesystem (see above). - deferred.resolve(JSON.parse(body)); - } - ); - - return deferred.promise; -} - function onTokenLoginCompleted() { // if we did a token login, we're now left with the token, hs and is // url as query params in the url; a little nasty but let's redirect to // clear them. - var parsedUrl = url.parse(window.location.href); + const parsedUrl = url.parse(window.location.href); parsedUrl.search = ""; - var formatted = url.format(parsedUrl); + const formatted = url.format(parsedUrl); console.log("Redirecting to " + formatted + " to drop loginToken " + "from queryparams"); window.location.href = formatted; } async function loadApp() { + if (window.vector_indexeddb_worker_script === undefined) { + // If this is missing, something has probably gone wrong with + // the bundling. The js-sdk will just fall back to accessing + // indexeddb directly with no worker script, but we want to + // make sure the indexeddb script is present, so fail hard. + throw new Error("Missing indexeddb worker script!"); + } + MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script); + CallHandler.setConferenceHandler(VectorConferenceHandler); + + window.addEventListener('hashchange', onHashChange); + + await loadOlm(); + + // set the platform for react sdk + if (window.ipcRenderer) { + console.log("Using Electron platform"); + const plaf = new ElectronPlatform(); + PlatformPeg.set(plaf); + + // Electron only: see if we need to do a one-time data + // migration + if (window.localStorage.getItem('mx_user_id') === null) { + console.log("Migrating session from old origin..."); + await plaf.migrateFromOldOrigin(); + console.log("Origin migration complete"); + } + } else { + console.log("Using Web platform"); + PlatformPeg.set(new WebPlatform()); + } + + const platform = PlatformPeg.get(); + + let configJson; + let configError; + let configSyntaxError = false; + try { + configJson = await platform.getConfig(); + } catch (e) { + configError = e; + + if (e && e.err && e.err instanceof SyntaxError) { + console.error("SyntaxError loading config:", e); + configSyntaxError = true; + configJson = {}; // to prevent errors between here and loading CSS for the error box + } + } + + // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure + // granular settings are loaded correctly and to avoid duplicating the override logic for the theme. + SdkConfig.put(configJson); + + // Load language after loading config.json so that settingsDefaults.language can be applied await loadLanguage(); const fragparts = parseQsFromFragment(window.location); const params = parseQs(window.location); - // set the platform for react sdk (our Platform object automatically picks the right one) - PlatformPeg.set(new Platform()); - - // Load the config file. First try to load up a domain-specific config of the - // form "config.$domain.json" and if that fails, fall back to config.json. - let configJson; - let configError; - try { - try { - configJson = await getConfig(`config.${document.domain}.json`); - // 404s succeed with an empty json config, so check that there are keys - if (Object.keys(configJson).length === 0) { - throw new Error(); // throw to enter the catch - } - } catch (e) { - configJson = await getConfig("config.json"); - } - } catch (e) { - configError = e; - } - - // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure - // granular settings are loaded correctly and to avoid duplicating the override logic for the theme. - SdkConfig.put(configJson); - // don't try to redirect to the native apps if we're // verifying a 3pid (but after we've loaded the config) - const preventRedirect = Boolean(fragparts.params.client_secret); + // or if the user is following a deep link + // (https://github.com/vector-im/riot-web/issues/7378) + const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0; if (!preventRedirect) { - if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { - // FIXME: ugly status hardcoding - if (SettingsStore.getValue("theme") === 'status') { - window.location = "https://status.im/join-riot.html"; + const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; + const isAndroid = /Android/.test(navigator.userAgent); + if (isIos || isAndroid) { + if (document.cookie.indexOf("riot_mobile_redirect_to_guide=false") === -1) { + window.location = "mobile_guide/"; return; } - else { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067"; - return; - } - } - } - else if (/Android/.test(navigator.userAgent)) { - // FIXME: ugly status hardcoding - if (SettingsStore.getValue("theme") === 'status') { - window.location = "https://status.im/join-riot.html"; - return; - } - else { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha"; - return; - } - } } } // as quickly as we possibly can, set a default theme... - const styleElements = Object.create(null); let a; const theme = SettingsStore.getValue("theme"); for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) { @@ -313,67 +265,168 @@ async function loadApp() { if (match) { if (match[1] === theme) { // remove the disabled flag off the stylesheet - a.removeAttribute("disabled"); + + // Firefox requires setting the attribute to false, so do + // that instead of removing it. Related: + // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135 + a.disabled = false; // in case the Tinter.tint() in MatrixChat fires before the // CSS has actually loaded (which in practice happens)... - // FIXME: we should probably block loading the app or even - // showing a spinner until the theme is loaded, to avoid - // flashes of unstyled content. - a.onload = () => { + // This if fixes Tinter.setTheme to not fire on Firefox + // in case it is the first time loading Riot. + // `InstallTrigger` is a Object which only exists on Firefox + // (it is used for their Plugins) and can be used as a + // feature check. + // Firefox loads css always before js. This is why we dont use + // onload or it's EventListener as thoose will never trigger. + if (typeof InstallTrigger !== 'undefined') { Tinter.setTheme(theme); - }; + } else { + // FIXME: we should probably block loading the app or even + // showing a spinner until the theme is loaded, to avoid + // flashes of unstyled content. + a.onload = () => { + Tinter.setTheme(theme); + }; + } + } else { + // Firefox requires this to not be done via `setAttribute` + // or via HTML. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135 + a.disabled = true; } } } - if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { - console.log('User has previously accepted risks in using an unsupported browser'); - validBrowser = true; + // Now that we've loaded the theme (CSS), display the config syntax error if needed. + if (configSyntaxError) { + const errorMessage = ( + <div> + <p> + {_t( + "Your Riot configuration contains invalid JSON. Please correct the problem " + + "and reload the page.", + )} + </p> + <p> + {_t( + "The message from the parser is: %(message)s", + {message: configError.err.message || _t("Invalid JSON")}, + )} + </p> + </div> + ); + + const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage"); + window.matrixChat = ReactDOM.render( + <GenericErrorPage message={errorMessage} title={_t("Your Riot is misconfigured")} />, + document.getElementById('matrixchat'), + ); + return; } - console.log("Vector starting at "+window.location); + const validBrowser = checkBrowserFeatures([ + "displaytable", "flexbox", "es5object", "es5function", "localstorage", + "objectfit", "indexeddb", "webworkers", + ]); + + const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser'); + + const urlWithoutQuery = window.location.protocol + '//' + window.location.host + window.location.pathname; + console.log("Vector starting at " + urlWithoutQuery); if (configError) { window.matrixChat = ReactDOM.render(<div className="error"> Unable to load config file: please refresh the page to try again. </div>, document.getElementById('matrixchat')); - } else if (validBrowser) { - const platform = PlatformPeg.get(); + } else if (validBrowser || acceptInvalidBrowser) { platform.startUpdater(); - const MatrixChat = sdk.getComponent('structures.MatrixChat'); - window.matrixChat = ReactDOM.render( - <MatrixChat - onNewScreen={onNewScreen} - makeRegistrationUrl={makeRegistrationUrl} - ConferenceHandler={VectorConferenceHandler} - config={configJson} - realQueryParams={params} - startingFragmentQueryParams={fragparts.params} - enableGuest={!configJson.disable_guests} - onTokenLoginCompleted={onTokenLoginCompleted} - initialScreenAfterLogin={getScreenFromLocation(window.location)} - defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()} - />, - document.getElementById('matrixchat') - ); + // Don't bother loading the app until the config is verified + verifyServerConfig().then((newConfig) => { + const MatrixChat = sdk.getComponent('structures.MatrixChat'); + window.matrixChat = ReactDOM.render( + <MatrixChat + onNewScreen={onNewScreen} + makeRegistrationUrl={makeRegistrationUrl} + ConferenceHandler={VectorConferenceHandler} + config={newConfig} + realQueryParams={params} + startingFragmentQueryParams={fragparts.params} + enableGuest={!configJson.disable_guests} + onTokenLoginCompleted={onTokenLoginCompleted} + initialScreenAfterLogin={getScreenFromLocation(window.location)} + defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()} + />, + document.getElementById('matrixchat'), + ); + }).catch(err => { + console.error(err); + + let errorMessage = err.translatedMessage + || _t("Unexpected error preparing the app. See console for details."); + errorMessage = <span>{errorMessage}</span>; + + // Like the compatibility page, AWOOOOOGA at the user + const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage"); + window.matrixChat = ReactDOM.render( + <GenericErrorPage message={errorMessage} title={_t("Your Riot is misconfigured")} />, + document.getElementById('matrixchat'), + ); + }); } else { console.error("Browser is missing required features."); // take to a different landing page to AWOOOOOGA at the user - var CompatibilityPage = sdk.getComponent("structures.CompatibilityPage"); + const CompatibilityPage = sdk.getComponent("structures.CompatibilityPage"); window.matrixChat = ReactDOM.render( <CompatibilityPage onAccept={function() { if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true); - validBrowser = true; console.log("User accepts the compatibility risks."); loadApp(); }} />, - document.getElementById('matrixchat') + document.getElementById('matrixchat'), ); } } +function loadOlm() { + /* Load Olm. We try the WebAssembly version first, and then the legacy, + * asm.js version if that fails. For this reason we need to wait for this + * to finish before continuing to load the rest of the app. In future + * we could somehow pass a promise down to react-sdk and have it wait on + * that so olm can be loading in parallel with the rest of the app. + * + * We also need to tell the Olm js to look for its wasm file at the same + * level as index.html. It really should be in the same place as the js, + * ie. in the bundle directory, but as far as I can tell this is + * completely impossible with webpack. We do, however, use a hashed + * filename to avoid caching issues. + */ + return Olm.init({ + locateFile: () => olmWasmPath, + }).then(() => { + console.log("Using WebAssembly Olm"); + }).catch((e) => { + console.log("Failed to load Olm: trying legacy version", e); + return new Promise((resolve, reject) => { + const s = document.createElement('script'); + s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too + s.onload = resolve; + s.onerror = reject; + document.body.appendChild(s); + }).then(() => { + // Init window.Olm, ie. the one just loaded by the script tag, + // not 'Olm' which is still the failed wasm version. + return window.Olm.init(); + }).then(() => { + console.log("Using legacy Olm"); + }).catch((e) => { + console.log("Both WebAssembly and asm.js Olm failed!", e); + }); + }); +} + async function loadLanguage() { const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true); let langs = []; @@ -393,4 +446,99 @@ async function loadLanguage() { } } +async function verifyServerConfig() { + let validatedConfig; + try { + console.log("Verifying homeserver configuration"); + + // Note: the query string may include is_url and hs_url - we only respect these in the + // context of email validation. Because we don't respect them otherwise, we do not need + // to parse or consider them here. + + // Note: Although we throw all 3 possible configuration options through a .well-known-style + // verification, we do not care if the servers are online at this point. We do moderately + // care if they are syntactically correct though, so we shove them through the .well-known + // validators for that purpose. + + const config = SdkConfig.get(); + let wkConfig = config['default_server_config']; // overwritten later under some conditions + const serverName = config['default_server_name']; + const hsUrl = config['default_hs_url']; + const isUrl = config['default_is_url']; + + const incompatibleOptions = [wkConfig, serverName, hsUrl].filter(i => !!i); + if (incompatibleOptions.length > 1) { + // noinspection ExceptionCaughtLocallyJS + throw newTranslatableError(_td( + "Invalid configuration: can only specify one of default_server_config, default_server_name, " + + "or default_hs_url.", + )); + } + if (incompatibleOptions.length < 1) { + // noinspection ExceptionCaughtLocallyJS + throw newTranslatableError(_td("Invalid configuration: no default server specified.")); + } + + if (hsUrl) { + console.log("Config uses a default_hs_url - constructing a default_server_config using this information"); + console.warn( + "DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use " + + "default_server_config instead.", + ); + + wkConfig = { + "m.homeserver": { + "base_url": hsUrl, + }, + }; + if (isUrl) { + wkConfig["m.identity_server"] = { + "base_url": isUrl, + }; + } + } + + let discoveryResult = null; + if (wkConfig) { + console.log("Config uses a default_server_config - validating object"); + discoveryResult = await AutoDiscovery.fromDiscoveryConfig(wkConfig); + } + + if (serverName) { + console.log("Config uses a default_server_name - doing .well-known lookup"); + console.warn( + "DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please " + + "use default_server_config instead.", + ); + discoveryResult = await AutoDiscovery.findClientConfig(serverName); + } + + validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true); + } catch (e) { + const {hsUrl, isUrl, userId} = Lifecycle.getLocalStorageSessionVars(); + if (hsUrl && userId) { + console.error(e); + console.warn("A session was found - suppressing config error and using the session's homeserver"); + + console.log("Using pre-existing hsUrl and isUrl: ", {hsUrl, isUrl}); + validatedConfig = await AutoDiscoveryUtils.validateServerConfigWithStaticUrls(hsUrl, isUrl, true); + } else { + // the user is not logged in, so scream + throw e; + } + } + + + validatedConfig.isDefault = true; + + // Just in case we ever have to debug this + console.log("Using homeserver config:", validatedConfig); + + // Add the newly built config to the actual config for use by the app + console.log("Updating SdkConfig with validated discovery information"); + SdkConfig.add({"validated_server_config": validatedConfig}); + + return SdkConfig.get(); +} + loadApp(); diff --git a/src/vector/indexedbd-worker.js b/src/vector/indexeddb-worker.js similarity index 94% rename from src/vector/indexedbd-worker.js rename to src/vector/indexeddb-worker.js index 2e94509a..3e1fe35c 100644 --- a/src/vector/indexedbd-worker.js +++ b/src/vector/indexeddb-worker.js @@ -18,4 +18,4 @@ import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js'; const remoteWorker = new IndexedDBStoreWorker(postMessage); -onmessage = remoteWorker.onMessage; +global.onmessage = remoteWorker.onMessage; diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html new file mode 100644 index 00000000..0491d28c --- /dev/null +++ b/src/vector/mobile_guide/index.html @@ -0,0 +1,350 @@ +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<head> + +<style type="text/css"> + +/* By default, hide the custom IS stuff - enabled in JS */ +#custom_is, #is_url { + display: none; +} + +body { + background: #c5e0f7; + background: -moz-linear-gradient(top, #c5e0f7 0%, #ffffff 100%); + background: -webkit-linear-gradient(top, #c5e0f7 0%,#ffffff 100%); + background: linear-gradient(to bottom, #c5e0f7 0%,#ffffff 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c5e0f7', endColorstr='#ffffff',GradientType=0 ); + max-width: 680px; + margin: auto; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +.mx_Button { + border: 0; + border-radius: 4px; + font-size: 18px; + margin-left: 4px; + margin-right: 4px; + min-width: 80px; + background-color: #03B381; + color: #fff; + cursor: pointer; + padding: 12px 22px; + word-break: break-word; + text-decoration: none; +} + +.mx_Center { + justify-content: center; +} + +.mx_ClearDecoration { + text-decoration: none !important; +} + +.mx_HomePage_header { + color: #2E2F32; + display: flex; + align-items: center; + justify-content: center; +} + +.mx_HomePage h3 { + margin-top: 30px; +} + +.mx_HomePage_header { + align-items: center; +} + +.mx_HomePage_col { + display: flex; + flex-direction: row; +} + +.mx_HomePage_row { + flex: 1 1 0; + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.mx_HomePage_logo { + margin-right: 20px; +} + +.mx_HomePage_container { + display: block ! important; + margin: 10px 20px; +} + +.mx_HomePage_errorContainer { + display: none; /* shown in JS if needed */ + margin: 20px; + border: 1px solid red; + background-color: #ffb9b9; + padding: 5px; +} + +.mx_HomePage_container h1, +.mx_HomePage_container h2, +.mx_HomePage_container h3, +.mx_HomePage_container h4 { + font-weight: 600; + margin-bottom: 32px; +} + +.mx_Spacer { + margin-top: 24px; +} + +.mx_FooterLink { + color: #368BD6; + text-decoration: none; +} + +.mx_Subtext { + font-size: 14px; +} + +.mx_SubtextTop { + margin-top: 32px; +} + +@media screen and (max-width: 1120px) { + body { + font-size: 20px; + } + h1 { + font-size: 20px; + } + h4 { + font-size: 16px; + } + .mx_Button { + font-size: 18px; + padding: 14px 28px; + } + .mx_HomePage_header { + justify-content: left; + } + .mx_Spacer { + margin-top: 24px; + } +} + + + +</style> + +<meta name="apple-itunes-app" content="app-id=id1083446067"> + +</head> + +<body> + + <div class="mx_HomePage_errorContainer"> + <!-- populated by JS if needed --> + </div> + + <div class="mx_HomePage_container"> + <div class="mx_HomePage_header"> + <span class="mx_HomePage_logo"> + <svg width="34px" height="42px" viewBox="0 0 34 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="blue" transform="translate(1.000000, 1.000000)"> + <path d="M11.6756011,11.3799998 L11.6756011,17.149751 L17.5348252,17.1437188 C17.6092313,17.1437188 17.6771226,17.1417081 17.744671,17.1373516 C19.2852547,17.0358104 20.4894678,15.7727453 20.4894678,14.2620269 C20.4894678,12.6725555 19.1669592,11.3799998 17.5406542,11.3799998 L11.6756011,11.3799998 Z M5.88083947,39.8778856 C2.68069092,39.8778856 0.0860778277,37.342372 0.0860778277,34.2143673 L0.0860778277,23.4205057 C0.0651618241,23.2247959 0.0538388139,23.025735 0.0538388139,22.8243282 C0.0535037238,22.6192351 0.0644760535,22.416823 0.0860778277,22.2170918 L0.0860778277,5.71648153 C0.0860778277,2.58847681 2.68069092,0.0526281121 5.88083947,0.0526281121 L17.5406542,0.0526281121 C25.5573126,0.0526281121 32.079334,6.42693471 32.079334,14.2620269 C32.079334,21.7113966 26.1261594,27.9382507 18.5264495,28.4382489 C18.2034515,28.4600316 17.8705099,28.4710906 17.5406542,28.4710906 L11.6756011,28.4767876 L11.6756011,34.2143673 C11.6756011,37.342372 9.08133089,39.8778856 5.88083947,39.8778856 L5.88083947,39.8778856 Z" id="Fill-1" fill="#A2DDEF"></path> + <path d="M11.6756011,11.3799998 L11.6756011,17.149751 L17.5348252,17.1437188 C17.6092313,17.1437188 17.6771226,17.1417081 17.744671,17.1373516 C19.2852547,17.0358104 20.4894678,15.7727453 20.4894678,14.2620269 C20.4894678,12.6725555 19.1669592,11.3799998 17.5406542,11.3799998 L11.6756011,11.3799998 Z M5.88083947,39.8778856 C2.68069092,39.8778856 0.0860778277,37.342372 0.0860778277,34.2143673 L0.0860778277,23.4205057 C0.0651618241,23.2247959 0.0538388139,23.025735 0.0538388139,22.8243282 C0.0535037238,22.6192351 0.0644760535,22.416823 0.0860778277,22.2170918 L0.0860778277,5.71648153 C0.0860778277,2.58847681 2.68069092,0.0526281121 5.88083947,0.0526281121 L17.5406542,0.0526281121 C25.5573126,0.0526281121 32.079334,6.42693471 32.079334,14.2620269 C32.079334,21.7113966 26.1261594,27.9382507 18.5264495,28.4382489 C18.2034515,28.4600316 17.8705099,28.4710906 17.5406542,28.4710906 L11.6756011,28.4767876 L11.6756011,34.2143673 C11.6756011,37.342372 9.08133089,39.8778856 5.88083947,39.8778856 Z" id="Stroke-3" stroke="#368BD6" stroke-width="1.02344117"></path> + <path d="M5.88087375,34.2142667 L5.88087375,5.716381 L17.5406885,5.716381 C22.3695423,5.716381 26.2842638,9.54243948 26.2842638,14.2619264 C26.2842638,18.7857035 22.6877398,22.488438 18.1373089,22.7876997 C17.939807,22.8007693 17.7412764,22.8074717 17.5406885,22.8074717 L5.84864254,22.8188658" id="Stroke-5" stroke="#368BD6" stroke-width="1.02344117" stroke-linecap="round"></path> + <path d="M22.882533,19.5375774 L31.0723484,30.9604582 C32.909185,33.5221111 32.2731328,37.0539347 29.6524604,38.8484992 C28.640263,39.5418613 27.480282,39.8746349 26.3319591,39.8746349 C24.505752,39.8746349 22.709033,39.0334852 21.5812832,37.4607697 L13.3914677,26.0378889 C11.5549741,23.476236 12.1910263,19.9444124 14.8116987,18.1498479 C17.432371,16.3539429 21.0460393,16.9759245 22.882533,19.5375774 Z M10.6558259,2.46823596 C11.5442417,3.70717248 11.8854126,5.21051822 11.6165905,6.69945383 C11.3474256,8.1893948 10.5004989,9.48731234 9.23182325,10.3549365 C6.61252242,12.1461499 2.98925341,11.5224926 1.15515992,8.96452603 C0.266744094,7.72558951 -0.0744267831,6.22257889 0.194738181,4.73297304 C0.463560259,3.24336719 1.31048696,1.94511453 2.57950547,1.07782546 C5.19880631,-0.713387872 8.82173243,-0.08973062 10.6558259,2.46823596 Z" id="Combined-Shape" fill="#368BD6"></path> + </g> + </g> + </svg> + </span> + <p>Set up Riot on iOS or Android</p> + </div> + <div class="mx_HomePage_col"> + <div class="mx_HomePage_row"> + <div> + <h2 id="step1_heading">Install the app</h2> + <p><strong>iOS</strong> (iPhone or iPad)</p> + <a href="https://itunes.apple.com/app/riot-im/id1083446067?mt=8" target="_blank" class="mx_ClearDecoration"> + <svg width="144px" height="48px" viewBox="0 0 120 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <desc>Download on the App Store.</desc> + <defs></defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="App-Store-badge" fill-rule="nonzero"> + <g id="Group"> + <g id="Shape"> + <path d="M110.13477,0 L9.53468,0 C9.16798,0 8.80568,0 8.43995,0.002 C8.1338,0.004 7.83009,0.00981 7.521,0.0147 C6.84951368,0.0226018036 6.17960647,0.0816762599 5.5171,0.19141 C4.85552408,0.303532628 4.21467252,0.51491574 3.61622,0.81841 C3.01849941,1.12447171 2.47234502,1.52216753 1.99757,1.99707 C1.5203025,2.47063699 1.12246318,3.01801638 0.81935,3.61816 C0.515400242,4.21710912 0.304640498,4.8589383 0.19435,5.52148 C0.0830109412,6.18318491 0.0230983806,6.85252054 0.01515,7.52348 C0.00587,7.83008 0.00489,8.1377 0,8.44434 L0,31.5586 C0.00489,31.8691 0.00587,32.1699 0.01515,32.4805 C0.023100818,33.1514262 0.0830133796,33.8207284 0.19435,34.4824 C0.304335953,35.145329 0.515108158,35.7875266 0.81935,36.3867 C1.12232555,36.9849029 1.52022081,37.5300662 1.99757,38.001 C2.47054482,38.478014 3.01705224,38.8759804 3.61622,39.1797 C4.21466797,39.4840065 4.85545044,39.6966478 5.5171,39.8105 C6.1797191,39.9193547 6.84955741,39.9784532 7.521,39.9873 C7.83009,39.9941 8.1338,39.998 8.43995,39.998 C8.80567,40 9.168,40 9.53468,40 L110.13477,40 C110.49417,40 110.85937,40 111.21877,39.998 C111.52347,39.998 111.83597,39.9941 112.14067,39.9873 C112.810843,39.9789237 113.47942,39.9198215 114.14067,39.8105 C114.804454,39.6958464 115.447534,39.4832614 116.04887,39.1797 C116.647497,38.8758046 117.1935,38.4778491 117.66607,38.001 C118.142188,37.5282218 118.540932,36.9834573 118.84767,36.3867 C119.149629,35.7870908 119.358395,35.1449445 119.46677,34.4824 C119.578285,33.8206376 119.640323,33.1514843 119.65237,32.4805 C119.65627,32.1699 119.65627,31.8691 119.65627,31.5586 C119.66407,31.1953 119.66407,30.834 119.66407,30.4648 L119.66407,9.53613 C119.66407,9.16992 119.66407,8.80664 119.65627,8.44434 C119.65627,8.1377 119.65627,7.83008 119.65237,7.52344 C119.640326,6.85242244 119.578287,6.18323567 119.46677,5.52144 C119.358093,4.8592816 119.149339,4.21750328 118.84767,3.61812 C118.230394,2.41519608 117.251573,1.4360254 116.04887,0.81832 C115.447532,0.51556738 114.804383,0.30424041 114.14067,0.19132 C113.479535,0.0811027831 112.810888,0.0220077649 112.14067,0.01456 C111.83597,0.00968 111.52347,0.00382 111.21877,0.00187 C110.85937,-0.00013 110.49417,-0.00013 110.13477,-0.00013 L110.13477,0 Z" fill="#A6A6A6"></path> + <path d="M8.44483,39.125 C8.14015,39.125 7.84283,39.1211 7.54054,39.1143 C6.91432177,39.1061407 6.28956717,39.051625 5.6714,38.9512 C5.0949903,38.8519282 4.53660424,38.6672645 4.01466,38.4033 C3.4975017,38.1415227 3.02581177,37.7982729 2.61766,37.3867 C2.20360033,36.9799753 1.85887673,36.508244 1.59715,35.9902 C1.33253926,35.4687891 1.14941288,34.9098996 1.05415,34.333 C0.951274358,33.7131149 0.895614374,33.0863132 0.88765,32.458 C0.88131,32.2471 0.87301,31.5449 0.87301,31.5449 L0.87301,8.44434 C0.87301,8.44434 0.88185,7.75293 0.8877,7.5498 C0.895325827,6.92248205 0.950662148,6.2966531 1.05323,5.67773 C1.14866872,5.09925008 1.33193687,4.53874887 1.59669,4.01563 C1.85745482,3.49794385 2.20026458,3.02586029 2.61183,2.61768 C3.02293283,2.20562142 3.49613161,1.86060412 4.01417,1.59521 C4.53491467,1.3320936 5.09224545,1.14873255 5.66749,1.05127 C6.28768733,0.949836139 6.91461084,0.894996084 7.543,0.88721 L8.44532,0.875 L111.21387,0.875 L112.12697,0.8877 C112.749643,0.895099198 113.370872,0.949450006 113.98537,1.05029 C114.566438,1.14897507 115.129577,1.33361553 115.65627,1.59814 C116.694088,2.13298605 117.538542,2.97916295 118.07127,4.01807 C118.331797,4.53757756 118.512239,5.09350676 118.60647,5.66699 C118.710259,6.29099138 118.768347,6.92173834 118.78027,7.5542 C118.78317,7.8374 118.78317,8.1416 118.78317,8.44434 C118.79107,8.81934 118.79107,9.17627 118.79107,9.53613 L118.79107,30.4648 C118.79107,30.8281 118.79107,31.1826 118.78317,31.54 C118.78317,31.8652 118.78317,32.1631 118.77927,32.4697 C118.767605,33.0908757 118.710486,33.7103642 118.60837,34.3232 C118.51506,34.9042612 118.33293,35.4675131 118.06837,35.9932 C117.804793,36.5056211 117.462049,36.9732662 117.05277,37.3789 C116.644251,37.7926846 116.171729,38.1379427 115.65337,38.4014 C115.128136,38.6673937 114.565826,38.8527403 113.98537,38.9512 C113.36725,39.052161 112.742435,39.1066802 112.11617,39.1143 C111.82327,39.1211 111.51657,39.125 111.21877,39.125 L110.13477,39.127 L8.44483,39.125 Z" fill="#000000"></path> + </g> + <g id="_Group_" transform="translate(9.000000, 8.000000)" fill="#FFFFFF"> + <g id="_Group_2"> + <g id="_Group_3"> + <path d="M15.76888,12.30068 C15.790737,10.6042091 16.6801229,9.03718611 18.12544,8.14862 C17.2095126,6.84051277 15.730392,6.04087835 14.13428,5.99094 C12.45504,5.81468 10.82709,6.99577 9.97138,6.99577 C9.09911,6.99577 7.78161,6.00844 6.36288,6.03763 C4.49620126,6.09793842 2.79813717,7.13352548 1.88996,8.7655 C-0.04404,12.11392 1.39855,17.03497 3.25116,19.74158 C4.17806,21.06693 5.26134,22.54738 6.67879,22.49488 C8.06585,22.43735 8.58389,21.6104 10.25819,21.6104 C11.91695,21.6104 12.40298,22.49488 13.84919,22.4615 C15.33757,22.43734 16.27532,21.13026 17.1697,19.79236 C17.8356761,18.8479997 18.3481437,17.8042759 18.68812,16.69985 C16.9203766,15.9521813 15.7709432,14.2200343 15.76888,12.30068 Z" id="_Path_"></path> + <path d="M13.03725,4.21089 C13.8487766,3.23668191 14.248585,1.98450245 14.15177,0.72027 C12.9119378,0.850490487 11.7666802,1.44304968 10.94419,2.37988 C10.1320187,3.30418903 9.72057463,4.51343268 9.80048,5.74127 C11.0569368,5.75420677 12.2499161,5.19015322 13.03725,4.21089 Z" id="_Path_2"></path> + </g> + </g> + <g id="Group" transform="translate(25.000000, 9.000000)"> + <path d="M8.30227,10.13965 L3.56887,10.13965 L2.43215,13.4961 L0.42727,13.4961 L4.91067,1.0781 L6.99367,1.0781 L11.47707,13.4961 L9.438,13.4961 L8.30227,10.13965 Z M4.0591,8.59082 L7.8111,8.59082 L5.96149,3.14355 L5.90973,3.14355 L4.0591,8.59082 Z" id="Shape"></path> + <path d="M21.15969,8.96973 C21.15969,11.78321 19.65383,13.59082 17.38137,13.59082 C16.2067553,13.6522646 15.1003324,13.0370307 14.53274,12.00682 L14.48974,12.00682 L14.48974,16.4912 L12.63134,16.4912 L12.63134,4.44238 L14.4302,4.44238 L14.4302,5.94824 L14.46438,5.94824 C15.0571883,4.92448792 16.1648043,4.30951884 17.34719,4.34765 C19.645,4.34766 21.15969,6.16406 21.15969,8.96973 Z M19.24953,8.96973 C19.24953,7.13673 18.30226,5.93164 16.85695,5.93164 C15.43703,5.93164 14.48195,7.16211 14.48195,8.96973 C14.48195,10.79395 15.43703,12.01563 16.85695,12.01563 C18.30227,12.01563 19.24953,10.81934 19.24953,8.96973 Z" id="Shape"></path> + <path d="M31.12453,8.96973 C31.12453,11.78321 29.61867,13.59082 27.34621,13.59082 C26.1715953,13.6522646 25.0651724,13.0370307 24.49758,12.00682 L24.45458,12.00682 L24.45458,16.4912 L22.59618,16.4912 L22.59618,4.44238 L24.395,4.44238 L24.395,5.94824 L24.42918,5.94824 C25.0219926,4.92448854 26.1296128,4.30952307 27.312,4.34766 C29.60988,4.34766 31.12453,6.16406 31.12453,8.96973 Z M29.21437,8.96973 C29.21437,7.13673 28.2671,5.93164 26.82179,5.93164 C25.40187,5.93164 24.44679,7.16211 24.44679,8.96973 C24.44679,10.79395 25.40187,12.01563 26.82179,12.01563 C28.26711,12.01563 29.21438,10.81934 29.21438,8.96973 L29.21437,8.96973 Z" id="Shape"></path> + <path d="M37.71047,10.03613 C37.84817,11.26758 39.04447,12.07613 40.67922,12.07613 C42.24563,12.07613 43.37258,11.26754 43.37258,10.15718 C43.37258,9.19331 42.69289,8.61618 41.08352,8.22066 L39.47415,7.83296 C37.19388,7.28218 36.13528,6.21577 36.13528,4.4853 C36.13528,2.34272 38.00247,0.87104 40.65383,0.87104 C43.27783,0.87104 45.07668,2.34272 45.13723,4.4853 L43.26123,4.4853 C43.14893,3.24604 42.12451,2.498 40.62744,2.498 C39.13037,2.498 38.10596,3.25484 38.10596,4.3564 C38.10596,5.23433 38.76026,5.75093 40.36084,6.1464 L41.729,6.48234 C44.27685,7.08488 45.33545,8.10834 45.33545,9.92472 C45.33545,12.24796 43.48486,13.70304 40.5415,13.70304 C37.78759,13.70304 35.92822,12.28214 35.8081,10.03604 L37.71047,10.03613 Z" id="Shape"></path> + <path d="M49.34621,2.2998 L49.34621,4.44238 L51.06789,4.44238 L51.06789,5.91406 L49.34621,5.91406 L49.34621,10.90527 C49.34621,11.68066 49.69094,12.04199 50.44777,12.04199 C50.6521614,12.0384259 50.8562221,12.0240726 51.0591,11.99899 L51.0591,13.46188 C50.7188283,13.5254596 50.3729708,13.5542545 50.02687,13.54782 C48.19387,13.54782 47.47902,12.85934 47.47902,11.10348 L47.47902,5.91406 L46.16262,5.91406 L46.16262,4.44238 L47.479,4.44238 L47.479,2.2998 L49.34621,2.2998 Z" id="Shape"></path> + <path d="M52.065,8.96973 C52.065,6.1211 53.74273,4.33106 56.35895,4.33106 C58.98395,4.33106 60.65387,6.12106 60.65387,8.96973 C60.65387,11.82618 58.99274,13.6084 56.35895,13.6084 C53.72609,13.6084 52.065,11.82617 52.065,8.96973 Z M58.76031,8.96973 C58.76031,7.01563 57.8648,5.86231 56.35894,5.86231 C54.85308,5.86231 53.95855,7.02442 53.95855,8.96973 C53.95855,10.93164 54.85308,12.07618 56.35894,12.07618 C57.8648,12.07618 58.76027,10.93164 58.76027,8.96973 L58.76031,8.96973 Z" id="Shape"></path> + <path d="M62.18606,4.44238 L63.95852,4.44238 L63.95852,5.98338 L64.00152,5.98338 C64.248696,4.99136841 65.1576526,4.30863156 66.17925,4.34764 C66.393414,4.34689223 66.6069872,4.37015075 66.81597,4.41698 L66.81597,6.15526 C66.545601,6.07264332 66.2635596,6.03471129 65.98097,6.04296 C65.4346182,6.02079544 64.9058709,6.23853473 64.5335615,6.63900597 C64.161252,7.03947722 63.9825766,7.58267074 64.04445,8.12596 L64.04445,13.49608 L62.18605,13.49608 L62.18606,4.44238 Z" id="Shape"></path> + <path d="M75.3843,10.83691 C75.1343,12.48046 73.53371,13.60839 71.48586,13.60839 C68.85207,13.60839 67.21731,11.84374 67.21731,9.01269 C67.21731,6.17285 68.86086,4.33105 71.40774,4.33105 C73.91262,4.33105 75.48782,6.05175 75.48782,8.79687 L75.48782,9.43359 L69.09329,9.43359 L69.09329,9.54589 C69.0335874,10.2199216 69.2663316,10.8871194 69.7323199,11.3777699 C70.1983083,11.8684204 70.8526275,12.1352333 71.52884,12.11034 C72.4306823,12.1948396 73.2809431,11.6769777 73.61966,10.8369 L75.3843,10.83691 Z M69.1020624,8.13477 L73.62844,8.13476 C73.6621655,7.52909749 73.4416965,6.93682308 73.0201501,6.50063155 C72.5986036,6.06444001 72.0142008,5.82388041 71.40774,5.83691 C70.7964818,5.83326223 70.2090907,6.07393463 69.7761255,6.50543324 C69.3431603,6.93693186 69.1004963,7.52350292 69.1020624,8.13477 Z" id="Shape"></path> + </g> + </g> + </g> + <g id="_Group_4" transform="translate(35.000000, 8.000000)" fill="#FFFFFF"> + <g id="Group"> + <path d="M2.82619,0.731 C3.61513656,0.674384181 4.38789226,0.974547428 4.93176129,1.54887182 C5.47563032,2.12319621 5.73328587,2.91114479 5.63381,3.69584 C5.63381,5.60209 4.60354,6.69784 2.82619,6.69784 L0.67092,6.69784 L0.67092,0.731 L2.82619,0.731 Z M1.59767,5.854 L2.72267,5.854 C3.28649194,5.88770201 3.83548652,5.66555901 4.21721851,5.24925179 C4.5989505,4.83294457 4.77277961,4.26679442 4.69044,3.708 C4.76678901,3.15152453 4.59045658,2.59004622 4.20967108,2.17713398 C3.82888557,1.76422175 3.28349567,1.5430863 2.72267,1.57421 L1.59767,1.57421 L1.59767,5.854 Z" id="Shape"></path> + <path d="M6.68068,4.44434 C6.60346713,3.63722505 6.99048366,2.85611193 7.67941593,2.42859737 C8.36834819,2.0010828 9.24008181,2.0010828 9.92901407,2.42859737 C10.6179463,2.85611193 11.0049629,3.63722505 10.92775,4.44434 C11.0064319,5.25232226 10.6197687,6.03495038 9.93022554,6.4633853 C9.24068243,6.89182022 8.36774757,6.89182022 7.67820446,6.4633853 C6.98866134,6.03495038 6.60199806,5.25232226 6.68068,4.44434 Z M10.01368,4.44434 C10.01368,3.46827 9.5752,2.89747 8.80568,2.89747 C8.03322,2.89747 7.59868,3.46827 7.59868,4.44435 C7.59868,5.42824 8.03325,5.99464 8.80568,5.99464 C9.57522,5.99463 10.01369,5.42432 10.01369,4.44434 L10.01368,4.44434 Z" id="Shape"></path> + <polygon id="Shape" points="16.57326 6.69775 15.65139 6.69775 14.72073 3.38134 14.65042 3.38134 13.72366 6.69775 12.81057 6.69775 11.56936 2.19482 12.47073 2.19482 13.27737 5.63082 13.34378 5.63082 14.26956 2.19482 15.1221 2.19482 16.04788 5.63082 16.11819 5.63082 16.92092 2.19482 17.80959 2.19482"></polygon> + <path d="M18.85354,2.19482 L19.709,2.19482 L19.709,2.91015 L19.77541,2.91015 C20.0063449,2.38347794 20.5459729,2.06130747 21.11916,2.1079 C21.5629768,2.07453177 21.9978859,2.2447899 22.3010908,2.57060207 C22.6042957,2.89641424 22.7428931,3.34242376 22.67775,3.7827 L22.67775,6.6977 L21.78908,6.6977 L21.78908,4.00586 C21.78908,3.28223 21.47463,2.92236 20.8174,2.92236 C20.5163658,2.90833912 20.2242202,3.02648257 20.0175546,3.24581678 C19.810889,3.465151 19.710315,3.76380101 19.7422,4.06347 L19.7422,6.69775 L18.85353,6.69775 L18.85354,2.19482 Z" id="Shape"></path> + <polygon id="Shape" points="24.09377 0.437 24.98244 0.437 24.98244 6.69774 24.09377 6.69774"></polygon> + <path d="M26.21779,4.44434 C26.1406364,3.63717225 26.527714,2.85603936 27.2166974,2.4285182 C27.9056808,2.00099704 28.7774592,2.00099704 29.4664426,2.4285182 C30.155426,2.85603936 30.5425036,3.63717225 30.46535,4.44434 C30.543932,5.25235119 30.1571979,6.03495719 29.4676205,6.46337324 C28.7780432,6.89178929 27.9050968,6.89178929 27.2155195,6.46337324 C26.5259421,6.03495719 26.139208,5.25235119 26.21779,4.44434 Z M29.55079,4.44434 C29.55079,3.46827 29.11231,2.89747 28.34279,2.89747 C27.57033,2.89747 27.13579,3.46827 27.13579,4.44435 C27.13579,5.42824 27.57036,5.99464 28.34279,5.99464 C29.11232,5.99463 29.5508,5.42432 29.5508,4.44434 L29.55079,4.44434 Z" id="Shape"></path> + <path d="M31.4009,5.42432 C31.4009,4.61377 32.00442,4.14649 33.0757,4.08008 L34.29543,4.00977 L34.29543,3.6211 C34.29543,3.14551 33.98098,2.87696 33.37356,2.87696 C32.87747,2.87696 32.53372,3.05909 32.43508,3.37745 L31.57473,3.37745 C31.66555,2.60401 32.39309,2.10792 33.41457,2.10792 C34.54348,2.10792 35.1802,2.66992 35.1802,3.6211 L35.1802,6.69776 L34.32473,6.69776 L34.32473,6.06495 L34.25442,6.06495 C33.9638686,6.52707633 33.4471736,6.79716323 32.90188,6.77195 C32.5196161,6.81171181 32.1383711,6.68791066 31.8523958,6.43115244 C31.5664205,6.17439423 31.4024061,5.80864331 31.4009,5.42432 Z M34.29543,5.03955 L34.29543,4.66309 L33.19582,4.7334 C32.5757,4.7749 32.29445,4.98584 32.29445,5.38281 C32.29445,5.78808 32.64601,6.02392 33.12945,6.02392 C33.4156361,6.05288986 33.7013264,5.96447505 33.9211204,5.77891559 C34.1409144,5.59335613 34.2759916,5.32654106 34.29543,5.03955 Z" id="Shape"></path> + <path d="M36.34816,4.44434 C36.34816,3.02149 37.07961,2.12012 38.2173,2.12012 C38.7917768,2.09365013 39.3298275,2.40147287 39.59816,2.91012 L39.66457,2.91012 L39.66457,0.437 L40.55324,0.437 L40.55324,6.69774 L39.70168,6.69774 L39.70168,5.98631 L39.63137,5.98631 C39.3427542,6.49073698 38.7980745,6.79335648 38.21731,6.77195 C37.0718,6.772 36.34816,5.87061 36.34816,4.44434 Z M37.26616,4.44434 C37.26616,5.39942 37.71636,5.97413 38.46929,5.97413 C39.21829,5.97413 39.6812,5.39113 39.6812,4.44825 C39.6812,3.50977 39.21343,2.91846 38.46929,2.91846 C37.72121,2.91846 37.26613,3.49707 37.26613,4.44434 L37.26616,4.44434 Z" id="Shape"></path> + <path d="M44.23,4.44434 C44.1527871,3.63722505 44.5398037,2.85611193 45.2287359,2.42859737 C45.9176682,2.0010828 46.7894018,2.0010828 47.4783341,2.42859737 C48.1672663,2.85611193 48.5542829,3.63722505 48.47707,4.44434 C48.5557519,5.25232226 48.1690887,6.03495038 47.4795455,6.4633853 C46.7900024,6.89182022 45.9170676,6.89182022 45.2275245,6.4633853 C44.5379813,6.03495038 44.1513181,5.25232226 44.23,4.44434 Z M47.563,4.44434 C47.563,3.46827 47.12452,2.89747 46.355,2.89747 C45.58254,2.89747 45.148,3.46827 45.148,4.44435 C45.148,5.42824 45.58257,5.99464 46.355,5.99464 C47.12453,5.99463 47.563,5.42432 47.563,4.44434 Z" id="Shape"></path> + <path d="M49.66945,2.19482 L50.52492,2.19482 L50.52492,2.91015 L50.59133,2.91015 C50.8222649,2.38347794 51.3618929,2.06130747 51.93508,2.1079 C52.3788968,2.07453177 52.8138059,2.2447899 53.1170108,2.57060207 C53.4202157,2.89641424 53.5588131,3.34242376 53.49367,3.7827 L53.49367,6.6977 L52.605,6.6977 L52.605,4.00586 C52.605,3.28223 52.29055,2.92236 51.63332,2.92236 C51.3322858,2.90833912 51.0401402,3.02648257 50.8334746,3.24581678 C50.626809,3.465151 50.526235,3.76380101 50.55812,4.06347 L50.55812,6.69775 L49.66945,6.69775 L49.66945,2.19482 Z" id="Shape"></path> + <path d="M58.51516,1.07373 L58.51516,2.21533 L59.49075,2.21533 L59.49075,2.96387 L58.51516,2.96387 L58.51516,5.2793 C58.51516,5.75098 58.7095,5.95752 59.15188,5.95752 C59.2651356,5.95715754 59.3782775,5.95030966 59.49075,5.93701 L59.49075,6.67724 C59.3311595,6.70579072 59.1694656,6.72098004 59.00735,6.72265 C58.01907,6.72265 57.62551,6.37499 57.62551,5.50683 L57.62551,2.96383 L56.91067,2.96383 L56.91067,2.21529 L57.62551,2.21529 L57.62551,1.07373 L58.51516,1.07373 Z" id="Shape"></path> + <path d="M60.70461,0.437 L61.58547,0.437 L61.58547,2.91845 L61.65578,2.91845 C61.8978078,2.38716856 62.4468801,2.06458754 63.02878,2.11181 C63.4700766,2.08779728 63.8990983,2.26180371 64.1989893,2.58643385 C64.4988802,2.91106399 64.6384049,3.35250564 64.57956,3.79052 L64.57956,6.69775 L63.69,6.69775 L63.69,4.00975 C63.69,3.29051 63.355,2.92625 62.72711,2.92625 C62.417939,2.90089367 62.1133391,3.01329096 61.8947423,3.2333935 C61.6761456,3.45349605 61.5658419,3.75886031 61.59332,4.06785 L61.59332,6.69773 L60.70465,6.69773 L60.70461,0.437 Z" id="Shape"></path> + <path d="M69.76125,5.48193 C69.512057,6.33130948 68.6900989,6.88010304 67.81008,6.78466 C67.2096439,6.8005102 66.6325914,6.5516307 66.2320282,6.10405516 C65.8314651,5.65647963 65.6478864,5.05545594 65.73,4.46045 C65.6500674,3.86379048 65.8329582,3.26180373 66.2312908,2.81044696 C66.6296234,2.35909018 67.204202,2.10277675 67.80617,2.10791 C69.0591,2.10791 69.81496,2.96391 69.81496,4.37791 L69.81496,4.688 L66.63527,4.688 L66.63527,4.7378 C66.607132,5.07194014 66.7212507,5.40244775 66.9495608,5.6480407 C67.1778709,5.89363365 67.4991879,6.03152392 67.83449,6.0278 C68.2692619,6.07999468 68.6924825,5.86433304 68.90578,5.4819 L69.76125,5.48193 Z M66.63525,4.03076 L68.90966,4.03076 C68.9323129,3.72516044 68.8248585,3.42420507 68.6137769,3.20205909 C68.4026954,2.97991311 68.1076175,2.85723623 67.80126,2.86426 C67.490752,2.86035891 67.191828,2.98202124 66.9722963,3.20164888 C66.7527647,3.42127653 66.6312331,3.72025374 66.63527,4.03076 L66.63525,4.03076 Z" id="Shape"></path> + </g> + </g> + </g> + </g> + </svg> + </a> + <p class="mx_Spacer"><strong>Android</strong></p> + <a href="https://play.google.com/store/apps/details?id=im.vector.app" target="_blank" class="mx_ClearDecoration"> + <svg width="162px" height="48px" viewBox="0 0 162 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch --> + <desc>Created with Sketch.</desc> + <defs> + <linearGradient x1="91.488428%" y1="4.9481245%" x2="-38.3517333%" y2="71.9074222%" id="linearGradient-1"> + <stop stop-color="#00A0FF" offset="0%"></stop> + <stop stop-color="#00A1FF" offset="1%"></stop> + <stop stop-color="#00BEFF" offset="26%"></stop> + <stop stop-color="#00D2FF" offset="51%"></stop> + <stop stop-color="#00DFFF" offset="76%"></stop> + <stop stop-color="#00E3FF" offset="100%"></stop> + </linearGradient> + <linearGradient x1="107.684729%" y1="50%" x2="-130.640394%" y2="50%" id="linearGradient-2"> + <stop stop-color="#FFE000" offset="0%"></stop> + <stop stop-color="#FFBD00" offset="41%"></stop> + <stop stop-color="#FFA500" offset="78%"></stop> + <stop stop-color="#FF9C00" offset="100%"></stop> + </linearGradient> + <linearGradient x1="86.219293%" y1="17.8768889%" x2="-50.1497903%" y2="194.702638%" id="linearGradient-3"> + <stop stop-color="#FF3A44" offset="0%"></stop> + <stop stop-color="#C31162" offset="100%"></stop> + </linearGradient> + <linearGradient x1="-18.7537448%" y1="-54.0521474%" x2="42.1210306%" y2="24.9170664%" id="linearGradient-4"> + <stop stop-color="#32A071" offset="0%"></stop> + <stop stop-color="#2DA771" offset="7%"></stop> + <stop stop-color="#15CF74" offset="48%"></stop> + <stop stop-color="#06E775" offset="80%"></stop> + <stop stop-color="#00F076" offset="100%"></stop> + </linearGradient> + </defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="Google-Play-badge" fill-rule="nonzero"> + <rect id="Rectangle-path" fill="#000000" x="0" y="0" width="162" height="48" rx="6"></rect> + <path d="M156,0.96 C158.783515,0.96 161.04,3.21648486 161.04,6 L161.04,42 C161.04,44.7835151 158.783515,47.04 156,47.04 L6,47.04 C3.21648486,47.04 0.96,44.7835151 0.96,42 L0.96,6 C0.96,3.21648486 3.21648486,0.96 6,0.96 L156,0.96 Z M156,0 L6,0 C2.6862915,2.13162821e-15 0,2.6862915 0,6 L0,42 C0,45.3137085 2.6862915,48 6,48 L156,48 C159.313708,48 162,45.3137085 162,42 L162,6 C162,2.6862915 159.313708,2.13162821e-15 156,0 Z" id="Shape" fill="#A6A6A6"></path> + <path d="M56.904,12.288 C56.9452243,13.1774773 56.6199211,14.0449523 56.004,14.688 C55.3157397,15.4029639 54.3557806,15.791311 53.364,15.756 C51.8428083,15.7440945 50.4769778,14.8214594 49.8980302,13.4146952 C49.3190825,12.007931 49.6398426,10.3911869 50.712,9.312 C51.4086396,8.60079116 52.3686947,8.20981851 53.364,8.232 C53.8713092,8.23030972 54.3736031,8.33240198 54.84,8.532 C55.2742254,8.70714427 55.6607809,8.98266787 55.968,9.336 L55.332,9.972 C54.8464162,9.39441174 54.1174618,9.07882784 53.364,9.12 C52.6066192,9.11628465 51.8804152,9.42130519 51.3528432,9.96472697 C50.8252713,10.5081487 50.541874,11.2430609 50.568,12 C50.5519223,13.1438276 51.2255718,14.1850074 52.2755199,14.63911 C53.325468,15.0932125 54.5455111,14.8710548 55.368,14.076 C55.7372514,13.6758439 55.9502196,13.1562016 55.968,12.612 L53.364,12.612 L53.364,11.748 L56.856,11.748 C56.8880078,11.9262169 56.9040713,12.1069316 56.904,12.288 Z M62.4,9.288 L59.16,9.288 L59.16,11.568 L62.112,11.568 L62.112,12.432 L59.16,12.432 L59.16,14.712 L62.4,14.712 L62.4,15.6 L58.2,15.6 L58.2,8.4 L62.4,8.4 L62.4,9.288 Z M66.336,15.6 L65.412,15.6 L65.412,9.288 L63.396,9.288 L63.396,8.4 L68.4,8.4 L68.4,9.288 L66.336,9.288 L66.336,15.6 Z M71.928,15.6 L71.928,8.4 L72.852,8.4 L72.852,15.6 L71.928,15.6 Z M76.956,15.6 L76.032,15.6 L76.032,9.288 L74.016,9.288 L74.016,8.4 L78.96,8.4 L78.96,9.288 L76.956,9.288 L76.956,15.6 Z M88.332,14.664 C86.8715878,16.1162735 84.5124122,16.1162735 83.052,14.664 C81.6363227,13.1654806 81.6363227,10.8225194 83.052,9.324 C83.7503981,8.62049603 84.7006989,8.22483956 85.692,8.22483956 C86.6833011,8.22483956 87.6336019,8.62049603 88.332,9.324 C89.7537186,10.8201118 89.7537186,13.1678882 88.332,14.664 Z M83.736,14.064 C84.8175887,15.1410781 86.5664113,15.1410781 87.648,14.064 C88.710238,12.8930054 88.710238,11.1069946 87.648,9.936 C86.5664113,8.85892192 84.8175887,8.85892192 83.736,9.936 C82.673762,11.1069946 82.673762,12.8930054 83.736,14.064 Z M90.696,15.6 L90.696,8.4 L91.824,8.4 L95.328,14.004 L95.328,8.4 L96.252,8.4 L96.252,15.6 L95.292,15.6 L91.632,9.732 L91.632,15.6 L90.696,15.6 Z" id="Shape" stroke="#FFFFFF" stroke-width="0.5" fill="#FFFFFF"></path> + <path d="M81.768,26.1 C78.95451,26.1132401 76.6832087,28.4024174 76.692025,31.2159247 C76.7008414,34.0294321 78.9864446,36.3043299 81.7999624,36.2999373 C84.6134801,36.2955447 86.8919688,34.0135212 86.892,31.2 C86.9117676,29.8372485 86.3774779,28.5248517 85.4115062,27.5634044 C84.4455344,26.6019571 83.1306436,26.0738348 81.768,26.1 Z M81.768,34.296 C80.4998728,34.3846863 79.3064075,33.6891762 78.7584256,32.5421245 C78.2104436,31.3950728 78.419323,30.0296194 79.285159,29.0988456 C80.1509951,28.1680719 81.4978054,27.8611589 82.6814254,28.3248997 C83.8650454,28.7886405 84.6449026,29.9287792 84.648,31.2 C84.6870513,31.9952063 84.4032392,32.7724713 83.8609684,33.3554125 C83.3186976,33.9383536 82.5639505,34.2775396 81.768,34.296 Z M70.596,26.1 C67.7809194,26.1066237 65.503593,28.3928962 65.5080063,31.2079812 C65.5124195,34.0230661 67.796903,36.302187 70.6119906,36.2999843 C73.4270781,36.2977816 75.7079922,34.0150884 75.708,31.2 C75.7277676,29.8372485 75.1934779,28.5248517 74.2275062,27.5634044 C73.2615344,26.6019571 71.9466436,26.0738348 70.584,26.1 L70.596,26.1 Z M70.596,34.296 C69.3272109,34.3896877 68.1302658,33.6976456 67.5784221,32.5513159 C67.0265783,31.4049863 67.2321873,30.0377538 68.096776,29.1044321 C68.9613648,28.1711103 70.3089091,27.8617171 71.4940246,28.3244312 C72.6791401,28.7871453 73.4605457,29.9277613 73.464,31.2 C73.5030513,31.9952063 73.2192392,32.7724713 72.6769684,33.3554125 C72.1346976,33.9383536 71.3799505,34.2775396 70.584,34.296 L70.596,34.296 Z M57.288,27.672 L57.288,29.832 L62.472,29.832 C62.3907161,30.8493646 61.9678136,31.8093534 61.272,32.556 C60.2232275,33.6242696 58.7718519,34.1995896 57.276,34.14 C54.0948398,34.14 51.516,31.5611602 51.516,28.38 C51.516,25.1988398 54.0948398,22.62 57.276,22.62 C58.7373549,22.5961666 60.1485143,23.1528625 61.2,24.168 L62.724,22.644 C61.2899035,21.1918298 59.3288621,20.3823049 57.288,20.4 C54.3827529,20.2869348 51.6484723,21.7724061 50.1622249,24.2712685 C48.6759775,26.7701308 48.6759775,29.8818692 50.1622249,32.3807315 C51.6484723,34.8795939 54.3827529,36.3650652 57.288,36.252 C59.366118,36.3459052 61.3832889,35.5364115 62.82,34.032 C64.0772109,32.6507059 64.7484517,30.8349134 64.692,28.968 C64.6958722,28.5131858 64.6556846,28.0590658 64.572,27.612 L57.288,27.672 Z M111.66,29.352 C111.019296,27.4670521 109.281513,26.1732637 107.292,26.1 C105.965236,26.097406 104.696574,26.6440891 103.787255,27.6102403 C102.877937,28.5763915 102.409075,29.8758277 102.492,31.2 C102.462529,32.5551554 102.985397,33.864034 103.940463,34.8258889 C104.895528,35.7877438 106.20067,36.3198705 107.556,36.3 C109.26103,36.3091908 110.856772,35.4617346 111.804,34.044 L110.064,32.844 C109.535695,33.7247306 108.583028,34.2626004 107.556,34.26 C106.49231,34.3005421 105.51197,33.6866398 105.084,32.712 L111.912,29.892 L111.66,29.352 Z M104.7,31.056 C104.650862,30.3061971 104.905591,29.568174 105.40676,29.0083093 C105.907929,28.4484447 106.613352,28.113866 107.364,28.08 C108.155244,28.0278619 108.90128,28.4528191 109.26,29.16 L104.7,31.056 Z M99.156,36 L101.4,36 L101.4,21 L99.156,21 L99.156,36 Z M95.484,27.24 L95.4,27.24 C94.7159545,26.4752121 93.7380686,26.0386559 92.712,26.04 C89.9881763,26.172086 87.8476045,28.4189755 87.8476045,31.146 C87.8476045,33.8730245 89.9881763,36.119914 92.712,36.252 C93.7413947,36.2693085 94.7256191,35.8299226 95.4,35.052 L95.472,35.052 L95.472,35.784 C95.472,37.74 94.428,38.784 92.748,38.784 C91.6035636,38.7572129 90.5888737,38.0412401 90.18,36.972 L88.224,37.788 C88.977218,39.6201732 90.767077,40.81183 92.748,40.8 C95.376,40.8 97.548,39.252 97.548,35.484 L97.548,26.4 L95.484,26.4 L95.484,27.24 Z M92.916,34.296 C91.3114651,34.1545918 90.0808516,32.810754 90.0808516,31.2 C90.0808516,29.589246 91.3114651,28.2454082 92.916,28.104 C93.6913435,28.143789 94.4177831,28.4949242 94.9306198,29.0777958 C95.4434564,29.6606674 95.6992476,30.4259002 95.64,31.2 C95.7061618,31.9776593 95.451189,32.7485174 94.9343644,33.3333452 C94.4175397,33.9181731 93.6838925,34.2660166 92.904,34.296 L92.916,34.296 Z M122.172,21 L116.808,21 L116.808,36 L119.052,36 L119.052,30.312 L122.184,30.312 C123.927221,30.4372366 125.594369,29.5782107 126.504156,28.0859676 C127.413943,26.5937244 127.413943,24.7182756 126.504156,23.2260324 C125.594369,21.7337893 123.927221,20.8747634 122.184,21 L122.172,21 Z M122.172,28.2 L119.04,28.2 L119.04,23.088 L122.22,23.088 C123.641581,23.088 124.794,24.2404191 124.794,25.662 C124.794,27.0835809 123.641581,28.236 122.22,28.236 L122.172,28.2 Z M136.008,26.04 C134.338455,25.9402067 132.768824,26.8405056 132.012,28.332 L134.004,29.16 C134.405287,28.4204018 135.20535,27.9874267 136.044,28.056 C136.619434,27.9887935 137.197744,28.1555641 137.649034,28.5188522 C138.100324,28.8821403 138.386758,29.4114899 138.444,29.988 L138.444,30.144 C137.723271,29.7623989 136.919511,29.5645502 136.104,29.568 C133.956,29.568 131.784,30.768 131.784,32.94 C131.826825,33.8756506 132.246288,34.7541954 132.946958,35.3757568 C133.647627,35.9973182 134.569918,36.3090392 135.504,36.24 C136.655075,36.3226597 137.759483,35.7704558 138.384,34.8 L138.456,34.8 L138.456,36 L140.616,36 L140.616,30.228 C140.616,27.6 138.624,26.076 136.068,26.076 L136.008,26.04 Z M135.732,34.26 C135,34.26 133.98,33.888 133.98,32.988 C133.98,31.788 135.252,31.392 136.38,31.392 C137.09285,31.3744103 137.797357,31.5484649 138.42,31.896 C138.264835,33.239298 137.143828,34.2630486 135.792,34.296 L135.732,34.26 Z M148.488,26.4 L145.92,32.904 L145.848,32.904 L143.184,26.4 L140.784,26.4 L144.78,35.496 L142.5,40.548 L144.84,40.548 L150.984,26.4 L148.488,26.4 Z M128.316,36 L130.56,36 L130.56,21 L128.316,21 L128.316,36 Z" id="Shape" fill="#FFFFFF"></path> + <path d="M12.528,9.048 C12.1368779,9.51733 11.9394644,10.1181539 11.976,10.728 L11.976,37.272 C11.9394644,37.8818461 12.1368779,38.48267 12.528,38.952 L12.612,39.036 L27.48,24.18 L27.48,23.832 L12.612,8.964 L12.528,9.048 Z" id="Shape" fill="url(#linearGradient-1)"></path> + <path d="M32.4,29.136 L27.48,24.18 L27.48,23.832 L32.4,18.864 L32.508,18.924 L38.4,22.272 C40.08,23.22 40.08,24.78 38.4,25.74 L32.532,29.076 L32.4,29.136 Z" id="Shape" fill="url(#linearGradient-2)"></path> + <path d="M32.544,29.064 L27.48,24 L12.528,38.952 C13.2344613,39.5730269 14.2829148,39.6032707 15.024,39.024 L32.556,29.064" id="Shape" fill="url(#linearGradient-3)"></path> + <path d="M32.544,18.936 L15.012,8.976 C14.2709148,8.39672927 13.2224613,8.42697312 12.516,9.048 L27.48,24 L32.544,18.936 Z" id="Shape" fill="url(#linearGradient-4)"></path> + <path d="M32.4,28.956 L15.012,38.856 C14.3004462,39.3880037 13.3235538,39.3880037 12.612,38.856 L12.528,38.94 L12.612,39.024 C13.3222149,39.5600151 14.3017851,39.5600151 15.012,39.024 L32.544,29.064 L32.4,28.956 Z" id="Shape" fill="#000000" opacity="0.2"></path> + <path d="M12.528,38.784 C12.1368779,38.31467 11.9394644,37.7138461 11.976,37.104 L11.976,37.284 C11.9394644,37.8938461 12.1368779,38.49467 12.528,38.964 L12.612,38.88 L12.528,38.784 Z M38.4,25.56 L32.4,28.956 L32.508,29.064 L38.4,25.728 C39.0804841,25.4083358 39.5381621,24.7492796 39.6,24 C39.4632354,24.6778055 39.0200471,25.2539503 38.4,25.56 Z" id="Shape" fill="#000000" opacity="0.12"></path> + <path d="M15.012,9.144 L38.4,22.44 C39.0200471,22.7460497 39.4632354,23.3221945 39.6,24 C39.5381621,23.2507204 39.0804841,22.5916642 38.4,22.272 L15.012,8.976 C13.332,8.028 11.964,8.82 11.964,10.74 L11.964,10.92 C12,8.988 13.344,8.196 15.012,9.144 Z" id="Shape" fill="#FFFFFF" opacity="0.25"></path> + </g> + </g> + </svg> + <a href="https://f-droid.org/repository/browse/?fdid=im.vector.alpha" target="_blank" class="mx_ClearDecoration"> + <svg width="164px" height="48px" viewBox="0 0 157 46" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <desc>Get it on F-Droid.</desc> + <defs> + <radialGradient cx="0.55528181%" cy="0.456156968%" fx="0.55528181%" fy="0.456156968%" r="99.5501799%" gradientTransform="translate(0.005553,0.004562),scale(0.985441,1.000000),rotate(90.000001),translate(-0.005553,-0.004562)" id="radialGradient-1"> + <stop stop-color="#FFFFFF" stop-opacity="0.098039" offset="0%"></stop> + <stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop> + </radialGradient> + </defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="F-Droid-badge"> + <rect id="Rectangle-path" fill="#000000" fill-rule="nonzero" x="0" y="0" width="157" height="46" rx="5.6097561"></rect> + <g id="Group" transform="translate(49.623214, 5.890244)" fill="#FFFFFF" fill-rule="nonzero"> + <path d="M5.68003571,6.29863415 L5.68003571,4.42449878 L4.13843589,4.42449878 L4.13843589,3.64866951 L6.61432589,3.64866951 L6.61432589,6.64455976 C6.24995506,6.90316951 5.84820327,7.09946423 5.40907054,7.2334439 C4.96995649,7.36430642 4.50125542,7.42973768 4.00296732,7.42973768 C2.91295744,7.42973768 2.0596344,7.1119263 1.44299821,6.47630354 C0.829483333,5.83757671 0.522725893,4.94958037 0.522725893,3.81231451 C0.522725893,2.67194459 0.829483333,1.78394825 1.44299821,1.14832549 C2.0596344,0.509598659 2.91295744,0.190235244 4.00296732,0.190235244 C4.45765054,0.190235244 4.88898,0.24631878 5.29695571,0.358485854 C5.70805274,0.470652927 6.08644143,0.635785447 6.43212179,0.853883415 L6.43212179,1.85873098 C6.08332012,1.56274154 5.71271601,1.33995943 5.32030946,1.19038463 C4.92790292,1.04082854 4.51525458,0.966050488 4.08236446,0.966050488 C3.22903208,0.966050488 2.58748149,1.20440902 2.15771268,1.6811261 C1.73104649,2.15784317 1.51771339,2.86824398 1.51771339,3.81232854 C1.51771339,4.75329033 1.73104649,5.46212976 2.15771268,5.93884683 C2.58748149,6.4155639 3.22903208,6.65392244 4.08236446,6.65392244 C4.41559696,6.65392244 4.71301851,6.6258802 4.97462911,6.56979573 C5.2362397,6.51059598 5.47136589,6.4202387 5.68000768,6.2987239 L5.68003571,6.29863415 Z" id="Shape"></path> + <polygon id="Shape" points="8.34342857 0.316390244 12.7531661 0.316390244 12.7531661 1.1109 9.28683036 1.1109 9.28683036 3.17666463 12.6082214 3.17666463 12.6082214 3.97117439 9.28683036 3.97117439 9.28683036 6.49963171 12.8372732 6.49963171 12.8372732 7.29414146 8.34342857 7.29414146 8.34342857 0.316446341"></polygon> + <polygon id="Shape" points="13.4319107 0.316390244 19.3320268 0.316390244 19.3320268 1.1109 16.8561368 1.1109 16.8561368 7.29425366 15.9078287 7.29425366 15.9078287 1.1109 13.4319387 1.1109 13.4319387 0.316390244"></polygon> + <polygon id="Shape" points="23.2920714 0.316390244 24.2356975 0.316390244 24.2356975 7.29408537 23.2920714 7.29408537"></polygon> + <polygon id="Shape" points="25.1480357 0.316390244 31.0481518 0.316390244 31.0481518 1.1109 28.5722618 1.1109 28.5722618 7.29425366 27.6239537 7.29425366 27.6239537 1.1109 25.1480637 1.1109 25.1480637 0.316390244"></polygon> + <path d="M37.8398036,0.956463415 C37.1546481,0.956463415 36.6096432,1.21195976 36.2047887,1.72295244 C35.803037,2.23394512 35.6021611,2.93032154 35.6021611,3.81208171 C35.6021611,4.69071911 35.803037,5.38553415 36.2047887,5.89652683 C36.6096432,6.40751951 37.1546481,6.66301585 37.8398036,6.66301585 C38.524959,6.66301585 39.066852,6.40751951 39.4654825,5.89652683 C39.8672343,5.38553415 40.0681102,4.69071911 40.0681102,3.81208171 C40.0681102,2.93032154 39.8672343,2.23394512 39.4654825,1.72295244 C39.0673754,1.21209065 38.5253515,0.956659756 37.8394111,0.956659756 L37.8398036,0.956463415 Z M37.8398036,0.18997439 C38.817708,0.18997439 39.5993998,0.518687398 40.1848789,1.17611341 C40.7703768,1.83043537 41.0631257,2.70908211 41.0631257,3.81205366 C41.0631257,4.91192114 40.7703768,5.79056789 40.1848789,6.4479939 C39.5993811,7.10231585 38.8176893,7.42947683 37.8398036,7.42947683 C36.8587965,7.42947683 36.0739835,7.10231585 35.4853643,6.4479939 C34.8998664,5.79369065 34.6071175,4.9150439 34.6071175,3.81205366 C34.6071175,2.70906341 34.8998664,1.83041667 35.4853643,1.17611341 C36.0739648,0.518687398 36.8587779,0.18997439 37.8398036,0.18997439 Z" id="Shape"></path> + <polygon id="Shape" points="42.5385893 0.316390244 43.8092239 0.316390244 46.9018436 6.15390244 46.9018436 0.316390244 47.817462 0.316390244 47.817462 7.29408537 46.5468273 7.29408537 43.4542077 1.45657317 43.4542077 7.29408537 42.5385893 7.29408537"></polygon> + <path d="M14.4888571,14.6357134 L14.4888571,19.7020244 L13.8851641,19.7020244 C13.7044646,18.9049341 13.5319795,18.3009504 13.3677089,17.8900732 C13.2034365,17.4791959 12.981674,17.1176285 12.7024214,16.8053707 C11.9303365,15.9260976 10.3984651,15.486461 8.10680714,15.486461 C7.46615369,15.486461 7.03493637,15.5686346 6.81315518,15.7329817 C6.5995978,15.8891143 6.49281911,16.201372 6.49281911,16.6697549 L6.49281911,22.5369988 C7.74949196,22.5369988 8.64887768,22.269937 9.19097625,21.7358134 C9.73307482,21.2016898 10.1191173,20.2114744 10.3491036,18.7651671 L10.97744,18.7651671 L10.97744,27.3071427 L10.3491036,27.3071427 C10.1684059,25.8444362 9.80290431,24.8336516 9.25259875,24.274789 C8.70229506,23.7077923 7.78236851,23.4119618 6.49281911,23.3872976 L6.49281911,29.2668829 C6.49281911,29.9653724 6.66530417,30.4296545 7.01027429,30.6597293 C7.3552444,30.8815951 8.10678845,31.0171829 9.26490643,31.0664927 L9.26490643,31.695122 L0.184699286,31.695122 L0.184699286,31.0664927 C1.12105476,30.9678844 1.72475714,30.8076417 1.99580643,30.5857646 C2.26685571,30.3638988 2.40238036,29.9242622 2.40238036,29.2668549 L2.40238036,17.051611 C2.40238036,16.4024313 2.25042679,15.9545858 1.94651964,15.7080744 C1.6426125,15.4615443 1.05533905,15.3136337 0.184699286,15.2643427 L0.184699286,14.6357134 L14.4888571,14.6357134 Z" id="Shape"></path> + <polygon id="Shape" points="21.6099286 24.4473171 21.6099286 27.380939 15.4743125 27.380939 15.4743125 24.4473171"></polygon> + <path d="M25.1956964,29.4035366 L25.1956964,16.9540854 C25.1956964,16.378861 25.0478548,15.9720976 24.7521714,15.7337951 C24.4564881,15.4954927 23.9061751,15.3393638 23.1012323,15.2654085 L23.1012323,14.6367793 L30.7891859,14.6367793 C33.7050871,14.6367793 35.9926145,15.3804553 37.651768,16.8678073 C39.3191267,18.3469504 40.1528061,20.3848813 40.1528061,22.9816 C40.1528061,25.5948114 39.3191267,27.7025837 37.651768,29.3049171 C35.9844093,30.8990976 33.7913623,31.6961878 31.072627,31.6961878 L23.1012323,31.6961878 L23.1012323,31.0675585 C23.8322355,31.0429074 24.3620171,30.8991013 24.690577,30.6361402 C25.027342,30.3731923 25.1957245,29.9623244 25.1957245,29.4035366 L25.1956964,29.4035366 Z M29.2737714,16.374878 L29.2737714,29.3541707 C29.2737714,29.9211675 29.3764382,30.3073898 29.5817718,30.5128378 C29.7871054,30.7100581 30.1731478,30.8086683 30.7398991,30.8086683 C32.3497659,30.8086683 33.585954,30.2293394 34.4484634,29.0706817 C34.8591492,28.503685 35.179476,27.7107085 35.4094436,26.6917524 C35.647635,25.6727963 35.7667307,24.5634671 35.7667307,23.3637646 C35.7667307,21.194285 35.4217606,19.4275858 34.7318204,18.0636671 C33.8776095,16.3462215 32.5552583,15.4874988 30.7647668,15.4874988 C29.7709194,15.4874988 29.2739957,15.7833293 29.2739957,16.3749902 L29.2737714,16.374878 Z" id="Shape"></path> + <path d="M46.4748036,20.0576829 L46.4748036,22.1284683 C47.0661889,21.2820683 47.6247164,20.6739801 48.1503861,20.3042037 C48.6842608,19.9344272 49.2633198,19.749539 49.887563,19.749539 C50.4789484,19.749539 50.9676576,19.9385411 51.3536907,20.3165451 C51.7397238,20.6863215 51.9327404,21.1547175 51.9327404,21.7217329 C51.9327404,22.2147744 51.7848987,22.6215378 51.4892154,22.9420232 C51.193532,23.2542809 50.8116015,23.4104098 50.3434237,23.4104098 C50.0148826,23.4104098 49.7397307,23.3446709 49.5179682,23.2131932 C49.2962057,23.0817136 49.0662287,22.8475156 48.8280373,22.5105993 C48.556988,22.1161586 48.3228992,21.9189383 48.1257707,21.9189383 C47.7068798,21.9189383 47.3454807,22.1572407 47.0415736,22.6338456 C46.7376664,23.1022415 46.5857129,23.6651338 46.5857129,24.3225224 L46.5857129,29.0927785 C46.5857129,29.8734322 46.6965941,30.3911285 46.9183566,30.6458676 C47.1483429,30.8923976 47.6493692,31.0403082 48.4214354,31.0895993 L48.4214354,31.6935737 L41.706879,31.6935737 L41.7068818,31.0895993 C42.2654093,30.990991 42.6309109,30.8430804 42.8033866,30.6458676 C42.9840843,30.4486472 43.0744331,30.0911936 43.0744331,29.5735066 L43.0744331,22.1532017 C43.0744331,21.6437237 42.9799808,21.28627 42.7910761,21.0808407 C42.6103766,20.8754115 42.2489776,20.7357192 41.706879,20.6617639 L41.706879,20.0577895 L46.4749129,20.0577895 L46.4748036,20.0576829 Z" id="Shape"></path> + <path d="M58.2021429,19.7519512 C59.8284386,19.7519512 61.1795731,20.3394984 62.2555464,21.5145927 C63.3397436,22.6814593 63.8818421,24.1482236 63.8818421,25.9148854 C63.8818421,27.673413 63.3397436,29.1361569 62.2555464,30.3031171 C61.1795731,31.4699837 59.8284386,32.0534171 58.2021429,32.0534171 C56.5512131,32.0534171 55.1877429,31.4699837 54.1117321,30.3031171 C53.0357588,29.1362504 52.4977721,27.6489171 52.4977721,25.8411171 C52.4977721,24.1236715 53.0480852,22.6814967 54.1487113,21.5145927 C55.2493373,20.3394984 56.6004718,19.7519512 58.2021148,19.7519512 L58.2021429,19.7519512 Z M58.2267862,20.5408232 C57.6929115,20.5408232 57.282235,20.7174931 56.9947568,21.0708329 C56.7155024,21.4159638 56.5142714,21.9952927 56.3910637,22.8088195 C56.2678599,23.6223463 56.2062579,24.7851553 56.2062579,26.2972463 C56.2062579,28.1461659 56.349997,29.4363163 56.6374752,30.1676976 C56.9331586,30.8990415 57.4547257,31.2647134 58.2021765,31.2647134 C58.9331797,31.2647134 59.4424204,30.8826049 59.7298986,30.1183878 C60.025582,29.3541707 60.1734236,28.0024065 60.1734236,26.0630951 C60.1734236,23.9923472 60.0296845,22.5542862 59.7422063,21.7489122 C59.4629519,20.943613 58.9578138,20.5409634 58.2267919,20.5409634 L58.2267862,20.5408232 Z" id="Shape"></path> + <path d="M69.7332321,20.0576829 L69.7332321,29.6472805 C69.7332321,30.1238854 69.8194747,30.4690163 69.9919597,30.6826732 C70.1644448,30.8881024 70.4724545,31.0236902 70.9159888,31.0894366 L70.9159888,31.693411 L64.891383,31.693411 L64.8913942,31.0894366 C65.4663506,30.9497406 65.8318522,30.7936117 65.987899,30.62105 C66.1439589,30.4402663 66.2219888,30.0910215 66.2219888,29.5733159 L66.2219888,22.153011 C66.2219888,21.6353053 66.1398526,21.2860606 65.9755801,21.1052768 C65.8113077,20.9244931 65.4499086,20.7765825 64.891383,20.6615451 L64.891383,20.0575707 L69.7334312,20.0575707 L69.7332321,20.0576829 Z M66.5792143,14.8313537 C66.9652474,14.4451407 67.4293132,14.2520341 67.9714118,14.2520341 C68.5135104,14.2520341 68.9693617,14.4451407 69.3389659,14.8313537 C69.7167939,15.2175667 69.9057079,15.6818488 69.9057079,16.2242 C69.9057079,16.7747602 69.7167939,17.2349378 69.3389659,17.6047329 C68.9693617,17.9745093 68.5052959,18.1593976 67.9467684,18.1593976 C67.3882409,18.1593976 66.9241751,17.9745093 66.5545709,17.6047329 C66.1849667,17.2349565 66.0001646,16.7665606 66.0001646,16.1995451 C66.0001646,15.6654215 66.1931812,15.2093577 66.5792143,14.8313537 Z" id="Shape"></path> + <path d="M80.0335536,32.0289024 L80.0335536,30.3895354 C79.4421682,31.0140508 78.9041815,31.4495736 78.4195936,31.6961037 C77.9349869,31.9344061 77.3559279,32.0535573 76.6824166,32.0535573 C75.360028,32.0535573 74.2676632,31.4947695 73.405322,30.3771939 C72.542906,29.2514093 72.111698,27.8298037 72.111698,26.1123768 C72.111698,24.2881028 72.5716613,22.7719728 73.4915879,21.5639866 C74.4115144,20.3560191 75.5655579,19.7520354 76.9537182,19.7520354 C77.5286746,19.7520354 78.0379154,19.8670821 78.4814404,20.0971756 C78.9249654,20.3272691 79.4177771,20.7340325 79.9598757,21.3174659 L79.9598757,16.6953073 C79.9598757,16.1200829 79.8489945,15.7502972 79.627232,15.58595 C79.4136746,15.421601 78.883893,15.3065542 78.0378873,15.2408098 L78.0378873,14.6368354 L83.4712087,14.6368354 L83.4712087,29.1447866 C83.4712087,29.6789102 83.5738755,30.0486959 83.7792091,30.2541439 C83.9927665,30.4595732 84.3870234,30.5787244 84.9619798,30.6115976 L84.9619798,31.1909171 L83.3972786,31.3881337 C82.1734636,31.5196133 81.0523154,31.7332702 80.0338339,32.0291044 L80.0335536,32.0289024 Z M79.9596318,28.8734146 L79.9596318,22.734939 C79.7789323,22.2583341 79.507883,21.8803301 79.1464839,21.6009268 C78.7933087,21.3133146 78.4072663,21.1695085 77.9883566,21.1695085 C77.2573534,21.1695085 76.7152548,21.5557309 76.3620609,22.3281756 C76.0170908,23.0923927 75.8446057,24.2880187 75.8446057,25.9150537 C75.8446057,27.5174431 76.0047738,28.7048415 76.3251098,29.4772488 C76.6454459,30.2496935 77.1423696,30.6359159 77.8158809,30.6359159 C78.3744084,30.6359159 78.90419,30.3483037 79.4052256,29.7730793 C79.553071,29.6087302 79.6803811,29.4361648 79.7871561,29.2553829 C79.9021474,29.0746011 79.959643,28.9472315 79.959643,28.8732744 L79.9596318,28.8734146 Z" id="Shape"></path> + </g> + <path d="M40.46675,6.67476829 L37.3323571,10.7342683" id="Shape" stroke="#769616" stroke-width="1.84532927" fill="#8AB000" fill-rule="nonzero" stroke-linecap="round"></path> + <path d="M40.4527321,5.75 C40.7872823,5.75886341 41.014708,5.88950341 41.1763059,6.08111585 C39.6808809,7.85918415 39.428952,8.14166341 37.3875595,10.6732622 C36.6353612,11.6468354 35.8517911,11.1436683 36.6039893,10.1700951 L39.7395036,6.11031463 C39.9084496,5.88474354 40.1711695,5.75748902 40.4527882,5.7498878 L40.4527321,5.75 Z" id="Shape" fill-opacity="0.29804" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M41.1816607,6.09023171 C41.2730684,6.19940037 41.5956921,6.68413659 41.1982579,7.23888537 L38.0627436,11.2986659 C37.3105454,12.272239 37.2143829,10.8467159 37.2143829,10.8467159 C37.2143829,10.8467159 39.9695927,7.51788659 41.1817168,6.09020366 L41.1816607,6.09023171 Z" id="Shape" fill-opacity="0.2" fill="#263238" fill-rule="nonzero"></path> + <path d="M40.6545893,5.92334146 C40.9778691,5.92334146 41.3627714,6.02785963 41.2626839,6.51281463 C41.1862782,6.88305854 37.8241036,10.9964122 37.8241036,10.9964122 C37.0719054,11.9699854 35.9844561,11.4955963 36.7366543,10.5221634 L39.8606739,6.48257805 C40.0526737,6.26852098 40.3096379,5.93371951 40.6546454,5.92322927 L40.6545893,5.92334146 Z" id="Shape" fill="#8AB000" fill-rule="nonzero"></path> + <path d="M8.87470536,6.67476829 L12.0105,10.7342683" id="Shape" stroke="#769616" stroke-width="1.84532927" fill="#8AB000" fill-rule="nonzero" stroke-linecap="round"></path> + <path d="M8.89124643,5.75 C8.55669625,5.75886341 8.32927054,5.88950341 8.16767268,6.08111585 C9.66309768,7.85918415 9.91502661,8.14166341 11.9564191,10.6732622 C12.7086173,11.6468354 13.4921875,11.1436683 12.7399893,10.1700951 L9.604475,6.11087561 C9.43552898,5.88530451 9.17280911,5.75805 8.89119036,5.75044878 L8.89124643,5.75 Z" id="Shape" fill-opacity="0.29804" fill="#FFFFFF" fill-rule="nonzero"></path> + <path d="M8.16147679,6.09023171 C8.07006914,6.19940037 7.74744536,6.68413659 8.14487964,7.23888537 L11.2803939,11.2986659 C12.0325921,12.272239 12.1287546,10.8467159 12.1287546,10.8467159 C12.1287546,10.8467159 9.37354482,7.51788659 8.16142071,6.09020366 L8.16147679,6.09023171 Z" id="Shape" fill-opacity="0.2" fill="#263238" fill-rule="nonzero"></path> + <path d="M8.68966964,5.92334146 C8.36638982,5.92334146 7.9814875,6.02785963 8.081575,6.51281463 C8.15798073,6.88305854 11.5201554,10.9964122 11.5201554,10.9964122 C12.2723536,11.9699854 13.3598029,11.4955963 12.6076046,10.5221634 L9.483585,6.48257805 C9.29154036,6.26856585 9.03445286,5.93366341 8.68961357,5.92328537 L8.68966964,5.92334146 Z" id="Shape" fill="#8AB000" fill-rule="nonzero"></path> + <rect id="Rectangle-path" fill="#AEEA00" fill-rule="nonzero" x="10.6535714" y="9.25609756" width="28.0357143" height="9.53658537" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill-opacity="0.2" fill="#263238" fill-rule="nonzero" x="10.6535714" y="11.4113659" width="28.0357143" height="7.38131707" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill-opacity="0.29804" fill="#FFFFFF" fill-rule="nonzero" x="10.6535714" y="9.25806098" width="28.0357143" height="7.38131707" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill="#AEEA00" fill-rule="nonzero" x="10.6535714" y="10.098122" width="28.0357143" height="7.85421951" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill="#1976D2" fill-rule="nonzero" x="10.6535714" y="19.6341463" width="28.0357143" height="19.0731707" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill-opacity="0.2" fill="#263238" fill-rule="nonzero" x="10.6535714" y="29.1118293" width="28.0357143" height="9.5954878" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill-opacity="0.2" fill="#FFFFFF" fill-rule="nonzero" x="10.6535714" y="19.5752439" width="28.0357143" height="9.5954878" rx="2.21439512"></rect> + <rect id="Rectangle-path" fill="#1976D2" fill-rule="nonzero" x="10.6535714" y="20.4756098" width="28.0357143" height="17.3902439" rx="2.21439512"></rect> + <path d="M24.6714286,24.5735366 C22.5461252,24.5735366 20.7467089,26.0384683 20.2201982,28.0061463 L22.5906179,28.0061463 C22.9995748,27.2788415 23.767473,26.7879598 24.6714005,26.7879598 C26.0087882,26.7879598 27.0692111,27.8488768 27.0692111,29.1868598 C27.0692111,30.5248427 26.0087882,31.5857598 24.6714005,31.5857598 C23.7068318,31.5857598 22.8924223,31.0301695 22.5099311,30.2205134 L20.1827425,30.2205134 C20.6565741,32.2619878 22.49339,33.8000988 24.6715407,33.8000988 C27.2051002,33.8000988 29.2825746,31.7215439 29.2825746,29.1869159 C29.2825746,26.6521756 27.204988,24.5737329 24.6715407,24.5737329 L24.6714286,24.5735366 Z" id="Shape" fill="#0D47A1" fill-rule="nonzero"></path> + <ellipse id="Oval" stroke="#0D47A1" stroke-width="1.40243902" stroke-linecap="round" cx="24.6714286" cy="29.187561" rx="7.04593571" ry="7.04921951"></ellipse> + <ellipse id="Oval" fill-opacity="0.2" fill="#263238" fill-rule="nonzero" cx="17.5699821" cy="14.1480854" rx="2.49002" ry="2.86013415"></ellipse> + <ellipse id="Oval" fill="#FFFFFF" fill-rule="nonzero" cx="17.5699821" cy="14.5172073" rx="2.49002" ry="2.49118049"></ellipse> + <ellipse id="Oval" fill-opacity="0.2" fill="#263238" fill-rule="nonzero" cx="31.9579107" cy="14.1480854" rx="2.49002" ry="2.86013415"></ellipse> + <ellipse id="Oval" fill="#FFFFFF" fill-rule="nonzero" cx="31.9579107" cy="14.5172073" rx="2.49002" ry="2.49118049"></ellipse> + <path d="M8.89152679,5.74242683 C8.53321466,5.73295225 8.20186636,5.93202601 8.04184972,6.25291205 C7.88183308,6.57379808 7.92213189,6.95837436 8.14518804,7.23908171 L10.8014598,10.6784232 C10.7075486,10.9245568 10.6536163,11.19065 10.6536163,11.4705768 L10.6536163,16.5785402 C10.6536163,17.8053098 11.6406977,18.7928512 12.8668957,18.7928512 L36.4760511,18.7928512 C37.7022491,18.7928512 38.6893306,17.8052817 38.6893306,16.5785402 L38.6893306,11.4705768 C38.6893306,11.1904873 38.6360487,10.9241305 38.5420337,10.6778622 L41.1977728,7.23908171 C41.4136365,6.96742572 41.4588967,6.59756916 41.3149131,6.28183678 C41.1709296,5.96610439 40.8620538,5.75789519 40.5154957,5.74295976 C40.2117646,5.72988939 39.9211038,5.86740249 39.7384859,6.11056707 L37.2114307,9.3827378 C36.9843414,9.30055488 36.7376271,9.25483537 36.4796986,9.25483537 L12.8705432,9.25483537 C12.6122305,9.25483537 12.3657882,9.30072317 12.1356991,9.38138305 L9.60687766,6.10921232 C9.43781797,5.88409848 9.17527379,5.74853032 8.89392945,5.74107207 L8.89152679,5.74242683 Z M12.8669911,19.6341463 C11.640793,19.6341463 10.6537116,20.6216878 10.6537116,21.8484573 L10.6537116,36.4930061 C10.6537116,37.7197756 11.640793,38.7073171 12.8669911,38.7073171 L36.4761464,38.7073171 C37.7023445,38.7073171 38.6894259,37.7197756 38.6894259,36.4930061 L38.6894259,21.8484573 C38.6922295,20.6232866 37.7053723,19.635689 36.4802116,19.635689 L12.8710562,19.635689 L12.8669911,19.6341463 Z" id="Shape" fill="url(#radialGradient-1)" fill-rule="nonzero"></path> + </g> + </g> + </svg> + </a> + </div> + </div> + </div> + <div id="step2_container" class="mx_HomePage_col mx_Spacer" style="display: none;"> + <div class="mx_HomePage_row"> + <div> + <h2>2: Configure your app</h2> + <a class="mx_Button" id="configure_riot_button" href="#">Configure</a> + <p class="mx_Subtext mx_SubtextTop">Tap the button above, or manually enable <em>Use custom server</em> and enter:</p> + <p class="mx_Subtext">Homeserver: <em id="hs_url"></em></p> + <p class="mx_Subtext" id="default_is">Identity Server: <em>https://vector.im</em> (default)</p> + <p class="mx_Subtext" id="custom_is">Identity Server: <em id="is_url"></em></p> + </div> + </div> + </div> + <div class="mx_HomePage_row mx_Center mx_Spacer"> + <p class="mx_Spacer"> + <a id="back_to_riot_button" href="#" class="mx_FooterLink"> + Go to Desktop Site + </a> + </p> + </div> + </div> + +</body> diff --git a/src/vector/mobile_guide/index.js b/src/vector/mobile_guide/index.js new file mode 100644 index 00000000..cc6730b5 --- /dev/null +++ b/src/vector/mobile_guide/index.js @@ -0,0 +1,111 @@ +import {getVectorConfig} from '../getconfig'; + +function onBackToRiotClick() { + // Cookie should expire in 4 hours + document.cookie = 'riot_mobile_redirect_to_guide=false;path=/;max-age=14400'; + window.location.href = '../'; +} + +// NEVER pass user-controlled content to this function! Hardcoded strings only please. +function renderConfigError(message) { + const contactMsg = "If this is unexpected, please contact your system administrator " + + "or technical support representative."; + message = `<h2>Error loading Riot</h2><p>${message}</p><p>${contactMsg}</p>`; + + const toHide = document.getElementsByClassName("mx_HomePage_container"); + const errorContainers = document.getElementsByClassName("mx_HomePage_errorContainer"); + + for (const e of toHide) { + // We have to clear the content because .style.display='none'; doesn't work + // due to an !important in the CSS. + e.innerHTML = ''; + } + for (const e of errorContainers) { + e.style.display = 'block'; + e.innerHTML = message; + } +} + +async function initPage() { + document.getElementById('back_to_riot_button').onclick = onBackToRiotClick; + + let config = await getVectorConfig('..'); + + // We manually parse the config similar to how validateServerConfig works because + // calling that function pulls in roughly 4mb of JS we don't use. + + const wkConfig = config['default_server_config']; // overwritten later under some conditions + const serverName = config['default_server_name']; + const defaultHsUrl = config['default_hs_url']; + const defaultIsUrl = config['default_is_url']; + + const incompatibleOptions = [wkConfig, serverName, defaultHsUrl].filter(i => !!i); + if (incompatibleOptions.length > 1) { + return renderConfigError( + "Invalid configuration: can only specify one of default_server_config, default_server_name, " + + "or default_hs_url.", + ); + } + if (incompatibleOptions.length < 1) { + return renderConfigError("Invalid configuration: no default server specified."); + } + + let hsUrl = ''; + let isUrl = ''; + + if (wkConfig && wkConfig['m.homeserver']) { + hsUrl = wkConfig['m.homeserver']['base_url']; + + if (wkConfig['m.identity_server']) { + isUrl = wkConfig['m.identity_server']['base_url']; + } + } + + if (serverName) { + // We also do our own minimal .well-known validation to avoid pulling in the js-sdk + try { + const result = await fetch(`https://${serverName}/.well-known/matrix/client`); + const wkConfig = await result.json(); + if (wkConfig && wkConfig['m.homeserver']) { + hsUrl = wkConfig['m.homeserver']['base_url']; + + if (wkConfig['m.identity_server']) { + isUrl = wkConfig['m.identity_server']['base_url']; + } + } + } catch (e) { + console.error(e); + return renderConfigError("Unable to fetch homeserver configuration"); + } + } + + if (defaultHsUrl) { + hsUrl = defaultHsUrl; + isUrl = defaultIsUrl; + } + + if (!hsUrl) { + return renderConfigError("Unable to locate homeserver"); + } + + if (hsUrl && !hsUrl.endsWith('/')) hsUrl += '/'; + if (isUrl && !isUrl.endsWith('/')) isUrl += '/'; + + if (hsUrl !== 'https://matrix.org/') { + document.getElementById('configure_riot_button').href = + "https://riot.im/config/config?hs_url=" + encodeURIComponent(hsUrl) + + "&is_url=" + encodeURIComponent(isUrl); + document.getElementById('step1_heading').innerHTML= '1: Install the app'; + document.getElementById('step2_container').style.display = 'block'; + document.getElementById('hs_url').innerText = hsUrl; + + if (isUrl && isUrl !== "https://vector.im/") { + document.getElementById('default_is').style.display = 'none'; + document.getElementById('custom_is').style.display = 'block'; + document.getElementById('is_url').style.display = 'block'; + document.getElementById('is_url').innerText = isUrl; + } + } +} + +initPage(); diff --git a/src/vector/olm-loader.js b/src/vector/olm-loader.js deleted file mode 100644 index a62d05b4..00000000 --- a/src/vector/olm-loader.js +++ /dev/null @@ -1,41 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* a very thin shim for loading olm.js: just sets the global OLM_OPTIONS and - * requires the actual olm.js library. - * - * olm.js reads global.OLM_OPTIONS and defines global.Olm. The latter is fine for us, - * but we need to prepare the former. - * - * We can't use webpack's definePlugin to do this, because we tell webpack not - * to parse olm.js. We also can't put this code in index.js, because olm and - * index.js are loaded in parallel, and we need to make sure OLM_OPTIONS is set - * before olm.js is loaded. - */ - -/* total_memory must be a power of two, and at least twice the stack. - * - * We don't need a lot of stack, but we do need about 128K of heap to encrypt a - * 64K event (enough to store the ciphertext and the plaintext, bearing in mind - * that the plaintext can only be 48K because base64). We also have about 36K - * of statics. So let's have 256K of memory. - */ -global.OLM_OPTIONS = { - TOTAL_STACK: 64*1024, - TOTAL_MEMORY: 256*1024, -}; - -require('olm/olm.js'); diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 0f76bf09..8b01f864 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -3,6 +3,8 @@ /* Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,44 +23,26 @@ import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform'; import dis from 'matrix-react-sdk/lib/dispatcher'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; import Promise from 'bluebird'; -import {remote, ipcRenderer, desktopCapturer} from 'electron'; -import rageshake from '../rageshake'; +import rageshake from 'matrix-react-sdk/lib/rageshake/rageshake'; -remote.autoUpdater.on('update-downloaded', onUpdateDownloaded); - -// try to flush the rageshake logs to indexeddb before quit. -ipcRenderer.on('before-quit', function () { - console.log('riot-desktop closing'); - rageshake.flush(); -}); - -function onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) { - dis.dispatch({ - action: 'new_version', - currentVersion: remote.app.getVersion(), - newVersion: ver, - releaseNotes: releaseNotes, - }); -} +const ipcRenderer = window.ipcRenderer; function platformFriendlyName(): string { - console.log(window.process); - switch (window.process.platform) { - case 'darwin': - return 'macOS'; - case 'freebsd': - return 'FreeBSD'; - case 'openbsd': - return 'OpenBSD'; - case 'sunos': - return 'SunOS'; - case 'win32': - return 'Windows'; - default: - // Sorry, Linux users: you get lumped into here, - // but only because Linux's capitalisation is - // normal. We do care about you. - return window.process.platform[0].toUpperCase() + window.process.platform.slice(1); + // used to use window.process but the same info is available here + if (navigator.userAgent.includes('Macintosh')) { + return 'macOS'; + } else if (navigator.userAgent.includes('FreeBSD')) { + return 'FreeBSD'; + } else if (navigator.userAgent.includes('OpenBSD')) { + return 'OpenBSD'; + } else if (navigator.userAgent.includes('SunOS')) { + return 'SunOS'; + } else if (navigator.userAgent.includes('Windows')) { + return 'Windows'; + } else if (navigator.userAgent.includes('Linux')) { + return 'Linux'; + } else { + return 'Unknown'; } } @@ -85,9 +69,11 @@ function getUpdateCheckStatus(status) { export default class ElectronPlatform extends VectorBasePlatform { constructor() { super(); - dis.register(_onAction); - this.updatable = Boolean(remote.autoUpdater.getFeedURL()); + this._pendingIpcCalls = {}; + this._nextIpcCallId = 0; + + dis.register(_onAction); /* IPC Call `check_updates` returns: true if there is an update available @@ -103,8 +89,40 @@ export default class ElectronPlatform extends VectorBasePlatform { this.showUpdateCheck = false; }); + // try to flush the rageshake logs to indexeddb before quit. + ipcRenderer.on('before-quit', function() { + console.log('riot-desktop closing'); + rageshake.flush(); + }); + + ipcRenderer.on('ipcReply', this._onIpcReply.bind(this)); + ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this)); + this.startUpdateCheck = this.startUpdateCheck.bind(this); this.stopUpdateCheck = this.stopUpdateCheck.bind(this); + + this._tryPersistStorage(); + } + + async _tryPersistStorage() { + if (navigator.storage && navigator.storage.persist) { + const granted = await navigator.storage.persist(); + const persisted = await navigator.storage.persisted(); + console.log("Storage persist request granted: " + granted + " persisted: " + persisted); + } + } + + async getConfig(): Promise<{}> { + return this._ipcCall('getConfig'); + } + + async onUpdateDownloaded(ev, updateInfo) { + dis.dispatch({ + action: 'new_version', + currentVersion: await this.getAppVersion(), + newVersion: updateInfo, + releaseNotes: updateInfo.releaseNotes, + }); } getHumanReadableName(): string { @@ -133,32 +151,25 @@ export default class ElectronPlatform extends VectorBasePlatform { // maybe we should pass basic styling (italics, bold, underline) through from MD // we only have to strip out < and > as the spec doesn't include anything about things like & // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done. - if (window.process.platform === 'linux') { + if (navigator.userAgent.includes('Linux')) { msg = msg.replace(/</g, '<').replace(/>/g, '>'); } // Notifications in Electron use the HTML5 notification API - const notification = new global.Notification( - title, - { - body: msg, - icon: avatarUrl, - tag: 'vector', - silent: true, // we play our own sounds - }, - ); + const notifBody = { + body: msg, + silent: true, // we play our own sounds + }; + if (avatarUrl) notifBody['icon'] = avatarUrl; + const notification = new global.Notification(title, notifBody); - notification.onclick = function() { + notification.onclick = () => { dis.dispatch({ action: 'view_room', room_id: room.roomId, }); global.focus(); - const win = remote.getCurrentWindow(); - - if (win.isMinimized()) win.restore(); - else if (!win.isVisible()) win.show(); - else win.focus(); + this._ipcCall('focusWindow'); }; return notification; @@ -172,8 +183,49 @@ export default class ElectronPlatform extends VectorBasePlatform { notif.close(); } - getAppVersion(): Promise<string> { - return Promise.resolve(remote.app.getVersion()); + async getAppVersion(): Promise<string> { + return this._ipcCall('getAppVersion'); + } + + supportsAutoLaunch(): boolean { + return true; + } + + async getAutoLaunchEnabled(): boolean { + return this._ipcCall('getAutoLaunchEnabled'); + } + + async setAutoLaunchEnabled(enabled: boolean): void { + return this._ipcCall('setAutoLaunchEnabled', enabled); + } + + supportsAutoHideMenuBar(): boolean { + return true; + } + + async getAutoHideMenuBarEnabled(): boolean { + return this._ipcCall('getAutoHideMenuBarEnabled'); + } + + async setAutoHideMenuBarEnabled(enabled: boolean): void { + return this._ipcCall('setAutoHideMenuBarEnabled', enabled); + } + + supportsMinimizeToTray(): boolean { + return true; + } + + async getMinimizeToTrayEnabled(): boolean { + return this._ipcCall('getMinimizeToTrayEnabled'); + } + + async setMinimizeToTrayEnabled(enabled: boolean): void { + return this._ipcCall('setMinimizeToTrayEnabled', enabled); + } + + async canSelfUpdate(): boolean { + const feedUrl = await this._ipcCall('getUpdateFeedUrl'); + return Boolean(feedUrl); } startUpdateCheck() { @@ -198,52 +250,47 @@ export default class ElectronPlatform extends VectorBasePlatform { return null; } - isElectron(): boolean { return true; } - requestNotificationPermission(): Promise<string> { return Promise.resolve('granted'); } reload() { - remote.getCurrentWebContents().reload(); + // we used to remote to the main process to get it to + // reload the webcontents, but in practice this is unnecessary: + // the normal way works fine. + window.location.reload(false); } - /* BEGIN copied and slightly-modified code - * setupScreenSharingForIframe function from: - * https://github.com/jitsi/jitsi-meet-electron-utils - * Copied directly here to avoid the need for a native electron module for - * 'just a bit of JavaScript' - * NOTE: Apache v2.0 licensed - */ - setupScreenSharingForIframe(iframe: Object) { - iframe.contentWindow.JitsiMeetElectron = { - /** - * Get sources available for screensharing. The callback is invoked - * with an array of DesktopCapturerSources. - * - * @param {Function} callback - The success callback. - * @param {Function} errorCallback - The callback for errors. - * @param {Object} options - Configuration for getting sources. - * @param {Array} options.types - Specify the desktop source types - * to get, with valid sources being "window" and "screen". - * @param {Object} options.thumbnailSize - Specify how big the - * preview images for the sources should be. The valid keys are - * height and width, e.g. { height: number, width: number}. By - * default electron will return images with height and width of - * 150px. - */ - obtainDesktopStreams(callback, errorCallback, options = {}) { - desktopCapturer.getSources(options, - (error, sources) => { - if (error) { - errorCallback(error); - return; - } - - callback(sources); - }); - }, - }; + async migrateFromOldOrigin() { + return this._ipcCall('origin_migrate'); + } + + async _ipcCall(name, ...args) { + const ipcCallId = ++this._nextIpcCallId; + return new Promise((resolve, reject) => { + this._pendingIpcCalls[ipcCallId] = {resolve, reject}; + window.ipcRenderer.send('ipcCall', {id: ipcCallId, name, args}); + // Maybe add a timeout to these? Probably not necessary. + }); + } + + _onIpcReply(ev, payload) { + if (payload.id === undefined) { + console.warn("Ignoring IPC reply with no ID"); + return; + } + + if (this._pendingIpcCalls[payload.id] === undefined) { + console.warn("Unknown IPC payload ID: " + payload.id); + return; + } + + const callbacks = this._pendingIpcCalls[payload.id]; + delete this._pendingIpcCalls[payload.id]; + if (payload.error) { + callbacks.reject(payload.error); + } else { + callbacks.resolve(payload.reply); + } } - /* END of copied and slightly-modified code */ } diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js index c3df04f5..f24031f7 100644 --- a/src/vector/platform/VectorBasePlatform.js +++ b/src/vector/platform/VectorBasePlatform.js @@ -3,6 +3,8 @@ /* Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -20,6 +22,7 @@ limitations under the License. import BasePlatform from 'matrix-react-sdk/lib/BasePlatform'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; import dis from 'matrix-react-sdk/lib/dispatcher'; +import {getVectorConfig} from "../getconfig"; import Favico from 'favico.js'; @@ -38,30 +41,44 @@ export default class VectorBasePlatform extends BasePlatform { constructor() { super(); - // The 'animations' are really low framerate and look terrible. - // Also it re-starts the animationb every time you set the badge, - // and we set the state each time, even if the value hasn't changed, - // so we'd need to fix that if enabling the animation. - this.favicon = new Favico({animation: 'none'}); this.showUpdateCheck = false; - this._updateFavicon(); - this.updatable = true; - this.startUpdateCheck = this.startUpdateCheck.bind(this); this.stopUpdateCheck = this.stopUpdateCheck.bind(this); } + async getConfig(): Promise<{}> { + return getVectorConfig(); + } + getHumanReadableName(): string { return 'Vector Base Platform'; // no translation required: only used for analytics } + /** + * Delay creating the `Favico` instance until first use (on the first notification) as + * it uses canvas, which can trigger a permission prompt in Firefox's resist + * fingerprinting mode. + * See https://github.com/vector-im/riot-web/issues/9605. + */ + get favicon() { + if (this._favicon) { + return this._favicon; + } + // The 'animations' are really low framerate and look terrible. + // Also it re-starts the animation every time you set the badge, + // and we set the state each time, even if the value hasn't changed, + // so we'd need to fix that if enabling the animation. + this._favicon = new Favico({ animation: 'none' }); + return this._favicon; + } + _updateFavicon() { try { // This needs to be in in a try block as it will throw // if there are more than 100 badge count changes in // its internal queue - let bgColor = "#d00", - notif = this.notificationCount; + let bgColor = "#d00"; + let notif = this.notificationCount; if (this.errorDidOccur) { notif = notif || "×"; @@ -97,8 +114,8 @@ export default class VectorBasePlatform extends BasePlatform { /** * Whether we can call checkForUpdate on this platform build */ - canSelfUpdate(): boolean { - return this.updatable; + async canSelfUpdate(): boolean { + return false; } startUpdateCheck() { @@ -114,7 +131,11 @@ export default class VectorBasePlatform extends BasePlatform { dis.dispatch({ action: 'check_updates', value: false, - }) + }); + } + + getUpdateCheckStatusEnum() { + return updateCheckStatusEnum; } /** @@ -132,4 +153,12 @@ export default class VectorBasePlatform extends BasePlatform { getDefaultDeviceDisplayName(): string { return _t("Unknown device"); } + + /** + * Migrate account data from a previous origin + * Used only for the electron app + */ + async migrateFromOldOrigin() { + return false; + } } diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index b88ee93f..984aa8da 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -26,7 +26,7 @@ import Promise from 'bluebird'; import url from 'url'; import UAParser from 'ua-parser-js'; -var POKE_RATE_MS = 10 * 60 * 1000; // 10 min +const POKE_RATE_MS = 10 * 60 * 1000; // 10 min export default class WebPlatform extends VectorBasePlatform { constructor() { @@ -68,23 +68,21 @@ export default class WebPlatform extends VectorBasePlatform { // annoyingly, the latest spec says this returns a // promise, but this is only supported in Chrome 46 // and Firefox 47, so adapt the callback API. - const defer = Promise.defer(); - global.Notification.requestPermission((result) => { - defer.resolve(result); + return new Promise(function(resolve, reject) { + global.Notification.requestPermission((result) => { + resolve(result); + }); }); - return defer.promise; } displayNotification(title: string, msg: string, avatarUrl: string, room: Object) { - const notification = new global.Notification( - title, - { - body: msg, - icon: avatarUrl, - tag: "vector", - silent: true, // we play our own sounds - }, - ); + const notifBody = { + body: msg, + tag: "vector", + silent: true, // we play our own sounds + }; + if (avatarUrl) notifBody['icon'] = avatarUrl; + const notification = new global.Notification(title, notifBody); notification.onclick = function() { dis.dispatch({ @@ -103,31 +101,31 @@ export default class WebPlatform extends VectorBasePlatform { } _getVersion(): Promise<string> { - const deferred = Promise.defer(); - // We add a cachebuster to the request to make sure that we know about // the most recent version on the origin server. That might not // actually be the version we'd get on a reload (particularly in the // presence of intermediate caching proxies), but still: we're trying // to tell the user that there is a new version. - request( - { - method: "GET", - url: "version", - qs: { cachebuster: Date.now() }, - }, - (err, response, body) => { - if (err || response.status < 200 || response.status >= 300) { - if (err === null) err = { status: response.status }; - deferred.reject(err); - return; - } - const ver = body.trim(); - deferred.resolve(ver); - }, - ); - return deferred.promise; + return new Promise(function(resolve, reject) { + request( + { + method: "GET", + url: "version", + qs: { cachebuster: Date.now() }, + }, + (err, response, body) => { + if (err || response.status < 200 || response.status >= 300) { + if (err === null) err = { status: response.status }; + reject(err); + return; + } + + const ver = body.trim(); + resolve(ver); + }, + ); + }); } getAppVersion(): Promise<string> { @@ -142,6 +140,10 @@ export default class WebPlatform extends VectorBasePlatform { setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS); } + async canSelfUpdate(): boolean { + return true; + } + pollForUpdate() { return this._getVersion().then((ver) => { if (this.runningVersion === null) { @@ -179,7 +181,7 @@ export default class WebPlatform extends VectorBasePlatform { } installUpdate() { - window.location.reload(); + window.location.reload(true); } getDefaultDeviceDisplayName(): string { diff --git a/src/vector/platform/index.js b/src/vector/platform/index.js deleted file mode 100644 index 90714200..00000000 --- a/src/vector/platform/index.js +++ /dev/null @@ -1,29 +0,0 @@ -// @flow - -/* -Copyright 2016 Aviral Dasgupta -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -let Platform = null; - -if (window && window.process && window.process && window.process.type === 'renderer') { - // we're running inside electron - Platform = require('./ElectronPlatform'); -} else { - Platform = require('./WebPlatform'); -} - -export default Platform; diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js deleted file mode 100644 index d0977414..00000000 --- a/src/vector/rageshake.js +++ /dev/null @@ -1,473 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import Promise from 'bluebird'; - -// This module contains all the code needed to log the console, persist it to -// disk and submit bug reports. Rationale is as follows: -// - Monkey-patching the console is preferable to having a log library because -// we can catch logs by other libraries more easily, without having to all -// depend on the same log framework / pass the logger around. -// - We use IndexedDB to persists logs because it has generous disk space -// limits compared to local storage. IndexedDB does not work in incognito -// mode, in which case this module will not be able to write logs to disk. -// However, the logs will still be stored in-memory, so can still be -// submitted in a bug report should the user wish to: we can also store more -// logs in-memory than in local storage, which does work in incognito mode. -// We also need to handle the case where there are 2+ tabs. Each JS runtime -// generates a random string which serves as the "ID" for that tab/session. -// These IDs are stored along with the log lines. -// - Bug reports are sent as a POST over HTTPS: it purposefully does not use -// Matrix as bug reports may be made when Matrix is not responsive (which may -// be the cause of the bug). We send the most recent N MB of UTF-8 log data, -// starting with the most recent, which we know because the "ID"s are -// actually timestamps. We then purge the remaining logs. We also do this -// purge on startup to prevent logs from accumulating. - -// the frequency with which we flush to indexeddb -const FLUSH_RATE_MS = 30 * 1000; - -// the length of log data we keep in indexeddb (and include in the reports) -const MAX_LOG_SIZE = 1024 * 1024 * 1; // 1 MB - -// A class which monkey-patches the global console and stores log lines. -class ConsoleLogger { - constructor() { - this.logs = ""; - } - - monkeyPatch(consoleObj) { - // Monkey-patch console logging - const consoleFunctionsToLevels = { - log: "I", - info: "I", - warn: "W", - error: "E", - }; - Object.keys(consoleFunctionsToLevels).forEach((fnName) => { - const level = consoleFunctionsToLevels[fnName]; - let originalFn = consoleObj[fnName].bind(consoleObj); - consoleObj[fnName] = (...args) => { - this.log(level, ...args); - originalFn(...args); - } - }); - } - - log(level, ...args) { - // We don't know what locale the user may be running so use ISO strings - const ts = new Date().toISOString(); - // Some browsers support string formatting which we're not doing here - // so the lines are a little more ugly but easy to implement / quick to - // run. - // Example line: - // 2017-01-18T11:23:53.214Z W Failed to set badge count - const line = `${ts} ${level} ${args.join(' ')}\n`; - // Using + really is the quickest way in JS - // http://jsperf.com/concat-vs-plus-vs-join - this.logs += line; - } - - /** - * Retrieve log lines to flush to disk. - * @param {boolean} keepLogs True to not delete logs after flushing. - * @return {string} \n delimited log lines to flush. - */ - flush(keepLogs) { - // The ConsoleLogger doesn't care how these end up on disk, it just - // flushes them to the caller. - if (keepLogs) { - return this.logs; - } - const logsToFlush = this.logs; - this.logs = ""; - return logsToFlush; - } -} - -// A class which stores log lines in an IndexedDB instance. -class IndexedDBLogStore { - constructor(indexedDB, logger) { - this.indexedDB = indexedDB; - this.logger = logger; - this.id = "instance-" + Math.random() + Date.now(); - this.index = 0; - this.db = null; - this.flushPromise = null; - // set if flush() is called whilst one is ongoing - this.flushAgainPromise = null; - } - - /** - * @return {Promise} Resolves when the store is ready. - */ - connect() { - let req = this.indexedDB.open("logs"); - return new Promise((resolve, reject) => { - req.onsuccess = (event) => { - this.db = event.target.result; - // Periodically flush logs to local storage / indexeddb - setInterval(this.flush.bind(this), FLUSH_RATE_MS); - resolve(); - }; - - req.onerror = (event) => { - const err = ( - "Failed to open log database: " + event.target.errorCode - ); - console.error(err); - reject(new Error(err)); - }; - - // First time: Setup the object store - req.onupgradeneeded = (event) => { - const db = event.target.result; - const logObjStore = db.createObjectStore("logs", { - keyPath: ["id", "index"] - }); - // Keys in the database look like: [ "instance-148938490", 0 ] - // Later on we need to query everything based on an instance id. - // In order to do this, we need to set up indexes "id". - logObjStore.createIndex("id", "id", { unique: false }); - - logObjStore.add( - this._generateLogEntry( - new Date() + " ::: Log database was created." - ) - ); - - const lastModifiedStore = db.createObjectStore("logslastmod", { - keyPath: "id", - }); - lastModifiedStore.add(this._generateLastModifiedTime()); - } - }); - } - - /** - * Flush logs to disk. - * - * There are guards to protect against race conditions in order to ensure - * that all previous flushes have completed before the most recent flush. - * Consider without guards: - * - A calls flush() periodically. - * - B calls flush() and wants to send logs immediately afterwards. - * - If B doesn't wait for A's flush to complete, B will be missing the - * contents of A's flush. - * To protect against this, we set 'flushPromise' when a flush is ongoing. - * Subsequent calls to flush() during this period will chain another flush, - * then keep returning that same chained flush. - * - * This guarantees that we will always eventually do a flush when flush() is - * called. - * - * @return {Promise} Resolved when the logs have been flushed. - */ - flush() { - // check if a flush() operation is ongoing - if (this.flushPromise && this.flushPromise.isPending()) { - if (this.flushAgainPromise && this.flushAgainPromise.isPending()) { - // this is the 3rd+ time we've called flush() : return the same - // promise. - return this.flushAgainPromise; - } - // queue up a flush to occur immediately after the pending one - // completes. - this.flushAgainPromise = this.flushPromise.then(() => { - return this.flush(); - }); - return this.flushAgainPromise; - } - // there is no flush promise or there was but it has finished, so do - // a brand new one, destroying the chain which may have been built up. - this.flushPromise = new Promise((resolve, reject) => { - if (!this.db) { - // not connected yet or user rejected access for us to r/w to - // the db. - reject(new Error("No connected database")); - return; - } - const lines = this.logger.flush(); - if (lines.length === 0) { - resolve(); - return; - } - let txn = this.db.transaction(["logs", "logslastmod"], "readwrite"); - let objStore = txn.objectStore("logs"); - txn.oncomplete = (event) => { - resolve(); - }; - txn.onerror = (event) => { - console.error( - "Failed to flush logs : ", event - ); - reject( - new Error("Failed to write logs: " + event.target.errorCode) - ); - } - objStore.add(this._generateLogEntry(lines)); - let lastModStore = txn.objectStore("logslastmod"); - lastModStore.put(this._generateLastModifiedTime()); - }); - return this.flushPromise; - } - - /** - * Consume the most recent logs and return them. Older logs which are not - * returned are deleted at the same time, so this can be called at startup - * to do house-keeping to keep the logs from growing too large. - * - * @return {Promise<Object[]>} Resolves to an array of objects. The array is - * sorted in time (oldest first) based on when the log file was created (the - * log ID). The objects have said log ID in an "id" field and "lines" which - * is a big string with all the new-line delimited logs. - */ - async consume() { - const db = this.db; - - // Returns: a string representing the concatenated logs for this ID. - function fetchLogs(id) { - const o = db.transaction("logs", "readonly").objectStore("logs"); - return selectQuery(o.index("id"), IDBKeyRange.only(id), - (cursor) => { - return { - lines: cursor.value.lines, - index: cursor.value.index, - } - }).then((linesArray) => { - // We have been storing logs periodically, so string them all - // together *in order of index* now - linesArray.sort((a, b) => { - return a.index - b.index; - }) - return linesArray.map((l) => l.lines).join(""); - }); - } - - // Returns: A sorted array of log IDs. (newest first) - function fetchLogIds() { - // To gather all the log IDs, query for all records in logslastmod. - const o = db.transaction("logslastmod", "readonly").objectStore( - "logslastmod" - ); - return selectQuery(o, undefined, (cursor) => { - return { - id: cursor.value.id, - ts: cursor.value.ts, - }; - }).then((res) => { - // Sort IDs by timestamp (newest first) - return res.sort((a, b) => { - return b.ts - a.ts; - }).map((a) => a.id); - }); - } - - function deleteLogs(id) { - return new Promise((resolve, reject) => { - const txn = db.transaction( - ["logs", "logslastmod"], "readwrite" - ); - const o = txn.objectStore("logs"); - // only load the key path, not the data which may be huge - const query = o.index("id").openKeyCursor(IDBKeyRange.only(id)); - query.onsuccess = (event) => { - const cursor = event.target.result; - if (!cursor) { - return; - } - o.delete(cursor.primaryKey); - cursor.continue(); - } - txn.oncomplete = () => { - resolve(); - }; - txn.onerror = (event) => { - reject( - new Error( - "Failed to delete logs for " + - `'${id}' : ${event.target.errorCode}` - ) - ); - }; - // delete last modified entries - const lastModStore = txn.objectStore("logslastmod"); - lastModStore.delete(id); - }); - } - - let allLogIds = await fetchLogIds(); - let removeLogIds = []; - let logs = []; - let size = 0; - for (let i = 0; i < allLogIds.length; i++) { - let lines = await fetchLogs(allLogIds[i]); - - // always include at least one log file, but only include - // subsequent ones if they won't take us over the MAX_LOG_SIZE - if (i > 0 && size + lines.length > MAX_LOG_SIZE) { - // the remaining log IDs should be removed. If we go out of - // bounds this is just [] - // - // XXX: there's nothing stopping the current session exceeding - // MAX_LOG_SIZE. We ought to think about culling it. - removeLogIds = allLogIds.slice(i + 1); - break; - } - - logs.push({ - lines: lines, - id: allLogIds[i], - }); - size += lines.length; - } - if (removeLogIds.length > 0) { - console.log("Removing logs: ", removeLogIds); - // Don't await this because it's non-fatal if we can't clean up - // logs. - Promise.all(removeLogIds.map((id) => deleteLogs(id))).then(() => { - console.log(`Removed ${removeLogIds.length} old logs.`); - }, (err) => { - console.error(err); - }) - } - return logs; - } - - _generateLogEntry(lines) { - return { - id: this.id, - lines: lines, - index: this.index++ - }; - } - - _generateLastModifiedTime() { - return { - id: this.id, - ts: Date.now(), - }; - } -} - -/** - * Helper method to collect results from a Cursor and promiseify it. - * @param {ObjectStore|Index} store The store to perform openCursor on. - * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor. - * @param {Function} resultMapper A function which is repeatedly called with a - * Cursor. - * Return the data you want to keep. - * @return {Promise<T[]>} Resolves to an array of whatever you returned from - * resultMapper. - */ -function selectQuery(store, keyRange, resultMapper) { - const query = store.openCursor(keyRange); - return new Promise((resolve, reject) => { - let results = []; - query.onerror = (event) => { - reject(new Error("Query failed: " + event.target.errorCode)); - }; - // collect results - query.onsuccess = (event) => { - const cursor = event.target.result; - if (!cursor) { - resolve(results); - return; // end of results - } - results.push(resultMapper(cursor)); - cursor.continue(); - } - }); -} - - -let store = null; -let logger = null; -let initPromise = null; -module.exports = { - - /** - * Configure rage shaking support for sending bug reports. - * Modifies globals. - * @return {Promise} Resolves when set up. - */ - init: function() { - if (initPromise) { - return initPromise; - } - logger = new ConsoleLogger(); - logger.monkeyPatch(window.console); - - // just *accessing* indexedDB throws an exception in firefox with - // indexeddb disabled. - let indexedDB; - try { - indexedDB = window.indexedDB; - } catch(e) {} - - if (indexedDB) { - store = new IndexedDBLogStore(indexedDB, logger); - initPromise = store.connect(); - return initPromise; - } - initPromise = Promise.resolve(); - return initPromise; - }, - - flush: function() { - if (!store) { - return; - } - store.flush(); - }, - - /** - * Clean up old logs. - * @return Promise Resolves if cleaned logs. - */ - cleanup: async function() { - if (!store) { - return; - } - await store.consume(); - }, - - /** - * Get a recent snapshot of the logs, ready for attaching to a bug report - * - * @return {Array<{lines: string, id, string}>} list of log data - */ - getLogsForReport: async function() { - if (!logger) { - throw new Error( - "No console logger, did you forget to call init()?" - ); - } - // If in incognito mode, store is null, but we still want bug report - // sending to work going off the in-memory console logs. - if (store) { - // flush most recent logs - await store.flush(); - return await store.consume(); - } - else { - return [{ - lines: logger.flush(true), - id: "-", - }]; - } - }, -}; diff --git a/src/vector/rageshakesetup.js b/src/vector/rageshakesetup.js new file mode 100644 index 00000000..e1dc5e24 --- /dev/null +++ b/src/vector/rageshakesetup.js @@ -0,0 +1,68 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* + * Separate file that sets up rageshake logging when imported. + * This is necessary so that rageshake logging is set up before + * anything else. Webpack puts all import statements at the top + * of the file before any code, so imports will always be + * evaluated first. Other imports can cause other code to be + * evaluated (eg. the loglevel library in js-sdk, which if set + * up before rageshake causes some js-sdk logging to be missing + * from the rageshake.) + */ + +import rageshake from "matrix-react-sdk/lib/rageshake/rageshake"; +import SdkConfig from "matrix-react-sdk/lib/SdkConfig"; + +function initRageshake() { + rageshake.init().then(() => { + console.log("Initialised rageshake."); + console.log("To fix line numbers in Chrome: " + + "Meatball menu → Settings → Blackboxing → Add /rageshake\\.js$"); + + window.addEventListener('beforeunload', (e) => { + console.log('riot-web closing'); + // try to flush the logs to indexeddb + rageshake.flush(); + }); + + rageshake.cleanup(); + }, (err) => { + console.error("Failed to initialise rageshake: " + err); + }); +} + +initRageshake(); + +global.mxSendRageshake = function(text, withLogs) { + if (withLogs === undefined) withLogs = true; + if (!text || !text.trim()) { + console.error("Cannot send a rageshake without a message - please tell us what went wrong"); + return; + } + require(['matrix-react-sdk/lib/rageshake/submit-rageshake'], (s) => { + s(SdkConfig.get().bug_report_endpoint_url, { + userText: text, + sendLogs: withLogs, + progressCallback: console.log.bind(console), + }).then(() => { + console.log("Bug report sent!"); + }, (err) => { + console.error(err); + }); + }); +}; diff --git a/src/vector/submit-rageshake.js b/src/vector/submit-rageshake.js deleted file mode 100644 index b66ec9ab..00000000 --- a/src/vector/submit-rageshake.js +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2017 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import pako from 'pako'; -import Promise from 'bluebird'; - -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import { _t } from 'matrix-react-sdk/lib/languageHandler'; - -import rageshake from './rageshake' - - -// polyfill textencoder if necessary -import * as TextEncodingUtf8 from 'text-encoding-utf-8'; -let TextEncoder = window.TextEncoder; -if (!TextEncoder) { - TextEncoder = TextEncodingUtf8.TextEncoder; -} - -/** - * Send a bug report. - * - * @param {string} bugReportEndpoint HTTP url to send the report to - * - * @param {object} opts optional dictionary of options - * - * @param {string} opts.userText Any additional user input. - * - * @param {boolean} opts.sendLogs True to send logs - * - * @param {function(string)} opts.progressCallback Callback to call with progress updates - * - * @return {Promise} Resolved when the bug report is sent. - */ -export default async function sendBugReport(bugReportEndpoint, opts) { - if (!bugReportEndpoint) { - throw new Error("No bug report endpoint has been set."); - } - - opts = opts || {}; - const progressCallback = opts.progressCallback || (() => {}); - - progressCallback(_t("Collecting app version information")); - let version = "UNKNOWN"; - try { - version = await PlatformPeg.get().getAppVersion(); - } - catch (err) {} // PlatformPeg already logs this. - - let userAgent = "UNKNOWN"; - if (window.navigator && window.navigator.userAgent) { - userAgent = window.navigator.userAgent; - } - - const client = MatrixClientPeg.get(); - - console.log("Sending bug report."); - - const body = new FormData(); - body.append('text', opts.userText || "User did not supply any additional text."); - body.append('app', 'riot-web'); - body.append('version', version); - body.append('user_agent', userAgent); - - if (client) { - body.append('user_id', client.credentials.userId); - body.append('device_id', client.deviceId); - } - - if (opts.sendLogs) { - progressCallback(_t("Collecting logs")); - const logs = await rageshake.getLogsForReport(); - for (let entry of logs) { - // encode as UTF-8 - const buf = new TextEncoder().encode(entry.lines); - - // compress - const compressed = pako.gzip(buf); - - body.append('compressed-log', new Blob([compressed]), entry.id); - } - } - - progressCallback(_t("Uploading report")); - await _submitReport(bugReportEndpoint, body, progressCallback); -} - -function _submitReport(endpoint, body, progressCallback) { - const deferred = Promise.defer(); - - const req = new XMLHttpRequest(); - req.open("POST", endpoint); - req.timeout = 5 * 60 * 1000; - req.onreadystatechange = function() { - if (req.readyState === XMLHttpRequest.LOADING) { - progressCallback(_t("Waiting for response from server")); - } else if (req.readyState === XMLHttpRequest.DONE) { - on_done(); - } - }; - req.send(body); - return deferred.promise; - - function on_done() { - if (req.status < 200 || req.status >= 400) { - deferred.reject(new Error(`HTTP ${req.status}`)); - return; - } - deferred.resolve(); - } -} diff --git a/src/vector/url_utils.js b/src/vector/url_utils.js index 69354b5d..cbaefa0c 100644 --- a/src/vector/url_utils.js +++ b/src/vector/url_utils.js @@ -1,3 +1,19 @@ +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import qs from 'querystring'; // We want to support some name / value pairs in the fragment @@ -7,16 +23,16 @@ import qs from 'querystring'; export function parseQsFromFragment(location) { // if we have a fragment, it will start with '#', which we need to drop. // (if we don't, this will return ''). - var fragment = location.hash.substring(1); + const fragment = location.hash.substring(1); // our fragment may contain a query-param-like section. we need to fish // this out *before* URI-decoding because the params may contain ? and & // characters which are only URI-encoded once. - var hashparts = fragment.split('?'); + const hashparts = fragment.split('?'); - var result = { + const result = { location: decodeURIComponent(hashparts[0]), - params: {} + params: {}, }; if (hashparts.length > 1) { diff --git a/test/all-tests.js b/test/all-tests.js index 2ed16932..156b8542 100644 --- a/test/all-tests.js +++ b/test/all-tests.js @@ -6,8 +6,8 @@ // ideally these unit tests could be run under nodejs rather than in a browser // via karma, but having two separate test frameworks in the same project // seems confusing -var unit_tests = require.context('./unit-tests', true, /\.js$/); +const unit_tests = require.context('./unit-tests', true, /\.js$/); unit_tests.keys().forEach(unit_tests); -var app_tests = require.context('./app-tests', true, /\.jsx?$/); +const app_tests = require.context('./app-tests', true, /\.jsx?$/); app_tests.keys().forEach(app_tests); diff --git a/test/app-tests/joining.js b/test/app-tests/joining.js index fc380e7d..9c546399 100644 --- a/test/app-tests/joining.js +++ b/test/app-tests/joining.js @@ -17,40 +17,42 @@ limitations under the License. /* joining.js: tests for the various paths when joining a room */ import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import Platform from '../../src/vector/platform'; +import WebPlatform from '../../src/vector/platform/WebPlatform'; require('skin-sdk'); -var jssdk = require('matrix-js-sdk'); +const jssdk = require('matrix-js-sdk'); -var sdk = require('matrix-react-sdk'); -var peg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var dis = require('matrix-react-sdk/lib/dispatcher'); -var PageTypes = require('matrix-react-sdk/lib/PageTypes'); -var MatrixChat = sdk.getComponent('structures.MatrixChat'); -var RoomDirectory = sdk.getComponent('structures.RoomDirectory'); -var RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar'); -var RoomView = sdk.getComponent('structures.RoomView'); +const sdk = require('matrix-react-sdk'); +const peg = require('matrix-react-sdk/lib/MatrixClientPeg'); +const dis = require('matrix-react-sdk/lib/dispatcher'); +const PageTypes = require('matrix-react-sdk/lib/PageTypes'); +const MatrixChat = sdk.getComponent('structures.MatrixChat'); +const RoomDirectory = sdk.getComponent('structures.RoomDirectory'); +const RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar'); +const RoomView = sdk.getComponent('structures.RoomView'); -var React = require('react'); -var ReactDOM = require('react-dom'); -var ReactTestUtils = require('react-addons-test-utils'); -var expect = require('expect'); +const React = require('react'); +const ReactDOM = require('react-dom'); +const ReactTestUtils = require('react-dom/test-utils'); +const expect = require('expect'); import Promise from 'bluebird'; +import {makeType} from "matrix-react-sdk/lib/utils/TypeUtils"; +import {ValidatedServerConfig} from "matrix-react-sdk/lib/utils/AutoDiscoveryUtils"; -var test_utils = require('../test-utils'); -var MockHttpBackend = require('matrix-mock-request'); +const test_utils = require('../test-utils'); +const MockHttpBackend = require('matrix-mock-request'); -var HS_URL='http://localhost'; -var IS_URL='http://localhost'; -var USER_ID='@me:localhost'; -var ACCESS_TOKEN='access_token'; +const HS_URL='http://localhost'; +const IS_URL='http://localhost'; +const USER_ID='@me:localhost'; +const ACCESS_TOKEN='access_token'; -describe('joining a room', function () { - describe('over federation', function () { - var parentDiv; - var httpBackend; - var matrixChat; +describe('joining a room', function() { + describe('over federation', function() { + let parentDiv; + let httpBackend; + let matrixChat; beforeEach(function() { test_utils.beforeEach(this); @@ -71,9 +73,15 @@ describe('joining a room', function () { } }); - it('should not get stuck at a spinner', function() { - var ROOM_ALIAS = '#alias:localhost'; - var ROOM_ID = '!id:localhost'; + // TODO: Re-enable test + // The test is currently disabled because the room directory now resides in a dialog, + // which is not accessible from the MatrixChat component anymore. Convincing react that + // the dialog does exist and is under a different tree is incredibly difficult though, + // so for now the test has been disabled. We should revisit this test when someone has + // the time to kill to figure this out. Problem area is highlighted within the test. + xit('should not get stuck at a spinner', function() { + const ROOM_ALIAS = '#alias:localhost'; + const ROOM_ID = '!id:localhost'; httpBackend.when('GET', '/pushrules').respond(200, {}); httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); @@ -88,10 +96,21 @@ describe('joining a room', function () { localStorage.setItem("mx_access_token", ACCESS_TOKEN ); localStorage.setItem("mx_user_id", USER_ID); - PlatformPeg.set(new Platform()); + PlatformPeg.set(new WebPlatform()); - var mc = ( - <MatrixChat config={{}} + const config = { + validated_server_config: makeType(ValidatedServerConfig, { + hsUrl: HS_URL, + hsName: "TEST_ENVIRONMENT", + hsNameIsDifferent: false, // yes, we lie + isUrl: IS_URL, + }), + }; + + const mc = ( + <MatrixChat + config={config} + serverConfig={config.validated_server_config} makeRegistrationUrl={()=>{throw new Error("unimplemented");}} initialScreenAfterLogin={{ screen: 'directory', @@ -100,7 +119,7 @@ describe('joining a room', function () { ); matrixChat = ReactDOM.render(mc, parentDiv); - var roomView; + let roomView; // wait for /sync to happen. This may take some time, as the client // has to initialise indexeddb. @@ -118,11 +137,22 @@ describe('joining a room', function () { }).then(() => { console.log(`${Date.now()} App made requests for directory view; switching to a room.`); - var roomDir = ReactTestUtils.findRenderedComponentWithType( - matrixChat, RoomDirectory); + // TODO: Make this look in the right spot for the directory dialog. + // See the comment block at the top of the test for a bit more information. The short + // story here is that the RoomDirectory does not exist under matrixChat anymore, or even + // the parentDiv we have access to. Asking React to find the RoomDirectory as a child of + // the document results in it complaining that you didn't give it a component tree to + // search in. When you do get a reference to the component tree based off the document + // root and ask it to search, it races and can't find the component in time. To top it + // all off, MatrixReactTestUtils can't find the element in time either even with a very + // high number of attempts. Assuming we can get a reference to the RoomDirectory in a + // dialog, the rest of the test should be fine. + const roomDir = ReactTestUtils.findRenderedComponentWithType( + matrixChat, RoomDirectory, + ); // enter an alias in the input, and simulate enter - var input = ReactTestUtils.findRenderedDOMComponentWithTag( + const input = ReactTestUtils.findRenderedDOMComponentWithTag( roomDir, 'input'); input.value = ROOM_ALIAS; ReactTestUtils.Simulate.change(input); diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index dab61657..92549893 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -17,13 +17,13 @@ limitations under the License. /* loading.js: test the myriad paths we have for loading the application */ import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; -import Platform from '../../src/vector/platform'; +import WebPlatform from '../../src/vector/platform/WebPlatform'; import 'skin-sdk'; import React from 'react'; import ReactDOM from 'react-dom'; -import ReactTestUtils from 'react-addons-test-utils'; +import ReactTestUtils from 'react-dom/test-utils'; import expect from 'expect'; import Promise from 'bluebird'; import MatrixReactTestUtils from 'matrix-react-test-utils'; @@ -39,11 +39,24 @@ import dis from 'matrix-react-sdk/lib/dispatcher'; import * as test_utils from '../test-utils'; import MockHttpBackend from 'matrix-mock-request'; import {parseQs, parseQsFromFragment} from '../../src/vector/url_utils'; +import {makeType} from "matrix-react-sdk/lib/utils/TypeUtils"; +import {ValidatedServerConfig} from "matrix-react-sdk/lib/utils/AutoDiscoveryUtils"; -var DEFAULT_HS_URL='http://my_server'; -var DEFAULT_IS_URL='http://my_is'; +const DEFAULT_HS_URL='http://my_server'; +const DEFAULT_IS_URL='http://my_is'; -describe('loading:', function () { +expect.extend({ + toStartWith(prefix) { + expect.assert( + this.actual.startsWith(prefix), + 'expected %s to start with %s', + this.actual, prefix, + ); + return this; + } +}); + +describe('loading:', function() { let parentDiv; let httpBackend; @@ -74,7 +87,7 @@ describe('loading:', function () { }); }); - afterEach(async function () { + afterEach(async function() { console.log(`${Date.now()}: loading: afterEach`); if (parentDiv) { ReactDOM.unmountComponentAtNode(parentDiv); @@ -112,12 +125,9 @@ describe('loading:', function () { toString: function() { return this.search + this.hash; }, }; - let tokenLoginCompleteDefer = Promise.defer(); - tokenLoginCompletePromise = tokenLoginCompleteDefer.promise; - function onNewScreen(screen) { console.log(Date.now() + " newscreen "+screen); - var hash = '#/' + screen; + const hash = '#/' + screen; windowLocation.hash = hash; console.log(Date.now() + " browser URI now "+ windowLocation); } @@ -129,7 +139,7 @@ describe('loading:', function () { return { screen: fragparts.location.substring(1), params: fragparts.params, - } + }; } const MatrixChat = sdk.getComponent('structures.MatrixChat'); @@ -138,35 +148,59 @@ describe('loading:', function () { const config = Object.assign({ default_hs_url: DEFAULT_HS_URL, default_is_url: DEFAULT_IS_URL, + validated_server_config: makeType(ValidatedServerConfig, { + hsUrl: DEFAULT_HS_URL, + hsName: "TEST_ENVIRONMENT", + hsNameIsDifferent: false, // yes, we lie + isUrl: DEFAULT_IS_URL, + }), + embeddedPages: { + homeUrl: 'data:text/html;charset=utf-8;base64,PGh0bWw+PC9odG1sPg==', + }, }, opts.config || {}); - PlatformPeg.set(new Platform()); + PlatformPeg.set(new WebPlatform()); - var params = parseQs(windowLocation); - matrixChat = ReactDOM.render( - <MatrixChat - onNewScreen={onNewScreen} - config={config} - realQueryParams={params} - startingFragmentQueryParams={fragParts.params} - enableGuest={true} - onTokenLoginCompleted={() => tokenLoginCompleteDefer.resolve()} - initialScreenAfterLogin={getScreenFromLocation(windowLocation)} - makeRegistrationUrl={() => {throw new Error('Not implemented');}} - />, parentDiv - ); + const params = parseQs(windowLocation); + + tokenLoginCompletePromise = new Promise(resolve => { + matrixChat = ReactDOM.render( + <MatrixChat + onNewScreen={onNewScreen} + config={config} + serverConfig={config.validated_server_config} + realQueryParams={params} + startingFragmentQueryParams={fragParts.params} + enableGuest={true} + onTokenLoginCompleted={resolve} + initialScreenAfterLogin={getScreenFromLocation(windowLocation)} + makeRegistrationUrl={() => {throw new Error('Not implemented');}} + />, parentDiv, + ); + }); } // set an expectation that we will get a call to /sync, then flush // http requests until we do. // // returns a promise resolving to the received request - async function expectAndAwaitSync(response) { - response = response || {}; + async function expectAndAwaitSync(opts) { let syncRequest = null; + const isGuest = opts && opts.isGuest; + if (!isGuest) { + httpBackend.when('GET', '/_matrix/client/versions') + .respond(200, { + "versions": ["r0.3.0"], + "unstable_features": { + "m.lazy_load_members": true + } + }); + // the call to create the LL filter + httpBackend.when('POST', '/filter').respond(200, { filter_id: 'llfid' }); + } httpBackend.when('GET', '/sync') .check((r) => {syncRequest = r;}) - .respond(200, response); + .respond(200, {}); for (let attempts = 10; attempts > 0; attempts--) { console.log(Date.now() + " waiting for /sync"); @@ -179,7 +213,7 @@ describe('loading:', function () { } describe("Clean load with no stored credentials:", function() { - it('gives a login panel by default', function (done) { + it('gives a welcome page by default', function(done) { loadApp(); Promise.delay(1).then(() => { @@ -194,9 +228,9 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { // Wait for another trip around the event loop for the UI to update - return awaitLoginComponent(matrixChat); + return awaitWelcomeComponent(matrixChat); }).then(() => { - expect(windowLocation.hash).toEqual("#/login"); + expect(windowLocation.hash).toEqual("#/welcome"); }).done(done, done); }); @@ -205,6 +239,10 @@ describe('loading:', function () { uriFragment: "#/room/!room:id", }); + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + Promise.delay(1).then(() => { // at this point, we're trying to do a guest registration; // we expect a spinner @@ -218,6 +256,8 @@ describe('loading:', function () { }).then(() => { // Wait for another trip around the event loop for the UI to update return Promise.delay(10); + }).then(() => { + return moveFromWelcomeToLogin(matrixChat); }).then(() => { return completeLogin(matrixChat); }).then(() => { @@ -240,16 +280,25 @@ describe('loading:', function () { uriFragment: "#/login", }); + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + return awaitLoginComponent(matrixChat).then(() => { // we expect a single <Login> component ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login')); + matrixChat, sdk.getComponent('structures.auth.Login')); // the only outstanding request should be a GET /login // (in particular there should be no /register request for // guest registration). + const allowedRequests = [ + "/_matrix/client/r0/login", + "/versions", + "/api/v1", + ]; for (const req of httpBackend.requests) { - if (req.method === 'GET' && req.path.endsWith('/_matrix/client/r0/login')) { + if (req.method === 'GET' && allowedRequests.find(p => req.path.endsWith(p))) { continue; } @@ -257,22 +306,28 @@ describe('loading:', function () { } return completeLogin(matrixChat); }).then(() => { - // once the sync completes, we should have a room view ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); + matrixChat, sdk.getComponent('structures.EmbeddedPage')); expect(windowLocation.hash).toEqual("#/home"); }); }); }); describe("MatrixClient rehydrated from stored credentials:", function() { - beforeEach(function() { + beforeEach(async function() { localStorage.setItem("mx_hs_url", "http://localhost" ); localStorage.setItem("mx_is_url", "http://localhost" ); localStorage.setItem("mx_access_token", "access_token"); localStorage.setItem("mx_user_id", "@me:localhost"); localStorage.setItem("mx_last_room_id", "!last_room:id"); + + // Create a crypto store as well to satisfy storage consistency checks + const cryptoStore = new jssdk.IndexedDBCryptoStore( + indexedDB, + "matrix-js-sdk:crypto", + ); + await cryptoStore._connect(); }); it('shows the last known room by default', function() { @@ -281,8 +336,8 @@ describe('loading:', function () { loadApp(); - return awaitSyncingSpinner(matrixChat).then(() => { - // we got a sync spinner - let the sync complete + return awaitLoggedIn(matrixChat).then(() => { + // we are logged in - let the sync complete return expectAndAwaitSync(); }).then(() => { // once the sync completes, we should have a room view @@ -301,14 +356,14 @@ describe('loading:', function () { loadApp(); - return awaitSyncingSpinner(matrixChat).then(() => { - // we got a sync spinner - let the sync complete + return awaitLoggedIn(matrixChat).then(() => { + // we are logged in - let the sync complete return expectAndAwaitSync(); }).then(() => { // once the sync completes, we should have a home page httpBackend.verifyNoOutstandingExpectation(); ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); + matrixChat, sdk.getComponent('structures.EmbeddedPage')); expect(windowLocation.hash).toEqual("#/home"); }).done(done, done); }); @@ -321,8 +376,8 @@ describe('loading:', function () { uriFragment: "#/room/!room:id", }); - return awaitSyncingSpinner(matrixChat).then(() => { - // we got a sync spinner - let the sync complete + return awaitLoggedIn(matrixChat).then(() => { + // we are logged in - let the sync complete return expectAndAwaitSync(); }).then(() => { // once the sync completes, we should have a room view @@ -333,40 +388,6 @@ describe('loading:', function () { }).done(done, done); }); - it("logs in correctly with a Riot Team Server", function() { - sdk.setFetch(httpBackend.fetchFn); // XXX: ought to restore this! - - httpBackend.when('GET', '/pushrules').respond(200, {}); - httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); - - loadApp({ - config: { - teamServerConfig: { - teamServerURL: 'http://my_team_server', - }, - }, - }); - - return Promise.delay(1).then(() => { - // we expect a loading spinner while we log into the RTS - assertAtLoadingSpinner(matrixChat); - - httpBackend.when('GET', 'my_team_server/login').respond(200, { - team_token: 'nom', - }); - return httpBackend.flush(); - }).then(() => { - return awaitSyncingSpinner(matrixChat) - }).then(() => { - // we got a sync spinner - let the sync complete - return expectAndAwaitSync(); - }).then(() => { - // once the sync completes, we should have a home page - ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); - }); - }); - describe('/#/login link:', function() { beforeEach(function() { loadApp({ @@ -378,16 +399,25 @@ describe('loading:', function () { }); it('shows a login view', function() { + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + // we expect a single <Login> component ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login') + matrixChat, sdk.getComponent('structures.auth.Login'), ); // the only outstanding request should be a GET /login // (in particular there should be no /register request for // guest registration, nor /sync, etc). + const allowedRequests = [ + "/_matrix/client/r0/login", + "/versions", + "/api/v1", + ]; for (const req of httpBackend.requests) { - if (req.method === 'GET' && req.path.endsWith('/_matrix/client/r0/login')) { + if (req.method === 'GET' && allowedRequests.find(p => req.path.endsWith(p))) { continue; } @@ -396,11 +426,15 @@ describe('loading:', function () { }); it('shows the homepage after login', function() { + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + return completeLogin(matrixChat).then(() => { // we should see a home page, even though we previously had // a stored mx_last_room_id ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); + matrixChat, sdk.getComponent('structures.EmbeddedPage')); expect(windowLocation.hash).toEqual("#/home"); }); }); @@ -408,7 +442,7 @@ describe('loading:', function () { }); describe('Guest auto-registration:', function() { - it('shows a home page by default', function (done) { + it('shows a welcome page by default', function(done) { loadApp(); Promise.delay(1).then(() => { @@ -425,23 +459,20 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - return awaitSyncingSpinner(matrixChat); + return awaitLoggedIn(matrixChat); }).then(() => { - // we got a sync spinner - let the sync complete - return expectAndAwaitSync(); + // we are logged in - let the sync complete + return expectAndAwaitSync({isGuest: true}); }).then(() => { - // once the sync completes, we should have a home page + // once the sync completes, we should have a welcome page httpBackend.verifyNoOutstandingExpectation(); ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); - expect(windowLocation.hash).toEqual("#/home"); + matrixChat, sdk.getComponent('auth.Welcome')); + expect(windowLocation.hash).toEqual("#/welcome"); }).done(done, done); }); - it('uses the last known homeserver to register with', function (done) { - localStorage.setItem("mx_hs_url", "https://homeserver" ); - localStorage.setItem("mx_is_url", "https://idserver" ); - + it('uses the default homeserver to register with', function(done) { loadApp(); Promise.delay(1).then(() => { @@ -450,7 +481,7 @@ describe('loading:', function () { assertAtLoadingSpinner(matrixChat); httpBackend.when('POST', '/register').check(function(req) { - expect(req.path).toMatch(new RegExp("^https://homeserver/")); + expect(req.path).toStartWith(DEFAULT_HS_URL); expect(req.queryParams.kind).toEqual('guest'); }).respond(200, { user_id: "@guest:localhost", @@ -459,25 +490,25 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - return awaitSyncingSpinner(matrixChat); + return awaitLoggedIn(matrixChat); }).then(() => { - return expectAndAwaitSync(); + return expectAndAwaitSync({isGuest: true}); }).then((req) => { - expect(req.path).toMatch(new RegExp("^https://homeserver/")); + expect(req.path).toStartWith(DEFAULT_HS_URL); - // once the sync completes, we should have a home page + // once the sync completes, we should have a welcome page httpBackend.verifyNoOutstandingExpectation(); ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); - expect(windowLocation.hash).toEqual("#/home"); - expect(MatrixClientPeg.get().baseUrl).toEqual("https://homeserver"); - expect(MatrixClientPeg.get().idBaseUrl).toEqual("https://idserver"); + matrixChat, sdk.getComponent('auth.Welcome')); + expect(windowLocation.hash).toEqual("#/welcome"); + expect(MatrixClientPeg.get().baseUrl).toEqual(DEFAULT_HS_URL); + expect(MatrixClientPeg.get().idBaseUrl).toEqual(DEFAULT_IS_URL); }).done(done, done); }); it('shows a room view if we followed a room link', function(done) { loadApp({ - uriFragment: "#/room/!room:id" + uriFragment: "#/room/!room:id", }); Promise.delay(1).then(() => { // at this point, we're trying to do a guest registration; @@ -493,9 +524,9 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - return awaitSyncingSpinner(matrixChat); + return awaitLoggedIn(matrixChat); }).then(() => { - return expectAndAwaitSync(); + return expectAndAwaitSync({isGuest: true}); }).then(() => { // once the sync completes, we should have a room view return awaitRoomView(matrixChat); @@ -518,14 +549,14 @@ describe('loading:', function () { }); return httpBackend.flush().then(() => { - return awaitSyncingSpinner(matrixChat); + return awaitLoggedIn(matrixChat); }).then(() => { // we got a sync spinner - let the sync complete return expectAndAwaitSync(); }).then(() => { // once the sync completes, we should have a home page ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); + matrixChat, sdk.getComponent('structures.EmbeddedPage')); // we simulate a click on the 'login' button by firing off // the relevant dispatch. @@ -547,7 +578,7 @@ describe('loading:', function () { // we expect a single <Login> component ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login') + matrixChat, sdk.getComponent('structures.auth.Login'), ); }); @@ -555,7 +586,7 @@ describe('loading:', function () { // ILAG renders this obsolete. I think. it('should allow us to return to the app', function() { const login = ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login') + matrixChat, sdk.getComponent('structures.auth.Login') ); const linkText = 'Return to app'; @@ -572,7 +603,7 @@ describe('loading:', function () { return Promise.delay(1).then(() => { // we should be straight back into the home page ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.HomePage')); + matrixChat, sdk.getComponent('structures.EmbeddedPage')); }); }); */ @@ -580,7 +611,7 @@ describe('loading:', function () { }); describe('Token login:', function() { - it('logs in successfully', function (done) { + it('logs in successfully', function(done) { loadApp({ queryString: "?loginToken=secretToken&homeserver=https%3A%2F%2Fhomeserver&identityServer=https%3A%2F%2Fidserver", }); @@ -620,10 +651,20 @@ describe('loading:', function () { // check that we have a Login component, send a 'user:pass' login, // and await the HTTP requests. - function completeLogin(matrixChat) { + async function completeLogin(matrixChat) { // we expect a single <Login> component const login = ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login')); + matrixChat, sdk.getComponent('structures.auth.Login')); + + // When we switch to the login component, it'll hit the login endpoint + // for proof of life and to get flows. We'll only give it one option. + httpBackend.when('GET', '/login') + .respond(200, {"flows": [{"type": "m.login.password"}]}); + httpBackend.flush(); // We already would have tried the GET /login request + + // Give the component some time to finish processing the login flows before + // continuing. + await Promise.delay(100); httpBackend.when('POST', '/login').check(function(req) { expect(req.data.type).toEqual('m.login.password'); @@ -658,53 +699,29 @@ describe('loading:', function () { // assert that we are on the loading page function assertAtLoadingSpinner(matrixChat) { - var domComponent = ReactDOM.findDOMNode(matrixChat); + const domComponent = ReactDOM.findDOMNode(matrixChat); expect(domComponent.className).toEqual("mx_MatrixChat_splash"); // just the spinner expect(domComponent.children.length).toEqual(1); } -// we've got login creds, and are waiting for the sync to finish. -// the page includes a logout link. -function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) { - if (retryLimit === undefined) { - retryLimit = 10; +function awaitLoggedIn(matrixChat) { + if (matrixChat.state.view === VIEWS.LOGGED_IN) { + return Promise.resolve(); } - if (retryCount === undefined) { - retryCount = 0; - } - - if (matrixChat.state.view === VIEWS.LOADING || - matrixChat.state.view === VIEWS.LOGGING_IN) { - console.log(Date.now() + " Awaiting sync spinner: still loading."); - if (retryCount >= retryLimit) { - throw new Error("MatrixChat still not loaded after " + - retryCount + " tries"); - } - // loading can take quite a long time, because we delete the - // indexedDB store. - return Promise.delay(5).then(() => { - return awaitSyncingSpinner(matrixChat, retryLimit, retryCount + 1); - }); - } - - console.log(Date.now() + " Awaiting sync spinner: load complete."); - - // state looks good, check the rendered output - assertAtSyncingSpinner(matrixChat); - return Promise.resolve(); -} - -function assertAtSyncingSpinner(matrixChat) { - var domComponent = ReactDOM.findDOMNode(matrixChat); - expect(domComponent.className).toEqual("mx_MatrixChat_splash"); - - ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('elements.Spinner')); - var logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag( - matrixChat, 'a'); - expect(logoutLink.text).toEqual("Logout"); + return new Promise(resolve => { + const onAction = ({ action }) => { + if (action !== "on_logged_in") { + return; + } + console.log(Date.now() + ": Received on_logged_in action"); + dis.unregister(dispatcherRef); + resolve(); + }; + const dispatcherRef = dis.register(onAction); + console.log(Date.now() + ": Waiting for on_logged_in action"); + }); } function awaitRoomView(matrixChat, retryLimit, retryCount) { @@ -736,6 +753,19 @@ function awaitRoomView(matrixChat, retryLimit, retryCount) { function awaitLoginComponent(matrixChat, attempts) { return MatrixReactTestUtils.waitForRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.login.Login'), attempts, + matrixChat, sdk.getComponent('structures.auth.Login'), attempts, ); } + +function awaitWelcomeComponent(matrixChat, attempts) { + return MatrixReactTestUtils.waitForRenderedComponentWithType( + matrixChat, sdk.getComponent('auth.Welcome'), attempts, + ); +} + +function moveFromWelcomeToLogin(matrixChat) { + ReactTestUtils.findRenderedComponentWithType( + matrixChat, sdk.getComponent('auth.Welcome')); + dis.dispatch({ action: 'start_login' }); + return awaitLoginComponent(matrixChat); +} diff --git a/test/skin-sdk.js b/test/skin-sdk.js index 3421d5d0..b839df8f 100644 --- a/test/skin-sdk.js +++ b/test/skin-sdk.js @@ -4,5 +4,5 @@ * Skins the react-sdk with the vector components */ -var sdk = require('matrix-react-sdk'); +const sdk = require('matrix-react-sdk'); sdk.loadSkin(require('../src/component-index')); diff --git a/test/test-utils.js b/test/test-utils.js index a5b22feb..4e07be14 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -8,7 +8,7 @@ import Promise from 'bluebird'; * @param {Mocha.Context} context The test context */ export function beforeEach(context) { - var desc = context.currentTest.fullTitle(); + const desc = context.currentTest.fullTitle(); console.log(); console.log(desc); console.log(new Array(1 + desc.length).join("=")); @@ -22,7 +22,7 @@ export function beforeEach(context) { * returns true if the current environment supports webrtc */ export function browserSupportsWebRTC() { - var n = global.window.navigator; + const n = global.window.navigator; return n.getUserMedia || n.webkitGetUserMedia || n.mozGetUserMedia; } diff --git a/test/unit-tests/README.md b/test/unit-tests/README.md new file mode 100644 index 00000000..8e5b315b --- /dev/null +++ b/test/unit-tests/README.md @@ -0,0 +1,2 @@ +Any UTs for vector-web layer components or functionality should go here. +This used to contain the UTs for notifications before they got moved to react-sdk. diff --git a/test/unit-tests/notifications/ContentRules-test.js b/test/unit-tests/notifications/ContentRules-test.js deleted file mode 100644 index c1cdc40a..00000000 --- a/test/unit-tests/notifications/ContentRules-test.js +++ /dev/null @@ -1,117 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -var notifications = require('../../../src/notifications'); - -var ContentRules = notifications.ContentRules; -var PushRuleVectorState = notifications.PushRuleVectorState; - -var expect = require('expect'); -var test_utils = require('../../test-utils'); - -var NORMAL_RULE = { - actions: [ - "notify", - { set_tweak: "highlight", value: false }, - ], - enabled: true, - pattern: "vdh2", - rule_id: "vdh2", -}; - -var LOUD_RULE = { - actions: [ - "notify", - { set_tweak: "highlight" }, - { set_tweak: "sound", value: "default" }, - ], - enabled: true, - pattern: "vdh2", - rule_id: "vdh2", -}; - -var USERNAME_RULE = { - actions: [ - "notify", - { set_tweak: "sound", value: "default" }, - { set_tweak: "highlight" }, - ], - default: true, - enabled: true, - pattern: "richvdh", - rule_id: ".m.rule.contains_user_name", -}; - - - -describe("ContentRules", function() { - beforeEach(function() { - test_utils.beforeEach(this); - }); - - describe("parseContentRules", function() { - it("should handle there being no keyword rules", function() { - var rules = { 'global': { 'content': [ - USERNAME_RULE, - ]}}; - var parsed = ContentRules.parseContentRules(rules); - expect(parsed.rules).toEqual([]); - expect(parsed.vectorState).toEqual(PushRuleVectorState.ON); - expect(parsed.externalRules).toEqual([]); - }); - - it("should parse regular keyword notifications", function() { - var rules = { 'global': { 'content': [ - NORMAL_RULE, - USERNAME_RULE, - ]}}; - - var parsed = ContentRules.parseContentRules(rules); - expect(parsed.rules.length).toEqual(1); - expect(parsed.rules[0]).toEqual(NORMAL_RULE); - expect(parsed.vectorState).toEqual(PushRuleVectorState.ON); - expect(parsed.externalRules).toEqual([]); - }); - - it("should parse loud keyword notifications", function() { - var rules = { 'global': { 'content': [ - LOUD_RULE, - USERNAME_RULE, - ]}}; - - var parsed = ContentRules.parseContentRules(rules); - expect(parsed.rules.length).toEqual(1); - expect(parsed.rules[0]).toEqual(LOUD_RULE); - expect(parsed.vectorState).toEqual(PushRuleVectorState.LOUD); - expect(parsed.externalRules).toEqual([]); - }); - - it("should parse mixed keyword notifications", function() { - var rules = { 'global': { 'content': [ - LOUD_RULE, - NORMAL_RULE, - USERNAME_RULE, - ]}}; - - var parsed = ContentRules.parseContentRules(rules); - expect(parsed.rules.length).toEqual(1); - expect(parsed.rules[0]).toEqual(LOUD_RULE); - expect(parsed.vectorState).toEqual(PushRuleVectorState.LOUD); - expect(parsed.externalRules.length).toEqual(1); - expect(parsed.externalRules[0]).toEqual(NORMAL_RULE); - }); - }); -}); diff --git a/test/unit-tests/notifications/PushRuleVectorState-test.js b/test/unit-tests/notifications/PushRuleVectorState-test.js deleted file mode 100644 index 68e7044f..00000000 --- a/test/unit-tests/notifications/PushRuleVectorState-test.js +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright 2016 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -var notifications = require('../../../src/notifications'); - -var prvs = notifications.PushRuleVectorState; - -var expect = require('expect'); - -describe("PushRuleVectorState", function() { - describe("contentRuleVectorStateKind", function() { - it("should understand normal notifications", function () { - var rule = { - actions: [ - "notify", - ], - }; - - expect(prvs.contentRuleVectorStateKind(rule)). - toEqual(prvs.ON); - }); - - it("should handle loud notifications", function () { - var rule = { - actions: [ - "notify", - { set_tweak: "highlight", value: true }, - { set_tweak: "sound", value: "default" }, - ] - }; - - expect(prvs.contentRuleVectorStateKind(rule)). - toEqual(prvs.LOUD); - }); - - it("should understand missing highlight.value", function () { - var rule = { - actions: [ - "notify", - { set_tweak: "highlight" }, - { set_tweak: "sound", value: "default" }, - ] - }; - - expect(prvs.contentRuleVectorStateKind(rule)). - toEqual(prvs.LOUD); - }); - }); -}); diff --git a/webpack.config.js b/webpack.config.js index 2df82d9b..5d02de3d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,48 +3,109 @@ const webpack = require('webpack'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); +let og_image_url = process.env.RIOT_OG_IMAGE_URL; +if (!og_image_url) og_image_url = 'https://riot.im/app/themes/riot/img/logos/riot-im-logo-black-text.png'; + module.exports = { entry: { - "bundle": "./src/vector/index.js", - "indexeddb-worker": "./src/vector/indexedbd-worker.js", + // Load babel-polyfill first to avoid issues where some imports (namely react) + // are potentially loaded before babel-polyfill. + "bundle": ["babel-polyfill", "./src/vector/index.js"], + "indexeddb-worker": "./src/vector/indexeddb-worker.js", - // We ship olm.js as a separate lump of javascript. This makes it get - // loaded via a separate <script/> tag in index.html (which loads it - // into the browser global `Olm`, where js-sdk expects to find it). - // - // (we should probably make js-sdk load it asynchronously at some - // point, so that it doesn't block the pageload, but that is a separate - // problem) - "olm": "./src/vector/olm-loader.js", + "mobileguide": "./src/vector/mobile_guide/index.js", // CSS themes - "theme-light": "./src/skins/vector/css/themes/light.scss", - "theme-dark": "./src/skins/vector/css/themes/dark.scss", - "theme-status": "./src/skins/vector/themes/status/css/status.scss", + "theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss", + "theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss", + "theme-light-custom": "./node_modules/matrix-react-sdk/res/themes/light-custom/css/light-custom.scss", + "theme-dark-custom": "./node_modules/matrix-react-sdk/res/themes/dark-custom/css/dark-custom.scss", }, module: { - preLoaders: [ - { test: /\.js$/, loader: "source-map-loader" }, - ], - loaders: [ - { test: /\.json$/, loader: "json" }, - { test: /\.js$/, loader: "babel", include: path.resolve('./src') }, + rules: [ + { enforce: 'pre', test: /\.js$/, use: "source-map-loader", exclude: /node_modules/, }, + { test: /\.js$/, use: "babel-loader", include: path.resolve(__dirname, 'src') }, + { + test: /\.wasm$/, + loader: "file-loader", + type: "javascript/auto", // https://github.com/webpack/webpack/issues/6725 + options: { + name: '[name].[hash:7].[ext]', + outputPath: '.', + }, + }, { test: /\.scss$/, - // 1. postcss-loader turns the SCSS into normal CSS. - // 2. css-raw-loader turns the CSS into a javascript module - // whose default export is a string containing the CSS. - // (css-raw-loader is similar to css-loader, but the latter - // would also drag in the imgs and fonts that our CSS refers to - // as webpack inputs.) + // 2. css-loader turns the CSS into a JS module whose default + // export is a string containing the CSS, while also adding + // the images and fonts from CSS as Webpack inputs. // 3. ExtractTextPlugin turns that string into a separate asset. - loader: ExtractTextPlugin.extract("css-raw-loader!postcss-loader?config=postcss.config.js"), + use: ExtractTextPlugin.extract({ + use: [ + "css-loader", + { + loader: 'postcss-loader', + options: { + config: { + path: './postcss.config.js', + }, + }, + }, + ], + }), }, { // this works similarly to the scss case, without postcss. test: /\.css$/, - loader: ExtractTextPlugin.extract("css-raw-loader"), + use: ExtractTextPlugin.extract({ + use: "css-loader", + }), + }, + { + // cache-bust languages.json file placed in + // riot-web/webapp/i18n during build by copy-res.js + test: /\.*languages.json$/, + type: "javascript/auto", + loader: 'file-loader', + options: { + name: 'i18n/[name].[hash:7].[ext]', + }, + }, + { + test: /\.(gif|png|svg|ttf|woff|woff2|xml|ico)$/, + // Use a content-based hash in the name so that we can set a long cache + // lifetime for assets while still delivering changes quickly. + oneOf: [ + { + // Assets referenced in CSS files + issuer: /\.(scss|css)$/, + loader: 'file-loader', + options: { + name: '[name].[hash:7].[ext]', + outputPath: getImgOutputPath, + publicPath: function(url, resourcePath) { + // CSS image usages end up in the `bundles/[hash]` output + // directory, so we adjust the final path to navigate up + // twice. + const outputPath = getImgOutputPath(url, resourcePath); + return toPublicPath(path.join("../..", outputPath)); + }, + }, + }, + { + // Assets referenced in HTML and JS files + loader: 'file-loader', + options: { + name: '[name].[hash:7].[ext]', + outputPath: getImgOutputPath, + publicPath: function(url, resourcePath) { + const outputPath = getImgOutputPath(url, resourcePath); + return toPublicPath(outputPath); + }, + }, + }, + ], }, ], noParse: [ @@ -65,14 +126,13 @@ module.exports = { output: { path: path.join(__dirname, "webapp"), - // the generated js (and CSS, from the ExtractTextPlugin) are put in a + // The generated JS (and CSS, from the ExtractTextPlugin) are put in a // unique subdirectory for the build. There will only be one such // 'bundle' directory in the generated tarball; however, hosting // servers can collect 'bundles' from multiple versions into one // directory and symlink it into place - this allows users who loaded // an older version of the application to continue to access webpack // chunks even after the app is redeployed. - // filename: "bundles/[hash]/[name].js", chunkFilename: "bundles/[hash]/[name].js", devtoolModuleFilenameTemplate: function(info) { @@ -89,28 +149,24 @@ module.exports = { }, resolve: { alias: { - // alias any requires to the react module to the one in our path, otherwise - // we tend to get the react source included twice when using npm link. + // alias any requires to the react module to the one in our path, + // otherwise we tend to get the react source included twice when + // using `npm link` / `yarn link`. "react": path.resolve('./node_modules/react'), "react-dom": path.resolve('./node_modules/react-dom'), - "react-addons-perf": path.resolve('./node_modules/react-addons-perf'), // same goes for js-sdk "matrix-js-sdk": path.resolve('./node_modules/matrix-js-sdk'), + + "$webapp": path.resolve('./webapp'), }, }, - externals: { - // Don't try to bundle electron: leave it as a commonjs dependency - // (the 'commonjs' here means it will output a 'require') - "electron": "commonjs electron", - }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV), }, }), - new ExtractTextPlugin("bundles/[hash]/[name].css", { allChunks: true, }), @@ -123,6 +179,15 @@ module.exports = { // bottom of <head> or the bottom of <body>, and I'm a bit scared // about moving them. inject: false, + excludeChunks: ['mobileguide'], + vars: { + og_image_url: og_image_url, + }, + }), + new HtmlWebpackPlugin({ + template: './src/vector/mobile_guide/index.html', + filename: 'mobile_guide/index.html', + chunks: ['mobileguide'], }), ], devtool: 'source-map', @@ -136,14 +201,35 @@ module.exports = { // don't fill the console up with a mahoosive list of modules chunks: false, }, + + // hot mdule replacement doesn't work (I think we'd need react-hot-reload?) + // so webpack-dev-server reloads the page on every update which is quite + // tedious in Riot since that can take a while. + hot: false, + inline: false, }, }; -// olm is an optional dependency. Ignore it if it's not installed, to avoid a -// scary-looking error. -try { - require('olm'); -} catch (e) { - console.log("Olm is not installed; not shipping it"); - delete(module.exports.entry["olm"]); +/** + * Merge assets found via CSS and imports into a single tree, while also preserving + * directories under `res`. + * + * @param {string} url The adjusted name of the file, such as `warning.1234567.svg`. + * @param {string} resourcePath The absolute path to the source file with unmodified name. + * @return {string} The returned paths will look like `img/warning.1234567.svg`. + */ +function getImgOutputPath(url, resourcePath) { + const prefix = /^.*[/\\]res[/\\]/; + const outputDir = path.dirname(resourcePath).replace(prefix, ""); + return path.join(outputDir, path.basename(url)); +} + +/** + * Convert path to public path format, which always uses forward slashes, since it will + * be placed directly into things like CSS files. + * + * @param {string} path Some path to a file. + */ +function toPublicPath(path) { + return path.replace(/\\/g, '/'); } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..9b520a5b --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9762 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"7zip-bin@~4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.0.2.tgz#6abbdc22f33cab742053777a26db2e25ca527179" + integrity sha512-XtGk+IF57pr852UK1AhQJXqmm1WmSgS5uISL+LPs0z/iAxXouMvdlLJrHPeukP6gd7yR2rDTMSMkHNODgwIq7A== + +"7zip-bin@~5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz#bc5b5532ecafd923a61f2fb097e3b108c0106a3f" + integrity sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA== + +"7zip@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/7zip/-/7zip-0.0.6.tgz#9cafb171af82329490353b4816f03347aa150a30" + integrity sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA= + +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== + dependencies: + "@babel/highlight" "7.0.0-beta.44" + +"@babel/code-frame@^7.0.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/runtime@^7.1.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.2.tgz#c3d6e41b304ef10dcf13777a33e7694ec4a9a6dd" + integrity sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + +"@develar/schema-utils@~2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.1.0.tgz#eceb1695bfbed6f6bb84666d5d3abe5e1fd54e17" + integrity sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@types/debug@^4.1.4": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "12.7.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708" + integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A== + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" + integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== + +acorn@^6.0.7, acorn@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +another-json@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" + integrity sha1-tfQBnJc7bdXGUGotk0acttMq7tw= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +app-builder-bin@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.4.3.tgz#58a74193eb882f029be6b7f0cd3f0c6805927a6b" + integrity sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg== + +app-builder-lib@21.2.0, app-builder-lib@~21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-21.2.0.tgz#fa1d1604601431e2c3476857e9b9b61d33ad26cc" + integrity sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A== + dependencies: + "7zip-bin" "~5.0.3" + "@develar/schema-utils" "~2.1.0" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.9" + builder-util "21.2.0" + builder-util-runtime "8.3.0" + chromium-pickle-js "^0.2.0" + debug "^4.1.1" + ejs "^2.6.2" + electron-publish "21.2.0" + fs-extra "^8.1.0" + hosted-git-info "^2.7.1" + is-ci "^2.0.0" + isbinaryfile "^4.0.2" + js-yaml "^3.13.1" + lazy-val "^1.0.4" + minimatch "^3.0.4" + normalize-package-data "^2.5.0" + read-config-file "5.0.0" + sanitize-filename "^1.6.2" + semver "^6.3.0" + temp-file "^3.3.4" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" + integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== + dependencies: + archiver-utils "^2.1.0" + async "^2.6.3" + buffer-crc32 "^0.2.1" + glob "^7.1.4" + readable-stream "^3.4.0" + tar-stream "^2.1.0" + zip-stream "^2.1.2" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.0, async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-exit-hook@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.0.0, async@^2.4.1, async@^2.5.0, async@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^6.6.0: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@^8.1.1: + version "8.2.6" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1, babel-helper-function-name@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" + integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-add-module-exports@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25" + integrity sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU= + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-bluebird@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-bluebird/-/babel-plugin-transform-async-to-bluebird-1.1.1.tgz#46ea3e7c5af629782ac9f1ed1b7cd38f8425afd4" + integrity sha1-Ruo+fFr2KXgqyfHtG3zTj4Qlr9Q= + dependencies: + babel-helper-function-name "^6.8.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-template "^6.9.0" + babel-traverse "^6.10.4" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-builtin-extend@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz#5e96fecf58b8fa1ed74efcad88475b2af3c9116e" + integrity sha1-Xpb+z1i4+h7XTvytiEdbKvPJEW4= + dependencies: + babel-runtime "^6.2.0" + babel-template "^6.3.0" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24= + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY= + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM= + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-runtime@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" + integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-es2016@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" + integrity sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s= + dependencies: + babel-plugin-transform-exponentiation-operator "^6.24.1" + +babel-preset-es2017@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" + integrity sha1-WXvq37n38gi8/YoS6bKym4svFNE= + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.24.1" + +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0= + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + +babel-preset-react@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A= + dependencies: + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0, babel-template@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.10.4, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base-x@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.7.tgz#1c5a7fafe8f66b4114063e8da102799d4e7c408f" + integrity sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw== + dependencies: + safe-buffer "^5.0.1" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bl@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" + integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== + dependencies: + readable-stream "^3.0.1" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird-lst@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" + integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== + dependencies: + bluebird "^3.5.5" + +bluebird@3.5.5, bluebird@^3.3.0, bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + +blueimp-canvas-to-blob@^3.5.0: + version "3.16.0" + resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.16.0.tgz#eb5932207f9bf23558c8bc2fbcdc5ca2cca35c36" + integrity sha512-r5TRlxH5Y0iKrRajCfiW1K4o2U1JniarjLXuNJrC5nnlWV/UopieF8sysw9pAYBauxg2I3Ah1hUp3NEuinwmkA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0, body-parser@^1.16.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" + integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^2.4.2" + cli-boxes "^2.2.0" + string-width "^3.0.0" + term-size "^1.2.0" + type-fest "^0.3.0" + widest-line "^2.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-encrypt-attachment@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/browser-encrypt-attachment/-/browser-encrypt-attachment-0.3.0.tgz#205a94caadf0dc7e81413941812f655bd190ff1c" + integrity sha1-IFqUyq3w3H6BQTlBgS9lW9GQ/xw= + +browser-request@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" + integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc= + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.1.0: + version "5.4.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" + integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builder-util-runtime@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz#f5fac9139af6facf42a21fbe4d3aebed88fda33e" + integrity sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw== + dependencies: + debug "^4.1.1" + sax "^1.2.4" + +builder-util@21.2.0, builder-util@~21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-21.2.0.tgz#aba721190e4e841009d9fb4b88f1130ed616522f" + integrity sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A== + dependencies: + "7zip-bin" "~5.0.3" + "@types/debug" "^4.1.4" + app-builder-bin "3.4.3" + bluebird-lst "^1.0.9" + builder-util-runtime "8.3.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^8.1.0" + is-ci "^2.0.0" + js-yaml "^3.13.1" + source-map-support "^0.5.13" + stat-mode "^0.3.0" + temp-file "^3.3.4" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.0, cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000997" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000997.tgz#aff1ca561673ad6eea08692aa881a43e61968f5f" + integrity sha512-rK1Jo9VT5F/cJ333iLURdNXecYvVn3erJheoPAETrccJVw4w/557HfkNPADB5agHKjGuhJETf1l6lssvgbqA0Q== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chain-function@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc" + integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg== + +chalk@2.4.2, "chalk@^1.1.3 || 2.x", chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^1.6.0, chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.1.2: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colors@^1.1.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= + dependencies: + lodash "^4.5.0" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.11.0, commander@^2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +commonmark@^0.28.1: + version "0.28.1" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.28.1.tgz#06eab8d52338b839fa1a2d75af0085eed1b1beae" + integrity sha1-Buq41SM4uDn6Gi11rwCF7tGxvq4= + dependencies: + entities "~ 1.1.1" + mdurl "~ 1.0.1" + minimist "~ 1.2.0" + string.prototype.repeat "^0.2.0" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +compress-commons@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" + integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^3.0.1" + normalize-path "^3.0.0" + readable-stream "^2.3.6" + +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + dependencies: + mime-db ">= 1.40.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concurrently@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.2.tgz#1a683b2b5c41e9ed324c9002b9f6e4c6e1f3b6d7" + integrity sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg== + dependencies: + chalk "^2.4.2" + date-fns "^1.30.1" + lodash "^4.17.15" + read-pkg "^4.0.1" + rxjs "^6.5.2" + spawn-command "^0.0.2-1" + supports-color "^4.5.0" + tree-kill "^1.2.1" + yargs "^12.0.5" + +configstore@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" + integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.6.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@^1.0.2, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +counterpart@^0.18.0: + version "0.18.6" + resolved "https://registry.yarnpkg.com/counterpart/-/counterpart-0.18.6.tgz#cf6b60d8ef99a4b44b8bf6445fa99b4bd1b2f9dd" + integrity sha512-cAIDAYbC3x8S2DDbvFEJ4TzPtPYXma25/kfAkfmprNLlkPWeX4SdUp1c2xklfphqCU3HnDaivR4R3BrAYf5OMA== + dependencies: + date-names "^0.1.11" + except "^0.1.3" + extend "^3.0.0" + pluralizers "^0.1.7" + sprintf-js "^1.0.3" + +cpx@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + +crc-32@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-0.3.0.tgz#6a3d3687f5baec41f7e9b99fe1953a2e5d19775e" + integrity sha1-aj02h/W67EH36bmf4ZU6Ll0Zd14= + +crc32-stream@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" + integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== + dependencies: + crc "^3.4.4" + readable-stream "^3.4.0" + +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-class@^15.6.0: + version "15.6.3" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" + integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-env@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-4.0.0.tgz#16083862d08275a4628b0b243b121bedaa55dd80" + integrity sha1-Fgg4YtCCdaRiiwskOxIb7apV3YA= + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + +cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-unzip@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/cross-unzip/-/cross-unzip-0.0.2.tgz#5183bc47a09559befcf98cc4657964999359372f" + integrity sha1-UYO8R6CVWb78+YzEZXlkmZNZNy8= + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-loader@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" + integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== + dependencies: + camelcase "^5.2.0" + icss-utils "^4.1.0" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.14" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^2.0.6" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^2.0.0" + postcss-value-parser "^3.3.0" + schema-utils "^1.0.0" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.30.1: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +date-format@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= + +date-names@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/date-names/-/date-names-0.1.13.tgz#c4358f6f77c8056e2f5ea68fdbb05f0bf1e53bd0" + integrity sha512-IxxoeD9tdx8pXVcmqaRlPvrXIsSrSrIZzfzlOkm9u+hyzKp5Wk/odt9O/gd7Ockzy8n/WHeEpTVJ2bF3mMV4LA== + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-equal@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" + integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" + integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@~1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +diff-dom@^4.1.3: + version "4.1.6" + resolved "https://registry.yarnpkg.com/diff-dom/-/diff-dom-4.1.6.tgz#ecd20f4b34703d777b7956790fc7e28e5ff3fece" + integrity sha512-hzHojf1Ar3x1Db/1ijN/uhwYDgde+RoP8pPAPJlrmxp05Bt+Z9Hd7tmuEyPYu1mEuvcO+0pQRZAOCMKi+0I1PQ== + dependencies: + rollup-plugin-terser "^5.1.1" + updates "^8.5.2" + +diff-match-patch@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1" + integrity sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg== + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +direction@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" + integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew= + +dmg-builder@21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-21.2.0.tgz#a9c883557cacb9abdb66c7133b30fe921c1a3ba7" + integrity sha512-9cJEclnGy7EyKFCoHDYDf54pub/t92CQapyiUxU0w9Bj2vUvfoDagP1PMiX4XD5rPp96141h9A+QN0OB4VgvQg== + dependencies: + app-builder-lib "~21.2.0" + bluebird-lst "^1.0.9" + builder-util "~21.2.0" + fs-extra "^8.1.0" + iconv-lite "^0.5.0" + js-yaml "^3.13.1" + sanitize-filename "^1.6.2" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" + integrity sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0, dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.1.0.tgz#d811e178652bfb8a1e593c6dd704ec7e90d85ea2" + integrity sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA== + +draft-js@^0.11.0-alpha: + version "0.11.1" + resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.11.1.tgz#716991cf719ce54c418650c1f8c7b4c514afb8ce" + integrity sha512-7e90x4gWKNNP/U2UeAiZ3a4DZZ9+TVZ+wU8v3Qgt3OsceHIGIy7uHU8plq2XoHi9ro/v5H/tiOV2ZJes5OfT7Q== + dependencies: + fbjs "^1.0.0" + immutable "~3.7.4" + object-assign "^4.1.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.1.tgz#5b5ab57f718b79d4aca9254457afecd36fa80228" + integrity sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ== + +electron-builder-squirrel-windows@^21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-21.2.0.tgz#e47038df55914312d84a3fcb9c9c4f9accdf70ab" + integrity sha512-y3ynky29vm/CmcHI6rLKU4S5pzeag/PHgl/9+rP35lZzgCIC7sMX5ugEtzpnhoJUVqojvo5cUD4erMw8JenILw== + dependencies: + archiver "^3.0.3" + bluebird-lst "^1.0.9" + builder-util "~21.2.0" + fs-extra "^8.1.0" + sanitize-filename "^1.6.2" + optionalDependencies: + "7zip-bin" "~4.0.2" + +electron-builder@^21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-21.2.0.tgz#b68ec4def713fc0b8602654ce842f972432f50c5" + integrity sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw== + dependencies: + app-builder-lib "21.2.0" + bluebird-lst "^1.0.9" + builder-util "21.2.0" + builder-util-runtime "8.3.0" + chalk "^2.4.2" + dmg-builder "21.2.0" + fs-extra "^8.1.0" + is-ci "^2.0.0" + lazy-val "^1.0.4" + read-config-file "5.0.0" + sanitize-filename "^1.6.2" + update-notifier "^3.0.1" + yargs "^13.3.0" + +electron-devtools-installer@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz#261a50337e37121d338b966f07922eb4939a8763" + integrity sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA== + dependencies: + "7zip" "0.0.6" + cross-unzip "0.0.2" + rimraf "^2.5.2" + semver "^5.3.0" + +electron-notarize@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-0.1.1.tgz#c3563d70c5e7b3315f44e8495b30050a8c408b91" + integrity sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg== + dependencies: + debug "^4.1.1" + fs-extra "^8.0.1" + +electron-publish@21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-21.2.0.tgz#cc225cb46aa62e74b899f2f7299b396c9802387d" + integrity sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA== + dependencies: + bluebird-lst "^1.0.9" + builder-util "~21.2.0" + builder-util-runtime "8.3.0" + chalk "^2.4.2" + fs-extra "^8.1.0" + lazy-val "^1.0.4" + mime "^2.4.4" + +electron-to-chromium@^1.2.7: + version "1.3.267" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.267.tgz#7745ff9d447fd2a9802e1c6dfa518631e0cf5357" + integrity sha512-9Q2ixAJC+oHjWNtJV0MQ4vJMCWSowIrC6V6vcr+bwPddTDHj2ddv9xxXCzf4jT/fy6HP7maPoW0gifXkRxCttQ== + +elliptic@^6.0.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" + integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojibase-data@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/emojibase-data/-/emojibase-data-4.0.2.tgz#6b5ee0b6e8d04f9fcbca2c308c3341da8be47797" + integrity sha512-ezU6rqxbrsINFD+lg28IQwRsWLoSpwpt6TH65fBEx/GxIrPpbIP1ZvNu1jUkRD+oALspstjyujZvcv0VlJozhg== + +emojibase-regex@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-3.0.2.tgz#2b9500b4eeac87d34f3ec58bc9cc0180a2a2b908" + integrity sha512-rsvdtXrfnZ7yHtO1agHkcSxfHEVP0VvLeROeotm1vvDvLcMw6Ej2rnso7R5GymBdAM2ScX6Q1Bcy02VFhQzhVg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" + integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.0" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-inspect "^1.6.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.0.0" + string.prototype.trimright "^2.0.0" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-google@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.7.1.tgz#5598f8498e9e078420f34b80495b8d959f651fb2" + integrity sha1-VZj4SY6eB4Qg80uASVuNlZ9lH7I= + +eslint-plugin-babel@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e" + integrity sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4= + +eslint-plugin-flowtype@^2.50.3: + version "2.50.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" + integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== + dependencies: + lodash "^4.17.10" + +eslint-plugin-react@^7.11.1: + version "7.14.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" + integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0" + object.values "^1.1.0" + prop-types "^15.7.2" + resolve "^1.10.1" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" + integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== + dependencies: + eslint-visitor-keys "^1.0.0" + +eslint-visitor-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^5.8.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +esrever@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" + integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g= + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +except@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/except/-/except-0.1.3.tgz#98261c91958551536b44482238e9783fb73d292a" + integrity sha1-mCYckZWFUVNrREgiOOl4P7c9KSo= + dependencies: + indexof "0.0.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^1.16.0, expect@^1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-1.20.2.tgz#d458fe4c56004036bae3232416a3f6361f04f965" + integrity sha1-1Fj+TFYAQDa64yMkFqP2Nh8E+WU= + dependencies: + define-properties "~1.1.2" + has "^1.0.1" + is-equal "^1.5.1" + is-regex "^1.0.3" + object-inspect "^1.1.0" + object-keys "^1.0.9" + tmatch "^2.0.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-text-webpack-plugin@^4.0.0-beta.0: + version "4.0.0-beta.0" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42" + integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== + dependencies: + async "^2.4.1" + loader-utils "^1.1.0" + schema-utils "^0.4.5" + webpack-sources "^1.1.0" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +favico.js@^0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/favico.js/-/favico.js-0.3.10.tgz#80586e27a117f24a8d51c18a99bdc714d4339301" + integrity sha1-gFhuJ6EX8kqNUcGKmb3HFNQzkwE= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fbemitter@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865" + integrity sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU= + dependencies: + fbjs "^0.8.4" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@0.1.0-alpha.7: + version "0.1.0-alpha.7" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.1.0-alpha.7.tgz#ad4308b8f232fb3c73603349ea725d1e9c39323c" + integrity sha1-rUMIuPIy+zxzYDNJ6nJdHpw5Mjw= + dependencies: + core-js "^1.0.0" + promise "^7.0.3" + whatwg-fetch "^0.9.0" + +fbjs@^0.8.4, fbjs@^0.8.9: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-saver@^1.3.3: + version "1.3.8" + resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" + integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg== + +file@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/file/-/file-0.2.2.tgz#c3dfd8f8cf3535ae455c2b423c2e52635d76b4d3" + integrity sha1-w9/Y+M81Na5FXCtCPC5SY112tNM= + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +filesize@3.5.6: + version "3.5.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" + integrity sha1-X9mPPqyU7JUW747VeC+thKAaCho= + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= + +find-up@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +findup-sync@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +flux@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/flux/-/flux-2.1.1.tgz#2c6ac652d4337488968489c6586f3aff26a38ea4" + integrity sha1-LGrGUtQzdIiWhInGWG86/yajjqQ= + dependencies: + fbemitter "^2.0.0" + fbjs "0.1.0-alpha.7" + immutable "^3.7.4" + +focus-trap-react@^3.0.5: + version "3.1.4" + resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-3.1.4.tgz#e95f4aece5c493be4d3653dfccd5036d11ad24d5" + integrity sha512-uqMKMg9Xlny0LKHW0HqA7ncLafW57SxgeedjE7/Xt+NB7sdOBUG4eD/9sMsq1O0+7zD3palpniTs2n0PDLc3uA== + dependencies: + focus-trap "^2.0.1" + +focus-trap@^2.0.1: + version "2.4.6" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-2.4.6.tgz#332b475b317cec6a4a129f5307ce7ebc0da90b40" + integrity sha512-vWZTPtBU6pBoyWZDRZJHkXsyP2ZCZBHE3DRVXnSVdQKH/mcDtu9S5Kz8CUDyIqpfZfLEyI9rjKJLnc4Y40BRBg== + dependencies: + tabbable "^1.0.3" + +focus-visible@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.0.2.tgz#4fae9cf40458b73c10701c9774c462e3ccd53caf" + integrity sha512-zT2fj/bmOgEBjqGbURGlowTmCwsIs3bRDMr/sFZz8Ly7VkEiwuCn9swNTL3pPuf8Oua2de7CLuKdnuNajWdDsQ== + +follow-redirects@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" + integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== + dependencies: + debug "^3.0.0" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + dependencies: + null-check "^1.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^8.0.1, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.0.0, fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +fuse.js@^2.2.0: + version "2.7.4" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-2.7.4.tgz#96e420fde7ef011ac49c258a621314fe576536f9" + integrity sha1-luQg/efvARrEnCWKYhMU/ldlNvk= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +"gemini-scrollbar@github:matrix-org/gemini-scrollbar#91e1e566", gemini-scrollbar@matrix-org/gemini-scrollbar#91e1e566: + version "1.4.3" + resolved "https://codeload.github.com/matrix-org/gemini-scrollbar/tar.gz/91e1e566fa33324188f278801baf4a79f9f554ab" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-document@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" + integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +get-window@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f" + integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw== + dependencies: + get-document "1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +gfm.css@^1.1.1, gfm.css@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gfm.css/-/gfm.css-1.1.2.tgz#94acfa600672663b9dd0fd4b6ee5d11c8dbc161e" + integrity sha512-KhK3rqxMj+UTLRxWnfUA5n8XZYMWfHrrcCxtWResYR2B3hWIqBM6v9FPGZSlVuX+ScLewizOvNkjYXuPs95ThQ== + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= + dependencies: + find-index "^0.1.1" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.14: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +highlight.js@^9.13.1, highlight.js@^9.15.8: + version "9.15.10" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" + integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.0.tgz#dd8af49cd01e73cc8e61ba13e217a772fd4ecd2d" + integrity sha512-zYSx1cP4MLsvKtTg8DF/PI6e6FHZ3wcawcTGsrLU2TM+UfD4jmSrn2wdQT16TFbH3lO4PIdjLG0E+cuYDgFD9g== + dependencies: + lru-cache "^5.1.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.10.0, htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" + integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.13.0, http-proxy@^1.17.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" + integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.0.tgz#59cdde0a2a297cc2aeb0c6445a195ee89f127550" + integrity sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.2.tgz#99d83a246c196ea5c93ef9315ad7b0819c35069b" + integrity sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immutable@^3.7.4: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@2.0.0, import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +interpret@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.0.0, ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.2.tgz#554f2933e7385cc46e94351977ca2081170a206e" + integrity sha512-+5g/wLlcm1AcxSP7014m6GvbPHswDx980vD/3bZaap8aGV9Yfs7Q6y6tfaupgZ5O74Byzc8dGrSCJ+bFXx0KdA== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrow-function@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-arrow-function/-/is-arrow-function-2.0.3.tgz#29be2c2d8d9450852b8bbafb635ba7b8d8e87ec2" + integrity sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI= + dependencies: + is-callable "^1.0.4" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-boolean-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" + integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.0.4, is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-equal@^1.5.1: + version "1.5.5" + resolved "https://registry.yarnpkg.com/is-equal/-/is-equal-1.5.5.tgz#5e85f1957e052883247feb386965a3bba15fbb3d" + integrity sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0= + dependencies: + has "^1.0.1" + is-arrow-function "^2.0.3" + is-boolean-object "^1.0.0" + is-callable "^1.1.3" + is-date-object "^1.0.1" + is-generator-function "^1.0.6" + is-number-object "^1.0.3" + is-regex "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.1" + object.entries "^1.0.4" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" + integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hotkey@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d" + integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA== + +is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" + integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= + dependencies: + ip-regex "^2.0.0" + +is-npm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" + integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== + +is-number-object@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" + integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k= + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.3, is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" + integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ= + +is-symbol@^1.0.1, is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= + +is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isbinaryfile@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +isbinaryfile@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.2.tgz#bfc45642da645681c610cca831022e30af426488" + integrity sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-base64@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" + integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM= + +isomorphic-fetch@^2.1.1, isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jest-worker@^24.6.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jquery@^3.3.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + +js-base64@^2.1.9: + version "2.5.1" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.0, js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-loader@^0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" + integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +karma-chrome-launcher@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-cli@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" + integrity sha1-rmw8WKMTodALRRZMRVubhs4X+WA= + dependencies: + resolve "^1.1.6" + +karma-logcapture-reporter@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/karma-logcapture-reporter/-/karma-logcapture-reporter-0.0.1.tgz#bf1b0b1c915e0de295a15fe2f0179d4281bacddc" + integrity sha1-vxsLHJFeDeKVoV/i8BedQoG6zdw= + +karma-mocha@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" + integrity sha1-7qrH/8DiAetjxGdEDStpx883eL8= + dependencies: + minimist "1.2.0" + +karma-sourcemap-loader@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" + integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= + dependencies: + graceful-fs "^4.1.2" + +karma-spec-reporter@0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz#4830dc7148a155c7d7a186e632339a0d80fadec3" + integrity sha1-SDDccUihVcfXoYbmMjOaDYD63sM= + dependencies: + colors "^1.1.2" + +karma-summary-reporter@^1.5.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/karma-summary-reporter/-/karma-summary-reporter-1.7.1.tgz#ff751e6e3950a3b3f2ae96a39b10fdc87938c4db" + integrity sha512-1I1njfSKFwogQrfDDyjyXKUeysYdD7SXoXBz2o7oK7RpiGsteyBoV3+6J5qFLcT0D8VGxLzYCsU0BbyeeHIl0g== + dependencies: + chalk "^1.1.3 || 2.x" + +karma-webpack@4.0.0-beta.0: + version "4.0.0-beta.0" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.0-beta.0.tgz#2b386df6c364f588f896ffbdae57c2e51513d1ba" + integrity sha512-3mBfzOSnWdlMNtIIFpZ0/fGbXCq6dko0HOnwU7nntpNu7tTcY7/JbaWV8bxvmIre+yNUPIglq7p3EuwXj35BmA== + dependencies: + async "^2.0.0" + babel-runtime "^6.0.0" + loader-utils "^1.0.0" + lodash "^4.0.0" + source-map "^0.5.6" + webpack-dev-middleware "^3.0.1" + +karma@^3.1.2: + version "3.1.4" + resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.4.tgz#3890ca9722b10d1d14b726e1335931455788499e" + integrity sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw== + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^2.0.3" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + flatted "^2.0.0" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "2.1.1" + source-map "^0.6.1" + tmp "0.0.33" + useragent "2.3.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +lazy-val@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65" + integrity sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q== + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +linkify-it@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + dependencies: + uc.micro "^1.0.1" + +linkifyjs@^2.1.6: + version "2.1.8" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-2.1.8.tgz#2bee2272674dc196cce3740b8436c43df2162f9c" + integrity sha512-j3QpiEr4UYzN5foKhrr9Sr06VI9vSlI4HisDWt+7Mq+TWDwpJ6H/LLpogYsXcyUIJLVhGblXXdUnblHsVNMPpg== + optionalDependencies: + jquery "^3.3.1" + react "^16.4.2" + react-dom "^16.4.2" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3, loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash-es@^4.2.1: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" + integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.mergewith@^4.6.1: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + +lodash@^4.0.0, lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.5.0: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== + dependencies: + circular-json "^0.5.5" + date-format "^1.2.0" + debug "^3.1.0" + rfdc "^1.1.2" + streamroller "0.7.0" + +loglevel@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" + integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== + +lolex@4.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7" + integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@4.1.x, lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-fetch-happen@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.0.tgz#a8e3fe41d3415dd656fe7b8e8172e1fb4458b38d" + integrity sha512-nFr/vpL1Jc60etMVKeaLOqfGjMMb3tAHFVJWxHOFCFS04Zmd7kGlMxo0l1tzfhoQje0/UPnd0X8OeGUiXXnfPA== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-it@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": + version "2.4.2" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/46d7e4c7075386f1330d6a49941e9979fc26be0a" + dependencies: + another-json "^0.2.0" + babel-runtime "^6.26.0" + bluebird "3.5.5" + browser-request "^0.3.3" + bs58 "^4.0.1" + content-type "^1.0.2" + loglevel "^1.6.4" + qs "^6.5.2" + request "^2.88.0" + unhomoglyph "^1.0.2" + +matrix-mock-request@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/matrix-mock-request/-/matrix-mock-request-1.2.3.tgz#56b15d86e2601a9b48a854844396d18caab649c8" + integrity sha512-Tr7LDHweTW8Ql4C8XhGQFGMzuh+HmPjOcQqrHH1qfSesq0cwdPWanvdnllNjeHoAMcZ43HpMFMzFZfNW1/6HYg== + dependencies: + bluebird "^3.5.0" + expect "^1.20.2" + +"matrix-react-sdk@github:matrix-org/matrix-react-sdk#develop": + version "1.7.0" + resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/53332018234fc9067c6200babb794ab3538a0791" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-runtime "^6.26.0" + bluebird "^3.5.0" + blueimp-canvas-to-blob "^3.5.0" + browser-encrypt-attachment "^0.3.0" + browser-request "^0.3.3" + classnames "^2.1.2" + commonmark "^0.28.1" + counterpart "^0.18.0" + create-react-class "^15.6.0" + diff-dom "^4.1.3" + diff-match-patch "^1.0.4" + emojibase-data "^4.0.2" + emojibase-regex "^3.0.0" + file-saver "^1.3.3" + filesize "3.5.6" + flux "2.1.1" + focus-trap-react "^3.0.5" + focus-visible "^5.0.2" + fuse.js "^2.2.0" + gemini-scrollbar "github:matrix-org/gemini-scrollbar#91e1e566" + gfm.css "^1.1.1" + glob "^5.0.14" + highlight.js "^9.15.8" + is-ip "^2.0.0" + isomorphic-fetch "^2.2.1" + linkifyjs "^2.1.6" + lodash "^4.17.14" + lolex "4.2" + matrix-js-sdk "github:matrix-org/matrix-js-sdk#develop" + optimist "^0.6.1" + pako "^1.0.5" + png-chunks-extract "^1.0.0" + prop-types "^15.5.8" + qrcode-react "^0.1.16" + qs "^6.6.0" + querystring "^0.2.0" + react "^16.9.0" + react-addons-css-transition-group "15.6.2" + react-beautiful-dnd "^4.0.1" + react-dom "^16.9.0" + react-gemini-scrollbar "github:matrix-org/react-gemini-scrollbar#9cf17f63b7c0b0ec5f31df27da0f82f7238dc594" + resize-observer-polyfill "^1.5.0" + sanitize-html "^1.18.4" + slate "^0.41.2" + slate-html-serializer "^0.6.1" + slate-md-serializer "github:matrix-org/slate-md-serializer#f7c4ad3" + slate-react "^0.18.10" + text-encoding-utf-8 "^1.0.1" + url "^0.11.0" + velocity-animate "^1.5.2" + whatwg-fetch "^1.1.1" + zxcvbn "^4.4.2" + +matrix-react-test-utils@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" + integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdurl@^1.0.1, "mdurl@~ 1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-3.1.1.tgz#ef609811e3bc28970eac2884eece64d167830d17" + integrity sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA== + +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + +memory-fs@^0.4.0, memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +"mime-db@>= 1.40.0 < 2": + version "1.42.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.3.1, mime@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0, "minimist@~ 1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.6.0, minipass@^2.8.6: + version "2.8.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.8.6.tgz#620d889ace26356391d010ecb9458749df9b6db5" + integrity sha512-lFG7d6g3+/UaFDCOtqPiKAC9zngWWsQZl1g5q6gaONqrjq61SX2xFqXMleQiFVyDpYwa018E9hmlAFY22PCb+A== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.2.tgz#5d24764998f98112586f7e566bd4c0999769dad4" + integrity sha512-lsNFqSHdJ21EwKzCp12HHJGxSMtHkCW1EMA9cceG3MkMNARjuWotZnMe3NKNshAvFXpm4loZqmYsCmRwhS2JMw== + dependencies: + minipass "^2.9.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +modernizr@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.7.1.tgz#c35048554879e5d60213b7771a9f593e178f8a3b" + integrity sha512-pewTfEGiY5pHRnJNKFALn/nkYpWmEOtZ+iRMzQUjexkOum3X4v+xAZ9AqgXdjnDBh37HNCDP6ieq68NGPYvkTA== + dependencies: + doctrine "^3.0.0" + file "^0.2.2" + lodash "^4.17.11" + markdown-it "^8.4.2" + mkdirp "^0.5.1" + requirejs "^2.3.6" + yargs "^13.2.1" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-fetch-npm@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a" + integrity sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^4.1.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.4.1.tgz#81e9c153b0ad5743755696f2aa20488d48e962b6" + integrity sha512-rjH3yRt0Ssx19mUwS0hrDUOdG9VI+oRLpLHJ7tXRdjcuQ7v7wo6qPvOZppHRrqfslTKr0L2yBhjj4UXd7c3cQg== + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.1.0, object-inspect@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-is@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" + integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.0.4, object.entries@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" + integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" + integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== + dependencies: + define-properties "^1.1.2" + es-abstract "^1.11.0" + function-bind "^1.1.1" + has "^1.0.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +"olm@https://packages.matrix.org/npm/olm/olm-3.1.4.tgz": + version "3.1.4" + resolved "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz#0f03128b7d3b2f614d2216409a1dfccca765fdb3" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^3.0.0, os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@^1.0.5, pako@~1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pluralizers@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/pluralizers/-/pluralizers-0.1.7.tgz#8d38dd0a1b660e739b10ab2eab10b684c9d50142" + integrity sha512-mw6AejUiCaMQ6uPN9ObjJDTnR5AnBSmnHHy3uVTbxrSFSxO5scfwpTs8Dxyb6T2v7GSulhvOq+pm9y+hXUvtOA== + +png-chunks-extract@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz#fad4a905e66652197351c65e35b92c64311e472d" + integrity sha1-+tSpBeZmUhlzUcZeNbksZDEeRy0= + dependencies: + crc-32 "^0.3.0" + +portfinder@^1.0.24: + version "1.0.24" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" + integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-extend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7" + integrity sha1-XqmL94e6PKz030YJdD+AqDOx0Oc= + dependencies: + postcss "^5.0.4" + +postcss-import@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" + integrity sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw== + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" + integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== + dependencies: + camelcase-css "^2.0.1" + postcss "^7.0.18" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" + integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^2.0.0" + schema-utils "^0.4.0" + +postcss-mixins@^6.2.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-6.2.2.tgz#3acea63271e2c75db62fb80bc1c29e1a609a4742" + integrity sha512-QqEZamiAMguYR6d2h73XXEHZgkxs03PlbU0PqgqtdCnbRlMLFNQgsfL/Td0rjIe2SwpLXOQyB9uoiLWa4GR7tg== + dependencies: + globby "^8.0.1" + postcss "^7.0.17" + postcss-js "^2.0.2" + postcss-simple-vars "^5.0.2" + sugarss "^2.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" + integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-value-parser "^3.3.1" + +postcss-modules-scope@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" + integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^7.0.6" + +postcss-nested@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852" + integrity sha512-1xxmLHSfubuUi6xZZ0zLsNoiKfk3BWQj6fkNMaBJC529wKKLcdeCxXt6KJmDLva+trNyQNwEaE/ZWMA7cve1fA== + dependencies: + postcss "^6.0.14" + postcss-selector-parser "^3.1.1" + +postcss-scss@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.6.tgz#ab903f3bb20161bc177896462293a53d4bff5f7a" + integrity sha512-4EFYGHcEw+H3E06PT/pQQri06u/1VIIPjeJQaM8skB80vZuXMhp4cSNV5azmdNkontnOID/XYWEvEEELLFB1ww== + dependencies: + postcss "^6.0.23" + +postcss-selector-parser@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-simple-vars@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-4.1.0.tgz#043248cfef8d3f51b3486a28c09f8375dbf1b2f9" + integrity sha512-J/TRomA8EqXhS4VjQJsPCYTFIa9FYN/dkJK/8oZ0BYeVIPx91goqM8T+ljsP57+4bwSEywFOuB7EZ8n1gjjxZw== + dependencies: + postcss "^6.0.9" + +postcss-simple-vars@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz#e2f81b3d0847ddd4169816b6d141b91d51e6e22e" + integrity sha512-xWIufxBoINJv6JiLb7jl5oElgp+6puJwvT5zZHliUSydoLz4DADRB3NDDsYgfKVwojn4TDLiseoC65MuS8oGGg== + dependencies: + postcss "^7.0.14" + +postcss-strip-inline-comments@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/postcss-strip-inline-comments/-/postcss-strip-inline-comments-0.1.5.tgz#7ff6bcdc14e633ed4cdfa020bae3eddad4f84b90" + integrity sha1-f/a83BTmM+1M36AguuPt2tT4S5A= + dependencies: + postcss "^5.0.18" + +postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss@^5.0.18, postcss@^5.0.4, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.23, postcss@^6.0.9: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" + integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +promise@^7.0.3, promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24: + version "1.4.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" + integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qr.js@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" + integrity sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8= + +qrcode-react@^0.1.16: + version "0.1.16" + resolved "https://registry.yarnpkg.com/qrcode-react/-/qrcode-react-0.1.16.tgz#d064999d510ffc3e55a9ca3ffcf6c203c69f1517" + integrity sha512-FK+QCfFqCQMSxUE1byzglERJQkwKqXYvYMCS+/Ad2zACJOfoHkHHtRqsQQPji7lfb1y1qCXLvL+3eP1hAfg8Ng== + dependencies: + qr.js "0.0.0" + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@^6.5.2, qs@^6.6.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" + integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +raf-schd@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-2.1.2.tgz#ec622b5167f2912089f054dc03ebd5bcf33c8f62" + integrity sha512-Orl0IEvMtUCgPddgSxtxreK77UiQz4nPYJy9RggVzu4mKsZkQWiAaG1y9HlYWdvm9xtN348xRaT37qkvL/+A+g== + +raf@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@1.2.8, rc@^1.2.7, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-addons-css-transition-group@15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.2.tgz#9e4376bcf40b5217d14ec68553081cee4b08a6d6" + integrity sha1-nkN2vPQLUhfRTsaFUwgc7ksIptY= + dependencies: + react-transition-group "^1.2.0" + +react-beautiful-dnd@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-4.0.1.tgz#3b0a49bf6be75af351176c904f012611dd292b81" + integrity sha512-d73RMu4QOFCyjUELLWFyY/EuclnfqulI9pECx+2gIuJvV0ycf1uR88o+1x0RSB9ILD70inHMzCBKNkWVbbt+vA== + dependencies: + babel-runtime "^6.26.0" + invariant "^2.2.2" + memoize-one "^3.0.1" + prop-types "^15.6.0" + raf-schd "^2.1.0" + react-motion "^0.5.2" + react-redux "^5.0.6" + redux "^3.7.2" + redux-thunk "^2.2.0" + reselect "^3.0.1" + +react-dom@^16.4.2, react-dom@^16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.9.0.tgz#5e65527a5e26f22ae3701131bcccaee9fb0d3962" + integrity sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.15.0" + +"react-gemini-scrollbar@github:matrix-org/react-gemini-scrollbar#9cf17f63b7c0b0ec5f31df27da0f82f7238dc594": + version "2.1.5" + resolved "https://codeload.github.com/matrix-org/react-gemini-scrollbar/tar.gz/9cf17f63b7c0b0ec5f31df27da0f82f7238dc594" + dependencies: + gemini-scrollbar matrix-org/gemini-scrollbar#91e1e566 + +react-immutable-proptypes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4" + integrity sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ= + +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" + integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== + +react-lifecycles-compat@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== + dependencies: + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" + +react-redux@^5.0.6: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.1.tgz#88e368682c7fa80e34e055cd7ac56f5936b0f52f" + integrity sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg== + dependencies: + "@babel/runtime" "^7.1.2" + hoist-non-react-statics "^3.1.0" + invariant "^2.2.4" + loose-envify "^1.1.0" + prop-types "^15.6.1" + react-is "^16.6.0" + react-lifecycles-compat "^3.0.0" + +react-transition-group@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6" + integrity sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q== + dependencies: + chain-function "^1.0.0" + dom-helpers "^3.2.0" + loose-envify "^1.3.1" + prop-types "^15.5.6" + warning "^3.0.0" + +react@^16.4.2, react@^16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" + integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-config-file@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-5.0.0.tgz#1487c983fae9c1b672d3acda5cac899a2d451f02" + integrity sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg== + dependencies: + dotenv "^8.0.0" + dotenv-expand "^5.1.0" + fs-extra "^8.1.0" + js-yaml "^3.13.1" + json5 "^2.1.0" + lazy-val "^1.0.4" + +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.1, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.0.0, readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +redux-thunk@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + +redux@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.3" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" + integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + dependencies: + define-properties "^1.1.2" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@4.0.0, registry-auth-token@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" + integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== + dependencies: + rc "^1.2.8" + safe-buffer "^5.0.1" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request@^2.88.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requirejs@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" + integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== + dependencies: + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rfdc@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" + integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-terser@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.2.tgz#3e41256205cb75f196fc70d4634227d1002c255c" + integrity sha512-sWKBCOS+vUkRtHtEiJPAf+WnBqk/C402fBD9AVHxSIXMqjsY7MnYWKYEUqGixtr0c8+1DjzUEPlNgOYQPVrS1g== + dependencies: + "@babel/code-frame" "^7.0.0" + jest-worker "^24.6.0" + rollup-pluginutils "^2.8.1" + serialize-javascript "^1.7.0" + terser "^4.1.0" + +rollup-pluginutils@^2.8.1: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.4.0, rxjs@^6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" + integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-filename@^1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sanitize-html@^1.18.4, sanitize-html@^1.19.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85" + integrity sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA== + dependencies: + chalk "^2.4.1" + htmlparser2 "^3.10.0" + lodash.clonedeep "^4.5.0" + lodash.escaperegexp "^4.1.2" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.mergewith "^4.6.1" + postcss "^7.0.5" + srcset "^1.0.0" + xtend "^4.0.1" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e" + integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^0.4.0, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selection-is-backward@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" + integrity sha1-l6VGMxiKURq6ZBn8XB+pG0Z+a+E= + +selfsigned@^1.10.6: + version "1.10.6" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.6.tgz#7b3cd37ed9c2034261a173af1a1aae27d8169b67" + integrity sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w== + dependencies: + node-forge "0.8.2" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.7.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" + integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-escape@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/shell-escape/-/shell-escape-0.2.0.tgz#68fd025eb0490b4f567a027f0bf22480b5f84133" + integrity sha1-aP0CXrBJC09WegJ/C/IkgLX4QTM= + +shell-quote@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slate-base64-serializer@^0.2.69: + version "0.2.111" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.111.tgz#22ba7d32aa4650f6bbd25c26ffe11f5d021959d6" + integrity sha512-pEsbxz4msVSCCCkn7rX+lHXxUj/oddcR4VsIYwWeQQLm9Uw7Ovxja4rQ/hVFcQqoU2DIjITRwBR9pv3RyS+PZQ== + dependencies: + isomorphic-base64 "^1.0.2" + +slate-dev-environment@^0.2.0, slate-dev-environment@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.2.tgz#bd8946e1fe4cf5447060c84a362a1d026ed8b77f" + integrity sha512-JZ09llrRQu6JUsLJCUlGC0lB1r1qIAabAkSd454iyYBq6lDuY//Bypi3Jo8yzIfzZ4+mRLdQvl9e8MbeM9l48Q== + dependencies: + is-in-browser "^1.1.3" + +slate-dev-logger@^0.1.43: + version "0.1.43" + resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.43.tgz#77f6ca7207fcbf453a5516f3aa8b19794d1d26dc" + integrity sha512-GkcPMGzmPVm85AL+jaKnzhIA0UH9ktQDEIDM+FuQtz+TAPcpPCQiRAaZ6I2p2uD0Hq9bImhKSCtHIa0qRxiVGw== + +slate-dev-warning@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/slate-dev-warning/-/slate-dev-warning-0.0.1.tgz#f6c36731babea5e301b5bd504fe64911dd24200a" + integrity sha512-QdXa+qmOG46VrTfnzn2gUVzs1WiO3Q+zCv3XomzMNGdgAJjCgHBs3jaeQD845h15loS3OJ181gCNAkB3dby6Hw== + +slate-hotkeys@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.9.tgz#0cc9eb750a49ab9ef11601305b7c82b5402348e3" + integrity sha512-y+C/s5vJEmBxo8fIqHmUcdViGwALL/A6Qow3sNG1OHYD5SI11tC2gfYtGbPh+2q0H7O4lufffCmFsP5bMaDHqA== + dependencies: + is-hotkey "0.1.4" + slate-dev-environment "^0.2.2" + +slate-html-serializer@^0.6.1: + version "0.6.32" + resolved "https://registry.yarnpkg.com/slate-html-serializer/-/slate-html-serializer-0.6.32.tgz#69b0fcdb89a0bdcea28b60b6a90b944651ad3277" + integrity sha512-x1RP1R2HMaVFflk9UXiuepcbN4wMoJRv0VWtxFw8efGNFmJfNBWME4iXAy6GNFRV0rRPlG3xCuQv2wHZ/+JMYw== + dependencies: + slate-dev-logger "^0.1.43" + type-of "^2.0.1" + +"slate-md-serializer@github:matrix-org/slate-md-serializer#f7c4ad3": + version "3.1.0" + resolved "https://codeload.github.com/matrix-org/slate-md-serializer/tar.gz/f7c4ad394f5af34d4c623de7909ce95ab78072d3" + +slate-plain-serializer@^0.6.8: + version "0.6.39" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.6.39.tgz#5fb8d4dc530a2e7e0689548d48964ce242c4516a" + integrity sha512-EGl+Y+9Fw9IULtPg8sttydaeiAoaibJolMXNfqI79+5GWTQwJFIbg24keKvsTw+3f2RieaPu8fcrKyujKtZ7ZQ== + +slate-prop-types@^0.4.67: + version "0.4.67" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.4.67.tgz#c6aa74195466546a44fcb85d1c7b15fefe36ce6b" + integrity sha512-FmdwitAw1Y69JHm326dfwP6Zd6R99jz1Im8jvKcnG2hytk72I1vIv6ct2CkNGwc3sg90+OIO/Rf18frYxxoTzw== + +slate-react@^0.18.10: + version "0.18.11" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.18.11.tgz#f452e7eb73f0271422d2a17e8090dcd8d889aef6" + integrity sha512-7u0+LLabGaxjWYb0oTqUDcs3iCvJdaZwcGW6hLc1hFv06KkwaIxAqYpP8dUBRVlQd+0/X0TdyagCmf0IjFSPhg== + dependencies: + debug "^3.1.0" + get-window "^1.1.1" + is-window "^1.0.2" + lodash "^4.1.1" + memoize-one "^4.0.0" + prop-types "^15.5.8" + react-immutable-proptypes "^2.1.0" + selection-is-backward "^1.0.0" + slate-base64-serializer "^0.2.69" + slate-dev-environment "^0.2.0" + slate-dev-warning "^0.0.1" + slate-hotkeys "^0.2.5" + slate-plain-serializer "^0.6.8" + slate-prop-types "^0.4.67" + +slate@^0.41.2: + version "0.41.3" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.41.3.tgz#fa468de5db53afc453a0a7d7875b4de05737a900" + integrity sha512-I/ymHWRxtoSOWYKh/SFgW3Vkkojt5ywWf7Wh4oBvaKic/3mAsM1wymyZmhnvSKK59IeE0JJzD4uyyQaM1KEFHA== + dependencies: + debug "^3.1.0" + direction "^0.1.5" + esrever "^0.2.0" + is-plain-object "^2.0.4" + lodash "^4.17.4" + slate-dev-warning "^0.0.1" + type-of "^2.0.1" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +smart-buffer@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" + integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" + integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== + dependencies: + ip "^1.1.5" + smart-buffer "4.0.2" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-loader@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" + integrity sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ== + dependencies: + async "^2.5.0" + loader-utils "^1.1.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.13, source-map-support@~0.5.12: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +srcset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= + dependencies: + array-uniq "^1.0.2" + number-is-nan "^1.0.0" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.0, ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stat-mode@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.3.0.tgz#69283b081f851582b328d2a4ace5f591ce52f54b" + integrity sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +streamroller@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== + dependencies: + date-format "^1.2.0" + debug "^3.1.0" + mkdirp "^0.5.1" + readable-stream "^2.3.0" + +string-width@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" + integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^5.2.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.repeat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" + integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= + +string.prototype.trimleft@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= + dependencies: + minimist "^1.1.0" + +sugarss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" + integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== + dependencies: + postcss "^7.0.2" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + +supports-color@6.1.0, supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= + dependencies: + has-flag "^2.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +symbol-observable@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +tabbable@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-1.1.3.tgz#0e4ee376f3631e42d7977a074dbd2b3827843081" + integrity sha512-nOWwx35/JuDI4ONuF0ZTo6lYvI0fY0tZCH1ErzY2EXfu4az50ZyiUX8X073FLiZtmWUVlkRnuXsehjJgCw9tYg== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar-stream@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" + integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== + dependencies: + bl "^3.0.0" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^4: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +temp-file@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.4.tgz#73af868cd7cb7400a44e4bb03e653b2280ce2878" + integrity sha512-qSZ5W5q54iyGnP8cNl49RE0jTJc5CrzNocux5APD5yIxcgonoMuMSbsZfaZy8rTGCYo0Xz6ySVv3adagZ8gffg== + dependencies: + async-exit-hook "^2.0.1" + fs-extra "^8.1.0" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + dependencies: + execa "^0.7.0" + +terser-webpack-plugin@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" + integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.0, terser@^4.1.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.3.tgz#f626c6779cadd60a3018e072fedeceabe4769db1" + integrity sha512-Nzr7dpRjSzMEUS+z2UYQBtzE0LDm5k0Yy8RgLRPy85QUo1TjU5lIOBwzS5/FVAMaVyHZ3WTTU2BuQcMn8KXnNQ== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-encoding-utf-8@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +tmatch@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf" + integrity sha1-DFYkbzPzDaG409colauvFmYPOM8= + +tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tree-kill@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" + integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys= + dependencies: + utf8-byte-length "^1.0.1" + +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18, ua-parser-js@^0.7.19: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unhomoglyph@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.2.tgz#d69e5f5a6a1c6b211941a0889b81eba86595c253" + integrity sha1-1p5fWmocayEZQaCIm4HrqGWVwlM= + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" + integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== + dependencies: + boxen "^3.0.0" + chalk "^2.0.1" + configstore "^4.0.0" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.1.0" + is-npm "^3.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +updates@^8.5.2: + version "8.5.3" + resolved "https://registry.yarnpkg.com/updates/-/updates-8.5.3.tgz#6397674fcfe9938deabbfa2f88dad717d756eebb" + integrity sha512-bREdpucNEtSULXu2PLfYmKnRD6E0lM16vbZNsgR39Ou7FqiUEyasA0o2Lrb3uHwZN3L2WhOjf+EjQl7NiOHhug== + dependencies: + chalk "2.4.2" + find-up "4.1.0" + hosted-git-info "3.0.0" + make-fetch-happen "5.0.0" + minimist "1.2.0" + rc "1.2.8" + registry-auth-token "4.0.0" + semver "6.3.0" + string-width "4.1.0" + text-table "0.2.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + +v8-compile-cache@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" + integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== + +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +velocity-animate@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105" + integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@^3.1.2: + version "3.3.9" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.9.tgz#79c27e71f94b7fe324d594ab64a8e396b9daa91a" + integrity sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A== + dependencies: + chalk "2.4.2" + cross-spawn "6.0.5" + enhanced-resolve "4.1.0" + findup-sync "3.0.0" + global-modules "2.0.0" + import-local "2.0.0" + interpret "1.2.0" + loader-utils "1.2.3" + supports-color "6.1.0" + v8-compile-cache "2.0.3" + yargs "13.2.4" + +webpack-dev-middleware@^3.0.1, webpack-dev-middleware@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz#1167aea02afa034489869b8368fe9fed1aea7d09" + integrity sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.1.11: + version "3.8.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.8.1.tgz#485b64c4aadc23f601e72114b40c1b1fea31d9f1" + integrity sha512-9F5DnfFA9bsrhpUCAfQic/AXBVHvq+3gQS+x6Zj0yc1fVVE0erKh2MV4IV12TBewuTrYeeTIRwCH9qLMvdNvTw== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.2" + killable "^1.0.1" + loglevel "^1.6.4" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.24" + schema-utils "^1.0.0" + selfsigned "^1.10.6" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.1" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.23.1: + version "4.41.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" + integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-fetch@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" + integrity sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA= + +whatwg-fetch@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" + integrity sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +widest-line@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + dependencies: + string-width "^2.1.1" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.0.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.0.tgz#906cc2100972dc2625ae78f566a2577230a1d6f7" + integrity sha512-6gpP93MR+VOOehKbCPchro3wFZNSNmek8A2kbkOAZLIZAYx1KP/zAqwO0sOHi3xJEb+UBz8NaYt/17UNit1Q9w== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.0, yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@12.0.5, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + +yargs@^13.2.1, yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= + +zip-stream@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c" + integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^2.1.1" + readable-stream "^3.4.0" + +zxcvbn@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30" + integrity sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=