Compare commits

...

1214 commits

Author SHA1 Message Date
timvisee
e0a3d2bf2c
Bump version to 3.4.27 2025-07-01 08:50:51 +02:00
timvisee
b93256316b
Move icon styles into stylesheet 2025-07-01 08:50:18 +02:00
timvisee
8a82e53e82
Bump version to 3.4.26 2025-06-30 23:51:56 +02:00
Tim Visée
6215bb1555 Merge branch 'add-thunderbird-sponsor-banner' into 'master'
Add Thunderbird sponsor banner

See merge request timvisee/send!37
2025-06-30 23:50:14 +02:00
timvisee
d7e929a0d1
Merge branch 'master' of github.com:timvisee/send 2025-06-30 23:30:05 +02:00
timvisee
154a8a90c1
Add sponsored by Thunderbird label to translations 2025-06-30 23:25:51 +02:00
timvisee
0a6bf39353
Add Thunderbird sponsorship banner to home, uploads and download page 2025-06-30 23:12:54 +02:00
Raymond Hear
c0cf7bbda2 fix: use Authorization header 2025-05-23 17:30:29 +02:00
timvisee
197b0bcf59
Update contribute.json 2025-04-23 21:01:10 +02:00
timvisee
56a0e830bd
Bump version to 3.4.25 2025-04-23 10:47:15 +02:00
timvisee
b3317df707
Move main notice on top of text 2025-04-23 10:46:26 +02:00
Tim Visée
9931074905 Merge branch 'more-customizable-notices' into 'master'
More customizable notices

See merge request timvisee/send!36
2025-04-23 10:37:44 +02:00
timvisee
0088a4ccc0
Add class to underline text 2025-04-23 10:12:16 +02:00
timvisee
11aad6eac5
Rename downloads list to uploads list 2025-04-23 10:09:51 +02:00
timvisee
1fb2f45285
Rename existing warnings to notices 2025-04-23 10:08:11 +02:00
timvisee
d0f21e8078
Add customizable notice on main page and in downloads list 2025-04-23 10:07:40 +02:00
timvisee
c71100c82a
Bump version to 3.4.24 2025-04-22 22:03:29 +02:00
Tim Visée
4f2dd96708 Merge branch 'update-dependencies' into 'master'
Update dependencies

See merge request timvisee/send!35
2025-04-22 21:59:01 +02:00
Tim Visée
d8456c2c51 Merge branch 'add-custom-upload-download-warnings' into 'master'
Add customizable warnings shown on upload and download pages

See merge request timvisee/send!34
2025-04-22 21:55:25 +02:00
timvisee
b7324f3a5b
Update dependencies 2025-04-22 21:35:39 +02:00
timvisee
6890165f67
Add customizable warnings shown on upload and download pages 2025-04-22 21:31:23 +02:00
Tim Visée
5124572dba Merge branch 'fix-node-18-crypto' into 'master'
Fix build failure due to crypto when using Node 18 or higher

See merge request timvisee/send!33
2025-02-04 19:32:41 +00:00
timvisee
0c1819bb15
Fix build failure due to crypto when using Node 18 or higher 2025-02-04 20:08:03 +01:00
LOLSALT
906990991e Update send.ftl 2024-12-20 11:34:42 +01:00
LOLSALT
48bdf734c5 Update send.ftl 2024-12-20 11:34:42 +01:00
LOLSALT
cf63e0e804 Update send.ftl 2024-12-20 11:34:42 +01:00
LOLSALT
ec66c2dc4e Update send.ftl 2024-12-20 11:34:42 +01:00
LOLSALT
67dfc94ef3 Update send.ftl 2024-12-20 11:34:42 +01:00
Filip Znachor
f54f3ccaa2 Update CS send.ftl
Improved Czech translations
2024-04-19 12:12:13 +02:00
DeAlexPesh
a35e2e58a3 Update RU send.ftl 2024-03-13 17:14:17 +01:00
Tim Visée
6ad2885a16 Merge branch 'aron9861623-master-patch-24529' into 'master'
Fixed docker.md first example

See merge request timvisee/send!32
2023-06-09 13:31:51 +00:00
Aron Tecsi
70662888b1 Fixed docker.md first example 2023-06-09 11:19:42 +00:00
timvisee
9f09a79986
Merge branch 'emilstahl-patch-1' into master
See https://github.com/timvisee/send/pull/149
2023-02-27 21:45:59 +01:00
Emil Stahl
db64c0467a
Small typo 2023-02-27 21:02:53 +01:00
Tim Visée
ca52f84aa5 Merge branch 'master' into 'master'
Add build for arm64v8

See merge request timvisee/send!27
2023-02-22 11:40:25 +00:00
timvisee
6fff664947
Bump version to 3.4.23 2023-02-14 13:42:39 +01:00
timvisee
439ac0ab7c
Update dependencies 2023-02-14 13:41:10 +01:00
timvisee
dee6b3e9cc
Merge branch 'tdulcet-passphrase' into master
See https://github.com/timvisee/send/pull/147
2023-02-14 13:38:30 +01:00
Teal Dulcet
dc9d072472 Increased password length limit to support passphrases. 2023-02-14 04:36:19 -08:00
simepy
91773832c1 Updated from timvisee/send master 2023-02-03 14:29:30 +01:00
timvisee
65730db0db
Bump version to 3.4.22 2023-01-16 17:23:07 +01:00
timvisee
a86221b1cc
Update dependencies 2023-01-16 17:00:14 +01:00
dependabot[bot]
bcc53f73c6
Bump decode-uri-component from 0.2.0 to 0.2.2
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 11:27:01 +00:00
dependabot[bot]
b0444f488b
Bump convict from 6.2.3 to 6.2.4
Bumps [convict](https://github.com/mozilla/node-convict) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/mozilla/node-convict/releases)
- [Changelog](https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mozilla/node-convict/commits)

---
updated-dependencies:
- dependency-name: convict
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-10 22:22:09 +00:00
Tim Visée
70a11e5300 Merge branch 'reset-dlimit-to-default' into 'master'
Reset download limit to default after uploading files

See merge request timvisee/send!30
2023-01-10 20:50:13 +00:00
Jun Omae
f62a99882d Reset download limit to default after uplaoding files 2023-01-06 17:42:45 +09:00
timvisee
309c7d63ac
Change GitLab CI test image to node 16, add missing packages for testing 2022-12-20 20:04:45 +01:00
dependabot[bot]
1d75366f66
Bump loader-utils from 1.4.1 to 1.4.2
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 00:43:28 +00:00
timvisee
0a849fb7c6
Revert "Bump node-forge and webpack-dev-server"
This reverts commit 88725df09d.
2022-11-14 19:43:09 +01:00
dependabot[bot]
88725df09d
Bump node-forge and webpack-dev-server
Bumps [node-forge](https://github.com/digitalbazaar/forge) to 1.3.1 and updates ancestor dependency [webpack-dev-server](https://github.com/webpack/webpack-dev-server). These dependencies need to be updated together.


Updates `node-forge` from 0.10.0 to 1.3.1
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/0.10.0...v1.3.1)

Updates `webpack-dev-server` from 3.11.3 to 4.11.1
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.11.3...v4.11.1)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
- dependency-name: webpack-dev-server
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 18:35:44 +00:00
dependabot[bot]
5a92e7e5e7
Bump minimatch and mocha
Bumps [minimatch](https://github.com/isaacs/minimatch) to 3.1.2 and updates ancestor dependency [mocha](https://github.com/mochajs/mocha). These dependencies need to be updated together.


Updates `minimatch` from 3.0.4 to 3.1.2
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

Updates `mocha` from 6.2.3 to 10.1.0
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v6.2.3...v10.1.0)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
- dependency-name: mocha
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-14 18:32:13 +00:00
dependabot[bot]
71541fc2b6
Bump loader-utils from 1.4.0 to 1.4.1
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-09 03:16:30 +00:00
Simon PERA
c524804c63 Add build for arm64v8 2022-10-25 19:08:27 +02:00
timvisee
5b4c0d2540
Merge branch 'JoshAtticus-patch-1' into master
See https://github.com/timvisee/send/pull/115
2022-10-05 16:05:01 +02:00
Josh
e7f3c91d0b
Update config.js 2022-09-19 15:46:47 +08:00
Josh
8bb198b73e
Remove firefox link 2022-09-17 12:33:03 +08:00
Tim Visée
9e188bc76c Merge branch 'registry-credentials' into 'master'
Refactor CI

See merge request timvisee/send!26
2022-09-14 14:37:33 +00:00
Marian Hähnlein
1353a54c49
Refactor CI 2022-09-12 13:53:00 +02:00
Tim Visée
4ae007167d Merge branch 'custom-css-undefined' into 'master'
Change default value for custom css to empty string

See merge request timvisee/send!25
2022-09-09 12:34:16 +00:00
Marian Hähnlein
660f36e584
Change default value for custom css to empty string 2022-09-08 14:16:00 +02:00
timvisee
3dede083cd
Bump version to 3.4.21 2022-09-04 12:48:04 +02:00
timvisee
26e81455ff
Update dependencies 2022-09-04 12:47:40 +02:00
timvisee
4ceac20623
Revert "Remove some polyfills"
This reverts commit 64644b57e3.
2022-09-04 12:26:12 +02:00
timvisee
073accfe65
Revert "Update eslint & plugins"
This reverts commit 38746b86fd.
2022-09-04 12:26:10 +02:00
timvisee
6306a433e8
Revert "More dependency cleanups"
This reverts commit e1d6224570.
2022-09-04 12:26:09 +02:00
timvisee
1da317bcc1
Revert "Further dependency cleanup"
This reverts commit 1725ff434e.
2022-09-04 12:26:07 +02:00
timvisee
08f597405c
Revert "Remove double-ended-queue"
This reverts commit 9b8b11ffc3.
2022-09-04 12:26:05 +02:00
timvisee
c624766edc
Revert "Remove asmcrypto.js"
This reverts commit c619be58ae.
2022-09-04 12:26:03 +02:00
Tim Visée
e030c46a9c Merge branch 'fix-csp' into 'master'
Fix CSP

Closes #29

See merge request timvisee/send!24
2022-08-22 15:27:03 +00:00
Marian Hähnlein
d081affa38
Move injection of custom CSS from client to server 2022-08-19 13:17:59 +02:00
Marian Hähnlein
71372fcbc1
Replace tabs with spaces to maintain consistency 2022-08-19 13:11:30 +02:00
HrBingR
671390ca24 Added the ability for a user to define and set a custom locale
New environment variable CUSTOM_LOCALE allows a user to define a locale per the /public/locales directory (this should be listed in the docs, will create a pull request for that too).

If the environment variable is blank or invalid it reverts to previous behaviour of system + default locale. Fully tested the above as follows:

CUSTOM_LOCALE = 'nl' < This works correctly, translating to nl.
CUSTOM_LOCALE = 'HelloThere' < This reverts to previous behavior
CUSTOM_LOCALE = '' < Also reverts
#CUSTOM_LOCALE = < Also reverts
2022-08-13 02:25:19 +02:00
HrBingR
9221b86660
Merge branch 'timvisee:master' into master 2022-08-13 02:20:33 +02:00
HrBingR
fd2e954b3e Updated docs to include custom CSS and custom footer. 2022-08-12 21:57:14 +02:00
timvisee
c528ad3147
Merge branch 'HrBingR-master' into master
See https://github.com/timvisee/send/pull/103
2022-08-12 12:35:56 +02:00
HrBingR
df9c7ea734
Merge branch 'timvisee:master' into master 2022-08-11 23:06:47 +02:00
HrBingR
e32ea7d0aa Added the ability to define a custom footer via environment variables
Added the CUSTOM_FOOTER_TEXT and CUSTOM_FOOTER_URL environment variables.

If undefined, the default translated footer will display.

If only CUSTOM_FOOTER_TEXT is defined, only this defined text will display in place of the normal footer text.

If only CUSTOM_FOOTER_URL is defined then the defined URL will display.

If both variables are defined, the defined text will display as a link to the defined URL.
2022-08-11 23:04:45 +02:00
timvisee
55ad08fd96
Merge branch 'HrBingR-master' into master
See https://github.com/timvisee/send/pull/100
2022-08-11 10:07:14 +02:00
timvisee
96d53e4118
Merge branch 'master' of github.com:HrBingR/send into HrBingR-master 2022-08-11 10:06:45 +02:00
HrBingR
bce861bcaf Added if check to see if user is using custom CSS 2022-08-10 22:55:51 +02:00
timvisee
643287e235
Merge branch 'AaronDewes-chore/cleanup-dependencies' into master
See https://github.com/timvisee/send/pull/101
2022-08-10 19:04:33 +02:00
AaronDewes
c619be58ae Remove asmcrypto.js 2022-08-09 16:18:16 +00:00
AaronDewes
9b8b11ffc3 Remove double-ended-queue
Not required anymore since node-redis 3.0
2022-08-09 15:39:41 +00:00
AaronDewes
1725ff434e Further dependency cleanup 2022-08-09 15:37:16 +00:00
AaronDewes
e1d6224570 More dependency cleanups 2022-08-09 15:29:54 +00:00
AaronDewes
38746b86fd Update eslint & plugins
Also replace eslint-plugin-node with the maintained eslint-plugin-n
2022-08-09 15:26:25 +00:00
AaronDewes
64644b57e3 Remove some polyfills
This should reduce the runtime size & load times somewhat by removing polyfills for older browsers which are not used much
2022-08-09 15:17:38 +00:00
timvisee
625fdf5bca
Merge branch 'AaronDewes-update-deps' into master
See https://github.com/timvisee/send/pull/98
2022-08-09 16:20:33 +02:00
AaronDewes
951c613095 Fix stylelint errors 2022-08-09 09:12:32 +00:00
AaronDewes
16e78847a2 Fix style problems 2022-08-09 09:00:43 +00:00
HrBingR
310271c10f Added new environment variables for custom css, custom title, and custom description.
Fully tested using the Dockerfile, example can be found on https://fileshare.thenextweb.co.za
2022-08-08 00:37:17 +02:00
AaronDewes
55344f8a9d Drop mkdirp 2022-07-26 17:23:19 +00:00
AaronDewes
2b22e8cd05 Update more dependencies 2022-07-26 17:21:12 +00:00
AaronDewes
47ff32fc9f Modernize CSS 2022-07-26 16:52:29 +00:00
AaronDewes
b598a1c090 Update svgo 2022-07-26 11:56:20 +00:00
AaronDewes
3ae9e6adeb Update git-rev-sync 2022-07-26 11:18:17 +00:00
AaronDewes
33e7e0f5ba npm audit fix 2022-07-26 11:15:12 +00:00
AaronDewes
ca3b5cf7ca Update more packages 2022-07-26 11:05:53 +00:00
AaronDewes
44a25e4156 Update fluent 2022-07-26 11:03:10 +00:00
timvisee
000854104f
Merge branch 'NamPNQ-master' into master
See https://github.com/timvisee/send/pull/94
2022-07-04 18:40:45 +02:00
Nam PHAM
1a0ddf9a05 Disable check user when fxa is not enabled 2022-07-02 23:48:04 +02:00
dependabot[bot]
0ac1eeed2c
Bump got from 11.8.3 to 11.8.5
Bumps [got](https://github.com/sindresorhus/got) from 11.8.3 to 11.8.5.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.8.3...v11.8.5)

---
updated-dependencies:
- dependency-name: got
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-24 05:02:22 +00:00
dependabot[bot]
2457545502
Bump eventsource from 1.1.0 to 1.1.1
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 20:39:30 +00:00
dependabot[bot]
75637807eb
Bump convict from 6.2.2 to 6.2.3
Bumps [convict](https://github.com/mozilla/node-convict) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/mozilla/node-convict/releases)
- [Changelog](https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mozilla/node-convict/compare/v6.2.2...v6.2.3)

---
updated-dependencies:
- dependency-name: convict
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 02:57:43 +00:00
timvisee
3b0ef1c0d6
Bump version to 3.4.20 2022-05-12 21:57:02 +02:00
timvisee
22c9560855
Update package-lock.json 2022-05-12 21:56:10 +02:00
Tim Visée
dda964ebf9 Merge branch 'feature/branding' into 'master'
Add ability to change the branding

See merge request timvisee/send!23
2022-05-12 19:52:46 +00:00
Marian Hähnlein
560747106b
Add ability to change the branding 2022-05-02 13:38:16 +02:00
timvisee
81741dcc76
Bump version to 3.4.19 2022-04-25 10:33:18 +02:00
timvisee
58a0800384
Add package for extracted ipaddress format from convic 2022-04-25 10:30:48 +02:00
timvisee
7323f584c1
Merge branch 'dependabot/npm_and_yarn/convict-6.2.2' into master
See https://github.com/timvisee/send/pull/83
2022-04-25 10:04:58 +02:00
dependabot[bot]
c616412449
Bump convict from 5.2.1 to 6.2.2
Bumps [convict](https://github.com/mozilla/node-convict) from 5.2.1 to 6.2.2.
- [Release notes](https://github.com/mozilla/node-convict/releases)
- [Changelog](https://github.com/mozilla/node-convict/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mozilla/node-convict/compare/v5.2.1...v6.2.2)

---
updated-dependencies:
- dependency-name: convict
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-20 21:04:28 +00:00
timvisee
b9faece68e
Merge branch 'dependabot/npm_and_yarn/minimist-1.2.6' into master
See https://github.com/timvisee/send/pull/80
2022-04-07 14:10:40 +02:00
dependabot[bot]
097bdf8853
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 11:27:32 +00:00
timvisee
e96e09f664
Update dependencies 2022-04-07 13:22:46 +02:00
timvisee
0ebea72b3e
Bump version to 3.4.18 2022-03-28 22:03:52 +02:00
timvisee
9cac202892
Update dependencies 2022-03-28 21:45:05 +02:00
Tim Visée
b41c8087f9 Merge branch 'improve-dockerfile' into 'master'
Docker: Set app user gid/uid to 1000

See merge request timvisee/send!22
2022-03-28 19:41:20 +00:00
Lounès Ksouri
9fcc8e36b0 set app user gid/uid to 1000 2022-03-26 15:08:24 +00:00
timvisee
905ca545c7
Update dependencies 2022-03-21 16:13:07 +01:00
timvisee
742b5de7e1
Update dependencies 2022-03-07 14:39:38 +01:00
timvisee
5d7162c4a3
Bump version to 3.4.17 2022-03-04 16:54:02 +01:00
Tim Visée
4c5d8e3bd3 Merge branch 'fix-utf8' into 'master'
Change archive bit flags to specify use of UTF-8 filenames

See merge request timvisee/send!21
2022-03-04 15:52:16 +00:00
timvisee
709997ba72
Fix garbled filenames on Windows with ZIP files due to missing UTF-8 flag
See https://gitlab.com/timvisee/send/-/issues/10
2022-03-04 16:48:58 +01:00
timvisee
b880516edf
Change archive bit flags to specify use of UTF-8 filenames
Related to https://gitlab.com/timvisee/send/-/issues/10#note_549739569

Suggested in https://github.com/mozilla/send/issues/1432#issue-545383226
2022-03-04 16:46:12 +01:00
timvisee
fa716a7da6
Merge branch 'dependabot/npm_and_yarn/url-parse-1.5.10' into master
See https://github.com/timvisee/send/pull/74
2022-02-28 12:08:53 +01:00
dependabot[bot]
40fc5c35ca
Bump url-parse from 1.5.7 to 1.5.10
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.7 to 1.5.10.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.7...1.5.10)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-28 04:39:37 +00:00
timvisee
8d72c81150
Merge branch 'dependabot/npm_and_yarn/url-parse-1.5.7' into master
See https://github.com/timvisee/send/pull/73
2022-02-20 20:29:42 +01:00
dependabot[bot]
383b84ef1f
Bump url-parse from 1.5.3 to 1.5.7
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.7.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.7)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-19 06:33:26 +00:00
timvisee
7cba51b729
Tweak FAQ to remove old FXA notice 2022-02-18 16:53:55 +01:00
timvisee
7d024a9998
Merge branch 'dependabot/npm_and_yarn/tar-4.4.19' into master
See https://github.com/timvisee/send/pull/70
2022-02-14 13:40:58 +01:00
timvisee
eabff183ec
Merge branch 'master' into dependabot/npm_and_yarn/tar-4.4.19
See https://github.com/timvisee/send/pull/70
2022-02-14 13:40:49 +01:00
timvisee
d04829cbf2
Merge branch 'dependabot/npm_and_yarn/follow-redirects-1.14.8' into master
See https://github.com/timvisee/send/pull/69
2022-02-14 12:35:42 +01:00
dependabot[bot]
af52b96ab4
Bump follow-redirects from 1.14.7 to 1.14.8
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 11:30:46 +00:00
dependabot[bot]
ec26a8e38f
Bump tar from 4.4.13 to 4.4.19
Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.13...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-14 11:30:35 +00:00
timvisee
41f5615acc
Merge branch 'dependabot/npm_and_yarn/ajv-6.12.6' into master
See https://github.com/timvisee/send/pull/68
2022-02-14 12:27:30 +01:00
dependabot[bot]
756d1b1d14
Bump ajv from 6.12.2 to 6.12.6
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.2 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.2...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 20:05:07 +00:00
timvisee
a37a0c8678
Update dependencies 2022-01-24 17:20:29 +01:00
timvisee
8c50da564f
Update configstore 2022-01-24 17:16:14 +01:00
timvisee
214f723232
Merge branch 'dependabot/npm_and_yarn/nanoid-3.2.0' into master
See https://github.com/timvisee/send/pull/64
2022-01-24 17:14:41 +01:00
dependabot[bot]
f2a6af409e
Bump nanoid from 3.1.16 to 3.2.0
Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.16 to 3.2.0.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.1.16...3.2.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-22 01:16:00 +00:00
timvisee
b346e3e3ae
Bump version to 3.4.16 2022-01-17 13:09:45 +01:00
timvisee
aea428372d
Update dependencies 2022-01-17 13:09:19 +01:00
timvisee
ea8efb9d93
Merge branch 'dependabot/npm_and_yarn/follow-redirects-1.14.7' into master
See https://github.com/timvisee/send/pull/63
2022-01-17 13:05:15 +01:00
dependabot[bot]
2b7164f589
Bump follow-redirects from 1.14.5 to 1.14.7
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.5 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.5...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 22:50:28 +00:00
timvisee
08399059e9
Bump version to 3.4.15 2021-12-19 23:07:24 +01:00
timvisee
aea40fa11b
Update dependencies 2021-12-19 23:04:26 +01:00
timvisee
e51c753c0d
Merge branch 'goxlur-patch-1' into master
See https://github.com/timvisee/send/pull/60
2021-12-19 23:00:14 +01:00
goxlur
6520d71faa
Fix page scroll overflow 2021-12-19 00:36:47 +01:00
Tim Visée
97b0b10863 Merge branch 'node-16' into 'master'
Bump node to latest LTS v16.13

See merge request timvisee/send!20
2021-12-01 18:00:21 +00:00
timvisee
50e76e0895
Do not use --openssl-legacy-provider 2021-12-01 18:23:25 +01:00
timvisee
610e036e26
Bump node to latest LTS v16.13 2021-12-01 18:20:43 +01:00
timvisee
e695a8b481
Update browserlist 2021-12-01 18:14:01 +01:00
timvisee
d33ddf643b
Update dependencies 2021-12-01 18:13:10 +01:00
timvisee
512bd32368
Use 64x64 PNG icon in README 2021-11-24 14:42:29 +01:00
timvisee
3c42de0efd
Fix Docker artifact build on CI 2021-11-01 12:44:49 +01:00
timvisee
b7582230cf
Update dependencies 2021-10-24 15:10:28 +02:00
timvisee
592ff3fb4a
Bump version to 3.4.14 2021-10-06 18:11:54 +02:00
timvisee
927203cb96
Add double-ended-queue dependency
See https://gitlab.com/timvisee/send/-/issues/23
2021-10-06 18:10:46 +02:00
timvisee
48237807fa
Update dependencies 2021-10-06 18:08:47 +02:00
timvisee
38a4552d52
List Thunderbird FileLink provider extension as client in README
Fixes https://github.com/timvisee/send/issues/15
2021-08-30 15:28:29 +02:00
timvisee
9d2d81e063
Merge branch 'dependabot/npm_and_yarn/url-parse-1.5.3' into master
See https://github.com/timvisee/send/pull/53
2021-08-13 14:42:36 +02:00
dependabot[bot]
81d6c90c4e
Bump url-parse from 1.5.1 to 1.5.3
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 11:05:08 +00:00
timvisee
2bdaa0c4bd
Merge branch 'dependabot/npm_and_yarn/path-parse-1.0.7' into master
See https://github.com/timvisee/send/pull/52
2021-08-13 13:02:29 +02:00
dependabot[bot]
00d3bebc27
Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 22:09:37 +00:00
timvisee
ea384ff5d3
Update dependencies 2021-08-08 20:36:26 +02:00
timvisee
062c439ec0
Bump version to 3.4.13 2021-07-08 23:13:15 +02:00
Tim Visée
54e528980b Merge branch 'master' into 'master'
fix: remove iOS saveFile workaround #20

See merge request timvisee/send!19
2021-07-08 21:12:06 +00:00
Paul Zeinlinger
b9292abefe
fix: remove iOS saveFile workaround #20 2021-07-08 23:05:39 +02:00
timvisee
1520942ac9
Fix UI error after upload when share link is too long
The QR-code generation logic had a character limit. This broke the
upload page when the share URL is too long. This has now been fixed to
support an arbitrary number of characters.

Fixes https://gitlab.com/timvisee/send/-/issues/19
2021-07-08 21:21:35 +02:00
timvisee
0e17cd567c
Update qrcode snippet 2021-07-08 21:20:27 +02:00
timvisee
7b21b199c2
Update dependencies 2021-07-08 21:12:17 +02:00
timvisee
6214b07a30
Merge branch 'dependabot/npm_and_yarn/redis-3.1.1' into master
See https://github.com/timvisee/send/pull/20
2021-06-28 17:28:31 +02:00
dependabot[bot]
941d87976b
Bump redis from 2.8.0 to 3.1.1
Bumps [redis](https://github.com/NodeRedis/node-redis) from 2.8.0 to 3.1.1.
- [Release notes](https://github.com/NodeRedis/node-redis/releases)
- [Changelog](https://github.com/NodeRedis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NodeRedis/node-redis/compare/v.2.8.0...v3.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 15:28:06 +00:00
timvisee
8db3fed6fb
Merge branch 'dependabot/npm_and_yarn/color-string-1.5.5' into master 2021-06-28 17:24:05 +02:00
dependabot[bot]
78ca1f06e0
Bump color-string from 1.5.3 to 1.5.5
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 15:22:18 +00:00
timvisee
9fdc079878
Remove annoying husky post merge and checkout hooks 2021-06-28 17:19:30 +02:00
timvisee
f08d078236
Update dependencies 2021-06-23 21:02:46 +02:00
timvisee
46ae4a220b
Merge branch 'dependabot/npm_and_yarn/trim-newlines-3.0.1' into master
See https://github.com/timvisee/send/pull/43
2021-06-09 13:28:26 +02:00
dependabot[bot]
d0932c26ea
Bump trim-newlines from 3.0.0 to 3.0.1
Bumps [trim-newlines](https://github.com/sindresorhus/trim-newlines) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sindresorhus/trim-newlines/releases)
- [Commits](https://github.com/sindresorhus/trim-newlines/commits)

---
updated-dependencies:
- dependency-name: trim-newlines
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 11:26:31 +00:00
timvisee
798c399a38
Update dependencies 2021-06-09 12:48:02 +02:00
timvisee
825e3942a2
Bump version to v3.4.12 2021-06-04 14:08:25 +02:00
timvisee
755459f57e
Update dependencies 2021-06-04 14:07:19 +02:00
Tim Visée
42f5ca9701 Merge branch 'default-download-count' into 'master'
Add DEFAULT_DOWNLOADS variable to set default download count

See merge request timvisee/send!18
2021-06-04 12:06:05 +00:00
timvisee
1a923d21b5
Add DEFAULT_DOWNLOADS variable to set default download count
Fixes https://github.com/timvisee/send/issues/39
2021-06-04 14:03:58 +02:00
timvisee
3bd9f00c25
Merge branch 'dependabot/npm_and_yarn/ws-6.2.2'
See https://github.com/timvisee/send/pull/42
2021-06-04 13:50:02 +02:00
dependabot[bot]
fa1c64369f
Bump ws from 6.2.1 to 6.2.2
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-04 11:47:46 +00:00
timvisee
9280f47afc
Update dependencies 2021-06-04 13:46:24 +02:00
timvisee
3707b90d09
Update dependencies 2021-05-30 12:41:42 +02:00
timvisee
21392f1157
Merge branch 'dependabot/npm_and_yarn/dns-packet-1.3.4' into master
See https://github.com/timvisee/send/pull/37
2021-05-30 12:40:45 +02:00
dependabot[bot]
680d3ed948
Bump dns-packet from 1.3.1 to 1.3.4
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-29 01:54:35 +00:00
timvisee
dee1e84e58
Mention Docker page in deployment section 2021-05-19 16:49:13 +02:00
timvisee
214191e743
Replace links from mozilla/send to timvisee/send 2021-05-19 16:09:01 +02:00
timvisee
84da34169d
Create static robots.txt file, remove dynamic route
Fixes https://gitlab.com/timvisee/send/-/issues/17
2021-05-19 16:00:58 +02:00
Tim Visée
93e1d2f41a Merge branch 'deploy' into 'master'
Fix chmod command

See merge request timvisee/send!17
2021-05-19 12:34:35 +00:00
David Dumas
43e1845d28 Fix chmod command 2021-05-19 12:34:35 +00:00
timvisee
c01d6b73ea
Bump version to 3.4.11 2021-05-19 12:04:52 +02:00
timvisee
a394fd995e
Update dependencies 2021-05-19 12:04:21 +02:00
timvisee
175712cfbd
Add REDIS_USER and REDIS_DB configuration variables
See https://github.com/timvisee/send/issues/23#issuecomment-843925819
2021-05-19 12:01:01 +02:00
timvisee
e5d7378fd9
Merge branch 'pirate-patch-3' into master
See https://github.com/timvisee/send/pull/36
2021-05-19 11:50:54 +02:00
timvisee
20cf722b54
Correctly parse config string values from int array 2021-05-19 11:48:20 +02:00
timvisee
1d6872e279
Merge branch 'master' into pirate-patch-3 2021-05-19 11:31:14 +02:00
Tim Visée
a1ca355771 Merge branch 'deploy' into 'master'
Documentation : full deployment example in AWS with Ubuntu 20.04

See merge request timvisee/send!16
2021-05-19 09:17:13 +00:00
David Dumas
dc816d0e59 Documentation: full deployment example in AWS with Ubuntu 20.04 2021-05-19 09:17:13 +00:00
Nick Sweeting
d6ac469e1a
remove signup-cta and tweak console log wording to remove anon user references 2021-05-19 05:13:47 -04:00
timvisee
62cfecd618
Merge branch 'pirate-patch-2' into master
See https://github.com/timvisee/send/pull/35
2021-05-19 10:18:44 +02:00
timvisee
9152d22913
Merge branch 'patch-2' of https://github.com/pirate/send into pirate-patch-2 2021-05-19 10:18:26 +02:00
timvisee
21b198fbd5
Merge branch 'pirate-patch-1' into master
See https://github.com/timvisee/send/pull/34
2021-05-19 10:13:25 +02:00
Nick Sweeting
0ffc960523
add comments 2021-05-19 01:52:37 -04:00
Nick Sweeting
77ea05a233
also handle arrays of strings 2021-05-19 01:46:12 -04:00
Nick Sweeting
a6162f7142
fix indentation 2021-05-19 01:41:22 -04:00
Nick Sweeting
4a6a3dfc36
coerce DOWNLOAD_COUNTS and EXPIRE_TIMES_SECONDS into positive integer arrays 2021-05-19 01:39:14 -04:00
Nick Sweeting
1e7efe3d98
fix signup-ctas blocking render 2021-05-19 00:43:08 -04:00
Nick Sweeting
46381fd516
Fix glitchy UI dropdown select for max downloads and expiration 2021-05-19 00:35:53 -04:00
Nick Sweeting
1fe74f2be0
deny search engines to limit discoverability of public instances 2021-05-18 22:49:16 -04:00
Nick Sweeting
35da83bf2a
improve README configuration list, example usage, and quickstart 2021-05-18 22:13:57 -04:00
timvisee
bcfb9c5d09
Update dependencies 2021-05-17 11:48:48 +02:00
timvisee
4df2578bb1
Merge branch 'dependabot/npm_and_yarn/hosted-git-info-2.8.9' into master 2021-05-16 15:58:54 +02:00
dependabot[bot]
e4f2955eae
Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 22:45:30 +00:00
timvisee
72377d3438
Bump version to 3.4.10 2021-05-07 13:09:37 +02:00
timvisee
512c9803bd
Enable base URL detection by default with npm start, remove FXA_CLIENT_ID 2021-05-07 13:07:26 +02:00
timvisee
4c45d6217d
Properly derive base URL as configured in file upload logic
Fixes https://github.com/timvisee/send/issues/29
2021-05-07 13:07:17 +02:00
timvisee
b4b8060a78
Update dependencies 2021-05-07 12:40:16 +02:00
timvisee
ed042b8515
Merge branch 'ckwalsh-detect_base_url' into master 2021-05-07 12:38:24 +02:00
timvisee
06bc58c93c
Merge branch 'detect_base_url' of https://github.com/ckwalsh/send into ckwalsh-detect_base_url 2021-05-07 12:30:06 +02:00
timvisee
b58caed44f
Merge branch 'dependabot/npm_and_yarn/url-parse-1.5.1' into master 2021-05-06 18:45:36 +02:00
timvisee
174ade1c2e
Merge branch 'master' into dependabot/npm_and_yarn/url-parse-1.5.1 2021-05-06 18:44:28 +02:00
timvisee
31ce8c048b
Merge branch 'dependabot/npm_and_yarn/lodash-4.17.21' into master 2021-05-06 18:38:29 +02:00
dependabot[bot]
ce401881d7
Bump url-parse from 1.4.7 to 1.5.1
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.1.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 16:35:49 +00:00
dependabot[bot]
c49e8e1062
Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 16:35:08 +00:00
timvisee
15648157c9
Update dependencies 2021-05-06 18:31:34 +02:00
timvisee
4280edd5af
Merge branch 'tjeerdhans-patch-1' into master
See https://github.com/timvisee/send/pull/26
2021-05-06 18:25:58 +02:00
Tjeerd Hans
a3d4e2c502
Some dutch grammar fixes 2021-05-06 17:24:31 +02:00
timvisee
bed5443685
Merge branch 'abhijitnathwani-patch-1' into master
See https://github.com/timvisee/send/pull/25
2021-05-06 11:31:27 +02:00
timvisee
f9f5d77cd0
Merge branch 'abhijitnathwani-patch-1' into master
See https://github.com/timvisee/send/pull/25
2021-05-06 11:30:59 +02:00
Abhijit Nathwani
0f8a6a107a
Update git url in deployment.md 2021-05-06 12:21:55 +05:30
Cullen Walsh
02e8cb264f Add detect_base_url config
This diff adds the detect_base_url config, controlled by the
DETECT_BASE_URL env variable. When set to true, the BASE_URL setting is
ignored, and the base_url is derived from the request protocol and host
header.

Test Plan: Started up a local instance in my homelab, running docker
node:15 image with a nginx reverse proxy. Configured nginx to use the
same backend with multiple hostnames on https. Opened in browser and
confirmed og:url meta tag uses correct url.
2021-05-05 22:19:11 -07:00
timvisee
385ac595b9
Fix linguist documentation marker for locale files
Thanks https://news.ycombinator.com/item?id=27055526
2021-05-05 22:46:55 +02:00
timvisee
6df0876286
Merge branch 'whalehub-patch-1' into master 2021-05-03 00:16:41 +02:00
Aaron
827a35f73e
main.css: Use ::marker to avoid browser console warning
Signed-off-by: Aaron <admin@datahoarder.dev>
2021-05-03 00:13:24 +02:00
timvisee
eb3a9e8c89
Bump version to 3.4.9 2021-04-21 21:52:18 +02:00
timvisee
6c3ac403f6
Update dependencies 2021-04-21 21:51:12 +02:00
timvisee
1ce2a60dd5
Merge branch 'whalehub-patch-1' into master
https://github.com/timvisee/send/pull/19
2021-04-21 21:49:21 +02:00
Aaron
f5bb74e921
index.js: Add "data:" as an allowed image source in CSP
Signed-off-by: Aaron <admin@datahoarder.dev>
2021-04-21 21:40:15 +02:00
timvisee
352fba6302
Update dependencies 2021-04-20 20:37:16 +02:00
timvisee
ace2aa5d73
Merge branch 'dependabot/npm_and_yarn/ssri-6.0.2' into master
See https://github.com/timvisee/send/pull/18
2021-04-20 20:36:17 +02:00
timvisee
3256b01276
Merge branch 'master' into dependabot/npm_and_yarn/ssri-6.0.2
See https://github.com/timvisee/send/pull/18
2021-04-20 20:35:35 +02:00
timvisee
96244132c6
Bump version to 3.4.8 2021-04-20 18:52:45 +02:00
timvisee
a9cdd13543
Update dependencies 2021-04-20 18:50:12 +02:00
timvisee
1b6c5b8f97
Only set Redis client password if password is specified
This attempts to fix a Redis connection issue when the Redis password
is an empty string.

See https://github.com/timvisee/send-docker-compose/issues/3#issuecomment-822885578
2021-04-20 18:37:19 +02:00
Tim Visée
27e6606516 Merge branch 'simao-silva-master-patch-09841' into 'master'
Update Alpine images to current tag

See merge request timvisee/send!15
2021-04-19 19:37:59 +00:00
Simão Silva
4902d304b6 Update Alpine images to current tag 2021-04-19 19:32:48 +00:00
timvisee
a182ff2dd1
Bump version to 3.4.7 2021-04-18 11:38:05 +02:00
timvisee
0361e3ce1c
Update dependencies 2021-04-18 11:35:16 +02:00
dependabot[bot]
32539e58ac
Bump ssri from 6.0.1 to 6.0.2
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-18 09:33:53 +00:00
Tim Visée
eeb1359d90 Merge branch 'moreopts' into 'master'
add env for redis pwd and port

See merge request timvisee/send!14
2021-04-18 09:32:39 +00:00
piaoger gong
e2dde364eb add env for redis pwd and port 2021-04-18 11:08:35 +08:00
timvisee
0c1ce9f598
Bump version to 3.4.6 2021-04-12 15:21:08 +02:00
timvisee
15d37da667
Remove obsolete anonymous limits
Related to https://gitlab.com/timvisee/send/-/issues/3
2021-04-12 15:19:02 +02:00
timvisee
9e4c063749
Update dependencies 2021-04-12 11:33:22 +02:00
timvisee
398d044ca2
Update dependencies 2021-04-09 12:52:30 +02:00
Tim Visée
d576003dd1 Merge branch 'thomassth-master-patch-74555' into 'master'
remove mozilla affiliation

See merge request timvisee/send!13
2021-04-02 09:20:08 +00:00
Thomas
fc0e8708b9 Merge branch 'thomassth-master-patch-60115' into 'thomassth-master-patch-74555'
Update localization.md

See merge request thomassth/send!1
2021-04-02 07:03:19 +00:00
Thomas
d05eb3e882 Update localization.md 2021-04-02 06:58:32 +00:00
Thomas
db2a55115a Update README.md 2021-04-02 06:55:18 +00:00
timvisee
c6316f2dad
Merge branch 'dependabot/npm_and_yarn/y18n-4.0.1' into 'master'
Fixes https://github.com/timvisee/send/pull/13
2021-04-01 13:17:40 +02:00
dependabot[bot]
3d6611455a
Bump y18n from 4.0.0 to 4.0.1
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-01 13:17:25 +02:00
timvisee
5b37d2fc87
Update dependencies 2021-04-01 13:10:37 +02:00
timvisee
2fa214ea6f
Add link to public instances list 2021-03-26 12:23:27 +01:00
timvisee
6dafdcdebd
Bump version to 3.4.5 2021-03-15 21:17:44 +01:00
timvisee
dc03b42b96
Update dependencies 2021-03-15 21:16:57 +01:00
Tim Visée
3e07f648b3 Merge branch 'remove-fxa-dialog-on-big-file' into 'master'
Remove FxA dialog on file too big error

See merge request timvisee/send!12
2021-03-15 20:15:27 +00:00
Romain Hv
f58597cece Remove FxA dialog on file too big error 2021-03-15 20:58:47 +01:00
Tim Visée
d3f9b82672 Merge branch 'remove-metrics' into 'master'
Remove metrics

Closes #4

See merge request timvisee/send!11
2021-03-15 19:49:26 +00:00
Romain Hv
a0bc20aeb6 Remove metrics #4 2021-03-15 19:56:51 +01:00
timvisee
d03e83dd66
Merge branch 'dependabot/npm_and_yarn/elliptic-6.5.4'
Fixes https://github.com/timvisee/send/pull/8
2021-03-11 16:22:08 +01:00
dependabot[bot]
94e80ccee9
Bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-11 16:21:38 +01:00
Tim Visée
f8358c4dac Merge branch 'help-review' into 'master'
Improvement of the reverse proxy guidelines, the given configuration example...

See merge request timvisee/send!10
2021-03-07 13:27:11 +00:00
Florian HEGRON
ec3cff63a2 Improvement of the reverse proxy guidelines, the given configuration example requires to have the apache rewrite mod enabled. 2021-03-07 14:24:47 +01:00
Tim Visée
8f192482b5 Merge branch 'help-review' into 'master'
Delete dead links about testing environments in the README.md

See merge request timvisee/send!9
2021-03-07 09:07:17 +00:00
Florian HEGRON
808a04b669 Delete dead links about testing environments in the README.md 2021-03-07 09:03:20 +00:00
timvisee
71a925a674
Bump version to 3.4.4 2021-02-16 15:18:03 +01:00
timvisee
64d9cd694d
Update dependencies 2021-02-16 15:15:28 +01:00
timvisee
94b78b425f
Use node 15 Docker image on GitLab CI 2021-02-16 15:12:23 +01:00
timvisee
42e94139a2
Merge branch 'atomheartother:master' into 'master'
See https://github.com/timvisee/send/pull/6
2021-02-16 15:10:22 +01:00
E. Navennec
6bd6280fb5
Use up to date alpine images and not slim images 2021-02-16 14:56:39 +01:00
timvisee
1f2c524b40
Include redis-mock in main build to allow usage without Redis 2021-02-16 14:56:00 +01:00
timvisee
854810c242
Use short commit hashes in Docker image tags 2021-02-16 14:24:58 +01:00
timvisee
45024d3dc6
Rework GitLab CI configuration, always build Docker image artifact
This artifact will be used as master-branch and release image, without
building the image again
2021-02-16 14:12:49 +01:00
timvisee
0806b8fd9d
Bump version to 3.4.3 2021-02-05 02:31:15 +01:00
timvisee
2dbc740998
Update dependencies 2021-02-05 02:29:19 +01:00
timvisee
5b9c8301c7
Fix incorrect environment variable for config property 2021-02-05 02:24:48 +01:00
timvisee
42506dda9d
Bump version to 3.4.2 2021-01-27 13:38:58 +01:00
timvisee
8e868a642c
Fix footer, properly layout no affiliation notice on small screens 2021-01-27 13:34:26 +01:00
timvisee
638f68334a
Bump version to 3.4.1 2021-01-27 00:35:26 +01:00
timvisee
d2907c6d8b
Add missing global variable to linter configuration to fix lint test 2021-01-27 00:30:44 +01:00
timvisee
4b05a2f705
Update dependencies 2021-01-27 00:25:04 +01:00
timvisee
6960cc75fa
Add configurable donate, CLI and DMCA and source links in footer 2021-01-27 00:21:03 +01:00
timvisee
7f3da34318
Update Docker configuration 2021-01-26 20:22:04 +01:00
timvisee
4369baa258
Add S3 lifecycle policy example configuration 2021-01-26 20:14:09 +01:00
timvisee
6f1942a446
Add clients section in README 2021-01-24 21:38:05 +01:00
timvisee
b6d2e7c1ca
Update dependencies 2021-01-18 16:04:11 +01:00
timvisee
58dd5b7a70
Merge branch 'dependabot/npm_and_yarn/ini-1.3.8' 2021-01-10 23:01:20 +01:00
timvisee
4f3a2e4fc1
Merge branch 'dependabot/npm_and_yarn/ini-1.3.8' 2021-01-10 23:00:03 +01:00
timvisee
a798b14620
Merge branch 'master' into dependabot/npm_and_yarn/ini-1.3.8 2021-01-10 22:59:42 +01:00
timvisee
d3d5b63ec2
Bump version to 3.4.0 2021-01-09 19:20:44 +01:00
dependabot[bot]
2bc1a13ae6
Bump ini from 1.3.5 to 1.3.8
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-09 18:20:00 +00:00
Tim Visée
f515375c2b Merge branch '8-remove-mozilla-branding-add-no-affiliation-notice-per-request-from-mozilla' into 'master'
Resolve "Remove Mozilla branding, add no affiliation notice, per request from Mozilla"

Closes #8

See merge request timvisee/send!8
2021-01-09 18:18:34 +00:00
timvisee
3165086869
Remove legal page, add no affiliation text in footer 2021-01-09 19:14:42 +01:00
timvisee
6c3a2e53af
Replace public Mozilla related icons 2021-01-09 18:51:42 +01:00
timvisee
d801777fb5
Remove intro background image 2021-01-09 17:28:21 +01:00
timvisee
701c5eced2
Update dependencies 2021-01-09 17:15:26 +01:00
timvisee
c3189941c5
Update dependencies 2020-12-08 00:39:01 +01:00
timvisee
ad0df65186
Update dependencies 2020-11-25 01:32:46 +01:00
timvisee
2cedc6e014
Bump version to 3.3.2 2020-11-16 18:07:49 +01:00
timvisee
590b56dd92
Update dependencies 2020-11-16 18:07:08 +01:00
Tim Visée
62809fb57d Merge branch 'iomintz-master-patch-75995' into 'master'
CSP: remove a bunch of unused mozilla-only domains and FXA domains

See merge request timvisee/send!7
2020-11-13 23:26:51 +00:00
io mintz
44c03e355f CSP: remove a bunch of unused mozilla-only domains and FXA domains 2020-11-13 22:24:38 +00:00
timvisee
d305e7fd57
Update dependencies 2020-11-11 13:13:57 +01:00
timvisee
33064484c4
Update dependencies 2020-10-29 13:59:06 +01:00
timvisee
283df64542
Update dependencies 2020-10-26 12:38:54 +01:00
timvisee
e8c49962da
Update CONTRIBUTORS 2020-10-21 18:26:12 +02:00
timvisee
2ec69ec927
Update CODEOWNERS, use fork repository owner 2020-10-21 18:22:07 +02:00
timvisee
7eb2ea02c1
Remove unused VS Code settings 2020-10-21 18:21:29 +02:00
timvisee
e4950f6c68
Bump version to 3.3.1 2020-10-21 18:10:51 +02:00
timvisee
9f2d248e8f
Update dependencies 2020-10-21 18:04:10 +02:00
timvisee
5d1ede5f63
Fix password field not being inline with password checkbox 2020-10-21 17:51:19 +02:00
timvisee
47666c153a
Update dependencies to mitigate some vulnerabilities reported by npm 2020-10-21 17:23:04 +02:00
timvisee
cadf039c55
Fix release tag badge link in README 2020-10-20 20:56:23 +02:00
timvisee
dbe374bdc6
Bump version to 3.3.0 2020-10-18 15:57:36 +02:00
timvisee
48ab1cdd4e
Add latest release version badge to README 2020-10-18 15:55:37 +02:00
timvisee
54150702da
Update dependencies 2020-10-18 15:51:58 +02:00
Tim Visée
981f86946b Merge branch 'password-preview' into 'master'
Add password preview

See merge request timvisee/send!6
2020-10-18 13:50:17 +00:00
George Raptis
b5865f00e9
toggle preview image src instead of havingtwo images
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:32 +02:00
George Raptis
7797f485f2
make color dimmer
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:22 +02:00
George Raptis
db169cb9f0
Add password preview
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:42:14 +02:00
Tim Visée
f999c4c44f Merge branch 'favicon-progress' into 'master'
Show upload progress in favicon

See merge request timvisee/send!5
2020-10-18 13:38:37 +00:00
Ashesh Vidyut
e9b50b7682
query selector fix + revert favicon in case of cancel and complete
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:21 +02:00
Ashesh Vidyut
a3e8646ea7
constants at the top
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:18 +02:00
Ashesh Vidyut
a6a3cae5e9
pr comment changes and progress line starts from top instead of right
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:15 +02:00
Ashesh Vidyut
8d80ba1f69
fix var name
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:13 +02:00
Ashesh Vidyut
e5f76a7b1f
converted division to multiplication and calculating radius inside func
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:10 +02:00
Ashesh Vidyut
acf82a4e3e
varaible name changed to more meaningful
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:07 +02:00
Ashesh Vidyut
0acdf3a720
changed 100/100 to 1
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:04 +02:00
Ashesh Vidyut
305dd2f5ef
color changed to #0090ed
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:02 +02:00
Ashesh Vidyut
e53571e219
removed unwanted comment
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:31:00 +02:00
Ashesh Vidyut
0eda8d2082
removed unsed code
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:57 +02:00
Ashesh Vidyut
1cd4adfc2a
made variable name more relevant
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:54 +02:00
Ashesh Vidyut
0460bd2e97
favicon progress bar
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:30:43 +02:00
okyanusoz
60146541f2
Fixed a typo in encryption documentation
Co-authored-by: timvisee <tim@visee.me>
2020-10-18 15:20:34 +02:00
timvisee
79d314146b
Improve README fork header 2020-10-16 18:54:19 +02:00
timvisee
72d12c3d80
Add fork description and goals to top of README 2020-10-16 18:49:33 +02:00
timvisee
1469464c43
Bump version to 3.2.1 2020-10-16 18:18:19 +02:00
Danny Coates
7cdef4bbfc
added qr code to copyDialog
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 18:16:14 +02:00
timvisee
24aa1f2e17
Add badges to README 2020-10-16 16:42:40 +02:00
timvisee
7a4a4fc849
Bump version to 3.2.0 2020-10-16 16:37:39 +02:00
timvisee
97be1737cb
Remove siteFeedback key as removed in Mozilla's commits 2020-10-16 16:36:00 +02:00
Tim Visée
ba33e022b0 Merge branch 'apply-mozilla-patches' into 'master'
Apply Mozilla patches

See merge request timvisee/send!3
2020-10-16 14:17:59 +00:00
timvisee
0d6b3731ef
Update dependencies 2020-10-16 16:14:01 +02:00
timvisee
0be4a65904
Merge branch 'master' into apply-mozilla-patches 2020-10-16 16:11:57 +02:00
Tim Visée
54c182ab0d Merge branch '2-fix-puppeteer-timeouts-on-ci' into 'master'
Resolve "Fix puppeteer timeouts on CI"

Closes #2

See merge request timvisee/send!4
2020-10-16 14:10:56 +00:00
timvisee
b2e9907551
Increase default puppeteer timeout to 60 seconds
Fixes https://gitlab.com/timvisee/send/-/issues/2
2020-10-16 16:05:51 +02:00
Victor Ibragimov
3b4a4d82e8
Pontoon: Update Russian (ru) localization of Firefox Send
Co-authored-by: Victor Ibragimov <victor.ibragimov@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:53:02 +02:00
వీవెన్
5747f55876
Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:59 +02:00
robbp
636a239e86
Pontoon: Update Romanian (ro) localization of Firefox Send
Co-authored-by: robbp <robbpaun@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:56 +02:00
Jim Spentzos
f9a1583078
Pontoon: Update Greek (el) localization of Firefox Send
Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:52 +02:00
Mark Heijl
0dfbe3566a
Pontoon: Update Dutch (nl) localization of Firefox Send
Co-authored-by: Mark Heijl <markh@babelzilla.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:48 +02:00
వీవెన్
98b84ba05f
Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:45 +02:00
Abdulrasheed Idris
4ad4a65924
Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrasheed Idris <Abdulrash6211@gmail.com>
Co-authored-by: biobell2000 <biobell2000@gmail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:41 +02:00
Adaobi
6e07ecf643
Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Adaobi <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:37 +02:00
Danny Coates
a39cfaf3d3
remove signin modal from privacy page. fixes #1508
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:34 +02:00
Kim YoungCheon
97e3d78ba8
Pontoon: Update Korean (ko) localization of Firefox Send
Co-authored-by: Kim YoungCheon <circcc@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:31 +02:00
Danny Coates
28c48f51d1
set downloadMetadata.status to 404 on unfound downloads. fixes #1501
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:28 +02:00
Danny Coates
239fba452a
fixed dark-theme password input style. fixes #1504
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:25 +02:00
Danny Coates
3631bc8f39
restrict "share" to mobile, fixes #1505
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:22 +02:00
Danny Coates
189f4cfb9b
fix main section height. fixes #1499
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:18 +02:00
Abelardo Ayala Rodríguez
deb2d41de8
Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:14 +02:00
Danny Coates
ab53f9cf3e
give 404 and error pages the loggedin/ok treatment
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:12 +02:00
Danny Coates
facb61a9b5
updated @google-cloud/storage
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:09 +02:00
Danny Coates
d8ac413064
handle unknown errors in getMetadata
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:06 +02:00
Danny Coates
e0f51c7fde
exlude puppeteer from docker build
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:52:02 +02:00
Danny Coates
c44c4ba41c
support edge 18 maybe
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:59 +02:00
Danny Coates
4e9625ef36
added downloadConfirm string to noStream page
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:56 +02:00
Danny Coates
4413fc75a3
show "OK" button on complete page when logged in instead of "Try Firefox Send"
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:52 +02:00
Danny Coates
d13fda1419
🤷
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:48 +02:00
Gery Escalier
7f7ba0e33f
Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Co-authored-by: Gery Escalier <geryescalier@yahoo.com>
Co-authored-by: jlG <jlg.l10n.es@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:45 +02:00
timvisee
86c5553f58
Update package-lock.json 2020-10-16 15:51:43 +02:00
jlG
7e173ec23d
Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Co-authored-by: Paulina Rodriguez <pauli.rodriguez.c@gmail.com>
Co-authored-by: Gery Escalier <geryescalier@yahoo.com>
Co-authored-by: jlG <jlg.l10n.es@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:39 +02:00
వీవెన్
3ae6f9bd5a
Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:33 +02:00
Danny Coates
b5ef1785ab
replaced fxa-geodb with load balancer header
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:28 +02:00
Abelardo Ayala Rodríguez
4b1b7cb821
Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:51:07 +02:00
ZiriSut
b0b75f5daa
Pontoon: Update Kabyle (kab) localization of Firefox Send
Co-authored-by: ZiriSut <rgebbid@gmail.com>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:56 +02:00
Enol
e2562aec17
Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Enol <enolp@softastur.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:46 +02:00
Danny Coates
f64e772145
added hmac auth to report route
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:50:36 +02:00
Enol
bc0ccc8e5d
Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Enol <enolp@softastur.org>
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:48:02 +02:00
Danny Coates
e909a3bae8
refactored storage, style tweaks
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:47:56 +02:00
Danny Coates
abc58518ea
minor style tweaks and refresh token fixes
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:47:46 +02:00
Danny Coates
4f273eca03
added oauth refresh token support
Co-authored-by: timvisee <tim@visee.me>
2020-10-16 15:46:24 +02:00
timvisee
b15c017dcd
Bump version to 3.1.1 2020-10-15 21:02:25 +02:00
timvisee
bfaac8f66d
Update dependencies 2020-10-15 21:00:06 +02:00
timvisee
4ffc65274b
Merge branch 'dependabot/npm_and_yarn/lodash-4.17.20' 2020-10-15 20:57:47 +02:00
timvisee
1d492cd0df
Merge branch 'master' into dependabot/npm_and_yarn/lodash-4.17.20 2020-10-15 20:57:09 +02:00
timvisee
b4594c5280
Merge branch 'dependabot/npm_and_yarn/elliptic-6.5.3' 2020-10-15 20:54:44 +02:00
dependabot[bot]
aa47df79f9
Bump lodash from 4.17.15 to 4.17.20
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.20.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.20)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-15 18:51:55 +00:00
dependabot[bot]
7533ab1930
Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-15 18:49:21 +00:00
timvisee
f10b2d5064
Bump version to 3.1.0 2020-10-15 20:06:52 +02:00
timvisee
7463aeccf5
Update package.json configuration with new fork details 2020-10-15 20:05:07 +02:00
timvisee
2d35cd33c9
Add Docker instructions to use new registry for production images 2020-10-15 20:03:15 +02:00
timvisee
beb194f3e0
Update Docker documentation to use our image registry 2020-10-15 20:00:36 +02:00
timvisee
175040acec
Release Docker image for each version tag 2020-10-15 19:54:03 +02:00
timvisee
9e5da3270c
Do not run before_script in Docker release job on GitLab CI 2020-10-15 19:24:44 +02:00
timvisee
c6cab13e6a
Publish Docker image for each master commit on local registry 2020-10-15 19:16:49 +02:00
timvisee
dd9d6c1660
Do not cache node modules on GitLab CI 2020-10-15 19:01:37 +02:00
Tim Visée
0dd4f8d2cc Merge branch 'remove-mozilla-branding' into 'master'
Remove Mozilla branding

See merge request timvisee/send!2
2020-10-15 17:00:32 +00:00
timvisee
f035132b95
Add based on Mozilla's Firefox Send notice in README 2020-10-15 18:54:57 +02:00
timvisee
561ed3994e
Remove Firefox branding from app name in documentation and other files 2020-10-15 18:52:41 +02:00
timvisee
e77d2b3722
Remove Firefox branding from app name in locale files 2020-10-15 18:49:59 +02:00
timvisee
45d5f41731
Remove Firefox branding from app name in front-end 2020-10-15 18:48:54 +02:00
timvisee
505eb8c585
Remove Firefox branding from wordmark logo 2020-10-15 18:26:07 +02:00
timvisee
ce04f162a4
Remove promo banner 2020-10-15 18:26:07 +02:00
timvisee
47cf99140a
Update footer links, remove Mozilla links, update source URL 2020-10-15 18:26:06 +02:00
timvisee
c6fc1483f6
Remove Mozilla logo from footer 2020-10-15 18:25:52 +02:00
timvisee
2c8ea3ecc8
Enable node module caching on GitLab CI 2020-10-15 17:34:08 +02:00
Tim Visée
24172a4665 Merge branch 'gitlab-ci' into 'master'
Add GitLab CI configuration

See merge request timvisee/send!1
2020-10-15 15:31:39 +00:00
timvisee
daa5a3c5f1
Add GitLab CI configuration with single test job 2020-10-15 17:23:17 +02:00
timvisee
806ebbe160
Update dependencies 2020-10-15 16:42:39 +02:00
Abelardo Ayala Rodríguez
3e9be67641 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-16 18:41:42 +00:00
వీవెన్
402c8351bd Pontoon: Update Telugu (te) localization of Firefox Send
Co-authored-by: వీవెన్ <veeven@gmail.com>
2020-07-15 18:54:42 +00:00
Danny Coates
ccbcb69666
Merge pull request #1434 from MichaelPeter-Shockoe/master
modify connect-src of Content Security Policy to include dynamic wss URL based on configured base URL
2020-07-09 19:37:02 -07:00
Danny Coates
e6ff9e486b
Merge pull request #1063 from hbakhtiyor/patch-1
Convert ContentLength of storage to number
2020-07-09 19:34:33 -07:00
Danny Coates
17afd6ad58
Merge pull request #1416 from factorysh/s3_endpoint
Choose your endpoint.
2020-07-09 19:33:21 -07:00
Danny Coates
7dd1fcca9b
Merge pull request #1480 from jackyzy823/fxa-csp
Handle Content-Security-Policy for self hosting FxA
2020-07-09 19:31:06 -07:00
Danny Coates
d5319f4fcf
Merge pull request #1471 from edibopp/patch-1
Mention updated Node version 12.x in README
2020-07-09 19:20:04 -07:00
Danny Coates
a3d880fc4f
Merge pull request #1475 from 2br-2b/patch-1
Fixed a few minor formatting issues
2020-07-09 19:19:22 -07:00
Danny Coates
8a9a823842
Merge pull request #1486 from rlr/fix-vpn-url
Update URL for the VPN
2020-07-09 19:17:52 -07:00
Danny Coates
3195ee7d16
Merge pull request #1465 from minvs1/redis-retry-configs
Allow to set custom retry parameters
2020-07-09 19:17:28 -07:00
Francesco Lodolo
f565954a54 Pontoon: Update Interlingua (ia) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:32 +00:00
Francesco Lodolo
4abfd7dd6e Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:28 +00:00
Francesco Lodolo
e930275042 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:25 +00:00
Francesco Lodolo
960e29f800 Pontoon: Update Asturian (ast) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:21 +00:00
Francesco Lodolo
7e637ae453 Pontoon: Update Aragonese (an) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:57:18 +00:00
Pontoon
cca6b470b0 Pontoon: Update Tagalog (tl) localization of Firefox Send 2020-07-09 13:52:21 +00:00
Francesco Lodolo
829d10f77f Pontoon: Update Serbian (sr) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:17 +00:00
Francesco Lodolo
b7d7bb885d Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:13 +00:00
Francesco Lodolo
31e2e00b24 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:10 +00:00
Francesco Lodolo
0ab2ec6a5c Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:52:06 +00:00
Francesco Lodolo
369b0b2614 Pontoon: Update Tagalog (tl) localization of Firefox Send
Co-authored-by: Francesco Lodolo <flod+pontoon@mozilla.com>
2020-07-09 13:45:29 +00:00
Abelardo Ayala Rodríguez
b064152955 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-08 17:50:17 +00:00
Abelardo Ayala Rodríguez
438b36dd28 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-07-08 16:13:57 +00:00
Abelardo Ayala Rodríguez
a429b89322 Pontoon: Update Guarani (gn) localization of Firefox Send
Co-authored-by: Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2020-06-30 16:34:13 +00:00
Marcelo Ghelman
bd0117628f Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-06-27 23:07:05 +00:00
Marcelo Ghelman
c4299d05a1 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-06-27 22:53:15 +00:00
ali.malek.71
e3027d2c59 Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
2020-06-25 14:23:20 +00:00
Ricky Rosario
be055ff7ba
Update URL for the VPN 2020-06-24 19:29:30 -04:00
jnunezf96
5a53eb85fb Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:29:25 +00:00
jnunezf96
c249f26b4a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:14:44 +00:00
jnunezf96
b229547057 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 05:06:59 +00:00
jnunezf96
334f225f3d Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-21 04:53:56 +00:00
Selyan Slimane Amiri
e8f3379ddb Pontoon: Update Kabyle (kab) localization of Firefox Send
Co-authored-by: Selyan Slimane Amiri <selyan.kab@gmail.com>
2020-06-20 17:13:32 +00:00
zankomhamad
3dd3fa9808 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
Co-authored-by: zankomhamad <zankomhamad@outlook.com>
2020-06-19 09:14:38 +00:00
Frederick Villaluna
9459e4bca8 Pontoon: Update Tagalog (tl) localization of Firefox Send
Co-authored-by: Frederick Villaluna <fv_comscie@yahoo.com>
2020-06-16 11:53:07 +00:00
jnunezf96
888e99841e Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-16 07:25:18 +00:00
biobell2000
949dcce5d7 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 11:25:17 +00:00
biobell2000
0c47991de6 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrasheed Idris <Abdulrash6211@gmail.com>
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 11:10:30 +00:00
biobell2000
63b96310d3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:57:41 +00:00
biobell2000
da37b9d96f Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:41:46 +00:00
biobell2000
931cfd108d Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-15 10:32:08 +00:00
Garysqo
cc7ea99ca9 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
Co-authored-by: Garysqo <garyspleen@gmail.com>
2020-06-15 06:12:51 +00:00
jnunezf96
996a7e4184 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 06:05:33 +00:00
jnunezf96
e5627698c4 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 05:42:41 +00:00
jnunezf96
1fdccd4dde Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 05:33:38 +00:00
jnunezf96
b8c26aee06 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 04:23:55 +00:00
jnunezf96
b7d65517b3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 04:05:57 +00:00
jnunezf96
4f5b804b5d Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:35:11 +00:00
jnunezf96
a74491af40 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:15:25 +00:00
jnunezf96
09955a0231 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 03:07:08 +00:00
jnunezf96
301f6e87f6 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 02:52:39 +00:00
jnunezf96
8c0f1fbe3b Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 02:06:49 +00:00
jnunezf96
b81535c820 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:54:38 +00:00
jnunezf96
f5f0a430eb Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:44:55 +00:00
jnunezf96
ca55dedad4 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 01:35:53 +00:00
jnunezf96
76a3d6fc03 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:54:04 +00:00
jnunezf96
f9b5cadf17 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:43:32 +00:00
jnunezf96
458ef649f3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:35:40 +00:00
jnunezf96
de063f75e5 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Co-authored-by: jnunezf96 <jnunezf96@gmail.com>
2020-06-15 00:23:14 +00:00
jackyzy823
e2876b119d add configs to handle content-security-policy correctly for custom fxa urls 2020-06-11 21:57:48 +08:00
CLASSIFIED
25d41073b7
Fixed a few minor formatting issues
Added a few commas, deleted an extra period
2020-06-08 21:47:39 -05:00
ada_okeke60
5fb9e395d5 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-09 00:15:04 +00:00
ada_okeke60
c73ddcd464 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-09 00:06:19 +00:00
biobell2000
3a98c295e0 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:44:46 +00:00
biobell2000
899f921da3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:33:55 +00:00
biobell2000
97b9d24134 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:25:09 +00:00
biobell2000
ab9dbecbd6 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:16:31 +00:00
biobell2000
0cf77d94cb Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-08 10:07:24 +00:00
biobell2000
bfe3a4067d Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-07 17:06:23 +00:00
ada_okeke60
0226483c30 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-07 10:15:04 +00:00
Sara Todaro
a6dbb9a58f Pontoon: Update Italian (it) localization of Firefox Send
Co-authored-by: Sara Todaro <sara.todaro@mozillaitalia.org>
2020-06-06 09:33:44 +00:00
Mozilla Pontoon
c9e691bdc2 Pontoon: Update Italian (it) localization of Firefox Send 2020-06-06 07:57:15 +00:00
biobell2000
e88bfb597c Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: biobell2000 <biobell2000@gmail.com>
2020-06-06 06:05:57 +00:00
ada_okeke60
190ded1ba7 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-05 17:44:48 +00:00
Ayobamiadebayo375
7b7f1f3223 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: babalolaoreoluwa4 <babalolaoreoluwa4@gmail.com>
Co-authored-by: Ayobamiadebayo375 <Ayobamiadebayo375@gmail.com>
2020-06-05 16:23:29 +00:00
ada_okeke60
1f4473c278 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Ebukaabazie <Ebukaabazie@gmail.com>
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-05 10:35:15 +00:00
ada_okeke60
27e86640be Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-05 10:22:46 +00:00
Gisela Solis
74d151d12c Pontoon: Update Pai pai (pai) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-06-04 02:23:35 +00:00
Abdulrash6211
a370f01908 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Abdulrash6211 <Abdulrash6211@gmail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 23:53:50 +00:00
Umegbewe
3078e1f90c Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 23:44:27 +00:00
John Zonunmawi Vankal
d90830b285 Pontoon: Update Mizo (lus) localization of Firefox Send
Co-authored-by: John Zonunmawi Vankal <zonunmawia@gmail.com>
2020-06-03 18:43:33 +00:00
Umegbewe
74288cdba6 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-03 12:14:46 +00:00
Ayobamiadebayo375
a37e59cdb3 Pontoon: Update Yoruba (yo) localization of Firefox Send
Co-authored-by: Ayobamiadebayo375 <Ayobamiadebayo375@gmail.com>
2020-06-03 11:11:24 +00:00
ada_okeke60
ee5f63e11c Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-03 10:45:14 +00:00
ada_okeke60
b02f2768d3 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: ada_okeke60 <ada_okeke60@ymail.com>
2020-06-03 10:23:56 +00:00
Jwtiyar
da3a7c1e98 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:35:42 +00:00
Jwtiyar
8180406467 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:25:53 +00:00
Jwtiyar
be595de148 Pontoon: Update Central Kurdish (ckb) localization of Firefox Send
Co-authored-by: Jwtiyar <jwtiyar@gmail.com>
2020-06-02 19:14:50 +00:00
sugabelly
395b6518ee Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:37:06 +00:00
sugabelly
49243506cb Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:23:38 +00:00
sugabelly
69948f4a4a Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 18:16:25 +00:00
sugabelly
85aaeb9892 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: sugabelly <sugabelly@gmail.com>
2020-06-02 17:53:02 +00:00
Umegbewe
95098d5828 Pontoon: Update Igbo (ig) localization of Firefox Send
Co-authored-by: Umegbewe <nwebedujunior55@gmail.com>
2020-06-02 17:45:03 +00:00
Victor Davila
eb4aa04f7e Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Victor Davila <victorhdd@gmail.com>
2020-06-01 19:34:06 +00:00
Victor Davila
5afb940718 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Victor Davila <victorhdd@gmail.com>
2020-06-01 18:53:34 +00:00
Gisela Solis
b6e956e086 Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-06-01 00:53:57 +00:00
dskmori
681ca8197c Pontoon: Update Japanese (ja) localization of Firefox Send
Co-authored-by: dskmori <ghoti.fish.dsk@gmail.com>
2020-05-30 12:21:43 +00:00
ali.malek.71
21e312dac3 Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
2020-05-27 04:13:04 +00:00
Eduard Bopp
5a02e32aec
Mention updated Node version 12.x in README
Just passing by I noticed that it seems like it was overlooked to update the README in 89469e3c9c
2020-05-15 15:53:56 +02:00
fcortess
dfe3631bcd Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Co-authored-by: fcortess <fcortess@pm.me>
2020-05-12 00:05:24 +00:00
Marcelo Ghelman
b7c53bf8e2 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-05-11 16:04:31 +00:00
Marcelo Ghelman
9bdf9c4416 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Co-authored-by: Marcelo Ghelman <marcelo.ghelman@gmail.com>
2020-05-11 15:51:20 +00:00
Gisela Solis
7116c1c06e Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-05-04 15:13:21 +00:00
Gisela Solis
f210394d84 Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-04-30 15:41:56 +00:00
Gisela Solis
0679a29cdc Pontoon: Update Ixil (ixl) localization of Firefox Send
Co-authored-by: Gisela Solis <gisela.solis.roman@gmail.com>
2020-04-30 15:32:10 +00:00
Danny Coates
7a9a75794e
v3.0.22 2020-04-29 21:40:53 -07:00
Danny Coates
89469e3c9c
updated node to 12 2020-04-29 17:38:55 -07:00
Danny Coates
01110b4ec1
Merge pull request #1467 from flodolo/locales_20200423
Add new locales to prod (azz, fa, hus, hy-AM)
2020-04-29 16:53:52 -07:00
Milo
b54cd58602 Pontoon: Update Croatian (hr) localization of Firefox Send
Co-authored-by: Milo <mail@milotype.de>
2020-04-26 11:22:26 +00:00
Quentí
6cc00be4b5 Pontoon: Update Occitan (oc) localization of Firefox Send
Co-authored-by: Quentí <quentinantonin@free.fr>
2020-04-25 09:53:06 +00:00
ali.malek.71
b40594f0ee Pontoon: Update Persian (fa) localization of Firefox Send
Co-authored-by: ali.malek.71 <ali.malek.71@gmail.com>
Co-authored-by: abtin <abtin@riseup.net>
2020-04-23 17:12:52 +00:00
Francesco Lodolo [:flod]
01f4ceca23
Add new locales to prod (azz, fa, hus, hy-AM) 2020-04-23 07:33:37 +02:00
minvs1
7aead375d8 Allow to set custom retry parameters 2020-04-21 23:30:39 +03:00
Fjoerfoks
471c9e8559 Pontoon: Update Frisian (fy-NL) localization of Firefox Send
Co-authored-by: Fjoerfoks <fryskefirefox@gmail.com>
2020-04-21 12:23:03 +00:00
Manuela Silva
f45960263f Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Co-authored-by: Manuela Silva <manuelarodsilva@gmail.com>
2020-04-05 21:14:41 +00:00
Danny Coates
0ee9cc69a8
Merge pull request #1455 from mozilla/update-promo-to-vpn
update promo to be for the vpn
2020-03-31 13:12:14 -07:00
johngruen
2a3db78f97
update promo to be for the vpn 2020-03-31 22:03:08 +02:00
Muhend Belkacem
e5f9265979 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Muhend Belkacem <taqbaylitassa@gmail.com>
2020-03-29 09:53:25 +00:00
bulut
00416b5063 Pontoon: Update Turkish (tr) localization of Firefox Send
Localization authors:
- bulut <bulut@tokmak.org>
2020-03-27 21:43:57 +00:00
Mathieu Lecarme
5a70362b79 Fix: AWS.config is a stub. 2020-03-23 15:48:07 +01:00
Mathieu Lecarme
97deb78de6 Use the config object. 2020-03-23 15:48:07 +01:00
Mathieu Lecarme
2d22573588 Choose your endpoint.
See https://github.com/mozilla/send/issues/1239
2020-03-23 15:48:07 +01:00
Enol
deec85be14 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2020-03-21 14:23:33 +00:00
abtin
6342203256 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- ali.malek.71 <ali.malek.71@gmail.com>
- abtin <abtin@riseup.net>
2020-03-15 20:23:35 +00:00
abtin
949fbb68c3 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 20:12:56 +00:00
abtin
222c21ddf9 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 19:33:08 +00:00
abtin
ae20e55c50 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- abtin <abtin@riseup.net>
2020-03-15 19:23:23 +00:00
Milo
765da48b0c Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 16:13:48 +00:00
Milo
3769a17300 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 16:04:11 +00:00
Milo
cad853b196 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:52:28 +00:00
Milo
804128b7c8 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:41:31 +00:00
Milo
e136b9dc63 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:22:01 +00:00
Milo
b4ffb8cf01 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 15:04:40 +00:00
Milo
e24c1103b3 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-03-07 14:52:59 +00:00
Bald3mar
07202e684a Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2020-03-06 22:04:23 +00:00
manuel padilla sanchez
ca774258d6 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-03-03 18:33:07 +00:00
manuel padilla sanchez
93d48c5787 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-03-03 18:23:04 +00:00
passionforlife
aa65f20afa Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2020-02-29 00:52:29 +00:00
Milo
f3caa9841c Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
- Mikeyy <mihovil@miho.im>
2020-02-28 18:41:32 +00:00
Mozilla Pontoon
4c6663948b Pontoon: Update Croatian (hr) localization of Firefox Send 2020-02-26 21:33:38 +00:00
manuel padilla sanchez
c5a4f920c4 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 16:13:10 +00:00
manuel padilla sanchez
c6cbb727da Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 16:03:40 +00:00
manuel padilla sanchez
830337b403 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:52:34 +00:00
manuel padilla sanchez
c11f8a059e Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:43:28 +00:00
manuel padilla sanchez
6fd1ed18a1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:32:04 +00:00
manuel padilla sanchez
0338382fdf Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 15:22:42 +00:00
manuel padilla sanchez
aac2b8e6f4 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:22:11 +00:00
manuel padilla sanchez
40a111a2e9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:12:13 +00:00
manuel padilla sanchez
cbb0b86712 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 09:04:37 +00:00
manuel padilla sanchez
51465a2797 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-22 08:52:05 +00:00
xcffl
fa99c75313 Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- xcffl <xcffl@outlook.com>
2020-02-22 08:23:32 +00:00
manuel padilla sanchez
0b4bd40b32 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 20:06:38 +00:00
manuel padilla sanchez
c5b2dc826b Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:53:35 +00:00
manuel padilla sanchez
1f7a58ea41 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:43:05 +00:00
manuel padilla sanchez
ca6e2963e3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:33:26 +00:00
manuel padilla sanchez
9f019f100d Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:14:53 +00:00
manuel padilla sanchez
5e91a72cd9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 19:05:52 +00:00
manuel padilla sanchez
01d7383ae0 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 18:53:33 +00:00
manuel padilla sanchez
74234fa03c Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-18 18:43:16 +00:00
manuel padilla sanchez
49b24294b1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:22:28 +00:00
manuel padilla sanchez
5feb07a251 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:12:50 +00:00
manuel padilla sanchez
28b69c4f14 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 19:04:24 +00:00
manuel padilla sanchez
19e5fd269e Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-17 18:51:47 +00:00
manuel padilla sanchez
52d708bf3f Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 14:04:34 +00:00
manuel padilla sanchez
bb66a1bfa5 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:33:18 +00:00
manuel padilla sanchez
d31b1ebfcd Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:23:20 +00:00
manuel padilla sanchez
4385d29aa0 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:13:44 +00:00
manuel padilla sanchez
111e1d5ed3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 13:05:13 +00:00
manuel padilla sanchez
27d48f2ec3 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:41:09 +00:00
manuel padilla sanchez
1a6ddf7e75 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:33:05 +00:00
manuel padilla sanchez
cd8d01db29 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:12:26 +00:00
manuel padilla sanchez
dc8f56bc57 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 11:05:09 +00:00
manuel padilla sanchez
efb04397f7 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:52:59 +00:00
manuel padilla sanchez
19b34e8d39 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:41:38 +00:00
manuel padilla sanchez
b7c7e0ef27 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:33:50 +00:00
manuel padilla sanchez
b02c5ed4a9 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:13:55 +00:00
manuel padilla sanchez
59fb485ba6 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 10:05:08 +00:00
manuel padilla sanchez
71b22458ba Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:52:38 +00:00
manuel padilla sanchez
ecb9391439 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:32:57 +00:00
manuel padilla sanchez
aaf341bd81 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 09:23:44 +00:00
manuel padilla sanchez
35ef24a40f Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-16 07:51:53 +00:00
manuel padilla sanchez
3973f0552c Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-15 14:14:07 +00:00
manuel padilla sanchez
767cc166b1 Pontoon: Update Highland Puebla Nahuatl (azz) localization of Firefox Send
Localization authors:
- manuel padilla sanchez <manuel.padilla@servicios.ccoo.es>
2020-02-15 14:04:04 +00:00
Hrant
f24ad20ffe Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 18:04:13 +00:00
Hrant
a1f915806a Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 17:51:53 +00:00
Hrant
669212a9b7 Pontoon: Update Armenian (hy-AM) localization of Firefox Send
Localization authors:
- Hrant <hrant.mozilla@gmail.com>
2020-02-14 17:42:24 +00:00
Kim YoungCheon
59f6e51636 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:34:09 +00:00
Kim YoungCheon
2515ba274d Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:22:01 +00:00
Kim YoungCheon
6c2fbfe6ff Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:13:59 +00:00
Kim YoungCheon
26fdb271dd Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim YoungCheon <circcc@gmail.com>
2020-01-31 23:05:53 +00:00
Mikeyy
4504c5cd74 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
- Mikeyy <mihovil@miho.im>
2020-01-29 14:29:19 +00:00
Milo
2746556dfa Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Milo <mail@milotype.de>
2020-01-29 14:12:58 +00:00
Michael Peter
5ff6266a5e modify connect-src of Content Security Policy to include dynamic wss URL based on configured base URL 2020-01-17 17:47:09 -05:00
Quentí
e57fc1c2d8 Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2020-01-17 12:12:36 +00:00
Danny Coates
097d3c8377
make geoip lookup optional 2020-01-11 14:06:17 -08:00
Luis Flores Martínez
43c728d5d4 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 17:12:42 +00:00
Luis Flores Martínez
3dffb8da15 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:52:21 +00:00
Luis Flores Martínez
c49dbd6d6d Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:32:17 +00:00
Luis Flores Martínez
356112e8cc Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 16:13:19 +00:00
Luis Flores Martínez
ad0d862d92 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 03:33:08 +00:00
Luis Flores Martínez
2ca007af1a Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2020-01-07 03:12:30 +00:00
Misael Hernández
0a42c887d2 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- Misael Hernández <yumatajnga@gmail.com>
2020-01-06 03:32:50 +00:00
Joseph.maza
f54a95c965 Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Joseph.maza <Joseph.maza@Gmail.com>
2020-01-06 02:12:15 +00:00
Danny Coates
eec8da890a
Merge pull request #1431 from flodolo/locales_20200102
Add new locales (an, gn, mix)
2020-01-02 17:30:24 -08:00
Francesco Lodolo [:flod]
32a58d85a3
Add new locales (an, gn, mix) 2020-01-02 08:29:52 +01:00
Björn I
1252aaed30 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-12-27 17:33:13 +00:00
Jirka Soukeník
060ff1cae4 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Jirka Soukeník <soucet@centrum.cz>
- Michal Stanke <mstanke@mozilla.cz>
2019-12-25 08:51:41 +00:00
Juan Pablo
1c2955ed9e Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-18 00:37:51 +00:00
Juan Pablo
5e5bce8745 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-18 00:12:36 +00:00
Juan Pablo
e43ba60792 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-17 23:51:47 +00:00
Juan Pablo
e94fe58965 Pontoon: Update Aragonese (an) localization of Firefox Send
Localization authors:
- Juan Pablo <juanpabl@gmail.com>
2019-12-17 23:32:52 +00:00
Frederick Villaluna
a21412844a Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Frederick Villaluna <fv_comscie@yahoo.com>
2019-12-16 07:13:30 +00:00
Luis Flores Martínez
666ca8e87b Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2019-12-13 17:13:50 +00:00
Luis Flores Martínez
71ceffd9b4 Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Luis Flores Martínez <lufom90@gmail.com>
2019-12-13 16:52:01 +00:00
Bald3mar
cdbd669af2 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 22:33:46 +00:00
Bald3mar
027043edb7 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 22:14:07 +00:00
Bald3mar
e4a1f8e86b Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-12 21:51:52 +00:00
Hmxhmx
dfd5eb9b1e Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Hmxhmx <hmxhmx.at.wiki@gmail.com>
2019-12-11 08:33:24 +00:00
Bald3mar
e3ee840b64 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-12-10 23:53:16 +00:00
Danny Coates
b8bd13c704
Merge pull request #1424 from checkr/cjford/optional-git-build-dependency
Allow successful npm build without .git
2019-12-10 09:38:24 -08:00
صفا الفليج
6238299a0a Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-12-09 20:32:11 +00:00
Connor Ford
d40ddc3d3b Fix npm build with missing .git 2019-12-09 10:51:51 -07:00
Sav22999
d2746db969 Pontoon: Update Italian (it) localization of Firefox Send
Localization authors:
- Sav22999 <saverio.morelli@outlook.it>
2019-12-08 14:53:17 +00:00
Martijn Dekker
95057ef503 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-06 05:54:39 +00:00
Martijn Dekker
aec2ec30d5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-06 00:32:14 +00:00
Martijn Dekker
4d36b3d6e9 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-12-03 23:35:21 +00:00
Julio Gomez
6b89197cfd Pontoon: Update Yucatec Maya (yua) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-12-03 16:52:39 +00:00
Julio Gomez
dd2ebdd2de Pontoon: Update Huastec (hus) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-12-03 16:52:37 +00:00
Bald3mar
c479d326ed Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-29 21:31:58 +00:00
Bald3mar
8434d91891 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-29 20:33:50 +00:00
Martijn Dekker
f9c761ea99 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-25 03:54:20 +00:00
Martijn Dekker
b14f5f16d0 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-24 22:54:28 +00:00
Selyan Slimane Amiri
4fbc8e0c89 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Selyan Slimane Amiri <selyan.kab@gmail.com>
2019-11-22 21:32:21 +00:00
Bald3mar
ad2a1715b5 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-18 23:51:36 +00:00
Bald3mar
ac8f826612 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-11-18 23:31:36 +00:00
Martijn Dekker
c1aaa9d6e5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-14 15:34:18 +00:00
Enol
eac95ffff7 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-11-13 23:13:07 +00:00
Enol
8121761cc8 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-11-13 22:52:12 +00:00
Danny Coates
7c720cd7cc
Merge pull request #1418 from janschloss/routes-link
Fixes link to routes file
2019-11-13 09:25:55 -08:00
Abelardo Ayala Rodríguez
4c2f809502 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-13 11:36:00 +00:00
Abelardo Ayala Rodríguez
d42523651c Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-13 10:51:36 +00:00
Martijn Dekker
b9775e0471 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-11-13 09:13:05 +00:00
jnunezf96
d2f37204e0 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 19:33:02 +00:00
jnunezf96
846dad6662 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 19:12:47 +00:00
jnunezf96
c966010ed3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 18:13:42 +00:00
Jan Schloß
e77fea09bc Fixes link to routes file 2019-11-12 19:09:07 +01:00
jnunezf96
b63291c7d3 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-11-12 17:53:52 +00:00
Danny Coates
2ccc044a27
v3.0.21 2019-11-11 08:48:26 -08:00
Danny Coates
4144850f9d
updated deps 2019-11-11 08:44:25 -08:00
Danny Coates
18630aadf9
Merge pull request #1417 from flodolo/prodlocales_20191111
Add new complete locales to production
2019-11-11 08:34:48 -08:00
Francesco Lodolo [:flod]
605fff519e
Add new complete locales to production 2019-11-11 09:40:52 +01:00
Frederick Villaluna
0b7ff9551d Pontoon: Update Tagalog (tl) localization of Firefox Send
Localization authors:
- Frederick Villaluna <fv_comscie@yahoo.com>
- Ricky Villar <rvillar313@gmail.com>
2019-11-09 07:12:36 +00:00
Abelardo Ayala Rodríguez
2c9716e01e Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-08 14:33:28 +00:00
Abelardo Ayala Rodríguez
cdde3fe654 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-08 14:14:11 +00:00
shamanchic2011
3537667187 Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- shamanchic2011 <shamanchic2011@ya.ru>
- Mikalai Udodau <crom-a@tut.by>
2019-11-07 17:12:28 +00:00
Zhenya Tikhonov
66086c460d Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- shamanchic2011 <shamanchic2011@ya.ru>
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-07 16:51:21 +00:00
Zhenya Tikhonov
a203a8de67 Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-07 16:32:04 +00:00
Francesco Lodolo
2bba9c53ed Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Francesco Lodolo <flod+pontoon@mozilla.com>
2019-11-07 15:12:48 +00:00
Abelardo Ayala Rodríguez
37af4d33fc Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-07 13:31:54 +00:00
Abelardo Ayala Rodríguez
107f40c8c9 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-07 13:12:10 +00:00
Zhenya Tikhonov
cb325022dc Pontoon: Update Belarusian (be) localization of Firefox Send
Localization authors:
- Mikalai Udodau <crom-a@tut.by>
- Zhenya Tikhonov <masontikhonov@gmail.com>
2019-11-06 19:53:20 +00:00
Danny Coates
b62b439218
fixed circleci oops 2019-11-05 21:06:19 -08:00
Danny Coates
47972fe2a1
fixed mysterious npm build problem by updating npm 🤷‍♂️ 2019-11-05 21:01:29 -08:00
Danny Coates
7ad937266f
trimmed circleci config 2019-11-05 20:53:59 -08:00
Danny Coates
2f34dffab4
fixed sw initialization error 2019-11-05 20:37:44 -08:00
Danny Coates
4a956c0247
updated deps 2019-11-05 20:19:07 -08:00
Alexander Parada
23ce7a1f84 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 15:33:35 +00:00
Alexander Parada
66a8ad2e4f Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 13:57:38 +00:00
Abelardo Ayala Rodríguez
e8e2e31b59 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:57:35 +00:00
Abelardo Ayala Rodríguez
7259c46d1c Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:31:45 +00:00
Abelardo Ayala Rodríguez
9d3c3d1924 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-11-05 13:14:02 +00:00
jnunezf96
a0d6317747 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-11-05 04:12:46 +00:00
Julio Gomez
3810e09509 Pontoon: Update Yucatec Maya (yua) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-11-05 02:31:57 +00:00
José Manuel
bb7678e7e4 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-11-05 01:33:00 +00:00
Alexander Parada
3dcf01dd1f Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 01:32:57 +00:00
José Manuel
3b8f19b4c9 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-11-05 00:52:28 +00:00
Alexander Parada
ab957c26a0 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:52:25 +00:00
Alexander Parada
e835c82c27 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:31:58 +00:00
Alexander Parada
d69a9e8537 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-11-05 00:11:44 +00:00
Netza López
1b286d664b Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:32:25 +00:00
Netza López
f8c8a6c2cd Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:19:43 +00:00
Netza López
b71234fc83 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 18:01:40 +00:00
Netza López
2eb35733da Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 03:32:20 +00:00
Netza López
df276d5942 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 03:11:15 +00:00
Netza López
e1a6fb9569 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-11-04 02:51:56 +00:00
marsf
99b2d636a1 Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- marsf <chimantaea_mirabilis@yahoo.co.jp>
2019-11-03 14:11:21 +00:00
jnunezf96
78be59adac Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 20:12:42 +00:00
jnunezf96
720ab6ae3a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 19:52:57 +00:00
elenatambriz
5e0dcc948c Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:51:49 +00:00
elenatambriz
90400d72b1 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:31:40 +00:00
elenatambriz
8f1fd6cbf5 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 17:14:47 +00:00
elenatambriz
fef8788d55 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-31 16:53:52 +00:00
José Manuel
d2f8156bde Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-31 15:32:30 +00:00
Garysqo
d4fbd48f1c Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
2019-10-31 14:11:32 +00:00
jnunezf96
a6d3948fbc Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 06:31:28 +00:00
jnunezf96
005bbb1792 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 06:12:10 +00:00
jnunezf96
186230d211 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 05:12:32 +00:00
jnunezf96
ee1e8bc204 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-31 04:12:29 +00:00
jnunezf96
d1366fb764 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 23:51:28 +00:00
jnunezf96
d81dba6407 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 23:31:57 +00:00
Garysqo
f35ddd8e9a Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
2019-10-30 19:12:24 +00:00
Garysqo
ff798463e8 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-10-30 18:52:42 +00:00
Bald3mar
6308c386a3 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-30 18:11:55 +00:00
jnunezf96
5a6c338ab9 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
- Garysqo <garyspleen@gmail.com>
2019-10-30 16:32:20 +00:00
jnunezf96
bc6401e7dd Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-30 16:11:28 +00:00
jnunezf96
0667f22ddd Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-29 23:12:26 +00:00
jnunezf96
594cd339b5 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- jnunezf96 <jnunezf96@gmail.com>
2019-10-29 22:42:38 +00:00
José Manuel
762497b867 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-29 22:13:19 +00:00
Garysqo
9199a985d8 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 22:13:17 +00:00
Bald3mar
624e1234d9 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 22:13:14 +00:00
Netza López
a3d153db66 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 22:13:11 +00:00
elenatambriz
dc25bc5727 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 22:13:08 +00:00
Julio Gomez
6a1670b550 Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Julio Gomez <jegs87@gmail.com>
2019-10-29 22:13:05 +00:00
Miguel
8cd3a720fe Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Gerardo <gerardoterraza2013@gmail.com>
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 22:13:02 +00:00
Abelardo Ayala Rodríguez
9aa7da68be Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 22:12:59 +00:00
José Manuel
063042cd76 Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-29 21:42:00 +00:00
Alexander Parada
8ce3a5d236 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 21:41:58 +00:00
Netza López
0c58c84625 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:41:55 +00:00
elenatambriz
68ddcf3b56 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 21:41:52 +00:00
Miguel
a0648d7d91 Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 21:41:49 +00:00
Abelardo Ayala Rodríguez
5e674973db Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:41:46 +00:00
Garysqo
4f2b634825 Pontoon: Update Náhuat Pipil (ppl) localization of Firefox Send
Localization authors:
- Garysqo <garyspleen@gmail.com>
- Alexander Parada <alessaux@outlook.es>
2019-10-29 21:33:43 +00:00
Bald3mar
48bbf07392 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 21:33:40 +00:00
Netza López
357f6da3b0 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:33:37 +00:00
Miguel
def21041d8 Pontoon: Update Ixil (ixl) localization of Firefox Send
Localization authors:
- Miguel <mickyforever.dc@gmail.com>
2019-10-29 21:33:35 +00:00
Abelardo Ayala Rodríguez
c44728865a Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:33:32 +00:00
Bald3mar
f271140c5f Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 21:13:57 +00:00
Netza López
3593aaf61f Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 21:13:54 +00:00
Abelardo Ayala Rodríguez
8b433a008d Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 21:13:51 +00:00
Bald3mar
1ab1bf1b00 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 20:43:02 +00:00
Abelardo Ayala Rodríguez
c04d15f806 Pontoon: Update Guarani (gn) localization of Firefox Send
Localization authors:
- Abelardo Ayala Rodríguez <abe_aya@hotmail.com>
2019-10-29 20:42:59 +00:00
Bald3mar
977e8bdc21 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 20:32:12 +00:00
Bald3mar
454d1d03f5 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 19:15:17 +00:00
Netza López
f73ff7fa26 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 19:15:14 +00:00
elenatambriz
98317c94aa Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 19:15:12 +00:00
Netza López
aa91d762af Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 18:44:30 +00:00
elenatambriz
5cddd0842b Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 18:44:27 +00:00
elenatambriz
4dee3d2283 Pontoon: Update K&#39;iche&#39; (quc) localization of Firefox Send
Localization authors:
- elenatambriz <elenatambriz@hotmail.com>
2019-10-29 18:33:37 +00:00
Netza López
2d20cb3819 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 18:14:20 +00:00
Bald3mar
c28beb3bc1 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-29 16:32:21 +00:00
Netza López
216a7a6ff8 Pontoon: Update Mixteco Yucuhiti (meh) localization of Firefox Send
Localization authors:
- Netza López <l.lopeznetza@gmail.com>
2019-10-29 16:32:19 +00:00
José Manuel
a48d2bad4f Pontoon: Update Triqui (trs) localization of Firefox Send
Localization authors:
- José Manuel <triki2014jm@gmail.com>
2019-10-28 23:12:15 +00:00
Bald3mar
04c60414e1 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-28 22:32:40 +00:00
Bald3mar
92c3f67020 Pontoon: Update Mixtepec Mixtec (mix) localization of Firefox Send
Localization authors:
- Bald3mar <baldemarls@gmail.com>
2019-10-28 22:13:07 +00:00
Martijn Dekker
49e6c064ac Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-27 22:32:42 +00:00
Martijn Dekker
8551139a8a Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-27 20:13:25 +00:00
Emin Mastizada
96461692ee Pontoon: Update Azerbaijani (az) localization of Firefox Send
Localization authors:
- Emin Mastizada <emin@mastizada.com>
2019-10-23 23:35:20 +00:00
Martijn Dekker
a217ad4be5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-10-22 15:12:17 +00:00
Danny Coates
18216ce430
v3.0.20 2019-10-21 11:33:54 -07:00
Danny Coates
1711a2d1d7
added "te" to production languages 2019-10-21 10:36:34 -07:00
Danny Coates
8b2080a2f0
updated deps 2019-10-21 10:24:07 -07:00
Danny Coates
006ee1d2e6
Merge pull request #1408 from drakkein/master
Strip tracking URL params
2019-10-21 10:13:56 -07:00
Danny Coates
0a7c473965
Merge pull request #1405 from mozilla/dark-mode
Dark theme
2019-10-21 10:07:42 -07:00
Hampus
4e124d174c Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Hampus <hampus.bengtsson@gmail.com>
2019-10-19 00:33:34 +00:00
Artem Polivanchuk
524b2a5668 Pontoon: Update Ukrainian (uk) localization of Firefox Send
Localization authors:
- Artem Polivanchuk <artem@mozilla.org.ua>
2019-10-17 08:52:12 +00:00
Marcelo Ghelman
844f036a27 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-10-16 14:33:03 +00:00
Marcelo Ghelman
7d6c781ea5 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-10-16 14:12:33 +00:00
Wiktor Furman
ad9577daaf Update package-lock 2019-10-15 15:50:09 +02:00
Wiktor Furman
114068c531 Strip tracking url parameters 2019-10-15 15:29:48 +02:00
Niksend Mizuhara
0daa03e04c Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- Niksend Mizuhara <i@rhinecho.com>
2019-10-07 01:53:05 +00:00
Danny Coates
63348fd36a
updated deps 2019-10-03 23:32:49 -07:00
Danny Coates
c71c246959
Dark theme 2019-10-03 23:10:11 -07:00
Sander Lepik
2b7504e969 Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Sander Lepik <sander.lepik@eesti.ee>
2019-10-01 05:14:31 +00:00
Selyan Sliman Amiri
b942554c80 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Selyan Sliman Amiri <selyan.kab@gmail.com>
2019-09-30 09:32:51 +00:00
Juan Sián
1ae227fddd Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Juan Sián <ajtzibsyan@yahoo.com>
2019-09-26 23:32:48 +00:00
Jordi Serratosa
a63fe18d15 Pontoon: Update Catalan (ca) localization of Firefox Send
Localization authors:
- Jordi Serratosa <jordis@softcatala.cat>
2019-09-25 09:56:59 +00:00
Danny Coates
ea1ea2aa68
v3.0.19 2019-09-23 09:24:10 -07:00
Danny Coates
90d06d71d3
updated deps 2019-09-23 09:22:22 -07:00
Kim Younggeon
11f2deb7a6 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Kim Younggeon <mail@kyg.kr>
2019-09-23 03:52:14 +00:00
Danny Coates
0f5edf023a
Merge pull request #1400 from mozilla/task/update-engines
task: update engines in package.json and README to clarify that node 10x is expected.
2019-09-19 11:02:42 -07:00
Rachel Tublitz
3be0621647
task: update engines in package.json and README to clarify that node 10.x is expected 2019-09-19 13:37:05 -04:00
Marcelo Ghelman
fc07bfdb85 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-09-15 05:17:20 +00:00
صفا الفليج
581a989304 Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-09-11 18:34:38 +00:00
ItielMaN
047d6a85ab Pontoon: Update Hebrew (he) localization of Firefox Send
Localization authors:
- ItielMaN <itiel_yn8@walla.com>
2019-09-08 21:12:53 +00:00
Luiz Felipe F M Costa
90f6a07d4a
refactored Dockerfile 2019-09-06 20:04:45 -07:00
Arash Mousavi
8f4a53db64 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- Arash Mousavi <mousavi.arash@gmail.com>
2019-09-06 21:53:28 +00:00
Danny Coates
c2dd51c638
v3.0.18 2019-09-06 10:40:36 -07:00
Danny Coates
cdd98af86a
updated deps 2019-09-06 10:39:42 -07:00
Danny Coates
883f2bc0f9
wait until serviceWorker activate to precache 2019-09-05 19:04:03 -07:00
Danny Coates
94f1eabbc7
v3.0.17 2019-09-05 15:59:42 -07:00
Danny Coates
902bc6628e
cache fonts 2019-09-05 15:57:07 -07:00
Danny Coates
460b741f17
clean service worker cache after activate instead of on install 2019-09-05 15:24:26 -07:00
Danny Coates
d5c488196d
no-cache harder 2019-09-05 13:33:12 -07:00
Danny Coates
9ad9c9feb2
fixed git hooks 2019-09-05 13:16:32 -07:00
Danny Coates
6576e4a74c
added sync-npm-dependencies script and hooks 2019-09-05 08:14:14 -07:00
Danny Coates
950872109e
updated deps 2019-09-05 08:11:20 -07:00
Martijn Dekker
87051d27ed Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Martijn Dekker <martijn@inlv.org>
2019-09-03 22:52:26 +00:00
Marcelo Ghelman
3451803b37 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-08-29 10:32:02 +00:00
dskmori
ac15153e8f Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- dskmori <ghoti.fish.dsk@gmail.com>
2019-08-28 13:12:29 +00:00
Danny Coates
924f5dc682
disable streaming download on mobile firefox 2019-08-26 10:49:19 -07:00
Danny Coates
ff9be6a213
updated deps 2019-08-26 08:58:34 -07:00
Roberto Alvarado
883728570e Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Roberto Alvarado <ralv888@gmail.com>
- Adolfo Jayme Barrientos <fitoschido@gmail.com>
2019-08-25 05:52:41 +00:00
Adolfo Jayme Barrientos
0435f17f9a Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Roberto Alvarado <ralv888@gmail.com>
- Adolfo Jayme Barrientos <fitoschido@gmail.com>
2019-08-20 16:34:33 +00:00
Danny Coates
1e1268fff0
fixed hebrew fluent variable name 2019-08-19 10:59:35 -07:00
Quế Tùng
252d7817e3 Pontoon: Update Vietnamese (vi) localization of Firefox Send
Localization authors:
- Quế Tùng <best.cloney.1301@gmail.com>
2019-08-17 15:53:31 +00:00
Danny Coates
ce28c38ebe
v3.0.16 2019-08-12 10:10:07 -07:00
Danny Coates
f0407f9beb
use custom configstore that doesn't use the fs 2019-08-12 10:00:57 -07:00
Sahithi
c6f222eb57 Pontoon: Update Telugu (te) localization of Firefox Send
Localization authors:
- Sahithi <sahithi@swecha.net>
2019-08-11 08:54:01 +00:00
leo.toneff
6dd6135185 Pontoon: Update Norwegian Bokmål (nb-NO) localization of Firefox Send
Localization authors:
- leo.toneff <leo.toneff@gmail.com>
- Håvar Henriksen <havar@firefox.no>
2019-08-10 16:33:36 +00:00
Danny Coates
8df339b66d
v3.0.15 2019-08-09 12:26:09 -07:00
Danny Coates
8702fda651
handle websocket construction exceptions 2019-08-09 11:47:44 -07:00
Danny Coates
807ecff471
updated sentry libs from raven to @sentry 2019-08-09 11:06:21 -07:00
Danny Coates
927c981cd7
added size/time info to up/download error reporting 2019-08-09 10:09:34 -07:00
Danny Coates
7073cc8ce6
added download hang detection and error reporting 2019-08-08 13:54:02 -07:00
Danny Coates
c925fae696
updated deps 2019-08-08 13:01:57 -07:00
Danny Coates
966d7a5e35
create configstore dir in docker container 2019-08-08 10:42:57 -07:00
Danny Coates
96c750c098
added size and duration to connection error reporting 2019-08-08 09:52:22 -07:00
Danny Coates
0729064753
Merge pull request #1378 from mozilla/new-ws
Use resumable uploads to GCS
2019-08-08 08:54:00 -07:00
Joergen
259a5a5f24 Pontoon: Update Danish (da) localization of Firefox Send
Localization authors:
- Joergen <joergenr@stofanet.dk>
2019-08-08 14:02:32 +00:00
Danny Coates
27be72e0cd
refactored client side upload loop 2019-08-07 13:51:23 -07:00
Danny Coates
e4231bbc0f
updated deps 2019-08-07 13:47:26 -07:00
Danny Coates
1d184f06bf
revert webpack for broken css extraction 2019-08-07 12:14:27 -07:00
Quentí
f7b46a99ac Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2019-08-07 18:12:20 +00:00
Quentí
3fadb489c7 Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2019-08-07 17:13:10 +00:00
Danny Coates
6378676c2d
use resumable uploads to GCS 2019-08-07 10:10:42 -07:00
Quentí
014d84e4c7 Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2019-08-07 16:54:33 +00:00
Quentí
a08d8435a9 Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2019-08-07 07:12:56 +00:00
Quentí
40a05c9ecf Pontoon: Update Occitan (oc) localization of Firefox Send
Localization authors:
- Quentí <quentinantonin@free.fr>
2019-08-07 06:52:27 +00:00
Danny Coates
527040afef
updated ws dependency and slightly improved client side error handling, hung uploads will error instead of hang forever 2019-08-06 14:47:21 -07:00
Michal Stanke
a48a447808 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Michal Stanke <mstanke@mozilla.cz>
2019-08-06 12:14:20 +00:00
julen
f3569d7f98 Pontoon: Update Basque (eu) localization of Firefox Send
Localization authors:
- julen <julenx@gmail.com>
- Ander Elortondo <ander.elor@gmail.com>
2019-08-05 08:52:40 +00:00
صفا الفليج
6ca7d11efb Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-08-05 08:52:37 +00:00
julen
b71ae4a0ff Pontoon: Update Basque (eu) localization of Firefox Send
Localization authors:
- p.sanroman.bengoetxea <p.sanroman.bengoetxea@gmail.com>
- julen <julenx@gmail.com>
- Ander Elortondo <ander.elor@gmail.com>
2019-08-05 08:34:11 +00:00
Aman Alam
7ba25664b5 Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-08-05 00:52:41 +00:00
Danny Coates
80fb42ad3d
v3.0.14 2019-08-02 12:13:39 -07:00
Danny Coates
f036df5f47
updated eslint config 2019-08-02 12:03:53 -07:00
Danny Coates
20c063db7c
fixed logged error in integration tests 2019-08-02 11:26:52 -07:00
Danny Coates
a6b43c9eef
v3.0.13 2019-07-29 16:24:48 -07:00
Danny Coates
c80f9ada65
updated deps 2019-07-29 15:26:11 -07:00
aefgh39622
e0ae5cb3c6 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
2019-07-28 12:12:35 +00:00
Марко Костић (Marko Kostić)
c0fb3d17be Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-07-24 21:52:22 +00:00
Ратко Вујановић
116f090b7e Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
- Ратко Вујановић <arheopterics@gmail.com>
- Isidora Barad Dur <barad.dur@yahoo.com>
2019-07-23 19:52:46 +00:00
Danny Coates
7cbd9716e2
updated deps 2019-07-23 10:30:43 -07:00
Danny Coates
58191975b9
stubbed /login page for redirect base login flow 2019-07-23 09:27:34 -07:00
Anesu Chiodza
76695aee5d Pontoon: Update Shona (sn) localization of Firefox Send
Localization authors:
- Anesu Chiodza <anesuchiodza@gmail.com>
2019-07-16 17:31:47 +00:00
Anesu Chiodza
b356b4cad3 Pontoon: Update Shona (sn) localization of Firefox Send
Localization authors:
- Anesu Chiodza <anesuchiodza@gmail.com>
2019-07-16 17:11:53 +00:00
m4hdi.pdroid
63ddbeefc4 Pontoon: Update Persian (fa) localization of Firefox Send
Localization authors:
- m4hdi.pdroid <m4hdi.pdroid@gmail.com>
- Amin Mahmudian <amin.mahmudian@gmail.com>
2019-07-14 18:31:39 +00:00
Belayet Hossain
7b423b24b6 Pontoon: Update Bengali (bn) localization of Firefox Send
Localization authors:
- Belayet Hossain <bellayet@gmail.com>
2019-07-13 18:31:39 +00:00
Belayet Hossain
b67050b742 Pontoon: Update Bengali (bn) localization of Firefox Send
Localization authors:
- Belayet Hossain <bellayet@gmail.com>
2019-07-13 18:11:35 +00:00
rgpublic
06242dfd38 Add deployment instructions (#1366) 2019-07-12 10:07:24 -04:00
Danny Coates
3b8dbfd81c
npm run format 2019-07-11 10:47:42 -07:00
Danny Coates
9c2fe39764
updated deps 2019-07-11 10:46:07 -07:00
Danny Coates
8b21d43bfa
Merge pull request #1363 from flodolo/bengali
Rename bn-BD as bn
2019-07-10 09:54:32 -07:00
Francesco Lodolo [:flod]
e7e39f4d4a
Rename bn-BD as bn 2019-07-10 06:52:22 +02:00
Top
e4c801d9a1 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
- Top <teerapatxtop@yahoo.com>
2019-07-08 16:12:27 +00:00
Cristian Silaghi
324f275dd4 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-07-08 15:31:49 +00:00
Pin-guang Chen
594e0bd28e Pontoon: Update Chinese (Taiwan) (zh-TW) localization of Firefox Send
Localization authors:
- Pin-guang Chen <petercpg@mail.moztw.org>
2019-07-08 14:12:25 +00:00
aefgh39622
6a7fdfe780 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
2019-07-08 13:51:49 +00:00
aefgh39622
0c82741b98 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
2019-07-08 13:33:33 +00:00
aefgh39622
fe57734792 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
2019-07-08 13:12:28 +00:00
Top
4754bed9b8 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- Top <teerapatxtop@yahoo.com>
2019-07-07 18:52:25 +00:00
aefgh39622
a60da467b9 Pontoon: Update Thai (th) localization of Firefox Send
Localization authors:
- aefgh39622 <aefgh39622@gmail.com>
2019-07-07 15:53:12 +00:00
Tomer Cohen
362da2bbfc Pontoon: Update Hebrew (he) localization of Firefox Send
Localization authors:
- Tomer Cohen <tomer.mozilla@tomercohen.com>
2019-07-05 18:54:16 +00:00
ItielMaN
1a9ef4a246 Pontoon: Update Hebrew (he) localization of Firefox Send
Localization authors:
- ItielMaN <itiel_yn8@walla.com>
- Yaron Shahrabani <sh.yaron@gmail.com>
- Tomer Cohen <tomer.mozilla@tomercohen.com>
2019-07-05 16:52:35 +00:00
Marcelo Ghelman
f51dbbb8f5 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-07-04 21:32:59 +00:00
Cristian Silaghi
e497107e59 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-07-02 09:32:42 +00:00
sergio
10ad6fc1ae Pontoon: Update Russian (ru) localization of Firefox Send
Localization authors:
- sergio <sergio+it@outerface.net>
2019-07-01 12:32:41 +00:00
Christian Elbrianno
c982db4c75 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Christian Elbrianno <christian.elbrianno41@gmail.com>
- Ringgo <armen.ringgo@yahoo.de>
2019-06-30 04:52:51 +00:00
Cristian Silaghi
cd8130563d Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-27 12:58:48 +00:00
Cristian Silaghi
730a569d43 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-26 13:33:36 +00:00
kumincir
769dae1bdc Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- kumincir <ia.adnan@gmail.com>
2019-06-26 02:33:06 +00:00
Cristian Silaghi
54a8c504ce Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-24 15:33:56 +00:00
robbp
92dc9a0f71 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- robbp <robbpaun@gmail.com>
2019-06-23 05:17:32 +00:00
Besnik Bleta
80a7c92056 Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2019-06-21 11:52:47 +00:00
p.sanroman.bengoetxea
c6ebea0100 Pontoon: Update Basque (eu) localization of Firefox Send
Localization authors:
- p.sanroman.bengoetxea <p.sanroman.bengoetxea@gmail.com>
2019-06-18 12:35:09 +00:00
mail
039b5daaed Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- mail <mail@kyg.kr>
2019-06-18 06:31:42 +00:00
Marcelo Ghelman
4bf4e61c2c Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-06-17 18:13:25 +00:00
Cristian Silaghi
3c21e2a00f Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-17 13:13:34 +00:00
Cristian Silaghi
38a379d1de Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-16 20:11:54 +00:00
Sahithi
adeb19d974 Pontoon: Update Telugu (te) localization of Firefox Send
Localization authors:
- Sahithi <sahithi.thinker@gmail.com>
2019-06-16 10:53:05 +00:00
Sahithi
744c410704 Pontoon: Update Telugu (te) localization of Firefox Send
Localization authors:
- Sahithi <sahithi.thinker@gmail.com>
2019-06-16 10:32:18 +00:00
Sahithi
99ab3882eb Pontoon: Update Telugu (te) localization of Firefox Send
Localization authors:
- Sahithi <sahithi.thinker@gmail.com>
2019-06-16 10:13:18 +00:00
Danny Coates
7cdf566bcd
updated deps 2019-06-14 11:58:39 -07:00
Danny Coates
b6e4877d93
Merge pull request #1352 from mozilla/tailwind-1
updated tailwindcss to 1.0
2019-06-14 11:45:10 -07:00
Danny Coates
b9c87fd779
updated tailwindcss to 1.0 2019-06-14 11:37:30 -07:00
Joe ST
6ef5b5133c Pontoon: Update English (Great Britain) (en-GB) localization of Firefox Send
Localization authors:
- Joe ST <joe@fbstj.net>
2019-06-14 16:39:06 +00:00
Yassine Aït-El-Mouden
b7d2420765 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
- Brahim Essaidi <Essaidib2@gmail.com>
2019-06-14 12:33:45 +00:00
Artem Polivanchuk
c139531c91 Pontoon: Update Ukrainian (uk) localization of Firefox Send
Localization authors:
- Artem Polivanchuk <artem@mozilla.org.ua>
2019-06-14 09:14:39 +00:00
Muhend Belkacem
88fe3902bc Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Muhend Belkacem <taqbaylitassa@gmail.com>
2019-06-14 08:52:19 +00:00
Muhend Belkacem
645fd062ac Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Muhend Belkacem <taqbaylitassa@gmail.com>
2019-06-13 23:51:58 +00:00
Uccen Marzuq
ccb0b71df5 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Uccen Marzuq <merzouk.ouchene@laposte.net>
2019-06-13 21:52:28 +00:00
Muhend Belkacem
b8ec90a398 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Muhend Belkacem <taqbaylitassa@gmail.com>
2019-06-13 20:51:59 +00:00
marsf
7ed5f37c66 Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- marsf <chimantaea_mirabilis@yahoo.co.jp>
2019-06-13 10:32:28 +00:00
Victor Bychek
c899129f9a Pontoon: Update Russian (ru) localization of Firefox Send
Localization authors:
- Victor Bychek <a@bychek.ru>
2019-06-12 12:34:13 +00:00
Hyeonseok Shin
1bb91690c5 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Jonathan Joseph Chiarella <jonathan.chiarella@gmail.com>
2019-06-12 03:12:53 +00:00
Mikeyy
073f6f67d3 Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Mikeyy <mihovil@miho.im>
2019-06-10 19:54:19 +00:00
Danny Coates
533bfdb496
updated deps 2019-06-06 18:01:57 -07:00
Paulius
34de65d7d2 Pontoon: Update Lithuanian (lt) localization of Firefox Send
Localization authors:
- Paulius <paulius@mozilla.lt>
2019-06-06 13:13:09 +00:00
Danny Coates
209fdf34f8
Merge pull request #1348 from georapbox/issue-1332
Fixes blurry Sign in button when hovered
2019-06-05 09:33:53 -07:00
Brahim Essaidi
ba5c2a049d Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Brahim Essaidi <Essaidib2@gmail.com>
2019-06-05 11:33:42 +00:00
George Raptis
1528aa3f1b Fixes blurry Sign in button when hovered 2019-06-05 11:58:11 +03:00
Danny Coates
b1f1b9bd19
v3.0.12 2019-06-03 13:20:37 -07:00
Fjoerfoks
2963b2fc05 Pontoon: Update Frisian (fy-NL) localization of Firefox Send
Localization authors:
- Fjoerfoks <fryskefirefox@gmail.com>
2019-06-03 12:16:57 +00:00
Gwenn
e4f9cfa023 Pontoon: Update Breton (br) localization of Firefox Send
Localization authors:
- Gwenn <tornoz@laposte.net>
2019-06-03 12:16:54 +00:00
Mark Heijl
09e961219d Pontoon: Update Dutch (nl) localization of Firefox Send
Localization authors:
- Mark Heijl <markh@babelzilla.org>
2019-06-03 11:52:36 +00:00
Gwenn
b36a5f6973 Pontoon: Update Breton (br) localization of Firefox Send
Localization authors:
- Gwenn <tornoz@laposte.net>
2019-06-03 11:52:34 +00:00
Cristian Silaghi
1a36dc084e Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-06-03 10:53:39 +00:00
Björn I
c66347b3da Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-06-03 07:12:53 +00:00
Björn I
a7d0551509 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-06-03 03:32:42 +00:00
Björn I
f6f6324aa1 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-06-03 02:51:33 +00:00
Marcelo Poli
a24597695b Pontoon: Update Spanish (Argentina) (es-AR) localization of Firefox Send
Localization authors:
- Marcelo Poli <enzomatrix@gmail.com>
2019-06-02 19:11:41 +00:00
ravmn
706ac638da Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- ravmn <ravmn@ravmn.cl>
2019-06-01 23:32:20 +00:00
Selim Şumlu
d66d08f0ed Pontoon: Update Turkish (tr) localization of Firefox Send
Localization authors:
- Selim Şumlu <selim@sum.lu>
2019-06-01 23:12:28 +00:00
Michael Wolf
ab9af7fd9b Pontoon: Update Sorbian, Lower (dsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-06-01 18:51:55 +00:00
Jiri Grönroos
466a087689 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-06-01 05:53:37 +00:00
Piotr Drąg
71956739f8 Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- Piotr Drąg <piotrdrag@gmail.com>
2019-05-31 18:13:10 +00:00
Danny Coates
62689b9556
Merge pull request #1344 from mozilla/update-promo-banner
tweak promo banner to match spec'
2019-05-31 09:23:51 -07:00
Danny Coates
7d1b8e002f
a couple promo style tweaks 2019-05-31 09:18:20 -07:00
Slimane Selyan AMIRI
8c535ce50d Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-05-31 14:32:26 +00:00
John Gruen
a3bdcd8478 tweak promo banner to match spec' 2019-05-31 13:48:32 +02:00
Jim Spentzos
1e77d86e8a Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
2019-05-31 04:12:41 +00:00
Jim Spentzos
1af01b1ee3 Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
2019-05-31 03:51:26 +00:00
Balázs Meskó
eb1bcde37f Pontoon: Update Hungarian (hu) localization of Firefox Send
Localization authors:
- Balázs Meskó <meskobalazs@gmail.com>
2019-05-30 11:31:25 +00:00
avelper
8def910d61 Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Localization authors:
- avelper <avelper@mozilla-hispano.org>
2019-05-30 11:11:30 +00:00
Quế Tùng
5892532d03 Pontoon: Update Vietnamese (vi) localization of Firefox Send
Localization authors:
- Quế Tùng <best.cloney.1301@gmail.com>
2019-05-30 10:16:41 +00:00
Rhoslyn Prys
8ede5cf05c Pontoon: Update Welsh (cy) localization of Firefox Send
Localization authors:
- Rhoslyn Prys <rprys@posteo.net>
2019-05-30 08:12:25 +00:00
Danny Coates
7213fef7c3
updated deps 2019-05-29 19:27:47 -07:00
Danny Coates
d3e9bb09df
trailhead promo 2019-05-29 19:27:47 -07:00
Michael Wolf
2682aec90d Pontoon: Update Sorbian, Upper (hsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-05-29 21:12:41 +00:00
Rodrigo
0ea89a58b0 Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Localization authors:
- Rodrigo <rodrigo.mcunha@hotmail.com>
2019-05-29 21:12:39 +00:00
Marcelo Ghelman
2a2a3ad21f Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-05-29 20:52:57 +00:00
yusup.ramdani
36c73bae7b Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-29 18:51:34 +00:00
Danny Coates
f5116cee29
v3.0.11 2019-05-29 10:16:56 -07:00
Danny Coates
72ab5bdbf3
revert master logo until june 3rd 2019-05-29 10:05:31 -07:00
Michal Stanke
94f0b928ae Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Michal Stanke <mstanke@mozilla.cz>
2019-05-29 16:33:34 +00:00
G12r
5e14a0b45a Pontoon: Update Georgian (ka) localization of Firefox Send
Localization authors:
- G12r <georgianization@outlook.com>
2019-05-29 16:14:08 +00:00
Andreas Pettersson
84a382af77 Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2019-05-29 15:51:45 +00:00
Pin-guang Chen
8680dc6b3c Pontoon: Update Chinese (Taiwan) (zh-TW) localization of Firefox Send
Localization authors:
- Pin-guang Chen <petercpg@mail.moztw.org>
2019-05-29 15:31:43 +00:00
passionforlife
cf787eef9f Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2019-05-29 15:31:41 +00:00
Juraj Cigáň
a5dffdba14 Pontoon: Update Slovak (sk) localization of Firefox Send
Localization authors:
- Juraj Cigáň <kusavica@gmail.com>
2019-05-29 15:11:44 +00:00
Rok Žerdin
2dcc3730d9 Pontoon: Update Slovenian (sl) localization of Firefox Send
Localization authors:
- Rok Žerdin <zerdo90@gmail.com>
2019-05-29 14:57:31 +00:00
Francesco Lodolo
3fb3f6f77f Pontoon: Update Italian (it) localization of Firefox Send
Localization authors:
- Francesco Lodolo <flod+pontoon@mozilla.com>
2019-05-29 14:57:28 +00:00
Melo46
0a4a9f674d Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-05-29 14:57:26 +00:00
Francesco Lodolo
7e2e171f83 Pontoon: Update German (de) localization of Firefox Send
Localization authors:
- Francesco Lodolo <flod+pontoon@mozilla.com>
2019-05-29 14:57:23 +00:00
Théo Chevalier
a64bb4ac8b Pontoon: Update French (fr) localization of Firefox Send
Localization authors:
- Théo Chevalier <theo.chevalier11@gmail.com>
2019-05-29 14:57:20 +00:00
Kohei Yoshino
acab58ca1e Pontoon: Update English (Canada) (en-CA) localization of Firefox Send
Localization authors:
- Kohei Yoshino <kohei.yoshino@gmail.com>
2019-05-29 14:57:18 +00:00
clouserw-mozilla-owner
10ed88fa40
Merge pull request #1341 from mozilla/trailhead
added master logo and trailhead strings
2019-05-29 07:20:04 -07:00
Danny Coates
9b2a7dfcd7
added master logo and trailhead strings 2019-05-28 18:54:33 -07:00
Danny Coates
517f51f4f0
added line-break: anywhere; fixes #1326 2019-05-28 15:08:58 -07:00
Danny Coates
73735010ae
set account ui state on createElement. fixes #1325 2019-05-28 14:54:58 -07:00
صفا الفليج
72497b77b2 Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-05-27 18:34:16 +00:00
صفا الفليج
7c4a00ecd1 Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
2019-05-27 18:11:26 +00:00
صفا الفليج
d96cb1aec4 Pontoon: Update Arabic (ar) localization of Firefox Send
Localization authors:
- صفا الفليج <safa1996alfulaij@gmail.com>
- mohamedstarwars <mohamedstarwars@gmail.com>
2019-05-27 17:57:15 +00:00
Piotr Drąg
fc99ed584f Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- Piotr Drąg <piotrdrag@gmail.com>
- Paweł <bauerp@bauerp.info>
2019-05-27 10:32:12 +00:00
Piotr Drąg
da1ffe581b Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- Piotr Drąg <piotrdrag@gmail.com>
2019-05-27 10:11:35 +00:00
robbp
6cbbbab691 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- robbp <robbpaun@gmail.com>
2019-05-26 04:32:02 +00:00
yusup.ramdani
b91bd2b859 Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-24 09:12:50 +00:00
yusup.ramdani
14ae124ca8 Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 12:33:33 +00:00
yusup.ramdani
3bd087a66d Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 12:12:42 +00:00
yusup.ramdani
57e9fbcd26 Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 11:52:14 +00:00
yusup.ramdani
bd42445a98 Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 11:33:33 +00:00
yusup.ramdani
0e1027544c Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 10:56:55 +00:00
yusup.ramdani
c7532f3f4a Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 10:13:53 +00:00
yusup.ramdani
97e861f050 Pontoon: Update Sundanese (su) localization of Firefox Send
Localization authors:
- yusup.ramdani <yusup.ramdani@wikimedia.or.id>
2019-05-23 09:52:40 +00:00
marsf
9f3adbf6ad Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- marsf <chimantaea_mirabilis@yahoo.co.jp>
2019-05-21 01:52:19 +00:00
Rhoslyn Prys
7b4c42a56f Pontoon: Update Welsh (cy) localization of Firefox Send
Localization authors:
- Rhoslyn Prys <rprys@posteo.net>
2019-05-18 09:32:44 +00:00
Jim Spentzos
0f763ca4ec Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
2019-05-17 11:33:35 +00:00
robbp
97164a4b08 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- robbp <robbpaun@gmail.com>
2019-05-17 10:33:18 +00:00
Besnik Bleta
ee8baff557 Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2019-05-13 09:53:37 +00:00
Aman Alam
637a6d86fb Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-05-11 06:53:49 +00:00
Aman Alam
f8f200cbcd Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-05-10 14:13:11 +00:00
Aman Alam
0e4b9f425f Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-05-10 07:13:45 +00:00
Aman Alam
eb4a2c9f02 Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-05-10 06:52:40 +00:00
Aman Alam
55f3abaa1b Pontoon: Update Punjabi (pa-IN) localization of Firefox Send
Localization authors:
- Aman Alam <amanpreet.alam@gmail.com>
2019-05-09 02:34:32 +00:00
Merike Sell
bb1ee80c34 Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Merike Sell <merikes@gmail.com>
2019-05-07 20:34:14 +00:00
Merike Sell
f9edf196a2 Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Merike Sell <merikes@gmail.com>
2019-05-07 20:15:43 +00:00
Artem Polivanchuk
9bebab3f66 Pontoon: Update Ukrainian (uk) localization of Firefox Send
Localization authors:
- Artem Polivanchuk <artem@mozilla.org.ua>
2019-05-07 08:32:45 +00:00
Merike Sell
e9bf6e235b Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Merike Sell <merikes@gmail.com>
2019-05-06 20:12:30 +00:00
Merike Sell
88a3dc94d5 Pontoon: Update Estonian (et) localization of Firefox Send
Localization authors:
- Merike Sell <merikes@gmail.com>
2019-05-06 19:52:42 +00:00
Paulius
d7143ab63a Pontoon: Update Lithuanian (lt) localization of Firefox Send
Localization authors:
- Paulius <paulius@mozilla.lt>
2019-05-05 15:32:35 +00:00
Selim Şumlu
b340969cc1 Pontoon: Update Turkish (tr) localization of Firefox Send
Localization authors:
- Selim Şumlu <selim@sum.lu>
2019-05-05 13:11:33 +00:00
Mikeyy
ce0bf26b9e Pontoon: Update Croatian (hr) localization of Firefox Send
Localization authors:
- Mikeyy <mihovil@miho.im>
2019-05-05 08:52:14 +00:00
jlG
193f43ac9d Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Localization authors:
- jlG <jlg.l10n.es@gmail.com>
2019-05-04 17:52:19 +00:00
Jordi Serratosa
e376f978a2 Pontoon: Update Catalan (ca) localization of Firefox Send
Localization authors:
- Jordi Serratosa <jordis@softcatala.cat>
2019-05-04 16:32:48 +00:00
Juraj Cigáň
bd93fb66a5 Pontoon: Update Slovak (sk) localization of Firefox Send
Localization authors:
- Juraj Cigáň <kusavica@gmail.com>
2019-05-04 10:31:59 +00:00
Davide
fc79233ade Pontoon: Update Italian (it) localization of Firefox Send
Localization authors:
- Davide <dvd.forty@gmail.com>
2019-05-04 08:52:50 +00:00
Danny Coates
8263a9eaa9
updated deps 2019-05-03 17:04:26 -07:00
Juan Sián
5d02f47e41 Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Juan Sián <ajtzibsyan@yahoo.com>
2019-05-03 22:52:31 +00:00
Danny Coates
23ecb632eb added signin button color experiment. closes #1306 (#1320) 2019-05-03 13:10:56 -04:00
Danny Coates
b82177dc44
Merge pull request #1324 from mozilla/style-tweaks-for-trailhead
tweak some styles for trailhead
2019-05-03 09:59:44 -07:00
John Gruen
51296d5489 tweak some styles for trailhead 2019-05-03 18:45:36 +02:00
Danny Coates
f603f40f43 added agent to server metrics (#1321) 2019-05-03 12:25:12 -04:00
Rok Žerdin
19ac0480ee Pontoon: Update Slovenian (sl) localization of Firefox Send
Localization authors:
- Rok Žerdin <zerdo90@gmail.com>
2019-05-03 12:54:00 +00:00
Jakob Kappel
7d43f4f145 Pontoon: Update Danish (da) localization of Firefox Send
Localization authors:
- Jakob Kappel <jakobkpetersen@gmail.com>
2019-05-03 07:13:17 +00:00
Danny Coates
8f17c86611
Merge pull request #1322 from hugomiguelabreu/master
Defined retry_strategy for redis. Closes #1292
2019-05-02 15:05:35 -07:00
Hugo Abreu
f517c514d8 Defined retry_strategy for redis. Closes #1292 2019-05-02 21:56:28 +01:00
Jiri Grönroos
e2d9c0acca Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
- Lasse Liehu <lasse.liehu@iki.fi>
2019-05-02 20:52:02 +00:00
Gabriela
c3221bddf2 Pontoon: Update Spanish (Argentina) (es-AR) localization of Firefox Send
Localization authors:
- Gabriela <gmontagu@gmail.com>
2019-05-02 18:32:26 +00:00
goofy
5ac10a2057 Pontoon: Update French (fr) localization of Firefox Send
Localization authors:
- goofy <goofy@babelzilla.org>
2019-05-02 18:12:16 +00:00
Théo Chevalier
85ce14a991 Pontoon: Update French (fr) localization of Firefox Send
Localization authors:
- Théo Chevalier <theo.chevalier11@gmail.com>
2019-05-02 17:11:17 +00:00
Rhoslyn Prys
2594581965 Pontoon: Update Welsh (cy) localization of Firefox Send
Localization authors:
- Rhoslyn Prys <rprys@posteo.net>
2019-05-02 16:12:37 +00:00
Balázs Meskó
1a3968476a Pontoon: Update Hungarian (hu) localization of Firefox Send
Localization authors:
- Balázs Meskó <meskobalazs@gmail.com>
2019-05-02 15:33:15 +00:00
Ian Neal
281abfc79b Pontoon: Update English (Great Britain) (en-GB) localization of Firefox Send
Localization authors:
- Ian Neal <iann_bugzilla@blueyonder.co.uk>
2019-05-02 15:33:12 +00:00
Fauzan Alfi
6dd4a92467 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Fauzan Alfi <fauzanalfi@mozilla.web.id>
2019-05-02 14:32:29 +00:00
Alexander Slovesnik
9614c119aa Pontoon: Update Russian (ru) localization of Firefox Send
Localization authors:
- Alexander Slovesnik <unghost@mozilla-russia.org>
2019-05-02 12:53:09 +00:00
ജോയ്സ്
1e1c21a45a Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- ജോയ്സ് <joicefootball@gmail.com>
2019-05-02 12:53:04 +00:00
Fjoerfoks
8cff6f9441 Pontoon: Update Frisian (fy-NL) localization of Firefox Send
Localization authors:
- Fjoerfoks <fryskefirefox@gmail.com>
2019-05-02 11:11:24 +00:00
Mark Heijl
23c2a61567 Pontoon: Update Dutch (nl) localization of Firefox Send
Localization authors:
- Mark Heijl <markh@babelzilla.org>
2019-05-02 11:11:22 +00:00
Piotr Drąg
903cb9cc49 Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- Piotr Drąg <piotrdrag@gmail.com>
2019-05-02 09:52:00 +00:00
Quế Tùng
d4901662f8 Pontoon: Update Vietnamese (vi) localization of Firefox Send
Localization authors:
- Quế Tùng <best.cloney.1301@gmail.com>
2019-05-02 05:12:13 +00:00
passionforlife
686197be61 Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2019-05-02 02:52:26 +00:00
Pin-guang Chen
dd848f19b4 Pontoon: Update Chinese (Taiwan) (zh-TW) localization of Firefox Send
Localization authors:
- Pin-guang Chen <petercpg@mail.moztw.org>
2019-05-02 02:32:08 +00:00
Kohei Yoshino
a7d1607cb3 Pontoon: Update English (Canada) (en-CA) localization of Firefox Send
Localization authors:
- Kohei Yoshino <kohei.yoshino@gmail.com>
2019-05-02 01:32:27 +00:00
ravmn
508e252067 Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- ravmn <ravmn@ravmn.cl>
2019-05-02 00:31:50 +00:00
Pedro Burlamaqui Bendahan
2cf409ca11 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
- Pedro Burlamaqui Bendahan <pregomoraes2@gmail.com>
2019-05-02 00:31:47 +00:00
G12r
3f0fac738a Pontoon: Update Georgian (ka) localization of Firefox Send
Localization authors:
- G12r <georgianization@outlook.com>
2019-05-01 22:32:09 +00:00
Hugo
9bd14a17f9 Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Localization authors:
- Hugo <hugo.miguel.abreu@gmail.com>
- Rodrigo <rodrigo.mcunha@hotmail.com>
2019-05-01 21:11:55 +00:00
Mark Heijl
4505296b35 Pontoon: Update Dutch (nl) localization of Firefox Send
Localization authors:
- Mark Heijl <markh@babelzilla.org>
2019-05-01 18:52:22 +00:00
Björn I
5a91ba47c6 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-05-01 18:32:10 +00:00
Michael Wolf
b82e2efd33 Pontoon: Update Sorbian, Upper (hsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-05-01 18:11:50 +00:00
Michael Wolf
284676d956 Pontoon: Update Sorbian, Lower (dsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-05-01 18:11:47 +00:00
Melo46
d91edcb653 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-05-01 18:11:45 +00:00
Melo46
9ffc792dec Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-05-01 17:51:15 +00:00
Michal Stanke
7d3973a5e4 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Michal Stanke <mstanke@mozilla.cz>
2019-05-01 17:51:12 +00:00
Michael Köhler
ffc0d57576 Pontoon: Update German (de) localization of Firefox Send
Localization authors:
- Michael Köhler <michael.koehler1@gmx.de>
2019-05-01 17:32:21 +00:00
Andreas Pettersson
f28ee8ab78 Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2019-05-01 17:11:35 +00:00
Rok Žerdin
6b02a2167c Pontoon: Update Slovenian (sl) localization of Firefox Send
Localization authors:
- Rok Žerdin <zerdo90@gmail.com>
2019-05-01 17:11:32 +00:00
Théo Chevalier
c9b9c338d7 Pontoon: Update French (fr) localization of Firefox Send
Localization authors:
- Théo Chevalier <theo.chevalier11@gmail.com>
2019-05-01 16:52:18 +00:00
Joe Becher
d22d54dee0 Rename circle.yml to .circleci/config.yml
Corrected config filename and path. This should get it building correctly on CircleCI
2019-05-01 09:50:52 -07:00
Danny Coates
20b9279eec added survey dialog. closes #1307 2019-05-01 09:47:04 -07:00
Hugo Abreu
ce4157ac08 Fixed inactive scroll bar. Closes #1303 (#1317)
* Fixed inactive scroll bar. Closes #1303

* Changed Sign in button string. Closes #1309

* Changed button string id

* Reverted en-CA and en-GB changes
2019-05-01 09:39:29 -07:00
Selim Şumlu
3c74d9958f Pontoon: Update Turkish (tr) localization of Firefox Send
Localization authors:
- Selim Şumlu <selim@sum.lu>
2019-05-01 13:11:39 +00:00
Jiri Grönroos
569d110f6e Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-04-30 22:32:24 +00:00
Jim Spentzos
e69c91b5eb Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
2019-04-29 22:13:44 +00:00
Sav22999
2477b6cde8 Pontoon: Update Italian (it) localization of Firefox Send
Localization authors:
- Sav22999 <saverio.morelli@outlook.it>
2019-04-29 20:55:16 +00:00
Cristian Silaghi
8cf42a2711 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- Cristian Silaghi <cristian.silaghi@mozilla.ro>
2019-04-29 18:33:38 +00:00
Björn I
5207c3fb15 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-04-29 14:12:34 +00:00
Fjoerfoks
a166f98b66 Pontoon: Update Frisian (fy-NL) localization of Firefox Send
Localization authors:
- Fjoerfoks <fryskefirefox@gmail.com>
2019-04-29 13:12:49 +00:00
Michael Wolf
d572c44dd0 Pontoon: Update Sorbian, Lower (dsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-04-28 16:32:08 +00:00
Artem Polivanchuk
9286140b15 Pontoon: Update Ukrainian (uk) localization of Firefox Send
Localization authors:
- Artem Polivanchuk <artem@mozilla.org.ua>
2019-04-28 15:39:10 +00:00
Fjoerfoks
0b738bc152 Pontoon: Update Dutch (nl) localization of Firefox Send
Localization authors:
- Fjoerfoks <fryskefirefox@gmail.com>
2019-04-28 15:10:58 +00:00
Paulius
f06ddfd888 Pontoon: Update Lithuanian (lt) localization of Firefox Send
Localization authors:
- Paulius <paulius@mozilla.lt>
2019-04-28 08:51:50 +00:00
avelper
f10ed62310 Pontoon: Update Spanish (Spain) (es-ES) localization of Firefox Send
Localization authors:
- avelper <avelper@mozilla-hispano.org>
2019-04-28 08:32:19 +00:00
Melo46
a5c05daac5 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-04-28 03:52:37 +00:00
ravmn
a84ce0b0cf Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- ravmn <ravmn@ravmn.cl>
2019-04-28 00:32:28 +00:00
Marcelo Ghelman
adecddae77 Pontoon: Update Portuguese (Brazil) (pt-BR) localization of Firefox Send
Localization authors:
- Marcelo Ghelman <marcelo.ghelman@gmail.com>
2019-04-27 23:11:59 +00:00
Joergen
927706d67c Pontoon: Update Danish (da) localization of Firefox Send
Localization authors:
- Joergen <joergenr@stofanet.dk>
2019-04-27 21:32:13 +00:00
Victor Bychek
e70c883673 Pontoon: Update Russian (ru) localization of Firefox Send
Localization authors:
- Victor Bychek <a@bychek.ru>
2019-04-27 19:11:49 +00:00
Anish Sheela
09f583c569 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- Anish Sheela <aneesh.nl@gmail.com>
2019-04-27 16:31:52 +00:00
Balázs Meskó
6e676404a0 Pontoon: Update Hungarian (hu) localization of Firefox Send
Localization authors:
- Balázs Meskó <meskobalazs@gmail.com>
2019-04-27 16:11:59 +00:00
Piotr Drąg
daa70a61eb Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- Piotr Drąg <piotrdrag@gmail.com>
2019-04-27 14:31:17 +00:00
G12r
2ed4ad6772 Pontoon: Update Georgian (ka) localization of Firefox Send
Localization authors:
- G12r <georgianization@outlook.com>
2019-04-27 13:11:15 +00:00
Fauzan Alfi
f0a42c5c07 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Fauzan Alfi <fauzanalfi@mozilla.web.id>
2019-04-27 10:31:33 +00:00
Michal Stanke
02174c3245 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Michal Stanke <mstanke@mozilla.cz>
2019-04-27 09:52:02 +00:00
Rhoslyn Prys
8a148747bd Pontoon: Update Welsh (cy) localization of Firefox Send
Localization authors:
- Rhoslyn Prys <rprys@posteo.net>
2019-04-27 09:11:31 +00:00
Lan Glad
66750ca9ff Pontoon: Update Slovenian (sl) localization of Firefox Send
Localization authors:
- Lan Glad <upwinxp@gmail.com>
2019-04-27 08:51:40 +00:00
Andreas Pettersson
e84ec0fcb3 Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2019-04-27 07:51:40 +00:00
Michael Köhler
39edee306e Pontoon: Update German (de) localization of Firefox Send
Localization authors:
- Michael Köhler <michael.koehler1@gmx.de>
2019-04-27 07:11:14 +00:00
Quế Tùng
464fdc9873 Pontoon: Update Vietnamese (vi) localization of Firefox Send
Localization authors:
- Quế Tùng <best.cloney.1301@gmail.com>
2019-04-27 06:12:24 +00:00
Luna Jernberg
38ef8db3f1 Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Luna Jernberg <bittin@cafe8bitar.se>
2019-04-27 05:52:05 +00:00
Pin-guang Chen
3fee10c890 Pontoon: Update Chinese (Taiwan) (zh-TW) localization of Firefox Send
Localization authors:
- Pin-guang Chen <petercpg@mail.moztw.org>
2019-04-27 04:31:27 +00:00
passionforlife
3a35b2ae2a Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2019-04-27 01:11:24 +00:00
passionforlife
cff4227132 Pontoon: Update Chinese (China) (zh-CN) localization of Firefox Send
Localization authors:
- passionforlife <eloli@foxmail.com>
2019-04-26 23:32:24 +00:00
Rodrigo
b01dbdc119 Pontoon: Update Portuguese (Portugal) (pt-PT) localization of Firefox Send
Localization authors:
- Rodrigo <rodrigo.mcunha@hotmail.com>
2019-04-26 22:31:51 +00:00
Michael Wolf
62603f095e Pontoon: Update Sorbian, Upper (hsb) localization of Firefox Send
Localization authors:
- Michael Wolf <milupo@sorbzilla.de>
2019-04-26 19:12:14 +00:00
Juraj Cigáň
1e95a9122e Pontoon: Update Slovak (sk) localization of Firefox Send
Localization authors:
- Juraj Cigáň <kusavica@gmail.com>
2019-04-26 19:12:11 +00:00
Kohei Yoshino
308fd0cdcb Pontoon: Update English (Canada) (en-CA) localization of Firefox Send
Localization authors:
- Kohei Yoshino <kohei.yoshino@gmail.com>
2019-04-26 19:12:08 +00:00
Danny Coates
a4e8c0b4a3
Merge pull request #1310 from mozilla/updates
added promo string to ftl & updated deps
2019-04-26 11:49:10 -07:00
Danny Coates
e7964c03ed
added promo string to ftl & updated deps 2019-04-26 11:41:34 -07:00
Romi Hardiyanto
c800257678 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Romi Hardiyanto <romihardiyanto@gmail.com>
2019-04-25 08:11:59 +00:00
Melo46
89a3c984e7 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-04-21 07:31:53 +00:00
Anish Sheela
05d32ef9d7 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- Anish Sheela <aneesh.nl@gmail.com>
2019-04-20 12:31:50 +00:00
mujeebcpy
a2ec22a4e0 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- mujeebcpy <mujeebcpy@gmail.com>
- Anish Sheela <aneesh.nl@gmail.com>
- Kiran Johns <kiranjohns101@gmail.com>
2019-04-20 12:11:08 +00:00
Balasankar C
7ae676ce8a Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- mujeebcpy <mujeebcpy@gmail.com>
- Balasankar C <balasankarc@autistici.org>
- Kiran Johns <kiranjohns101@gmail.com>
2019-04-20 09:52:12 +00:00
Balasankar C
b0c2c329e2 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- Balasankar C <balasankarc@autistici.org>
- Kiran Johns <kiranjohns101@gmail.com>
2019-04-20 09:36:13 +00:00
Balasankar C
9c423bb435 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- Balasankar C <balasankarc@autistici.org>
2019-04-20 09:11:59 +00:00
Balasankar C
3cb6952d68 Pontoon: Update Malayalam (ml) localization of Firefox Send
Localization authors:
- Balasankar C <balasankarc@autistici.org>
2019-04-20 08:51:47 +00:00
Danny Coates
147ed4c736
Merge pull request #1299 from slootjes/master
Prevent possible download counter race condition
2019-04-19 10:37:58 -07:00
Robert
f94918bebd Prevent possible download counter race condition 2019-04-19 13:10:49 +02:00
ivan.pompa
ee45a835be Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- ivan.pompa <ivan.pompa@gmail.com>
2019-04-18 16:12:33 +00:00
Hyeonseok Shin
26ad1b8763 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Native <nativehyun@gmail.com>
- 종이상자 <lego37yoon@outlook.com>
2019-04-18 01:53:10 +00:00
Danny Coates
8b798ce36c
v3.0.10 2019-04-17 09:36:34 -07:00
Danny Coates
894ad6cb08
added locales to production 2019-04-17 09:35:50 -07:00
Danny Coates
98c4bd0f50
updated deps 2019-04-17 09:27:50 -07:00
Hyeonseok Shin
898d152810 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- 종이상자 <lego37yoon@outlook.com>
2019-04-14 11:11:25 +00:00
Melo46
9c588ed008 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-04-13 22:51:32 +00:00
Danny Coates
1da7e1c112
added overflow-hidden to file input element. fixes #1295 2019-04-11 11:08:48 -07:00
Danny Coates
19d1f8cf80
updated deps 2019-04-11 11:05:40 -07:00
Danny Coates
29f243fdda
removed old encryption key implementation 2019-04-11 10:24:29 -07:00
Lasse Liehu
bd58022b08 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Lasse Liehu <lasse.liehu@iki.fi>
2019-04-07 19:52:22 +00:00
Jim Spentzos
a6fa2c642c Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-04-06 04:53:54 +00:00
Danny Coates
890642fcff
Merge pull request #1291 from mozilla/reject-loading-unexpected-urls
Fix #1283 Prevent loading any pages other than our file:/// url resou…
2019-04-05 10:57:03 -07:00
Donovan Preston
74ecb598d2 Fix #1283 Prevent loading any pages other than our file:/// url resources and accounts.firefox.com in the webview
Also, remove debug logs.
2019-04-05 12:18:22 -04:00
Christoph Kührer
48b5d85904 Cleanup Android project (Minor refactorings, etc.) (#1244)
* (Android) Get rid of double bangs by using Kotlin view binding

Instead of holding a nullable reference to the WebView, we are now
accessing the WebView using the view binding utility of Kotlin's
Android Extensions.

Further reading:
https://kotlinlang.org/docs/tutorials/android-plugin.html

* (Android) Enable WebView debugging in debug builds

This enables debugging the app's WebView using Chrome's DevTools.
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews

* (Android) Make MainActivity.kt adhere to common Kotlin conventions

* (Android) Update dependencies and improve formatting of Gradle files

This updates the Kotlin plugin to 1.3.21 and the Gradle plugin to 3.3.2

* (Android) Remove unnecessary ConstraintLayout container

Layout files should generally have as few nested layers as possible,
because every layer affects the performance.

* (Android) Use JSONObject class to construct a JSON string

It is way safer to construct a JSON string using classes that are
meant for doing that, instead of concatenating raw strings.

* (Android) Suppress JavaScript lint warning

* (Android) Use Kotlin string templates instead of concatenating strings

* (Android) Add missing SuppressLint import
2019-04-04 15:25:25 -04:00
Danny Coates
373da3f090
Merge pull request #1290 from mozilla/call-setTranslate-on-android
Call setTranslate on android.
2019-04-04 11:55:55 -07:00
Donovan Preston
4a69ccbe51 Call setTranslate on android. 2019-04-04 14:49:01 -04:00
John Gruen
4c1496e1cd
Merge pull request #1288 from SuriyaaKudoIsc/patch-1
Replace title with Firefox Send logo
2019-04-04 19:52:06 +02:00
Danny Coates
0a243dfb52
Merge pull request #1287 from Mozilla-GitHub-Standards/master
Add Mozilla Code of Conduct
2019-04-04 10:17:59 -07:00
Jim Spentzos
79bd847042 Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-04-03 16:11:43 +00:00
Luis A. Sánchez
2fe5cad9d5 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Luis A. Sánchez <lasr21@gmail.com>
2019-04-03 15:11:35 +00:00
Hyeonseok Shin
fbde75fd66 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Native <nativehyun@gmail.com>
2019-04-03 02:32:28 +00:00
Hyeonseok Shin
24167161b1 Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- Hyeonseok Shin <hyeonseok@gmail.com>
- Native <nativehyun@gmail.com>
2019-04-03 02:12:51 +00:00
Slimane Selyan AMIRI
eda132832f Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-04-02 13:51:12 +00:00
Yassine Aït-El-Mouden
4839ff3584 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 14:31:32 +00:00
Yassine Aït-El-Mouden
de2d11cc59 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 14:11:22 +00:00
Yassine Aït-El-Mouden
95779b3243 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-04-01 13:51:31 +00:00
Danny Coates
7f76a279c3
fixed L10N_DEV option 2019-03-31 13:04:16 -07:00
Danny Coates
219b1d6806
updated deps 2019-03-31 13:04:16 -07:00
Danny Coates
efea0e5ab0
added gravatar to CSP image-src 2019-03-31 13:04:15 -07:00
Danny Coates
5d19a9d696
fixed dev android for longer file ids 2019-03-31 13:04:15 -07:00
Yassine Aït-El-Mouden
17a12e3194 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-31 01:51:33 +00:00
Yassine Aït-El-Mouden
b71265b0c5 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-31 01:11:08 +00:00
Yassine Aït-El-Mouden
4a62048d64 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 22:51:45 +00:00
Suriyaa ✌️️
acd48cc2f5
Replace title with Firefox Send logo 2019-03-30 15:47:34 +01:00
Yassine Aït-El-Mouden
364778c516 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 14:31:41 +00:00
Yassine Aït-El-Mouden
d7ca9b4f84 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 14:11:54 +00:00
Andreas Pettersson
b6350c787a Pontoon: Update Swedish (sv-SE) localization of Firefox Send
Localization authors:
- Andreas Pettersson <az@kth.se>
2019-03-30 08:31:18 +00:00
Mozilla-GitHub-Standards
ee8a672873 Add Mozilla Code of Conduct file
Fixes #1286.

_(Message COC002)_
2019-03-29 23:15:18 -07:00
Yassine Aït-El-Mouden
67b812a538 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 00:31:45 +00:00
Yassine Aït-El-Mouden
c811cbd34e Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-30 00:12:12 +00:00
Slimane Selyan AMIRI
2ed09d1fda Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:51:42 +00:00
Slimane Selyan AMIRI
557ecb196d Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:31:36 +00:00
Slimane Selyan AMIRI
88e8a234d6 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-29 21:12:23 +00:00
Jiri Grönroos
34eb0fce2a Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-29 20:11:21 +00:00
Yassine Aït-El-Mouden
995054a2cb Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 12:51:50 +00:00
Yassine Aït-El-Mouden
e70161bfb0 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 12:31:36 +00:00
Yassine Aït-El-Mouden
ebf62761bc Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:51:17 +00:00
Yassine Aït-El-Mouden
cf08b03a6b Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:31:59 +00:00
Besnik Bleta
f3be26d5f5 Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
2019-03-29 11:31:56 +00:00
Yassine Aït-El-Mouden
03c68b0c58 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 11:11:32 +00:00
Besnik Bleta
59d460e80b Pontoon: Update Albanian (sq) localization of Firefox Send
Localization authors:
- Besnik Bleta <besnik@programeshqip.org>
- wanzhi09 <wanzhi09@gmail.com>
2019-03-29 11:11:30 +00:00
Yassine Aït-El-Mouden
87f947c31d Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 00:31:36 +00:00
Yassine Aït-El-Mouden
7ff0a7654c Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-29 00:12:13 +00:00
Yassine Aït-El-Mouden
9f829e8467 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:51:35 +00:00
Yassine Aït-El-Mouden
b68762da50 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:31:33 +00:00
Yassine Aït-El-Mouden
caef279fed Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 23:12:45 +00:00
Yassine Aït-El-Mouden
0dfda7c610 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 18:32:35 +00:00
Yassine Aït-El-Mouden
5c2d9d8673 Pontoon: Update Tamazight (zgh) localization of Firefox Send
Localization authors:
- Yassine Aït-El-Mouden <yaitelmouden@outlook.com>
2019-03-28 18:11:59 +00:00
Slimane Selyan AMIRI
be51ae7ac9 Pontoon: Update Kabyle (kab) localization of Firefox Send
Localization authors:
- Slimane Selyan AMIRI <slimane.amiri@gmail.com>
2019-03-28 14:11:15 +00:00
Ian Neal
1ba6aceb1f Pontoon: Update English (Great Britain) (en-GB) localization of Firefox Send
Localization authors:
- Ian Neal <iann_bugzilla@blueyonder.co.uk>
2019-03-28 09:51:43 +00:00
Jiri Grönroos
0a3c3d8c51 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
- Lasse Liehu <lasse.liehu@iki.fi>
2019-03-27 22:51:33 +00:00
Danny Coates
38aa460a03
v3.0.9 2019-03-26 10:27:25 -07:00
Danny Coates
58b7a17680
fixed isFile for extended file id size 2019-03-26 09:58:04 -07:00
Danny Coates
1ce115c3e9
updated prod locales 2019-03-26 09:45:35 -07:00
Danny Coates
8cf3b89f91
increase file id to 8 bytes 2019-03-26 09:32:44 -07:00
p.sanroman.bengoetxea
eced5be836 Pontoon: Update Basque (eu) localization of Firefox Send
Localization authors:
- p.sanroman.bengoetxea <p.sanroman.bengoetxea@gmail.com>
- julenx <julenx@gmail.com>
2019-03-24 20:51:38 +00:00
Jiri Grönroos
bb4fa0a75c Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-24 18:51:18 +00:00
Jiri Grönroos
98b62cd1c2 Pontoon: Update Finnish (fi) localization of Firefox Send
Localization authors:
- Jiri Grönroos <jiri.gronroos@iki.fi>
2019-03-24 18:12:07 +00:00
Jim Spentzos
62461f50a5 Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-03-24 16:51:52 +00:00
Марко Костић (Marko Kostić)
1be87a531c Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 12:12:06 +00:00
Марко Костић (Marko Kostić)
f70caf814b Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 11:51:41 +00:00
Марко Костић (Marko Kostić)
a9595e501d Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 11:31:53 +00:00
Melo46
40814207ee Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-03-24 10:11:26 +00:00
Марко Костић (Marko Kostić)
1970a88ece Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 09:51:37 +00:00
Марко Костић (Marko Kostić)
a6d41e70b2 Pontoon: Update Serbian (sr) localization of Firefox Send
Localization authors:
- Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>
2019-03-24 09:32:18 +00:00
merianosnikos
549ce3281a Pontoon: Update Greek (el) localization of Firefox Send
Localization authors:
- Jim Spentzos <jimspentzos2000@gmail.com>
- merianosnikos <merianosnikos@gmail.com>
2019-03-22 00:12:17 +00:00
Danny Coates
1ec56df7ad
fixed fxa entrypoint param name... 🤦‍♂️ 2019-03-21 09:30:13 -07:00
robbp
c78899c387 Pontoon: Update Romanian (ro) localization of Firefox Send
Localization authors:
- robbp <robbpaun@gmail.com>
2019-03-21 07:32:41 +00:00
Björn I
c76fe3ac96 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-03-20 15:12:08 +00:00
Björn I
49cfd599ec Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-03-20 14:51:43 +00:00
dskmori
74c08200ad Pontoon: Update Korean (ko) localization of Firefox Send
Localization authors:
- dskmori <ghoti.fish.dsk@gmail.com>
2019-03-20 02:11:57 +00:00
Breana Gonzales
8cd5839d36 Pontoon: Update Spanish (Mexico) (es-MX) localization of Firefox Send
Localization authors:
- Breana Gonzales <breanajones@hotmail.com>
2019-03-19 14:51:41 +00:00
Danny Coates
cbd7a99e38
v3.0.8 2019-03-18 16:26:12 -07:00
Danny Coates
6a5960c254
updated CONTRIBUTORS 2019-03-18 15:38:28 -07:00
Danny Coates
b70cbd8359
Merge pull request #1259 from co16353sidak/patch-1
Updated file size limit (as of March 2019)
2019-03-18 15:33:35 -07:00
Danny Coates
ad72fa11a4
added locales to production 2019-03-18 15:26:06 -07:00
Danny Coates
cc9a5d112a
added entrypoint param to fxa auth request 2019-03-18 15:01:01 -07:00
Danny Coates
122867b926
updated webcrypto-liner 2019-03-18 12:43:20 -07:00
Michal Stanke
3f7d755070 Pontoon: Update Czech (cs) localization of Firefox Send
Localization authors:
- Michal Stanke <mstanke@mozilla.cz>
2019-03-18 18:11:34 +00:00
Danny Coates
ad9070b7c6
changed webpack output filenames to use contenthash 2019-03-17 19:21:28 -07:00
Sidak Singh Aulakh
30678b824b
Updated file size limit (as of March 2019)
The file size limit was previously marked as 2 hours, but now it supports 2.5GB (1GB for non signed in users)
2019-03-17 21:44:01 +05:30
josotrix
5dedad8ae7 Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- josotrix <josotrix@ravmn.cl>
- ravmn <ravmn@ravmn.cl>
2019-03-17 15:53:11 +00:00
victor.gonzalezro
748f8cc7f8 Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- victor.gonzalezro <victor.gonzalezro@gmail.com>
- josotrix <josotrix@ravmn.cl>
2019-03-16 19:51:52 +00:00
Victor Bychek
be9b51adbb Pontoon: Update Russian (ru) localization of Firefox Send
Localization authors:
- MytnikAA <MytnikAA@gmail.com>
- Victor Bychek <a@bychek.ru>
2019-03-16 16:32:15 +00:00
Danny Coates
7f13d4d9b6
fixed incorrect uncompressed size in zip 2019-03-16 09:19:28 -07:00
Edi Santoso
0e81ef2514 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Edi Santoso <repopamor@gmail.com>
2019-03-16 14:12:13 +00:00
Björn I
b0907095e4 Pontoon: Update Norwegian Nynorsk (nn-NO) localization of Firefox Send
Localization authors:
- Björn I. <bjorni.svindseth@yahoo.com>
2019-03-16 12:12:58 +00:00
Piotr Drąg
c4cc736cff Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- tomowoj <tomowoj@gmail.com>
- Piotr Drąg <piotrdrag@gmail.com>
- Paweł <bauerp@bauerp.info>
2019-03-16 11:18:13 +00:00
Piotr Drąg
c4118c5684 Pontoon: Update Polish (pl) localization of Firefox Send
Localization authors:
- tomowoj <tomowoj@gmail.com>
- Piotr Drąg <piotrdrag@gmail.com>
- Paweł <bauerp@bauerp.info>
2019-03-16 10:52:16 +00:00
Jakob Kappel
fad35cf8fc Pontoon: Update Danish (da) localization of Firefox Send
Localization authors:
- Jakob Kappel <jakobkpetersen@gmail.com>
2019-03-16 09:32:00 +00:00
Edi Santoso
062cbbd1f8 Pontoon: Update Indonesian (id) localization of Firefox Send
Localization authors:
- Francesco Lodolo <francesco.lodolo@mozillaitalia.org>
- Edi Santoso <repopamor@gmail.com>
2019-03-16 06:32:00 +00:00
dskmori
f200bd51d2 Pontoon: Update Japanese (ja) localization of Firefox Send
Localization authors:
- dskmori <ghoti.fish.dsk@gmail.com>
2019-03-16 02:52:18 +00:00
Enol
152616574f Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-03-15 18:52:57 +00:00
Enol
822fcb363d Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-03-15 18:32:08 +00:00
Enol
e1c6e59495 Pontoon: Update Asturian (ast) localization of Firefox Send
Localization authors:
- Enol <enolp@softastur.org>
2019-03-15 18:12:41 +00:00
Danny Coates
d42d8f8b75
v3.0.7 2019-03-15 09:40:03 -07:00
Danny Coates
ebbb1d05d2
use crypto.timingSafeEqual in hmac and ownerToken authentication 2019-03-14 22:09:34 -07:00
Melo46
67b55d1477 Pontoon: Update Interlingua (ia) localization of Firefox Send
Localization authors:
- Melo46 <melo@carmu.com>
2019-03-14 23:52:14 +00:00
Danny Coates
e3391ca823
Merge pull request #1242 from mgalicer/fix-1130
[Integration-Test] Add test to ensure that file size stays consistent
2019-03-14 14:54:37 -07:00
ravmn
0cac3bd0dc Pontoon: Update Spanish (Chile) (es-CL) localization of Firefox Send
Localization authors:
- victor.gonzalezro <victor.gonzalezro@gmail.com>
- josotrix <josotrix@ravmn.cl>
- ravmn <ravmn@ravmn.cl>
2019-03-14 21:52:00 +00:00
Juan Sián
78de0b7a22 Pontoon: Update Kaqchikel (cak) localization of Firefox Send
Localization authors:
- Juan Sián <ajtzibsyan@yahoo.com>
2019-03-14 21:51:56 +00:00
Juraj Cigáň
14308dc491 Pontoon: Update Slovak (sk) localization of Firefox Send
Localization authors:
- Juraj Cigáň <kusavica@gmail.com>
2019-03-14 21:31:50 +00:00
Danny Coates
f690e4a705
v3.0.6 2019-03-14 13:19:25 -07:00
Danny Coates
3e14d3049d
only index / route 2019-03-14 13:17:47 -07:00
Danny Coates
6a6f8b86e4
v3.0.5 2019-03-14 12:04:01 -07:00
Danny Coates
c4891c3866
fixed req.route bug when no routes match 2019-03-14 12:02:36 -07:00
marigalicer
0012dec277 [Integration-Test] Add test to ensure that file size stays consistent
fixes #1130
2019-03-13 16:03:44 -04:00
Abd ar-Rahman Hamidi
30d7ec50f3
Convert ContentLength of storage to number 2019-01-02 22:16:03 +05:00
258 changed files with 37574 additions and 21568 deletions

View file

@ -1,77 +1,48 @@
version: 2.0
jobs:
build:
docker:
- image: circleci/node:10
steps:
- checkout
- restore_cache:
key: send-build-{{ checksum "package-lock.json" }}
- run: npm install
- save_cache:
key: send-build-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: npm run build
- persist_to_workspace:
root: .
paths:
- ./dist
test:
docker:
- image: circleci/node:10-browsers
- image: circleci/node:12-browsers
steps:
- checkout
- restore_cache:
key: send-test-{{ checksum "package-lock.json" }}
- run: npm install
- save_cache:
key: send-test-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: npm ci
- run: npm run lint
- run: npm run test
- run: npm test
- store_artifacts:
path: coverage
integration_tests:
docker:
- image: circleci/node:10-browsers
- image: circleci/node:12-browsers
steps:
- checkout
- restore_cache:
key: send-int-{{ checksum "package-lock.json" }}
- run: npm install
- save_cache:
key: send-int-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: npm ci
- run:
name: Run integration test
command: ./scripts/bin/run-integration-test-circleci.sh
deploy_dev:
machine: true
docker:
- image: circleci/node:12
steps:
- checkout
- attach_workspace:
at: .
- setup_remote_docker
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:latest .
- run: docker push mozilla/send:latest
deploy_vnext:
machine: true
docker:
- image: circleci/node:12
steps:
- checkout
- attach_workspace:
at: .
- setup_remote_docker
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:vnext .
- run: docker push mozilla/send:vnext
deploy_stage:
machine: true
docker:
- image: circleci/node:12
steps:
- checkout
- attach_workspace:
at: .
- setup_remote_docker
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS
- run: docker build -t mozilla/send:$CIRCLE_TAG .
- run: docker push mozilla/send:$CIRCLE_TAG
@ -79,12 +50,6 @@ workflows:
version: 2
test_pr:
jobs:
- build:
filters:
branches:
ignore:
- master
- vnext
- test:
filters:
branches:
@ -97,25 +62,13 @@ workflows:
ignore: master
build_and_deploy_dev:
jobs:
- build:
filters:
branches:
only:
- master
- vnext
tags:
ignore: /^v.*/
- deploy_dev:
requires:
- build
filters:
branches:
only: master
tags:
ignore: /^v.*/
- deploy_vnext:
requires:
- build
filters:
branches:
only: vnext
@ -123,12 +76,6 @@ workflows:
ignore: /^v.*/
build_and_deploy_stage:
jobs:
- build:
filters:
branches:
ignore: /.*/
tags:
only: /^v.*/
- test:
filters:
branches:
@ -143,7 +90,6 @@ workflows:
only: /^v.*/
- deploy_stage:
requires:
- build
- test
- integration_tests
filters:

View file

@ -1,10 +1,8 @@
node_modules
.git
.tox
.DS_Store
firefox
assets
docs
test
coverage
.circleci
.nyc_output
.vscode
.DS_Store
coverage
docs
firefox
node_modules

View file

@ -2,5 +2,7 @@ dist
assets
firefox
coverage
android/app/build
app/locale.js
app/capabilities.js
app/qrcode.js

View file

@ -4,6 +4,7 @@ env:
extends:
- eslint:recommended
- prettier
- plugin:node/recommended
- plugin:security/recommended
@ -18,17 +19,10 @@ rules:
node/no-unsupported-features/es-syntax: off
node/no-unsupported-features/node-builtins: off
node/no-unpublished-require: off
node/no-unpublished-import: off
security/detect-non-literal-fs-filename: off
security/detect-object-injection: off
eol-last: [error, always]
eqeqeq: error
no-alert: warn
no-console: warn
no-path-concat: error
no-unused-vars: [error, {argsIgnorePattern: "^_|err|event|next|reject"}]
no-var: error
one-var: [error, never]
prefer-const: error
quotes: [error, single, {avoidEscape: true}]
require-atomic-updates: warn

4
.gitattributes vendored
View file

@ -1,2 +1,2 @@
public/locales/* linguist-documentation
docs/* linguist-documentation
public/locales/*/*.ftl linguist-documentation
docs/** linguist-documentation

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
node_modules
coverage
dist
.env
.idea
.DS_Store
.nyc_output

72
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,72 @@
stages:
- test
- release
# Build Send, run npm tests
test:
stage: test
image: "node:16-slim"
only:
- api
- branches
- chat
- merge_requests
- pushes
- schedules
- tags
- triggers
- web
before_script:
# Install dependencies
- apt-get update
- apt-get install -y git python3 build-essential libxtst6
# Prepare Chrome for puppeteer
- apt-get install -y wget gnupg
- 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 gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
- apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends
script:
- npm ci
- npm run lint
- npm test
release-docker:
stage: release
image: docker:latest
services:
- docker:dind
only:
- api
- branches
- chat
- merge_requests
- pushes
- schedules
- tags
- triggers
- web
script:
- docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
- docker buildx create --name sendBuilder
- docker buildx use sendBuilder
- |
if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then
IMAGE_NAMES="$CI_REGISTRY_IMAGE/mr:$CI_MERGE_REQUEST_IID"
elif [ "$CI_COMMIT_TAG" != "" ]; then
IMAGE_NAMES="$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG $CI_REGISTRY_IMAGE:latest"
else
IMAGE_NAMES="$CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_SHORT_SHA"
fi
- |
for image in $IMAGE_NAMES; do
docker buildx build --platform linux/amd64,linux/arm64 -t $image . --push
done
- |
echo "Container image pushed. You can pull it with";
for image in $IMAGE_NAMES; do
echo "docker pull $image"
done

View file

@ -11,3 +11,5 @@ rules:
selector-list-comma-newline-after: null
value-list-comma-newline-after: null
at-rule-no-unknown: null
# Conflicts with prettier
string-quotes: null

View file

@ -1,2 +0,0 @@
{
}

15
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,15 @@
# Community Participation Guidelines
This repository is governed by Mozilla's code of conduct and etiquette guidelines.
For more details, please read the
[Mozilla Community Participation Guidelines](https://www.mozilla.org/about/governance/policies/participation/).
## How to Report
For more information on how to report violations of the Community Participation Guidelines, please read our '[How to Report](https://www.mozilla.org/about/governance/policies/participation/reporting/)' page.
<!--
## Project Specific Etiquette
In some cases, there will be additional project etiquette i.e.: (https://bugzilla.mozilla.org/page.cgi?id=etiquette.html).
Please update for your project.
-->

View file

@ -1,98 +1,203 @@
Abd ar-Rahman Hamidi
Abdalrahman Hwoij
Abdulrash6211
Abdulrasheed Idris
Abelardo Ayala Rodríguez
Abhinav Adduri
Adaobi
Adnan Kičin
Adolfo Jayme Barrientos
Alberto Castro
Alexander Parada
Alexander Slovesnik
Alfredos-Panagiotis Damkalis
Aman Alam
Amin Mahmudian
Ander Elortondo
Andreas Pettersson
Anesu Chiodza
Anika Dorn
Anish Sheela
Arash Mousavi
Artem Polivanchuk
Ashesh Vidyut
Ashikur Rahman
Ashok kumar
Ayobamiadebayo375
Balasankar C
Bald3mar
Balázs Meskó
Belayet Hossain
Benjamin Forehand Jr
Besnik Bleta
Björn I
Bjørn I
Boopesh Mahendran
Brahim Essaidi
Brainlulz
Breana Gonzales
CLASSIFIED
Christian Elbrianno
Christoph Kührer
Christopher Ramírez
Chuck Harmston
Cloney 173741
Cláudio Esperança
Connor Ford
Cristian Silaghi
Cynthia Pereira
Daniel Thorn
Daniela Arcese
Danny Coates
David Dumas
Davide
Derek Tamsen
Dhyey Thakore
Donovan Preston
Edi Santoso
Edmund Huggett
Eduard Bopp
Elisa X
Emily
Emily Hou
Emin Mastizada
Enol
Erica
Erica Wright
Fauzan Alfi
Filip Hruška
Fjoerfoks
Francesco Lodolo
Francesco Lodolo [:flod]
Frederick Villaluna
G12r
Gabriela
Garysqo
Gautam krishna.R
George Raptis
Georgianizator
Gery Escalier
Gisela Solis
Gonçalo Matos
Gwenn
Hampus
Hmxhmx
Hrant
Hugo
Hugo Abreu
Hyeonseok Shin
Håvar Henriksen
Ian Neal
ItielMaN
Jae Hyeon Park
Jakob Kappel
Jakub Rychlý
Jamie
Jan Schloß
Jarmo
Jim Spentzos
Jiri Grönroos
Jirka Soukeník
Jobava
Joe Becher
Joe ST
Joergen
Johann-S
John Gruen
John Zonunmawi Vankal
Jon Buckley
Jon Vadillo
Jonathan Claudius
Jordi Cuevas
Jordi Serratosa
Joseph.maza
José Manuel
Juan Esteban Ajsivinac Sián
Juan Pablo
Juan Sián
Julio Gomez
Juraj Cigáň
Jwtiyar
Kerim Kalamujić
Khaled Hosny
Kim Ludvigsen
Kim YoungCheon
Kim Younggeon
Kohei Yoshino
Lan Glad
Lasse Liehu
Laurent Jouanneau
Lobodzets
LuFlo
Luis A. Sánchez
Luis Flores Martínez
Luiz Carlos de Morais
Luiz Felipe F M Costa
Luna Jernberg
Mahay Alam Khan
Manuela Silva
Marcelo Ghelman
Marcelo Poli
Marco Aurélio
Mark Heijl
Mark Liang
Mark Liang (You-Wen)
Marko Andrejić
Martijn Dekker
Marwan Mohamad
Mathieu Lecarme
Matjaž Horvat
Maykon Chagas
Melo46
Merike Sell
Michael Köhler
Michael Peter
Michael Wolf
Michal Stanke
Michal Vašíček
Miguel
Mikeyy
Milo
Miro Rauhala
Misael Hernández
Mozilla Pontoon
Mozilla-GitHub-Standards
Mozinet
Moḥend Belqasem
Muhend Belkacem
Muḥend Belqasem
Myungjae Won
Netza López
Nicholas Skinsacos
Nihad
Nihad Suljić
Niksend Mizuhara
Oscar
Paulius
Pedro Burlamaqui Bendahan
Peter deHaan
Pierre Neter
Pin-guang Chen
Piotr Drąg
Pontoon
Quentí
Quế Tùng
Rachel Tublitz
Radu Popescu
Rhoslyn Prys
RickieES
Ricky Rosario
Rimas Kudelis
Rizky Ariestiyansyah
Rob Powell
Robert
Roberto Alvarado
Rodrigo
Rodrigo Guerra
Rok Žerdin
Romi Hardiyanto
Rongjian Zhang
Ruba
Sahithi
Sairam Raavi
Sander Lepik
@ -101,57 +206,127 @@ Sara Todaro
Sav22999
Schieck :)
Selim Şumlu
Selyan Sliman Amiri
Selyan Slimane Amiri
Sidak Singh Aulakh
Slimane Amiri
Slimane Selyan AMIRI
Soumya Himanish Mohapatra
Staś Małolepszy
Suriyaa ✌️️
Tema
Thomas Dalichow
Théo Chevalier
Tiago Morais Morgado
Tim Visée
Tomer Cohen
Tomáš Zelina
Ton
Top
Tymur Faradzhev
Uccen Marzuq
Umegbewe
Varghese Thomas
Victor Bychek
Victor Davila
Victor Ibragimov
Vimal Raghubir
Vitaliy Krutko
Weihang Lo
Wiktor Furman
Wil Clouser
YFdyh000
Yassine Aït-El-Mouden
Yongmin H
You-Wen Liang (Mark)
Zhenya Tikhonov
ZiriSut
aaaaalbert
abtin
ada_okeke60
aefgh39622
alamanda
albertdcastro
alex_mayorga
ali.malek.71
ariestiyansyah
avelper
biobell2000
bulut
chilledfrogs
clouserw-mozilla-owner
dependabot[bot]
dgadelha
dskmori
ehuggett
elenatambriz
eljuno
emily-hou1
erdem cobanoglu
fcortess
gautamkrishnar
gmontagu
goofy
hello
hi
ivan.pompa
jackyzy823
jesferman1993
jlG
jnunezf96
johngruen
josotrix
jspam
julen
julenx
kenrick95
kumincir
leo.toneff
m4hdi.pdroid
mail
manuel padilla sanchez
manxmensch
marigalicer
marsf
merianosnikos
minvs1
mirzet.omerovic.1992
mujeebcpy
okyanusoz
p.sanroman.bengoetxea
passionforlife
paul.trevor
pyup.io bot
ravmn
rcmainak
reza.habibi2008
rgpublic
risger
robbp
ruikunai
savemore99.sm
sergio
shamanchic2011
shikhar-scs
siparon
skystar-p
stripTM
sugabelly
tatalmondmush
tiagomoraismorgado
timvisee
victor.gonzalezro
xcffl
ybouhamam
yoshimitsu002
yusup.ramdani
zankomhamad
Μιχάλης
Марко Костић (Marko Kostić)
Ратко Вујановић
صفا الفليج
వీవెన్
ജോയ്സ്
张无忌
新垣结衣松冈茉优长泽雅美门胁麦上野树里石原里美
莫非前世那一眼

View file

@ -1,17 +1,73 @@
FROM node:10 AS builder
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
COPY package*.json /app/
WORKDIR /app
RUN npm install --production
##
# Send
#
# License https://gitlab.com/timvisee/send/blob/master/LICENSE
##
# Build project
FROM node:16.13-alpine3.13 AS builder
RUN set -x \
# Change node uid/gid
&& apk --no-cache add shadow \
&& groupmod -g 1001 node \
&& usermod -u 1001 -g 1001 node
RUN set -x \
# Add user
&& addgroup --gid 1000 app \
&& adduser --disabled-password \
--gecos '' \
--ingroup app \
--home /app \
--uid 1000 \
app
COPY --chown=app:app . /app
FROM node:10-slim
RUN addgroup --gid 10001 app && adduser --disabled-password --gecos '' --gid 10001 --home /app --uid 10001 app
USER app
WORKDIR /app
COPY --chown=app:app --from=builder /app .
COPY --chown=app:app . .
RUN set -x \
# Build
&& PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm ci \
&& npm run build
# Main image
FROM node:16.13-alpine3.13
RUN set -x \
# Change node uid/gid
&& apk --no-cache add shadow \
&& groupmod -g 1001 node \
&& usermod -u 1001 -g 1001 node
RUN set -x \
# Add user
&& addgroup --gid 1000 app \
&& adduser --disabled-password \
--gecos '' \
--ingroup app \
--home /app \
--uid 1000 \
app
USER app
WORKDIR /app
COPY --chown=app:app package*.json ./
COPY --chown=app:app app app
COPY --chown=app:app common common
COPY --chown=app:app public/locales public/locales
COPY --chown=app:app server server
COPY --chown=app:app --from=builder /app/dist dist
RUN npm ci --production && npm cache clean --force
RUN mkdir -p /app/.config/configstore
RUN ln -s dist/version.json version.json
ENV PORT=1443
EXPOSE $PORT
EXPOSE ${PORT}
CMD ["node", "server/bin/prod.js"]

110
README.md
View file

@ -1,8 +1,59 @@
# Firefox Send
# [![Send](./assets/icon-64x64.png)](https://gitlab.com/timvisee/send/) Send
[![CircleCI](https://img.shields.io/circleci/project/github/mozilla/send.svg)](https://circleci.com/gh/mozilla/send)
[![Build status on GitLab CI][gitlab-ci-master-badge]][gitlab-ci-link]
[![Latest release][release-badge]][release-link]
[![Docker image][docker-image-badge]][docker-image-link]
[![Project license][repo-license-badge]](LICENSE)
**Docs:** [FAQ](docs/faq.md), [Encryption](docs/encryption.md), [Build](docs/build.md), [Docker](docs/docker.md), [Metrics](docs/metrics.md), [More](docs/)
[docker-image-badge]: https://img.shields.io/badge/docker-latest-blue.svg
[docker-image-link]: https://gitlab.com/timvisee/send/container_registry/eyJuYW1lIjoidGltdmlzZWUvc2VuZCIsInRhZ3NfcGF0aCI6Ii90aW12aXNlZS9zZW5kL3JlZ2lzdHJ5L3JlcG9zaXRvcnkvMTQxODUwNC90YWdzP2Zvcm1hdD1qc29uIiwiaWQiOjE0MTg1MDQsImNsZWFudXBfcG9saWN5X3N0YXJ0ZWRfYXQiOm51bGx9
[gitlab-ci-link]: https://gitlab.com/timvisee/send/pipelines
[gitlab-ci-master-badge]: https://gitlab.com/timvisee/send/badges/master/pipeline.svg
[release-badge]: https://img.shields.io/github/v/tag/timvisee/send
[release-link]: https://gitlab.com/timvisee/send/-/tags
[repo-license-badge]: https://img.shields.io/github/license/timvisee/send.svg
A fork of Mozilla's [Firefox Send][mozilla-send].
Mozilla discontinued Send, this fork is a community effort to keep the project
up-to-date and alive.
- Forked [at][fork-commit] Mozilla's last publicly hosted version
- _Mozilla_ & _Firefox_ branding [is][remove-branding-pr] removed so you can legally self-host
- Kept compatible with [`ffsend`][ffsend] (CLI for Send)
- Dependencies have been updated
- Mozilla's [changes][mozilla-patches] since the fork have been selectively [merged][mozilla-patches-pr]
- Mozilla's experimental report feature, download tokens, trust warnings and FxA changes are not included
Find an up-to-date Docker image here: [docs/docker.md](docs/docker.md)
The original project by Mozilla can be found [here][mozilla-send].
The [`mozilla-master`][branch-mozilla-master] branch holds the `master` branch
as left by Mozilla.
The [`send-v3`][branch-send-v3] branch holds the commit tree of Mozilla's last
publicly hosted version, which this fork is based on.
The [`send-v4`][branch-send-v4] branch holds the commit tree of Mozilla's last
experimental version which was still a work in progress (featuring file
reporting, download tokens, trust warnings and FxA changes), this has
selectively been merged into this fork.
Please consider to [donate][donate] to allow me to keep working on this.
Thanks [Mozilla][mozilla] for building this amazing tool!
[branch-mozilla-master]: https://gitlab.com/timvisee/send/-/tree/mozilla-master
[branch-send-v3]: https://gitlab.com/timvisee/send/-/tree/send-v3
[branch-send-v4]: https://gitlab.com/timvisee/send/-/tree/send-v4
[donate]: https://timvisee.com/donate
[ffsend]: https://github.com/timvisee/ffsend
[fork-commit]: https://gitlab.com/timvisee/send/-/commit/3e9be676413a6e1baaf6a354c180e91899d10bec
[mozilla-patches-pr]: https://gitlab.com/timvisee/send/-/merge_requests/3
[mozilla-patches]: https://gitlab.com/timvisee/send/-/compare/3e9be676413a6e1baaf6a354c180e91899d10bec...mozilla-master
[mozilla-send]: https://github.com/mozilla/send
[mozilla]: https://mozilla.org/
[remove-branding-pr]: https://gitlab.com/timvisee/send/-/merge_requests/2
---
**Docs:** [FAQ](docs/faq.md), [Encryption](docs/encryption.md), [Build](docs/build.md), [Docker](docs/docker.md), [More](docs/)
---
@ -15,8 +66,9 @@
* [Configuration](#configuration)
* [Localization](#localization)
* [Contributing](#contributing)
* [Testing](#testing)
* [Android](#android)
* [Instances](#instances)
* [Deployment](#deployment)
* [Clients](#clients)
* [License](#license)
---
@ -29,22 +81,22 @@ A file sharing experiment which allows you to send encrypted files to other user
## Requirements
- [Node.js 10.0+](https://nodejs.org/)
- [Node.js 16.x](https://nodejs.org/)
- [Redis server](https://redis.io/) (optional for development)
- [AWS S3](https://aws.amazon.com/s3/) or compatible service. (optional)
- [AWS S3](https://aws.amazon.com/s3/) or compatible service (optional)
---
## Development
To start an ephemeral development server run:
To start an ephemeral development server, run:
```sh
npm install
npm start
```
Then browse to http://localhost:8080
Then, browse to http://localhost:8080
---
@ -69,31 +121,45 @@ The server is configured with environment variables. See [server/config.js](serv
## Localization
Firefox Send localization is managed via [Pontoon](https://pontoon.mozilla.org/projects/test-pilot-firefox-send/), not direct pull requests to the repository. If you want to fix a typo, add a new language, or simply know more about localization, please get in touch with the [existing localization team](https://pontoon.mozilla.org/teams/) for your language or Mozillas [l10n-drivers](https://wiki.mozilla.org/L10n:Mozilla_Team#Mozilla_Corporation) for guidance.
see also [docs/localization.md](docs/localization.md)
See: [docs/localization.md](docs/localization.md)
---
## Contributing
Pull requests are always welcome! Feel free to check out the list of ["good first issues"](https://github.com/mozilla/send/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
Pull requests are always welcome! Feel free to check out the list of "good first issues" (to be implemented).
---
## Testing
## Instances
| ENVIRONMENT | URL
|-------------|-----
| Production | <https://send.firefox.com/>
| Stage | <https://stage.send.nonprod.cloudops.mozgcp.net/>
| Development | <https://send2.dev.lcip.org/>
Find a list of public instances here: https://github.com/timvisee/send-instances/
---
## Android
## Deployment
The android implementation is contained in the `android` directory, and can be viewed locally for easy testing and editing by running `ANDROID=1 npm start` and then visiting <http://localhost:8080>. CSS and image files are located in the `android/app/src/main/assets` directory.
See: [docs/deployment.md](docs/deployment.md)
Docker quickstart: [docs/docker.md](docs/docker.md)
AWS example using Ubuntu Server `20.04`: [docs/AWS.md](docs/AWS.md)
---
## Clients
- Web: _this repository_
- Command-line: [`ffsend`](https://github.com/timvisee/ffsend)
- Android: _see [Android](#android) section_
- Thunderbird: [FileLink provider for Send](https://addons.thunderbird.net/thunderbird/addon/filelink-provider-for-send/)
#### Android
The android implementation is contained in the `android` directory,
and can be viewed locally for easy testing and editing by running `ANDROID=1 npm
start` and then visiting <http://localhost:8080>. CSS and image files are
located in the `android/app/src/main/assets` directory.
---
@ -101,4 +167,6 @@ The android implementation is contained in the `android` directory, and can be v
[Mozilla Public License Version 2.0](LICENSE)
[qrcode.js](https://github.com/kazuhikoarase/qrcode-generator) licensed under MIT
---

View file

@ -1,11 +1,9 @@
/* global window, navigator */
import 'fluent-intl-polyfill';
import 'intl-pluralrules';
import choo from 'choo';
import html from 'choo/html';
import Raven from 'raven-js';
import * as Sentry from '@sentry/browser';
import { setApiUrlPrefix, getConstants } from '../app/api';
import metrics from '../app/metrics';
//import assets from '../common/assets';
import Archive from '../app/archive';
import Header from '../app/ui/header';
@ -19,6 +17,8 @@ import share from './pages/share';
import preferences from './pages/preferences';
import error from './pages/error';
import { getTranslator } from '../app/locale';
import { setTranslate } from '../app/utils';
import { delay } from '../app/utils';
if (navigator.userAgent === 'Send Android') {
@ -51,7 +51,7 @@ function body(main) {
const menu = html`<a
id="hamburger"
class="absolute pin-t pin-r z-50"
class="absolute top-0 right-0 z-50"
href="#"
onclick="${clickPreferences}"
>
@ -59,9 +59,7 @@ function body(main) {
</a>`;
*/
return html`
<body
class="flex flex-col items-center font-sans bg-grey-lightest h-screen"
>
<body class="flex flex-col items-center font-sans bg-grey-10 h-screen">
${state.cache(Header, 'header').render()} ${main(state, emit)}
</body>
`;
@ -69,20 +67,25 @@ function body(main) {
}
(async function start() {
const translate = await getTranslator('en-US');
const { LIMITS, DEFAULTS } = await getConstants();
setTranslate(translate);
const { LIMITS, WEB_UI, DEFAULTS } = await getConstants();
app.use(state => {
state.LIMITS = LIMITS;
state.WEB_UI = WEB_UI;
state.DEFAULTS = DEFAULTS;
state.translate = translate;
state.capabilities = {
account: true
}; //TODO
state.archive = new Archive([], DEFAULTS.EXPIRE_SECONDS);
state.archive = new Archive(
[],
DEFAULTS.EXPIRE_SECONDS,
DEFAULTS.DOWNLOADS
);
state.storage = storage;
state.user = new User(storage, LIMITS);
state.raven = Raven;
state.sentry = Sentry;
});
app.use(metrics);
app.route('/', body(home));
app.route('/upload', upload);
app.route('/share/:id', share);

View file

@ -1,7 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
@ -31,7 +29,7 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.github.delight-im:Android-AdvancedWebView:v3.0.0'
implementation "org.mozilla.components:service-firefox-accounts:${rootProject.ext.android_components_version}"
implementation "org.mozilla.components:service-firefox-accounts:$android_components_version"
}
task generateAndLinkBundle(type: Exec, description: 'Generate the android.js bundle and link it into the assets directory') {

View file

@ -1,39 +1,39 @@
package org.mozilla.firefoxsend
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import im.delight.android.webview.AdvancedWebView
import android.graphics.Bitmap
import android.content.Intent
import android.annotation.SuppressLint
import android.content.ComponentName
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.webkit.WebView
import android.webkit.WebMessage
import android.util.Log
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Base64
import android.util.Log
import android.view.View
import android.webkit.ConsoleMessage
import android.webkit.JavascriptInterface
import android.webkit.WebChromeClient
import android.webkit.*
import im.delight.android.webview.AdvancedWebView
import kotlinx.android.synthetic.main.activity_main.*
import mozilla.components.service.fxa.Config
import mozilla.components.service.fxa.FirefoxAccount
import mozilla.components.service.fxa.Profile
import mozilla.components.service.fxa.FxaResult
import org.json.JSONObject
internal class LoggingWebChromeClient : WebChromeClient() {
override fun onConsoleMessage(cm: ConsoleMessage): Boolean {
Log.w("CONTENT", String.format("%s @ %d: %s",
Log.d(TAG, String.format("%s @ %d: %s",
cm.message(), cm.lineNumber(), cm.sourceId()))
return true
}
companion object {
private const val TAG = "CONTENT"
}
}
class WebAppInterface(private val mContext: MainActivity) {
@JavascriptInterface
fun beginOAuthFlow() {
mContext.beginOAuthFlow();
mContext.beginOAuthFlow()
}
@JavascriptInterface
@ -43,176 +43,184 @@ class WebAppInterface(private val mContext: MainActivity) {
}
class MainActivity : AppCompatActivity(), AdvancedWebView.Listener {
private var mWebView: AdvancedWebView? = null
private var mToShare: String? = null
private var mToCall: String? = null
private var mAccount: FirefoxAccount? = null
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews
// WebView.setWebContentsDebuggingEnabled(true); // TODO only dev builds
WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG)
webView.apply {
setListener(this@MainActivity, this@MainActivity)
addJavascriptInterface(WebAppInterface(this@MainActivity), JS_INTERFACE_NAME)
setLayerType(View.LAYER_TYPE_HARDWARE, null)
webChromeClient = LoggingWebChromeClient()
mWebView = findViewById<WebView>(R.id.webview) as AdvancedWebView
mWebView!!.setListener(this, this)
mWebView!!.setWebChromeClient(LoggingWebChromeClient())
mWebView!!.addJavascriptInterface(WebAppInterface(this), "Android")
mWebView!!.setLayerType(View.LAYER_TYPE_HARDWARE, null);
settings.apply {
userAgentString = "Send Android"
allowUniversalAccessFromFileURLs = true
javaScriptEnabled = true
}
}
val webSettings = mWebView!!.getSettings()
webSettings.setUserAgentString("Send Android")
webSettings.setAllowUniversalAccessFromFileURLs(true)
webSettings.setJavaScriptEnabled(true)
val intent = getIntent()
val action = intent.getAction()
val type = intent.getType()
if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.equals("text/plain")) {
val type = intent.type
if (Intent.ACTION_SEND == intent.action && type != null) {
if (type == "text/plain") {
val sharedText = intent.getStringExtra(Intent.EXTRA_TEXT)
Log.w("INTENT", "text/plain " + sharedText)
// Log.d(TAG_INTENT, "text/plain $sharedText")
mToShare = "data:text/plain;base64," + Base64.encodeToString(sharedText.toByteArray(), 16).trim()
} else if (type.startsWith("image/")) {
val imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as Uri
Log.w("INTENT", "image/ " + imageUri)
// Log.d(TAG_INTENT, "image/ $imageUri")
mToShare = "data:text/plain;base64," + Base64.encodeToString(imageUri.path.toByteArray(), 16).trim()
}
}
mWebView!!.loadUrl("file:///android_asset/android.html")
webView.loadUrl("file:///android_asset/android.html")
}
fun beginOAuthFlow() {
Config.release().then(fun (value: Config): FxaResult<Unit> {
Config.release().then { value ->
mAccount = FirefoxAccount(value, "20f7931c9054d833", "https://send.firefox.com/fxa/android-redirect.html")
mAccount?.beginOAuthFlow(arrayOf("profile", "https://identity.mozilla.com/apps/send"), true)?.then(fun (url: String): FxaResult<Unit> {
Log.w("CONFIG", "GOT A URL " + url)
this@MainActivity.runOnUiThread({
mWebView!!.loadUrl(url)
})
return FxaResult.fromValue(Unit)
})
Log.w("CONFIG", "CREATED FIREFOXACCOUNT")
return FxaResult.fromValue(Unit)
})
mAccount?.beginOAuthFlow(arrayOf("profile", "https://identity.mozilla.com/apps/send"), true)
?.then { url ->
// Log.d(TAG_CONFIG, "GOT A URL $url")
this@MainActivity.runOnUiThread {
webView.loadUrl(url)
}
FxaResult.fromValue(Unit)
}
// Log.d(TAG_CONFIG, "CREATED FIREFOXACCOUNT")
FxaResult.fromValue(Unit)
}
}
fun shareUrl(url: String) {
val shareIntent = Intent()
shareIntent.action = Intent.ACTION_SEND
shareIntent.type = "text/plain"
shareIntent.putExtra(Intent.EXTRA_TEXT, url)
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, url)
}
val components = arrayOf(ComponentName(applicationContext, MainActivity::class.java))
val chooser = Intent.createChooser(shareIntent, "")
chooser.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, arrayOf(ComponentName(applicationContext, MainActivity::class.java)))
.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, components)
startActivity(chooser)
}
@SuppressLint("NewApi")
override fun onResume() {
super.onResume()
mWebView!!.onResume()
// ...
webView.onResume()
}
@SuppressLint("NewApi")
override fun onPause() {
mWebView!!.onPause()
// ...
webView.onPause()
super.onPause()
}
override fun onDestroy() {
mWebView!!.onDestroy()
// ...
webView.onDestroy()
super.onDestroy()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
super.onActivityResult(requestCode, resultCode, intent)
mWebView!!.onActivityResult(requestCode, resultCode, intent)
// ...
webView.onActivityResult(requestCode, resultCode, intent)
}
override fun onBackPressed() {
if (!mWebView!!.onBackPressed()) {
if (!webView.onBackPressed()) {
return
}
// ...
super.onBackPressed()
}
override fun onPageStarted(url: String, favicon: Bitmap?) {
if (url.startsWith("https://send.firefox.com/fxa/android-redirect.html")) {
// We load this here so the user doesn't see the android-redirect.html page
mWebView!!.loadUrl("file:///android_asset/android.html")
webView.loadUrl("file:///android_asset/android.html")
val parsed = Uri.parse(url)
val code = parsed.getQueryParameter("code")
val state = parsed.getQueryParameter("state")
code?.let { code ->
state?.let { state ->
val uri = Uri.parse(url)
uri.getQueryParameter("code")?.let { code ->
uri.getQueryParameter("state")?.let { state ->
mAccount?.completeOAuthFlow(code, state)?.whenComplete { info ->
//displayAndPersistProfile(code, state)
val profile = mAccount?.getProfile(false)?.then(fun (profile: Profile): FxaResult<Unit> {
val accessToken = info.accessToken
val keys = info.keys
val avatar = profile.avatar
val displayName = profile.displayName
val email = profile.email
val uid = profile.uid
val toPass = "{\"accessToken\": \"${accessToken}\", \"keys\": '${keys}', \"avatar\": \"${avatar}\", \"displayName\": \"${displayName}\", \"email\": \"${email}\", \"uid\": \"${uid}\"}"
mToCall = "finishLogin(${toPass})"
this@MainActivity.runOnUiThread({
mAccount?.getProfile(false)?.then { profile ->
val profileJsonPayload = JSONObject()
.put("accessToken", info.accessToken)
.put("keys", info.keys)
.put("avatar", profile.avatar)
.put("displayName", profile.displayName)
.put("email", profile.email)
.put("uid", profile.uid).toString()
mToCall = "finishLogin($profileJsonPayload)"
this@MainActivity.runOnUiThread {
// Clear the history so that the user can't use the back button to see broken pages
// that were inserted into the history by the login process.
mWebView!!.clearHistory()
webView.clearHistory()
// We also reload this here because we need to make sure onPageFinished runs after mToCall has been set.
// We can't guarantee that onPageFinished wasn't already called at this point.
mWebView!!.loadUrl("file:///android_asset/android.html")
})
return FxaResult.fromValue(Unit)
})
webView.loadUrl("file:///android_asset/android.html")
}
FxaResult.fromValue(Unit)
}
}
}
}
Log.w("MAIN", "onPageStarted");
}
if (!url.startsWith("file:///android_asset/") && !url.startsWith("https://accounts.firefox.com/")) {
// Don't allow loading anything other than the app in our webview
// It should be possible to do this with shouldOverrideUrlLoading
// but it didn't seem to be working, so this works as a hack.
webView.loadUrl("file:///android_asset/android.html")
Log.d(TAG_MAIN, "BAD URL " + url)
} else {
// Log.d(TAG_MAIN, "onPageStarted " + url)
}
}
override fun onPageFinished(url: String) {
Log.w("MAIN", "onPageFinished")
// Log.d(TAG_MAIN, "onPageFinished")
if (mToShare != null) {
Log.w("INTENT", mToShare)
// Log.d(TAG_INTENT, mToShare)
mWebView?.postWebMessage(WebMessage(mToShare), Uri.EMPTY)
webView.postWebMessage(WebMessage(mToShare), Uri.EMPTY)
mToShare = null
}
if (mToCall != null) {
this@MainActivity.runOnUiThread({
mWebView?.evaluateJavascript(mToCall, fun (value: String) {
this@MainActivity.runOnUiThread {
webView.evaluateJavascript(mToCall) {
mToCall = null
})
})
}
}
}
}
override fun onPageError(errorCode: Int, description: String, failingUrl: String) {
Log.w("MAIN", "onPageError " + description)
Log.d(TAG_MAIN, "onPageError($errorCode, $description, $failingUrl)")
}
override fun onDownloadRequested(url: String, suggestedFilename: String, mimeType: String, contentLength: Long, contentDisposition: String, userAgent: String) {
Log.w("MAIN", "onDownloadRequested")
override fun onDownloadRequested(url: String,
suggestedFilename: String,
mimeType: String,
contentLength: Long,
contentDisposition: String,
userAgent: String) {
// Log.d(TAG_MAIN, "onDownloadRequested")
}
override fun onExternalPageRequest(url: String) {
Log.w("MAIN", "onExternalPageRequest")
// Log.d(TAG_MAIN, "onExternalPageRequest($url)")
}
companion object {
private const val TAG_MAIN = "MAIN"
private const val TAG_INTENT = "INTENT"
private const val TAG_CONFIG = "CONFIG"
private const val JS_INTERFACE_NAME = "Android"
}
}

View file

@ -1,13 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<im.delight.android.webview.AdvancedWebView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<im.delight.android.webview.AdvancedWebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>
tools:context=".MainActivity" />

View file

@ -8,20 +8,15 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.20"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21"
}
}
allprojects {
repositories {
google()
maven {
url "https://maven.mozilla.org/maven2"
}
maven { url "https://maven.mozilla.org/maven2" }
jcenter()
maven { url "https://jitpack.io" }
}

View file

@ -25,7 +25,7 @@ module.exports = function(state, emit) {
let content = '';
let button = html`
<div
class="bg-blue rounded-full m-4 flex items-center justify-center shadow-lg"
class="bg-blue-50 rounded-full m-4 flex items-center justify-center shadow-lg"
style="width: 56px; height: 56px"
onclick="${onclick}"
>
@ -42,11 +42,7 @@ module.exports = function(state, emit) {
content =
archives.length < 1
? intro(state)
: list(
archives,
'list-reset h-full overflow-y-auto w-full',
'mb-3 w-full'
);
: list(archives, 'h-full overflow-y-auto w-full', 'mb-3 w-full');
}
return html`
@ -57,7 +53,7 @@ module.exports = function(state, emit) {
>
${content}
</section>
<div class="fixed pin-r pin-b z-20">
<div class="fixed right-0 bottom-0 z-20">
${button}
<input
id="file-upload"

View file

@ -12,7 +12,7 @@ export default function initialState(state, emitter) {
getAsset(name) {
return `${state.prefix}/${name}`;
},
raven: {
sentry: {
captureException: e => {
console.error('ERROR ' + e + ' ' + e.stack);
}

View file

@ -11,6 +11,15 @@ if (!fileProtocolWssUrl) {
fileProtocolWssUrl = 'wss://send.firefox.com/api/ws';
}
export class ConnectionError extends Error {
constructor(cancelled, duration, size) {
super(cancelled ? '0' : 'connection closed');
this.cancelled = cancelled;
this.duration = duration;
this.size = size;
}
}
export function setFileProtocolWssUrl(url) {
localStorage && localStorage.setItem('wssURL', url);
fileProtocolWssUrl = url;
@ -34,7 +43,7 @@ function post(obj, bearerToken) {
'Content-Type': 'application/json'
};
if (bearerToken) {
h['Authentication'] = `Bearer ${bearerToken}`;
h['Authorization'] = `Bearer ${bearerToken}`;
}
return {
method: 'POST',
@ -52,7 +61,10 @@ async function fetchWithAuth(url, params, keychain) {
const result = {};
params = params || {};
const h = await keychain.authHeader();
params.headers = new Headers({ Authorization: h });
params.headers = new Headers({
Authorization: h,
'Content-Type': 'application/json'
});
const response = await fetch(url, params);
result.response = response;
result.ok = response.ok;
@ -137,17 +149,25 @@ export async function setPassword(id, owner_token, keychain) {
}
function asyncInitWebSocket(server) {
return new Promise(resolve => {
return new Promise((resolve, reject) => {
try {
const ws = new WebSocket(server);
ws.onopen = () => {
resolve(ws);
};
ws.addEventListener('open', () => resolve(ws), { once: true });
} catch (e) {
reject(new ConnectionError(false));
}
});
}
function listenForResponse(ws, canceller) {
return new Promise((resolve, reject) => {
function handleClose(event) {
// a 'close' event before a 'message' event means the request failed
ws.removeEventListener('message', handleMessage);
reject(new ConnectionError(canceller.cancelled));
}
function handleMessage(msg) {
ws.removeEventListener('close', handleClose);
try {
const response = JSON.parse(msg.data);
if (response.error) {
@ -156,13 +176,11 @@ function listenForResponse(ws, canceller) {
resolve(response);
}
} catch (e) {
ws.close();
canceller.cancelled = true;
canceller.error = e;
reject(e);
}
}
ws.addEventListener('message', handleMessage, { once: true });
ws.addEventListener('close', handleClose, { once: true });
});
}
@ -176,6 +194,8 @@ async function upload(
onprogress,
canceller
) {
let size = 0;
const start = Date.now();
const host = window.location.hostname;
const port = window.location.port;
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
@ -203,31 +223,41 @@ async function upload(
const reader = stream.getReader();
let state = await reader.read();
let size = 0;
while (!state.done) {
const buf = state.value;
if (canceller.cancelled) {
throw canceller.error;
ws.close();
}
if (ws.readyState !== WebSocket.OPEN) {
break;
}
const buf = state.value;
ws.send(buf);
onprogress(size);
size += buf.length;
state = await reader.read();
while (ws.bufferedAmount > ECE_RECORD_SIZE * 2) {
while (
ws.bufferedAmount > ECE_RECORD_SIZE * 2 &&
ws.readyState === WebSocket.OPEN &&
!canceller.cancelled
) {
await delay();
}
}
const footer = new Uint8Array([0]);
ws.send(footer);
if (ws.readyState === WebSocket.OPEN) {
ws.send(new Uint8Array([0])); //EOF
}
await completedResponse;
ws.close();
uploadInfo.duration = Date.now() - start;
return uploadInfo;
} catch (e) {
ws.close(4000);
e.size = size;
e.duration = Date.now() - start;
throw e;
} finally {
if (![WebSocket.CLOSED, WebSocket.CLOSING].includes(ws.readyState)) {
ws.close();
}
}
}
@ -244,7 +274,6 @@ export function uploadWs(
return {
cancel: function() {
canceller.error = new Error(0);
canceller.cancelled = true;
},
@ -284,7 +313,7 @@ async function downloadS(id, keychain, signal) {
return response.body;
}
async function tryDownloadStream(id, keychain, signal, tries = 1) {
async function tryDownloadStream(id, keychain, signal, tries = 2) {
try {
const result = await downloadS(id, keychain, signal);
return result;
@ -306,18 +335,19 @@ export function downloadStream(id, keychain) {
}
return {
cancel,
result: tryDownloadStream(id, keychain, controller.signal, 2)
result: tryDownloadStream(id, keychain, controller.signal)
};
}
//////////////////
function download(id, keychain, onprogress, canceller) {
async function download(id, keychain, onprogress, canceller) {
const auth = await keychain.authHeader();
const xhr = new XMLHttpRequest();
canceller.oncancel = function() {
xhr.abort();
};
return new Promise(async function(resolve, reject) {
return new Promise(function(resolve, reject) {
xhr.addEventListener('loadend', function() {
canceller.oncancel = function() {};
const authHeader = xhr.getResponseHeader('WWW-Authenticate');
@ -337,7 +367,6 @@ function download(id, keychain, onprogress, canceller) {
onprogress(event.loaded);
}
});
const auth = await keychain.authHeader();
xhr.open('get', getApiUrl(`/api/download/blob/${id}`));
xhr.setRequestHeader('Authorization', auth);
xhr.responseType = 'blob';
@ -346,7 +375,7 @@ function download(id, keychain, onprogress, canceller) {
});
}
async function tryDownload(id, keychain, onprogress, canceller, tries = 1) {
async function tryDownload(id, keychain, onprogress, canceller, tries = 2) {
try {
const result = await download(id, keychain, onprogress, canceller);
return result;
@ -367,7 +396,7 @@ export function downloadFile(id, keychain, onprogress) {
}
return {
cancel,
result: tryDownload(id, keychain, onprogress, canceller, 2)
result: tryDownload(id, keychain, onprogress, canceller)
};
}
@ -391,17 +420,6 @@ export async function setFileList(bearerToken, kid, data) {
return response.ok;
}
export function sendMetrics(blob) {
if (!navigator.sendBeacon) {
return;
}
try {
navigator.sendBeacon(getApiUrl('/api/metrics'), blob);
} catch (e) {
console.error(e);
}
}
export async function getConstants() {
const response = await fetch(getApiUrl('/config'));

View file

@ -14,11 +14,12 @@ function isDupe(newFile, array) {
}
export default class Archive {
constructor(files = [], defaultTimeLimit = 86400) {
constructor(files = [], defaultTimeLimit = 86400, defaultDownloadLimit = 1) {
this.files = Array.from(files);
this.defaultTimeLimit = defaultTimeLimit;
this.defaultDownloadLimit = defaultDownloadLimit;
this.timeLimit = defaultTimeLimit;
this.dlimit = 1;
this.dlimit = defaultDownloadLimit;
this.password = null;
}
@ -76,7 +77,7 @@ export default class Archive {
clear() {
this.files = [];
this.dlimit = 1;
this.dlimit = this.defaultDownloadLimit;
this.timeLimit = this.defaultTimeLimit;
this.password = null;
}

View file

@ -1,5 +1,5 @@
/* global AUTH_CONFIG LOCALE */
import { browserName } from './utils';
/* global AUTH_CONFIG */
import { browserName, locale } from './utils';
async function checkCrypto() {
try {
@ -76,8 +76,9 @@ async function polyfillStreams() {
}
export default async function getCapabilities() {
const serviceWorker =
'serviceWorker' in navigator && browserName() !== 'edge';
const browser = browserName();
const isMobile = /mobi|android/i.test(navigator.userAgent);
const serviceWorker = 'serviceWorker' in navigator && browser !== 'edge';
let crypto = await checkCrypto();
const nativeStreams = checkStreams();
let polyStreams = false;
@ -91,19 +92,23 @@ export default async function getCapabilities() {
account = false;
}
const share =
typeof navigator.share === 'function' && LOCALE.startsWith('en'); // en until strings merge
isMobile &&
typeof navigator.share === 'function' &&
locale().startsWith('en'); // en until strings merge
const standalone =
window.matchMedia('(display-mode: standalone)').matches ||
navigator.standalone;
const mobileFirefox = browser === 'firefox' && isMobile;
return {
account,
crypto,
serviceWorker,
streamUpload: nativeStreams || polyStreams,
streamDownload:
nativeStreams && serviceWorker && browserName() !== 'safari',
nativeStreams && serviceWorker && browser !== 'safari' && !mobileFirefox,
multifile: nativeStreams || polyStreams,
share,
standalone

View file

@ -1,12 +1,13 @@
import FileSender from './fileSender';
import FileReceiver from './fileReceiver';
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
import * as metrics from './metrics';
import { bytes } from './utils';
import okDialog from './ui/okDialog';
import FileSender from './fileSender';
import copyDialog from './ui/copyDialog';
import faviconProgressbar from './ui/faviconProgressbar';
import okDialog from './ui/okDialog';
import shareDialog from './ui/shareDialog';
import signupDialog from './ui/signupDialog';
import surveyDialog from './ui/surveyDialog';
import { bytes, locale } from './utils';
import { copyToClipboard, delay, openLinksInNewTab, percent } from './utils';
export default function(state, emitter) {
let lastRender = 0;
@ -28,6 +29,7 @@ export default function(state, emitter) {
if (updateTitle) {
emitter.emit('DOMTitleChange', percent(state.transfer.progressRatio));
}
faviconProgressbar.updateFavicon(state.transfer.progressRatio);
render();
}
@ -35,7 +37,8 @@ export default function(state, emitter) {
document.addEventListener('blur', () => (updateTitle = true));
document.addEventListener('focus', () => {
updateTitle = false;
emitter.emit('DOMTitleChange', 'Firefox Send');
emitter.emit('DOMTitleChange', 'Send');
faviconProgressbar.updateFavicon(0);
});
checkFiles();
});
@ -48,9 +51,8 @@ export default function(state, emitter) {
state.user.login(email);
});
emitter.on('logout', () => {
state.user.logout();
metrics.loggedOut({ trigger: 'button' });
emitter.on('logout', async () => {
await state.user.logout();
emitter.emit('pushState', '/');
});
@ -64,24 +66,17 @@ export default function(state, emitter) {
emitter.on('delete', async ownedFile => {
try {
metrics.deletedUpload({
size: ownedFile.size,
time: ownedFile.time,
speed: ownedFile.speed,
type: ownedFile.type,
ttl: ownedFile.expiresAt - Date.now(),
location
});
state.storage.remove(ownedFile.id);
await ownedFile.del();
} catch (e) {
state.raven.captureException(e);
state.sentry.captureException(e);
}
render();
});
emitter.on('cancel', () => {
state.transfer.cancel();
faviconProgressbar.updateFavicon(0);
});
emitter.on('addFiles', async ({ files }) => {
@ -96,9 +91,6 @@ export default function(state, emitter) {
state.LIMITS.MAX_FILES_PER_ARCHIVE
);
} catch (e) {
if (e.message === 'fileTooBig' && maxSize < state.LIMITS.MAX_FILE_SIZE) {
return emitter.emit('signup-cta', 'size');
}
state.modal = okDialog(
state.translate(e.message, {
size: bytes(maxSize),
@ -118,7 +110,7 @@ export default function(state, emitter) {
source: query.utm_source,
term: query.utm_term
});
state.modal = signupDialog(source);
state.modal = signupDialog();
render();
});
@ -154,12 +146,10 @@ export default function(state, emitter) {
const links = openLinksInNewTab();
await delay(200);
const start = Date.now();
try {
const ownedFile = await sender.upload(archive, state.user.bearerToken);
state.storage.totalUploads += 1;
const duration = Date.now() - start;
metrics.completedUpload(archive, duration);
faviconProgressbar.updateFavicon(0);
state.storage.addFile(ownedFile);
// TODO integrate password into /upload request
@ -175,14 +165,21 @@ export default function(state, emitter) {
} catch (err) {
if (err.message === '0') {
//cancelled. do nothing
const duration = Date.now() - start;
metrics.cancelledUpload(archive, duration);
render();
} else if (err.message === '401') {
const refreshed = await state.user.refresh();
if (refreshed) {
return emitter.emit('upload');
}
emitter.emit('pushState', '/error');
} else {
// eslint-disable-next-line no-console
console.error(err);
state.raven.captureException(err);
metrics.stoppedUpload(archive);
state.sentry.withScope(scope => {
scope.setExtra('duration', err.duration);
scope.setExtra('size', err.size);
state.sentry.captureException(err);
});
emitter.emit('pushState', '/error');
}
} finally {
@ -225,19 +222,20 @@ export default function(state, emitter) {
if (!file.requiresPassword) {
return emitter.emit('pushState', '/404');
}
} else {
console.error(e);
return emitter.emit('pushState', '/error');
}
}
render();
});
emitter.on('download', async file => {
emitter.on('download', async () => {
state.transfer.on('progress', updateProgress);
state.transfer.on('decrypting', render);
state.transfer.on('complete', render);
const links = openLinksInNewTab();
const size = file.size;
const start = Date.now();
try {
const dl = state.transfer.download({
stream: state.capabilities.streamDownload
@ -245,12 +243,7 @@ export default function(state, emitter) {
render();
await dl;
state.storage.totalDownloads += 1;
const duration = Date.now() - start;
metrics.completedDownload({
size,
duration,
password_protected: file.requiresPassword
});
faviconProgressbar.updateFavicon(0);
} catch (err) {
if (err.message === '0') {
// download cancelled
@ -261,12 +254,11 @@ export default function(state, emitter) {
state.transfer = null;
const location = err.message === '404' ? '/404' : '/error';
if (location === '/error') {
state.raven.captureException(err);
const duration = Date.now() - start;
metrics.stoppedDownload({
size,
duration,
password_protected: file.requiresPassword
state.sentry.withScope(scope => {
scope.setExtra('duration', err.duration);
scope.setExtra('size', err.size);
scope.setExtra('progress', err.progress);
state.sentry.captureException(err);
});
}
emitter.emit('pushState', location);
@ -278,7 +270,22 @@ export default function(state, emitter) {
emitter.on('copy', ({ url }) => {
copyToClipboard(url);
// metrics.copiedLink({ location });
});
emitter.on('closeModal', () => {
if (
state.PREFS.surveyUrl &&
['copy', 'share'].includes(state.modal.type) &&
locale().startsWith('en') &&
(state.storage.totalUploads > 1 || state.storage.totalDownloads > 0) &&
!state.user.surveyed
) {
state.user.surveyed = true;
state.modal = surveyDialog();
} else {
state.modal = null;
}
render();
});
setInterval(() => {

View file

@ -1,6 +1,22 @@
import hash from 'string-hash';
import Account from './ui/account';
const experiments = {};
const experiments = {
signin_button_color: {
eligible: function() {
return true;
},
variant: function() {
return ['white-primary', 'primary', 'white-violet', 'violet'][
Math.floor(Math.random() * 4)
];
},
run: function(variant, state) {
const account = state.cache(Account, 'account');
account.buttonClass = variant;
}
}
};
//Returns a number between 0 and 1
// eslint-disable-next-line no-unused-vars
@ -25,23 +41,12 @@ export default function initialize(state, emitter) {
xp.run(+state.query.v, state, emitter);
}
});
if (!state.storage.get('testpilot_ga__cid')) {
// first ever visit. check again after cid is assigned.
emitter.on('DOMContentLoaded', () => {
checkExperiments(state, emitter);
});
} else {
const enrolled = state.storage.enrolled.filter(([id, variant]) => {
const xp = experiments[id];
if (xp) {
xp.run(variant, state, emitter);
}
return !!xp;
});
const enrolled = state.storage.enrolled;
// single experiment per session for now
if (enrolled.length === 0) {
const id = Object.keys(enrolled)[0];
if (Object.keys(experiments).includes(id)) {
experiments[id].run(enrolled[id], state, emitter);
} else {
checkExperiments(state, emitter);
}
}
}

View file

@ -1,7 +1,7 @@
import Nanobus from 'nanobus';
import Keychain from './keychain';
import { delay, bytes, streamToArrayBuffer } from './utils';
import { downloadFile, metadata, getApiUrl } from './api';
import { downloadFile, metadata, getApiUrl, reportLink } from './api';
import { blobStream } from './streams';
import Zip from './zip';
@ -53,6 +53,10 @@ export default class FileReceiver extends Nanobus {
this.state = 'ready';
}
async reportLink(reason) {
await reportLink(this.fileInfo.id, this.keychain, reason);
}
sendMessageToSw(msg) {
return new Promise((resolve, reject) => {
const channel = new MessageChannel();
@ -112,6 +116,7 @@ export default class FileReceiver extends Nanobus {
}
async downloadStream(noSave = false) {
const start = Date.now();
const onprogress = p => {
this.progress = [p, this.fileInfo.size];
this.emit('progress');
@ -153,9 +158,7 @@ export default class FileReceiver extends Nanobus {
const downloadPath = `/api/download/${this.fileInfo.id}`;
let downloadUrl = getApiUrl(downloadPath);
if (downloadUrl === downloadPath) {
downloadUrl = `${location.protocol}//${location.host}/api/download/${
this.fileInfo.id
}`;
downloadUrl = `${location.protocol}//${location.host}${downloadPath}`;
}
const a = document.createElement('a');
a.href = downloadUrl;
@ -164,11 +167,29 @@ export default class FileReceiver extends Nanobus {
}
let prog = 0;
let hangs = 0;
while (prog < this.fileInfo.size) {
const msg = await this.sendMessageToSw({
request: 'progress',
id: this.fileInfo.id
});
if (msg.progress === prog) {
hangs++;
} else {
hangs = 0;
}
if (hangs > 30) {
// TODO: On Chrome we don't get a cancel
// signal so one is indistinguishable from
// a hang. We may be able to detect
// which end is hung in the service worker
// to improve on this.
const e = new Error('hung download');
e.duration = Date.now() - start;
e.size = this.fileInfo.size;
e.progress = prog;
throw e;
}
prog = msg.progress;
onprogress(prog);
await delay(1000);
@ -203,24 +224,6 @@ async function saveFile(file) {
if (navigator.msSaveBlob) {
navigator.msSaveBlob(blob, file.name);
return resolve();
} else if (/iPhone|fxios/i.test(navigator.userAgent)) {
// This method is much slower but createObjectURL
// is buggy on iOS
const reader = new FileReader();
reader.addEventListener('loadend', function() {
if (reader.error) {
return reject(reader.error);
}
if (reader.result) {
const a = document.createElement('a');
a.href = reader.result;
a.download = file.name;
document.body.appendChild(a);
a.click();
}
resolve();
});
reader.readAsDataURL(blob);
} else {
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement('a');

View file

@ -44,7 +44,6 @@ export default class FileSender extends Nanobus {
}
async upload(archive, bearerToken) {
const start = Date.now();
if (this.cancelled) {
throw new Error(0);
}
@ -76,7 +75,6 @@ export default class FileSender extends Nanobus {
this.emit('progress'); // HACK to kick MS Edge
try {
const result = await this.uploadRequest.result;
const time = Date.now() - start;
this.msg = 'notifyUploadEncryptDone';
this.uploadRequest = null;
this.progress = [1, 1];
@ -87,8 +85,8 @@ export default class FileSender extends Nanobus {
name: archive.name,
size: archive.size,
manifest: archive.manifest,
time: time,
speed: archive.size / (time / 1000),
time: result.duration,
speed: archive.size / (result.duration / 1000),
createdAt: Date.now(),
expiresAt: Date.now() + archive.timeLimit * 1000,
secretKey: secretKey,

View file

@ -18,23 +18,6 @@ export default class Keychain {
false,
['deriveKey']
);
this.encryptKeyPromise = this.secretKeyPromise.then(function(secretKey) {
return crypto.subtle.deriveKey(
{
name: 'HKDF',
salt: new Uint8Array(),
info: encoder.encode('encryption'),
hash: 'SHA-256'
},
secretKey,
{
name: 'AES-GCM',
length: 128
},
false,
['encrypt', 'decrypt']
);
});
this.metaKeyPromise = this.secretKeyPromise.then(function(secretKey) {
return crypto.subtle.deriveKey(
{

View file

@ -1,8 +1,8 @@
import { FluentBundle } from 'fluent';
import { FluentBundle, FluentResource } from '@fluent/bundle';
function makeBundle(locale, ftl) {
const bundle = new FluentBundle(locale, { useIsolating: false });
bundle.addMessages(ftl);
bundle.addResource(new FluentResource(ftl));
return bundle;
}
@ -10,16 +10,16 @@ export async function getTranslator(locale) {
const bundles = [];
const { default: en } = await import('../public/locales/en-US/send.ftl');
if (locale !== 'en-US') {
const {
default: ftl
} = await import(`../public/locales/${locale}/send.ftl`);
const { default: ftl } = await import(
`../public/locales/${locale}/send.ftl`
);
bundles.push(makeBundle(locale, ftl));
}
bundles.push(makeBundle('en-US', en));
return function(id, data) {
for (let bundle of bundles) {
if (bundle.hasMessage(id)) {
return bundle.format(bundle.getMessage(id), data);
return bundle.formatPattern(bundle.getMessage(id).value, data);
}
}
};

View file

@ -1,13 +1,23 @@
@tailwind preflight;
@tailwind base;
html {
line-height: 1.15;
}
@tailwind components;
:not(input) {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
:root {
--violet-gradient: linear-gradient(
-180deg,
rgb(144 89 255 / 80%) 0%,
rgb(144 89 255 / 40%) 100%
);
}
a {
color: inherit;
text-decoration: none;
@ -26,19 +36,20 @@ body {
}
.btn {
@apply bg-blue-dark;
@apply bg-primary;
@apply text-white;
@apply cursor-pointer;
@apply py-4;
@apply px-6;
@apply font-semibold;
}
.btn:hover {
@apply bg-blue-darker;
@apply bg-primary_accent;
}
.btn:focus {
@apply bg-blue-darker;
@apply bg-primary_accent;
}
.checkbox {
@ -56,8 +67,8 @@ body {
}
.checkbox > label::before {
/* @apply bg-grey-lightest; */
@apply border;
/* @apply bg-grey-10; */
@apply border-default;
@apply rounded-sm;
content: '';
@ -68,16 +79,16 @@ body {
}
.checkbox > label:hover::before {
@apply border-blue-dark;
@apply border-primary;
}
.checkbox > input:focus + label::before {
@apply border-blue-dark;
@apply border-primary;
}
.checkbox > input:checked + label::before {
@apply bg-blue-dark;
@apply border-blue-dark;
@apply bg-primary;
@apply border-primary;
background-image: url('../assets/lock.svg');
background-position: center;
@ -90,8 +101,8 @@ body {
}
.checkbox > input:disabled + label::before {
@apply bg-blue-dark;
@apply border-blue-dark;
@apply bg-primary;
@apply border-primary;
background-image: url('../assets/lock.svg');
background-position: center;
@ -104,7 +115,7 @@ details {
overflow: hidden;
}
details > summary::-webkit-details-marker {
details > summary::marker {
display: none;
}
@ -120,7 +131,7 @@ details[open] > summary > svg {
transform: rotate(90deg);
}
footer li:hover {
footer li a:hover {
text-decoration: underline;
}
@ -139,9 +150,37 @@ footer li:hover {
white-space: nowrap;
}
.intro {
max-width: 100%;
height: unset;
.link-primary {
@apply text-primary;
}
.link-primary:hover {
@apply text-primary_accent;
}
.link-primary:focus {
@apply text-primary_accent;
}
.main-header img {
height: 32px;
width: auto;
}
.text-underline {
text-decoration: underline;
}
.d-block {
display: block;
}
.d-inline-block {
display: inline-block;
}
.align-middle {
vertical-align: middle;
}
.main {
@ -149,39 +188,25 @@ footer li:hover {
position: relative;
max-width: 64rem;
width: 100%;
height: 100%;
}
.main > section {
@apply bg-white;
}
.mozilla-logo {
background-image: url('../assets/mozilla-logo.svg');
background-repeat: no-repeat;
background-size: 100px, 32px;
overflow: hidden;
text-indent: 120%;
white-space: nowrap;
display: inline-block;
height: 32px;
width: 100px;
flex-shrink: 0;
}
#password-msg::after {
content: '\200b';
}
progress {
@apply bg-grey-light;
@apply bg-grey-30;
@apply rounded-sm;
@apply w-full;
@apply h-1;
}
progress::-webkit-progress-bar {
@apply bg-grey-light;
@apply bg-grey-30;
@apply rounded-sm;
@apply w-full;
@apply h-1;
@ -192,19 +217,18 @@ progress::-webkit-progress-value {
background-image: -webkit-linear-gradient(
-45deg,
transparent 20%,
rgba(255, 255, 255, 0.4) 20%,
rgba(255, 255, 255, 0.4) 40%,
rgb(255 255 255 / 40%) 20%,
rgb(255 255 255 / 40%) 40%,
transparent 40%,
transparent 60%,
rgba(255, 255, 255, 0.4) 60%,
rgba(255, 255, 255, 0.4) 80%,
rgb(255 255 255 / 40%) 60%,
rgb(255 255 255 / 40%) 80%,
transparent 80%
),
-webkit-linear-gradient(left, #0a84ff, #0a84ff);
-webkit-linear-gradient(left, var(--color-primary), var(--color-primary));
/* stylelint-enable */
border-radius: 2px;
background-size: 21px 20px, 100% 100%, 100% 100%;
-webkit-animation: animate-stripes 1s linear infinite;
}
progress::-moz-progress-bar {
@ -212,27 +236,21 @@ progress::-moz-progress-bar {
background-image: -moz-linear-gradient(
135deg,
transparent 20%,
rgba(255, 255, 255, 0.4) 20%,
rgba(255, 255, 255, 0.4) 40%,
rgb(255 255 255 / 40%) 20%,
rgb(255 255 255 / 40%) 40%,
transparent 40%,
transparent 60%,
rgba(255, 255, 255, 0.4) 60%,
rgba(255, 255, 255, 0.4) 80%,
rgb(255 255 255 / 40%) 60%,
rgb(255 255 255 / 40%) 80%,
transparent 80%
),
-moz-linear-gradient(left, #0a84ff, #0a84ff);
-moz-linear-gradient(left, var(--color-primary), var(--color-primary));
/* stylelint-enable */
border-radius: 2px;
background-size: 21px 20px, 100% 100%, 100% 100%;
animation: animate-stripes 1s linear infinite;
}
@-webkit-keyframes animate-stripes {
100% {
background-position: -21px 0;
}
}
@keyframes animate-stripes {
100% {
background-position: -21px 0;
@ -246,11 +264,9 @@ select {
}
@screen md {
.intro {
max-width: unset;
height: unset;
margin-bottom: -3rem;
margin-right: -7rem;
.main-header img {
height: 48px;
width: auto;
}
.main {
@ -260,22 +276,65 @@ select {
@apply m-auto;
@apply py-8;
min-height: 36rem;
max-height: 40rem;
max-height: 42rem;
width: calc(100% - 3rem);
}
}
@screen dark {
body {
@apply text-grey-10;
background-image: unset;
}
.btn {
@apply bg-primary;
@apply text-white;
}
.btn:hover {
@apply bg-primary_accent;
}
.btn:focus {
@apply bg-primary_accent;
}
.link-primary {
@apply text-primary;
}
.link-primary:hover {
@apply text-primary_accent;
}
.link-primary:focus {
@apply text-primary_accent;
}
.main > section {
@apply bg-grey-90;
}
@screen md {
.main > section {
@apply border-default;
@apply border-grey-80;
}
}
}
@tailwind utilities;
@responsive {
.shadow-light {
box-shadow: 0 0 8px 0 rgba(12, 12, 13, 0.1);
box-shadow: 0 0 8px 0 rgb(12 12 13 / 10%);
}
.shadow-big {
box-shadow: 0 0 32px 0 rgba(12, 12, 13, 0.1),
0 2px 16px 0 rgba(12, 12, 13, 0.05);
box-shadow: 0 12px 18px 2px rgb(34 0 51 / 4%),
0 6px 22px 4px rgb(7 48 114 / 12%), 0 6px 10px -4px rgb(14 13 26 / 12%);
}
}
@ -287,4 +346,67 @@ select {
.word-break-all {
word-break: break-all;
line-break: anywhere;
}
.signin {
backface-visibility: hidden;
border-radius: 6px;
transition-property: transform, background-color;
transition-duration: 250ms;
transition-timing-function: cubic-bezier(0.07, 0.95, 0, 1);
}
.signin:hover,
.signin:focus {
transform: scale(1.0625);
}
.signin:hover:active {
transform: scale(0.9375);
}
/* begin signin button color experiment */
.white-primary {
@apply border-primary;
@apply border-2;
@apply text-primary;
}
.white-primary:hover,
.white-primary:focus {
@apply bg-primary;
@apply text-white;
}
.primary {
@apply bg-primary;
@apply text-white;
}
.white-violet {
@apply border-violet;
@apply border-2;
@apply text-violet;
}
.white-violet:hover,
.white-violet:focus {
@apply bg-violet;
@apply text-white;
background-image: var(--violet-gradient);
}
.violet {
@apply bg-violet;
@apply text-white;
}
.violet:hover,
.violet:focus {
background-image: var(--violet-gradient);
}
/* end signin button color experiment */

View file

@ -1,7 +1,7 @@
/* global DEFAULTS LIMITS LOCALE */
/* global DEFAULTS LIMITS WEB_UI PREFS */
import 'core-js';
import 'fast-text-encoding'; // MS Edge support
import 'fluent-intl-polyfill';
import 'intl-pluralrules';
import choo from 'choo';
import nanotiming from 'nanotiming';
import routes from './routes';
@ -10,17 +10,16 @@ import controller from './controller';
import dragManager from './dragManager';
import pasteManager from './pasteManager';
import storage from './storage';
import metrics from './metrics';
import experiments from './experiments';
import Raven from 'raven-js';
import * as Sentry from '@sentry/browser';
import './main.css';
import User from './user';
import { getTranslator } from './locale';
import Archive from './archive';
import { setTranslate } from './utils';
import { setTranslate, locale } from './utils';
if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) {
Raven.config(window.SENTRY_ID, window.RAVEN_CONFIG).install();
if (navigator.doNotTrack !== '1' && window.SENTRY_CONFIG) {
Sentry.init(window.SENTRY_CONFIG);
}
if (process.env.NODE_ENV === 'production') {
@ -45,27 +44,31 @@ if (process.env.NODE_ENV === 'production') {
}
}
const translate = await getTranslator(LOCALE);
const translate = await getTranslator(locale());
setTranslate(translate);
// eslint-disable-next-line require-atomic-updates
window.initialState = {
LIMITS,
DEFAULTS,
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS),
WEB_UI,
PREFS,
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS, DEFAULTS.DOWNLOADS),
capabilities,
translate,
storage,
raven: Raven,
sentry: Sentry,
user: new User(storage, LIMITS, window.AUTH_CONFIG),
transfer: null,
fileInfo: null
fileInfo: null,
locale: locale()
};
const app = routes(choo());
const app = routes(choo({ hash: true }));
// eslint-disable-next-line require-atomic-updates
window.app = app;
app.use(metrics);
app.use(experiments);
app.use(controller);
app.use(dragManager);
app.use(experiments);
app.use(pasteManager);
app.mount('body');
})();

View file

@ -1,178 +0,0 @@
import storage from './storage';
import { platform } from './utils';
import { sendMetrics } from './api';
let appState = null;
// let experiment = null;
const HOUR = 1000 * 60 * 60;
const events = [];
let session_id = Date.now();
const lang = document.querySelector('html').lang;
export default function initialize(state, emitter) {
appState = state;
if (!appState.user.firstAction) {
appState.user.firstAction = appState.route === '/' ? 'upload' : 'download';
}
emitter.on('DOMContentLoaded', () => {
// experiment = storage.enrolled[0];
const query = appState.query;
addEvent('client_visit', {
entrypoint: appState.route === '/' ? 'upload' : 'download',
referrer: document.referrer,
utm_campaign: query.utm_campaign,
utm_content: query.utm_content,
utm_medium: query.utm_medium,
utm_source: query.utm_source,
utm_term: query.utm_term
});
});
emitter.on('experiment', experimentEvent);
window.addEventListener('unload', submitEvents);
}
function sizeOrder(n) {
return Math.floor(Math.log10(n));
}
function submitEvents() {
if (navigator.doNotTrack === '1') {
return;
}
sendMetrics(
new Blob(
[
JSON.stringify({
now: Date.now(),
session_id,
lang,
platform: platform(),
events
})
],
{ type: 'text/plain' } // see http://crbug.com/490015
)
);
events.splice(0);
}
async function addEvent(event_type, event_properties) {
const user_id = await appState.user.metricId();
const device_id = await appState.user.deviceId();
events.push({
device_id,
event_properties,
event_type,
time: Date.now(),
user_id,
user_properties: {
anonymous: !appState.user.loggedIn,
first_action: appState.user.firstAction,
active_count: storage.files.length
}
});
if (events.length === 25) {
submitEvents();
}
}
function cancelledUpload(archive, duration) {
return addEvent('client_upload', {
download_limit: archive.dlimit,
duration: sizeOrder(duration),
file_count: archive.numFiles,
password_protected: !!archive.password,
size: sizeOrder(archive.size),
status: 'cancel',
time_limit: archive.timeLimit
});
}
function completedUpload(archive, duration) {
return addEvent('client_upload', {
download_limit: archive.dlimit,
duration: sizeOrder(duration),
file_count: archive.numFiles,
password_protected: !!archive.password,
size: sizeOrder(archive.size),
status: 'ok',
time_limit: archive.timeLimit
});
}
function stoppedUpload(archive) {
return addEvent('client_upload', {
download_limit: archive.dlimit,
file_count: archive.numFiles,
password_protected: !!archive.password,
size: sizeOrder(archive.size),
status: 'error',
time_limit: archive.timeLimit
});
}
function stoppedDownload(params) {
return addEvent('client_download', {
duration: sizeOrder(params.duration),
password_protected: params.password_protected,
size: sizeOrder(params.size),
status: 'error'
});
}
function completedDownload(params) {
return addEvent('client_download', {
duration: sizeOrder(params.duration),
password_protected: params.password_protected,
size: sizeOrder(params.size),
status: 'ok'
});
}
function deletedUpload(ownedFile) {
return addEvent('client_delete', {
age: Math.floor((Date.now() - ownedFile.createdAt) / HOUR),
downloaded: ownedFile.dtotal > 0,
status: 'ok'
});
}
function experimentEvent(params) {
return addEvent('client_experiment', params);
}
function submittedSignup(params) {
return addEvent('client_login', {
status: 'ok',
trigger: params.trigger
});
}
function canceledSignup(params) {
return addEvent('client_login', {
status: 'cancel',
trigger: params.trigger
});
}
function loggedOut(params) {
addEvent('client_logout', {
status: 'ok',
trigger: params.trigger
});
// flush events and start new anon session
submitEvents();
session_id = Date.now();
}
export {
cancelledUpload,
stoppedUpload,
completedUpload,
deletedUpload,
stoppedDownload,
completedDownload,
submittedSignup,
canceledSignup,
loggedOut
};

2345
app/qrcode.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
`app/` contains the browser code that gets bundled into `app.[hash].js`. It's got all the logic, crypto, and UI. All of it gets used in the browser, and some of it by the server for server side rendering.
The main entrypoint for the browser is [main.js](./main.js) and on the server [routes/index.js](./routes/index.js) gets imported by [/server/routes/pages.js](../server/routes/pages.js)
The main entrypoint for the browser is [main.js](./main.js) and on the server [routes.js](./routes.js) is imported by [/server/routes/pages.js](../server/routes/pages.js)
- `pages` contains display logic an markup for pages
- `routes` contains route definitions and logic

View file

@ -2,17 +2,20 @@ const choo = require('choo');
const download = require('./ui/download');
const body = require('./ui/body');
module.exports = function(app = choo()) {
module.exports = function(app = choo({ hash: true })) {
app.route('/', body(require('./ui/home')));
app.route('/download/:id', body(download));
app.route('/download/:id/:key', body(download));
app.route('/unsupported/:reason', body(require('./ui/unsupported')));
app.route('/legal', body(require('./ui/legal')));
app.route('/error', body(require('./ui/error')));
app.route('/blank', body(require('./ui/blank')));
app.route('/oauth', function(state, emit) {
emit('authenticate', state.query.code, state.query.state);
});
app.route('/login', function(state, emit) {
emit('replaceState', '/');
setTimeout(() => emit('render'));
});
app.route('*', body(require('./ui/notFound')));
return app;
};

View file

@ -9,15 +9,16 @@ import contentDisposition from 'content-disposition';
let noSave = false;
const map = new Map();
const IMAGES = /.*\.(png|svg|jpg)$/;
const VERSIONED_ASSET = /\.[A-Fa-f0-9]{8}\.(js|css|png|svg|jpg)$/;
const VERSIONED_ASSET = /\.[A-Fa-f0-9]{8}\.(js|css|png|svg|jpg)(#\w+)?$/;
const DOWNLOAD_URL = /\/api\/download\/([A-Fa-f0-9]{4,})/;
const FONT = /\.woff2?$/;
self.addEventListener('install', event => {
event.waitUntil(precache());
self.addEventListener('install', () => {
self.skipWaiting();
});
self.addEventListener('activate', event => {
event.waitUntil(self.clients.claim());
event.waitUntil(self.clients.claim().then(precache));
});
async function decryptStream(id) {
@ -83,16 +84,28 @@ async function decryptStream(id) {
}
async function precache() {
try {
await cleanCache();
const cache = await caches.open(version);
const images = assets.match(IMAGES);
await cache.addAll(images);
} catch (e) {
console.error(e);
// cache will get populated on demand
}
}
async function cleanCache() {
const oldCaches = await caches.keys();
for (const c of oldCaches) {
if (c !== version) {
await caches.delete(c);
}
}
const cache = await caches.open(version);
const images = assets.match(IMAGES);
await cache.addAll(images);
return self.skipWaiting();
}
function cacheable(url) {
return VERSIONED_ASSET.test(url) || FONT.test(url);
}
async function cachedOrFetched(req) {
@ -102,7 +115,7 @@ async function cachedOrFetched(req) {
return cached;
}
const fetched = await fetch(req);
if (fetched.ok && VERSIONED_ASSET.test(req.url)) {
if (fetched.ok && cacheable(req.url)) {
cache.put(req, fetched.clone());
}
return fetched;
@ -115,7 +128,7 @@ self.onfetch = event => {
const dlmatch = DOWNLOAD_URL.exec(url.pathname);
if (dlmatch) {
event.respondWith(decryptStream(dlmatch[1]));
} else if (VERSIONED_ASSET.test(url.pathname)) {
} else if (cacheable(url.pathname)) {
event.respondWith(cachedOrFetched(req));
}
};

View file

@ -86,16 +86,13 @@ class Storage {
this.engine.setItem('referrer', str);
}
get enrolled() {
return JSON.parse(this.engine.getItem('experiments') || '[]');
return JSON.parse(this.engine.getItem('ab_experiments') || '{}');
}
enroll(id, variant) {
const enrolled = this.enrolled;
// eslint-disable-next-line no-unused-vars
if (!enrolled.find(([i, v]) => i === id)) {
enrolled.push([id, variant]);
this.engine.setItem('experiments', JSON.stringify(enrolled));
}
const enrolled = {};
enrolled[id] = variant;
this.engine.setItem('ab_experiments', JSON.stringify(enrolled));
}
get files() {

View file

@ -1,4 +1,4 @@
/* global ReadableStream TransformStream */
/* global TransformStream */
export function transformStream(readable, transformer, oncancel) {
try {

View file

@ -8,7 +8,8 @@ class Account extends Component {
this.emit = emit;
this.enabled = state.capabilities.account;
this.local = state.components[name] = {};
this.setState();
this.buttonClass = '';
this.setLocal();
}
avatarClick(event) {
@ -38,7 +39,7 @@ class Account extends Component {
return this.local.loggedIn !== this.state.user.loggedIn;
}
setState() {
setLocal() {
const changed = this.changed();
if (changed) {
this.local.loggedIn = this.state.user.loggedIn;
@ -47,26 +48,32 @@ class Account extends Component {
}
update() {
return this.setState();
return this.setLocal();
}
createElement() {
if (!this.enabled) {
return html`
<div></div>
<send-account></send-account>
`;
}
const user = this.state.user;
const translate = this.state.translate;
this.setLocal();
if (user.loginRequired && !this.local.loggedIn) {
return html`
<send-account></send-account>
`;
}
if (!this.local.loggedIn) {
return html`
<send-account>
<button
class="p-2 md:p-4 border rounded-lg text-blue-dark border-blue-dark hover:text-white hover:bg-blue-dark focus:outline"
class="px-4 py-2 md:px-8 md:py-4 focus:outline signin border-2 link-primary border-primary hover:border-primary dark:border-primary dark:hover:border-primary"
onclick="${e => this.login(e)}"
title="${translate('signInButton')}"
title="${translate('signInOnlyButton')}"
>
${translate('signInButton')}
${translate('signInOnlyButton')}
</button>
</send-account>
`;
@ -76,19 +83,19 @@ class Account extends Component {
<input
type="image"
alt="${user.email}"
class="w-8 h-8 rounded-full border text-blue md:text-white focus:outline"
class="w-8 h-8 rounded-full border-default text-primary md:text-white focus:outline"
src="${user.avatar}"
onclick="${e => this.avatarClick(e)}"
/>
<ul
id="accountMenu"
class="invisible list-reset absolute pin-t pin-r mt-10 pt-2 pb-2 bg-white shadow-md whitespace-no-wrap outline-none z-50"
class="invisible absolute top-0 right-0 mt-10 pt-2 pb-2 bg-white shadow-md whitespace-nowrap outline-none z-50 dark:bg-grey-80"
onblur="${e => this.hideMenu(e)}"
>
<li class="p-2 text-grey-dark">${user.email}</li>
<li class="p-2 text-grey-60 dark:text-grey-50">${user.email}</li>
<li>
<button
class="block w-full text-left px-4 py-2 text-grey-darkest hover:bg-blue hover:text-white cursor-pointer focus:outline"
class="block w-full text-left px-4 py-2 text-grey-80 dark:text-grey-30 hover:bg-primary hover:text-white cursor-pointer focus:outline"
onclick="${e => this.logout(e)}"
title="${translate('signOut')}"
>

View file

@ -26,10 +26,16 @@ function expiryInfo(translate, archive) {
}
function password(state) {
const MAX_LENGTH = 32;
const MAX_LENGTH = 4096;
return html`
<div class="mb-2 px-1">
<input
id="autocomplete-decoy"
class="hidden"
type="password"
value="lol"
/>
<div class="checkbox inline-block mr-3">
<input
id="add-password"
@ -42,11 +48,12 @@ function password(state) {
${state.translate('addPassword')}
</label>
</div>
<div class="relative inline-block my-1">
<input
id="password-input"
class="${state.archive.password
? ''
: 'invisible'} border rounded focus:border-blue-dark leading-normal my-1 py-1 px-2 h-8"
: 'invisible'} border-default rounded-default focus:border-primary leading-normal my-1 py-1 px-2 h-8 dark:bg-grey-80"
autocomplete="off"
maxlength="${MAX_LENGTH}"
type="password"
@ -55,23 +62,60 @@ function password(state) {
placeholder="${state.translate('unlockInputPlaceholder')}"
value="${state.archive.password || ''}"
/>
<button
id="password-preview-button"
type="button"
class="${state.archive.password
? ''
: 'invisible'} absolute top-0 right-0 w-8 h-8"
onclick="${onPasswordPreviewButtonclicked}"
>
<img
src="${assets.get('eye.svg')}"
width="22"
height="22"
class="m-auto mt-2"
/>
</button>
</div>
<label
id="password-msg"
for="password-input"
class="block text-xs text-grey-darker"
class="block text-xs text-grey-70"
></label>
</div>
`;
function onPasswordPreviewButtonclicked(event) {
event.preventDefault();
const input = document.getElementById('password-input');
const eyeIcon = event.currentTarget.querySelector('img');
if (input.type === 'password') {
input.type = 'text';
eyeIcon.src = assets.get('eye-off.svg');
} else {
input.type = 'password';
eyeIcon.src = assets.get('eye.svg');
}
input.focus();
}
function togglePasswordInput(event) {
event.stopPropagation();
const checked = event.target.checked;
const input = document.getElementById('password-input');
const passwordPreviewButton = document.getElementById(
'password-preview-button'
);
if (checked) {
input.classList.remove('invisible');
passwordPreviewButton.classList.remove('invisible');
input.focus();
} else {
input.classList.add('invisible');
passwordPreviewButton.classList.add('invisible');
input.value = '';
document.getElementById('password-msg').textContent = '';
state.archive.password = null;
@ -106,7 +150,9 @@ function password(state) {
function fileInfo(file, action) {
return html`
<send-file class="flex flex-row items-center p-3 w-full">
<img class="h-8" src="${assets.get('blue_file.svg')}"/>
<svg class="h-8 w-8 text-primary">
<use xlink:href="${assets.get('blue_file.svg')}#icon"/>
</svg>
<p class="ml-4 w-full">
<h1 class="text-base font-medium word-break-all">${file.name}</h1>
<div class="text-sm font-normal opacity-75 pt-1">${bytes(
@ -120,7 +166,9 @@ function fileInfo(file, action) {
function archiveInfo(archive, action) {
return html`
<p class="w-full flex items-center">
<img class="mr-3 flex-no-shrink" src="${assets.get('blue_file.svg')}"/>
<svg class="h-8 w-6 mr-3 flex-shrink-0 text-primary">
<use xlink:href="${assets.get('blue_file.svg')}#icon"/>
</svg>
<p class="flex-grow">
<h1 class="text-base font-medium word-break-all">${archive.name}</h1>
<div class="text-sm font-normal opacity-75 pt-1">${bytes(
@ -140,7 +188,7 @@ function archiveDetails(translate, archive) {
ontoggle="${toggled}"
>
<summary
class="flex items-center text-blue-dark text-sm cursor-pointer outline-none"
class="flex items-center link-primary text-sm cursor-pointer outline-none"
>
<svg
class="fill-current w-4 h-4 mr-1"
@ -155,7 +203,7 @@ function archiveDetails(translate, archive) {
num: archive.manifest.files.length
})}
</summary>
${list(archive.manifest.files.map(f => fileInfo(f)), 'list-reset')}
${list(archive.manifest.files.map(f => fileInfo(f)))}
</details>
`;
}
@ -170,20 +218,25 @@ module.exports = function(state, emit, archive) {
state.capabilities.share || platform() === 'android'
? html`
<button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker self-end flex items-end"
class="link-primary self-end flex items-start"
onclick=${share}
title="Share link"
>
<img src="${assets.get('share-24.svg')}" class="mr-2" />Share link
<svg class="h-4 w-4 mr-2">
<use xlink:href="${assets.get('share-24.svg')}#icon" />
</svg>
Share link
</button>
`
: html`
<button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker focus:outline self-end flex items-center"
class="link-primary focus:outline self-end flex items-center"
onclick=${copy}
title="${state.translate('copyLinkButton')}"
>
<img src="${assets.get('copy-16.svg')}" class="mr-2" />
<svg class="h-4 w-4 mr-2">
<use xlink:href="${assets.get('copy-16.svg')}#icon" />
</svg>
${state.translate('copyLinkButton')}
</button>
`;
@ -191,12 +244,14 @@ module.exports = function(state, emit, archive) {
platform() === 'web'
? html`
<a
class="flex items-baseline text-blue-dark hover:text-blue-darker focus:text-blue-darker"
class="flex items-baseline link-primary"
href="${archive.url}"
title="${state.translate('downloadButtonLabel')}"
tabindex="0"
>
<img src="${assets.get('dl.svg')}" class="mr-2" />
<svg class="h-4 w-3 mr-2">
<use xlink:href="${assets.get('dl.svg')}#icon" />
</svg>
${state.translate('downloadButtonLabel')}
</a>
`
@ -206,14 +261,14 @@ module.exports = function(state, emit, archive) {
return html`
<send-archive
id="archive-${archive.id}"
class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full"
class="flex flex-col items-start rounded-default shadow-light bg-white p-4 w-full dark:bg-grey-90 dark:border-default dark:border-grey-70"
>
${archiveInfo(
archive,
html`
<input
type="image"
class="self-start flex-no-shrink text-white hover:opacity-75 focus:outline"
class="self-start flex-shrink-0 text-white hover:opacity-75 focus:outline"
alt="${state.translate('deleteButtonHover')}"
title="${state.translate('deleteButtonHover')}"
src="${assets.get('close-16.svg')}"
@ -225,7 +280,7 @@ module.exports = function(state, emit, archive) {
${expiryInfo(state.translate, archive)}
</div>
${archiveDetails(state.translate, archive)}
<hr class="w-full border-t my-4" />
<hr class="w-full border-t my-4 dark:border-grey-70" />
<div class="flex justify-between w-full">
${dl} ${copyOrShare}
</div>
@ -256,9 +311,7 @@ module.exports = function(state, emit, archive) {
try {
await navigator.share({
title: state.translate('-send-brand'),
text: `Download "${
archive.name
}" with Firefox Send: simple, safe file sharing`,
text: `Download "${archive.name}" with Send: simple, safe file sharing`,
//state.translate('shareMessage', { name }),
url: archive.url
});
@ -271,22 +324,25 @@ module.exports = function(state, emit, archive) {
module.exports.wip = function(state, emit) {
return html`
<send-upload-area class="flex flex-col bg-white h-full w-full" id="wip">
<send-upload-area
class="flex flex-col bg-white h-full w-full dark:bg-grey-90"
id="wip"
>
${list(
Array.from(state.archive.files)
.reverse()
.map(f =>
fileInfo(f, remove(f, state.translate('deleteButtonHover')))
),
'flex-shrink bg-grey-lightest rounded-t list-reset overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen',
'bg-white px-2 my-2 shadow-light rounded'
'flex-shrink bg-grey-10 rounded-t overflow-y-auto px-6 py-4 md:h-full md:max-h-half-screen dark:bg-black',
'bg-white px-2 my-2 shadow-light rounded-default dark:bg-grey-90 dark:border-default dark:border-grey-80'
)}
<div
class="flex-no-shrink flex-grow flex items-end p-4 bg-grey-lightest rounded-b mb-1 font-medium"
class="flex-shrink-0 flex-grow flex items-end p-4 bg-grey-10 rounded-b mb-1 font-medium dark:bg-grey-90"
>
<input
id="file-upload"
class="opacity-0 w-0 h-0 appearance-none absolute"
class="opacity-0 w-0 h-0 appearance-none absolute overflow-hidden"
type="file"
multiple
onfocus="${focus}"
@ -302,10 +358,12 @@ module.exports.wip = function(state, emit) {
class="flex items-center cursor-pointer"
title="${state.translate('addFilesButton')}"
>
<img src="${assets.get('addfiles.svg')}" class="w-6 h-6 mr-2" />
<svg class="w-6 h-6 mr-2 link-primary">
<use xlink:href="${assets.get('addfiles.svg')}#plus" />
</svg>
${state.translate('addFilesButton')}
</label>
<div class="font-normal text-sm text-grey-darker">
<div class="font-normal text-sm text-grey-70 dark:text-grey-40">
${state.translate('totalSize', {
size: bytes(state.archive.size)
})}
@ -315,7 +373,7 @@ module.exports.wip = function(state, emit) {
${expiryOptions(state, emit)} ${password(state, emit)}
<button
id="upload-btn"
class="btn rounded-lg flex-no-shrink focus:outline"
class="btn rounded-lg flex-shrink-0 focus:outline"
title="${state.translate('uploadButton')}"
onclick="${upload}"
>
@ -380,22 +438,22 @@ module.exports.uploading = function(state, emit) {
return html`
<send-upload-area
id="${archive.id}"
class="flex flex-col items-start rounded shadow-light bg-white p-4 w-full"
class="flex flex-col items-start rounded-default shadow-light bg-white p-4 w-full dark:bg-grey-90"
>
${archiveInfo(archive)}
<div class="text-xs text-grey-dark w-full mt-2 mb-2">
<div class="text-xs opacity-75 w-full mt-2 mb-2">
${expiryInfo(state.translate, {
dlimit: state.archive.dlimit,
dtotal: 0,
expiresAt: Date.now() + 500 + state.archive.timeLimit * 1000
})}
</div>
<div class="text-blue-dark text-sm font-medium mt-2">
<div class="link-primary text-sm font-medium mt-2">
${progressPercent}
</div>
<progress class="my-3" value="${progress}">${progressPercent}</progress>
<button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker self-end font-medium"
class="link-primary self-end font-medium"
onclick=${cancel}
title="${state.translate('deletePopupCancel')}"
>
@ -417,7 +475,7 @@ module.exports.empty = function(state, emit) {
? ''
: html`
<button
class="center font-medium text-sm text-blue-dark hover:text-blue-darker focus:text-blue-darker mt-4 mb-2"
class="center font-medium text-sm link-primary mt-4 mb-2"
onclick="${event => {
event.stopPropagation();
emit('signup-cta', 'drop');
@ -428,16 +486,28 @@ module.exports.empty = function(state, emit) {
})}
</button>
`;
const uploadNotice = state.WEB_UI.UPLOAD_AREA_NOTICE_HTML
? html`
<p
class="w-full mt-8 p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
>
${raw(state.WEB_UI.UPLOAD_AREA_NOTICE_HTML)}
</p>
`
: '';
return html`
<send-upload-area
class="flex flex-col items-center justify-center border-2 border-dashed border-grey rounded px-6 py-16 h-full w-full"
class="flex flex-col items-center justify-center border-2 border-dashed border-grey-transparent rounded-default px-6 py-16 h-full w-full dark:border-grey-60"
onclick="${e => {
if (e.target.tagName !== 'LABEL') {
document.getElementById('file-upload').click();
}
}}"
>
<img src="${assets.get('addfiles.svg')}" width="48" height="48" />
<svg class="w-10 h-10 link-primary">
<use xlink:href="/${assets.get('addfiles.svg')}#plus" />
</svg>
<div class="pt-6 pb-2 text-center text-lg font-bold tracking-wide">
${state.translate('dragAndDropFiles')}
</div>
@ -448,7 +518,7 @@ module.exports.empty = function(state, emit) {
</div>
<input
id="file-upload"
class="opacity-0 w-0 h-0 appearance-none absolute"
class="opacity-0 w-0 h-0 appearance-none absolute overflow-hidden"
type="file"
multiple
onfocus="${focus}"
@ -466,19 +536,16 @@ module.exports.empty = function(state, emit) {
>
${state.translate('addFilesButton')}
</label>
${upsell}
${upsell} ${uploadNotice}
</send-upload-area>
`;
function focus(event) {
event.target.nextElementSibling.classList.add('bg-blue-darker', 'outline');
event.target.nextElementSibling.classList.add('bg-primary', 'outline');
}
function blur(event) {
event.target.nextElementSibling.classList.remove(
'bg-blue-darker',
'outline'
);
event.target.nextElementSibling.classList.remove('bg-primary', 'outline');
}
function add(event) {
@ -502,26 +569,61 @@ module.exports.preview = function(state, emit) {
${archiveDetails(state.translate, archive)}
</div>
`;
const notice = state.WEB_UI.DOWNLOAD_NOTICE_HTML
? html`
<p
class="w-full mt-4 p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
>
${raw(state.WEB_UI.DOWNLOAD_NOTICE_HTML)}
</p>
`
: '';
const sponsor = state.WEB_UI.SHOW_THUNDERBIRD_SPONSOR
? html`
<a
class="w-full mt-5 mb-2 p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
href="https://www.thunderbird.net/"
>
<svg
width="30"
height="30"
class="m-2 mr-3 d-inline-block align-middle"
>
<image
xlink:href="${assets.get('thunderbird-icon.svg')}"
src="${assets.get('thunderbird-icon.svg')}"
width="30"
height="30"
/>
</svg>
${state.translate('sponsoredByThunderbird')}
</a>
`
: '';
return html`
<send-archive class="flex flex-col max-h-full bg-white p-4 w-full md:w-128">
<div class="border rounded py-3 px-6">
<send-archive
class="flex flex-col max-h-full bg-white p-4 w-full md:w-128 dark:bg-grey-90"
>
<div class="border-default rounded-default py-3 px-6 dark:border-grey-70">
${archiveInfo(archive)} ${details}
</div>
<button
id="download-btn"
class="btn rounded-lg mt-4 w-full flex-no-shrink focus:outline"
class="btn rounded-lg mt-4 w-full flex-shrink-0 focus:outline"
title="${state.translate('downloadButtonLabel')}"
onclick=${download}
>
${state.translate('downloadButtonLabel')}
</button>
${notice} ${sponsor}
</send-archive>
`;
function download(event) {
event.preventDefault();
event.target.disabled = true;
emit('download', archive);
emit('download');
}
};
@ -531,10 +633,10 @@ module.exports.downloading = function(state) {
const progressPercent = percent(progress);
return html`
<send-archive
class="flex flex-col bg-white rounded shadow-light p-4 w-full max-w-sm md:w-128"
class="flex flex-col bg-white rounded-default shadow-light p-4 w-full max-w-sm md:w-128 dark:bg-grey-90"
>
${archiveInfo(archive)}
<div class="text-blue-dark text-sm font-medium mt-2">
<div class="link-primary text-sm font-medium mt-2">
${progressPercent}
</div>
<progress class="my-3" value="${progress}">${progressPercent}</progress>

View file

@ -4,7 +4,7 @@ module.exports = function() {
return html`
<main class="main">
<section
class="h-full w-full p-6 md:flex md:flex-row md:rounded-lg md:shadow-big"
class="h-full w-full p-6 md:p-8 md:flex md:flex-row md:rounded-xl md:shadow-big"
>
<div class="md:mr-6 md:w-1/2 w-full"></div>
<div class="md:w-1/2 mt-6 md:mt-0 w-full"></div>

View file

@ -1,30 +1,15 @@
const html = require('choo/html');
const Promo = require('./promo');
const Header = require('./header');
const Footer = require('./footer');
function banner(state) {
if (state.layout) {
return; // server side
}
const show =
!state.capabilities.standalone &&
!/firefox/i.test(navigator.userAgent) &&
document.querySelector('html').lang.startsWith('en') &&
!state.route.startsWith('/unsupported/');
if (show) {
return state.cache(Promo, 'promo').render();
}
}
module.exports = function body(main) {
return function(state, emit) {
const b = html`
<body
class="flex flex-col items-center font-sans md:h-screen md:bg-grey-lightest"
class="flex flex-col items-center font-sans md:h-screen md:bg-grey-10 dark:bg-black"
>
${banner(state, emit)} ${state.cache(Header, 'header').render()}
${main(state, emit)} ${state.cache(Footer, 'footer').render()}
${state.cache(Header, 'header').render()} ${main(state, emit)}
${state.cache(Footer, 'footer').render()}
</body>
`;
if (state.layout) {

View file

@ -1,35 +1,48 @@
const html = require('choo/html');
const { copyToClipboard } = require('../utils');
const qr = require('./qr');
module.exports = function(name, url) {
return function(state, emit, close) {
const dialog = function(state, emit, close) {
return html`
<send-copy-dialog
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
>
<h1 class="font-bold my-4">
<h1 class="text-3xl font-bold my-4">
${state.translate('notifyUploadEncryptDone')}
</h1>
<p class="font-normal leading-normal text-grey-darkest word-break-all">
<p
class="font-normal leading-normal text-grey-80 word-break-all dark:text-grey-40"
>
${state.translate('copyLinkDescription')} <br />
${name}
</p>
<div class="flex flex-row items-center justify-center w-full">
<input
type="text"
id="share-url"
class="w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1"
class="block w-full my-4 border-default rounded-lg leading-loose h-12 px-2 py-1 dark:bg-grey-80"
value="${url}"
readonly="true"
/>
<button
class="btn rounded-lg w-full flex-no-shrink focus:outline"
id="qr-btn"
class="w-16 m-1 p-1"
onclick="${toggleQR}"
title="QR code"
>
${qr(url)}
</button>
</div>
<button
class="btn rounded-lg w-full flex-shrink-0 focus:outline"
onclick="${copy}"
title="${state.translate('copyLinkButton')}"
>
${state.translate('copyLinkButton')}
</button>
<button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker my-4 font-medium cursor-pointer focus:outline"
class="link-primary my-4 font-medium cursor-pointer focus:outline"
onclick="${close}"
title="${state.translate('okButton')}"
>
@ -38,6 +51,19 @@ module.exports = function(name, url) {
</send-copy-dialog>
`;
function toggleQR(event) {
event.stopPropagation();
const shareUrl = document.getElementById('share-url');
const qrBtn = document.getElementById('qr-btn');
if (shareUrl.classList.contains('hidden')) {
shareUrl.classList.replace('hidden', 'block');
qrBtn.classList.replace('w-48', 'w-16');
} else {
shareUrl.classList.replace('block', 'hidden');
qrBtn.classList.replace('w-16', 'w-48');
}
}
function copy(event) {
event.stopPropagation();
copyToClipboard(url);
@ -45,4 +71,6 @@ module.exports = function(name, url) {
setTimeout(close, 1000);
}
};
dialog.type = 'copy';
return dialog;
};

View file

@ -22,7 +22,9 @@ function downloading(state, emit) {
<div
class="flex flex-col w-full h-full items-center md:justify-center md:-mt-8"
>
<h1 class="mb-4">${state.translate('downloadingTitle')}</h1>
<h1 class="text-3xl font-bold mb-4">
${state.translate('downloadingTitle')}
</h1>
${archiveTile.downloading(state, emit)}
</div>
`;
@ -36,8 +38,12 @@ function preview(state, emit) {
<div
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
>
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<p class="w-full text-grey-darkest text-center leading-normal">
<h1 class="text-3xl font-bold mb-4">
${state.translate('downloadTitle')}
</h1>
<p
class="w-full text-grey-80 text-center leading-normal dark:text-grey-40"
>
${state.translate('downloadDescription')}
</p>
${archiveTile.preview(state, emit)}
@ -49,9 +55,13 @@ module.exports = function(state, emit) {
let content = '';
if (!state.fileInfo) {
state.fileInfo = createFileInfo(state);
if (!state.fileInfo.nonce) {
if (downloadMetadata.status === 404) {
return notFound(state);
}
if (!state.fileInfo.nonce) {
// coming from something like the browser back button
return location.reload();
}
}
if (!state.transfer && !state.fileInfo.requiresPassword) {
@ -76,7 +86,9 @@ module.exports = function(state, emit) {
return html`
<main class="main">
${state.modal && modal(state, emit)}
<section class="relative h-full w-full p-6 md:rounded-lg md:shadow-big">
<section
class="relative h-full w-full p-6 md:p-8 md:rounded-xl md:shadow-big"
>
${content}
</section>
</main>

View file

@ -2,21 +2,29 @@ const html = require('choo/html');
const assets = require('../../common/assets');
module.exports = function(state) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html`
<div
id="download-complete"
class="flex flex-col items-center justify-center h-full w-full bg-white p-2"
class="flex flex-col items-center justify-center h-full w-full bg-white p-2 dark:bg-grey-90"
>
<h1 class="text-center font-bold my-2">
<h1 class="text-center text-3xl font-bold my-2">
${state.translate('downloadFinish')}
</h1>
<img src="${assets.get('completed.svg')}" class="my-12 h-48" />
<p class="text-grey-darkest leading-normal">
<svg class="my-8 h-48 text-primary">
<use xlink:href="${assets.get('completed.svg')}#Page-1" />
</svg>
<p
class="text-grey-80 leading-normal dark:text-grey-40 ${state.user
.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')}
</p>
<p class="my-5">
<a href="/" class="btn rounded-lg flex items-center mt-4" role="button"
>${state.translate('sendYourFilesLink')}</a
>${state.translate(btnText)}</a
>
</p>
</div>

View file

@ -6,23 +6,33 @@ module.exports = function(state, emit) {
const div = html`
<div
class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto"
class="h-full w-full flex flex-col items-center justify-center bg-white py-8 max-w-md mx-auto dark:bg-grey-90"
>
<h1 class="text-3xl font-bold mb-4">
${state.translate('downloadTitle')}
</h1>
<p
class="w-full mb-4 text-center text-grey-80 dark:text-grey-40 leading-normal"
>
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<p class="w-full mb-4 text-center text-grey-darkest leading-normal">
${state.translate('downloadDescription')}
</p>
<form
class="flex flex-row flex-no-wrap w-full md:w-4/5"
class="flex flex-row flex-nowrap w-full md:w-4/5"
onsubmit="${checkPassword}"
data-no-csrf
>
<input
id="autocomplete-decoy"
class="hidden"
type="password"
value="lol"
/>
<input
id="password-input"
class="w-full border-l border-t border-b rounded-l-lg rounded-r-none ${invalid
? 'border-red'
: 'border-grey'} leading-loose px-2 py-1"
maxlength="32"
? 'border-red dark:border-red-40'
: 'border-grey'} leading-loose px-2 py-1 dark:bg-grey-80"
maxlength="4096"
autocomplete="off"
placeholder="${state.translate('unlockInputPlaceholder')}"
oninput="${inputChanged}"
@ -32,7 +42,7 @@ module.exports = function(state, emit) {
type="submit"
id="password-btn"
class="btn rounded-r-lg rounded-l-none ${invalid
? 'bg-red hover:bg-red focus:bg-red'
? 'bg-red hover:bg-red focus:bg-red dark:bg-red-40'
: ''}"
value="${state.translate('unlockButtonLabel')}"
title="${state.translate('unlockButtonLabel')}"
@ -40,7 +50,7 @@ module.exports = function(state, emit) {
</form>
<label
id="password-error"
class="${invalid ? '' : 'invisible'} text-red my-4"
class="${invalid ? '' : 'invisible'} text-red dark:text-red-40 my-4"
for="password-input"
>
${state.translate('passwordTryAgain')}
@ -59,8 +69,13 @@ module.exports = function(state, emit) {
const input = document.getElementById('password-input');
const btn = document.getElementById('password-btn');
label.classList.add('invisible');
input.classList.remove('border-red');
btn.classList.remove('bg-red', 'hover:bg-red', 'focus:bg-red');
input.classList.remove('border-red', 'dark:border-red-40');
btn.classList.remove(
'bg-red',
'hover:bg-red',
'focus:bg-red',
'dark:bg-red-40'
);
}
function checkPassword(event) {
@ -70,7 +85,9 @@ module.exports = function(state, emit) {
const password = el.value;
if (password.length > 0) {
document.getElementById('password-btn').disabled = true;
state.fileInfo.url = window.location.href;
// Strip any url parameters between fileId and secretKey
const fileInfoUrl = window.location.href.replace(/\?.+#/, '#');
state.fileInfo.url = fileInfoUrl;
state.fileInfo.password = password;
emit('getMetadata');
}

View file

@ -3,22 +3,30 @@ const assets = require('../../common/assets');
const modal = require('./modal');
module.exports = function(state, emit) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html`
<main class="main">
${state.modal && modal(state, emit)}
<section
class="flex flex-col items-center justify-center h-full w-full p-6 overflow-hidden md:rounded-lg md:shadow-big"
class="flex flex-col items-center justify-center h-full w-full p-6 md:p-8 overflow-hidden md:rounded-xl md:shadow-big"
>
<h1 class="text-center font-bold my-2">
<h1 class="text-center text-3xl font-bold my-2">
${state.translate('errorPageHeader')}
</h1>
<img class="my-12 h-48" src="${assets.get('error.svg')}" />
<p class="max-w-md text-center text-grey-darkest leading-normal">
<svg class="text-primary my-12 h-48">
<use xlink:href="${assets.get('error.svg')}#svg114" />
</svg>
<p
class="max-w-md text-center text-grey-80 leading-normal dark:text-grey-40 ${state
.user.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')}
</p>
<p class="my-5">
<a href="/" class="btn rounded-lg flex items-center" role="button"
>${state.translate('sendYourFilesLink')}</a
>${state.translate(btnText)}</a
>
</p>
</section>

View file

@ -31,12 +31,11 @@ module.exports = function(state, emit) {
counts,
num => state.translate('downloadCount', { num }),
value => {
const max = state.user.maxDownloads;
state.archive.dlimit = Math.min(value, max);
if (value > max) {
emit('signup-cta', 'count');
} else {
const selected = parseInt(value);
state.archive.dlimit = selected;
emit('render');
if (selected > parseInt(state.user.maxDownloads || '0')) {
console.log('Chosen max download count is larger than the allowed limit', selected)
}
},
'expire-after-dl-count-select'
@ -58,12 +57,11 @@ module.exports = function(state, emit) {
return state.translate(l10n.id, l10n);
},
value => {
const max = state.user.maxExpireSeconds;
state.archive.timeLimit = Math.min(value, max);
if (value > max) {
emit('signup-cta', 'time');
} else {
const selected = parseInt(value);
state.archive.timeLimit = selected;
emit('render');
if (selected > parseInt(state.user.maxExpireSeconds || '0')) {
console.log('Chosen download expiration is larger than the allowed limit', selected)
}
},
'expire-after-time-select'

View file

@ -0,0 +1,46 @@
/*global WEB_UI*/
const { platform } = require('../utils');
const assets = require('../../common/assets');
const size = 32;
const loaderWidth = 5;
const loaderColor = WEB_UI.COLORS.PRIMARY;
function drawCircle(canvas, context, color, lineWidth, outerWidth, percent) {
canvas.width = canvas.height = outerWidth;
context.translate(outerWidth * 0.5, outerWidth * 0.5);
context.rotate(-Math.PI * 0.5);
const radius = (outerWidth - lineWidth) * 0.5;
context.beginPath();
context.arc(0, 0, radius, 0, Math.PI * 2 * percent, false);
context.strokeStyle = color;
context.lineCap = 'square';
context.lineWidth = lineWidth;
context.stroke();
}
function drawNewFavicon(progressRatio) {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
drawCircle(canvas, context, '#efefef', loaderWidth, size, 1);
drawCircle(canvas, context, loaderColor, loaderWidth, size, progressRatio);
return canvas.toDataURL();
}
module.exports.updateFavicon = function(progressRatio) {
if (platform() === 'web') {
const link = document.querySelector("link[rel='icon'][sizes='32x32']");
const progress = progressRatio * 100;
if (progress === 0 || progress === 100) {
link.type = 'image/png';
link.href =
WEB_UI.CUSTOM_ASSETS.favicon_32px !== ''
? WEB_UI.CUSTOM_ASSETS.favicon_32px
: assets.get('favicon-32x32.png');
return;
}
link.href = drawNewFavicon(progressRatio);
}
};

View file

@ -1,7 +1,5 @@
const html = require('choo/html');
const Component = require('choo/component');
const version = require('../../package.json').version;
const { browserName } = require('../utils');
class Footer extends Component {
constructor(name, state) {
@ -15,48 +13,110 @@ class Footer extends Component {
createElement() {
const translate = this.state.translate;
const browser = browserName();
const feedbackUrl = `https://qsurvey.mozilla.com/s3/Firefox-Send-Product-Feedback?ver=${version}&browser=${browser}`;
// Add additional links from configuration if available
var links = [];
if (this.state != undefined && this.state.WEB_UI != undefined) {
const WEB_UI = this.state.WEB_UI;
if (WEB_UI.FOOTER_DONATE_URL != '') {
links.push(html`
<li class="m-2">
<a href="${WEB_UI.FOOTER_DONATE_URL}" target="_blank">
${translate('footerLinkDonate')}
</a>
</li>
`);
}
if (WEB_UI.FOOTER_CLI_URL != '') {
links.push(html`
<li class="m-2">
<a href="${WEB_UI.FOOTER_CLI_URL}" target="_blank">
${translate('footerLinkCli')}
</a>
</li>
`);
}
if (WEB_UI.FOOTER_DMCA_URL != '') {
links.push(html`
<li class="m-2">
<a href="${WEB_UI.FOOTER_DMCA_URL}" target="_blank">
${translate('footerLinkDmca')}
</a>
</li>
`);
}
if (WEB_UI.FOOTER_SOURCE_URL != '') {
links.push(html`
<li class="m-2">
<a href="${WEB_UI.FOOTER_SOURCE_URL}" target="_blank">
${translate('footerLinkSource')}
</a>
</li>
`);
}
} else {
links.push(html`
<li class="m-2">
<a href="https://gitlab.com/timvisee/send" target="_blank">
${translate('footerLinkSource')}
</a>
</li>
`);
}
// Defining a custom footer
var footer = [];
if (this.state != undefined && this.state.WEB_UI != undefined) {
const WEB_UI = this.state.WEB_UI;
if (WEB_UI.CUSTOM_FOOTER_URL != '' && WEB_UI.CUSTOM_FOOTER_TEXT != '') {
footer.push(html`
<li class="m-2">
<a href="${WEB_UI.CUSTOM_FOOTER_URL}" target="_blank">
${WEB_UI.CUSTOM_FOOTER_TEXT}
</a>
</li>
`);
}
else if (WEB_UI.CUSTOM_FOOTER_URL != '') {
footer.push(html`
<li class="m-2">
<a href="${WEB_UI.CUSTOM_FOOTER_URL}" target="_blank">
${WEB_UI.CUSTOM_FOOTER_URL}
</a>
</li>
`);
}
else if (WEB_UI.CUSTOM_FOOTER_TEXT != '') {
footer.push(html`
<li class="m-2">
${WEB_UI.CUSTOM_FOOTER_TEXT}
</li>
`)
}
else {
footer.push(html`
<li class="m-2">
${translate('footerText')}
</li>
`);
}
}
return html`
<footer
class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 font-medium text-xs text-grey-dark md:items-center justify-between"
class="flex flex-col md:flex-row items-start w-full flex-none self-start p-6 md:p-8 font-medium text-xs text-grey-60 dark:text-grey-40 md:items-center justify-between"
>
<a
class="mozilla-logo pb-10 md:pb-0 m-2"
href="https://www.mozilla.org/"
>
Mozilla
</a>
<ul
class="list-reset flex flex-col md:flex-row items-start md:items-center md:justify-end"
class="flex flex-col md:flex-row items-start md:items-center md:justify-start"
>
<li class="m-2">
<a href="https://www.mozilla.org/about/legal/terms/services/#send">
${translate('footerLinkLegal')}
</a>
</li>
<li class="m-2">
<a href="/legal"> ${translate('footerLinkPrivacy')} </a>
</li>
<li class="m-2">
<a href="https://www.mozilla.org/privacy/websites/#cookies">
${translate('footerLinkCookies')}
</a>
</li>
<li class="m-2">
<a href="https://github.com/mozilla/send">GitHub </a>
</li>
<li class="m-2">
<a
href="${feedbackUrl}"
rel="noreferrer noopener"
class="feedback-link"
alt="Feedback"
target="_blank"
${footer}
</ul>
<ul
class="flex flex-col md:flex-row items-start md:items-center md:justify-end"
>
${translate('siteFeedback')}
</a>
</li>
${links}
</ul>
</footer>
`;

View file

@ -18,17 +18,43 @@ class Header extends Component {
}
createElement() {
let assetMap = {};
if (this.state.ui !== undefined) assetMap = this.state.ui.assets;
else
assetMap = {
icon:
this.state.WEB_UI.CUSTOM_ASSETS.icon !== ''
? this.state.WEB_UI.CUSTOM_ASSETS.icon
: assets.get('icon.svg'),
wordmark:
this.state.WEB_UI.CUSTOM_ASSETS.wordmark !== ''
? this.state.WEB_UI.CUSTOM_ASSETS.wordmark
: assets.get('wordmark.svg') + '#logo'
};
const title =
platform() === 'android'
? html`
<a class=""><img src="${assets.get('logo.svg')}"/></a>
<a class="flex flex-row items-center">
<img src="${assetMap.icon}" />
<svg class="w-48">
<use xlink:href="${assetMap.wordmark}" />
</svg>
</a>
`
: html`
<a class="" href="/"><img src="${assets.get('logo.svg')}"/></a>
<a class="flex flex-row items-center" href="/">
<img
alt="${this.state.translate('title')}"
src="${assetMap.icon}"
/>
<svg viewBox="66 0 340 64" class="w-48 md:w-64">
<use xlink:href="${assetMap.wordmark}" />
</svg>
</a>
`;
return html`
<header
class="relative flex-none flex flex-row items-center justify-between w-full px-6 h-16 md:h-24 z-20 bg-transparent"
class="main-header relative flex-none flex flex-row items-center justify-between w-full px-6 md:px-8 h-16 md:h-24 z-20 bg-transparent"
>
${title} ${this.account.render()}
</header>

View file

@ -1,8 +1,10 @@
const html = require('choo/html');
const raw = require('choo/html/raw');
const { list } = require('../utils');
const archiveTile = require('./archiveTile');
const modal = require('./modal');
const intro = require('./intro');
const assets = require('../../common/assets');
module.exports = function(state, emit) {
const archives = state.storage.files
@ -16,23 +18,54 @@ module.exports = function(state, emit) {
} else {
left = archiveTile.empty(state, emit);
}
if (archives.length > 0 && state.WEB_UI.UPLOADS_LIST_NOTICE_HTML) {
archives.push(html`
<p
class="w-full p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
>
${raw(state.WEB_UI.UPLOADS_LIST_NOTICE_HTML)}
</p>
`);
}
archives.reverse();
if (archives.length > 0 && state.WEB_UI.SHOW_THUNDERBIRD_SPONSOR) {
archives.push(html`
<a
class="w-full p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal d-block"
href="https://www.thunderbird.net/"
>
<svg
width="30"
height="30"
class="m-2 mr-3 d-inline-block align-middle"
>
<image
xlink:href="${assets.get('thunderbird-icon.svg')}"
src="${assets.get('thunderbird-icon.svg')}"
width="30"
height="30"
/>
</svg>
Sponsored by Thunderbird
</a>
`);
}
const right =
archives.length === 0
? intro(state)
: list(
archives,
'list-reset p-2 h-full overflow-y-auto w-full',
'mb-4 w-full'
);
: list(archives, 'p-2 h-full overflow-y-auto w-full', 'mb-4 w-full');
return html`
<main class="main">
${state.modal && modal(state, emit)}
<section
class="h-full w-full p-6 overflow-hidden md:flex md:flex-row md:rounded-lg md:shadow-big"
class="h-full w-full p-6 md:p-8 overflow-hidden md:flex md:flex-row md:rounded-xl md:shadow-big"
>
<div class="px-2 w-full md:px-0 md:mr-6 md:w-1/2">${left}</div>
<div class="px-2 w-full md:px-0 md:mr-8 md:w-1/2">${left}</div>
<div class="mt-6 w-full md:w-1/2 md:-m-2">${right}</div>
</section>
</main>

View file

@ -1,20 +1,55 @@
const html = require('choo/html');
const raw = require('choo/html/raw');
const assets = require('../../common/assets');
module.exports = function intro(state) {
const notice = state.WEB_UI.MAIN_NOTICE_HTML
? html`
<p
class="w-full mt-2 p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
>
${raw(state.WEB_UI.MAIN_NOTICE_HTML)}
</p>
`
: '';
const sponsor = state.WEB_UI.SHOW_THUNDERBIRD_SPONSOR
? html`
<a
class="w-full mt-5 mb-2 p-2 border-default dark:border-grey-70 rounded-default text-orange-60 bg-yellow-40 text-center leading-normal"
href="https://www.thunderbird.net/"
>
<svg
width="30"
height="30"
class="m-2 mr-3 d-inline-block align-middle"
>
<image
xlink:href="${assets.get('thunderbird-icon.svg')}"
src="${assets.get('thunderbird-icon.svg')}"
width="30"
height="30"
/>
</svg>
Sponsored by Thunderbird
</a>
`
: '';
return html`
<send-intro
class="flex flex-col items-center justify-center bg-white px-6 md:py-0 py-6 mb-0 h-full w-full"
class="flex flex-col items-center justify-center bg-white px-6 md:py-0 py-6 mb-0 h-full w-full dark:bg-grey-90"
>
${notice}
<div class="mt-12 flex flex-col h-full">
<h1 class="font-bold">
<h1 class="text-3xl font-bold md:pb-2">
${state.translate('introTitle')}
</h1>
<p class="max-w-sm leading-normal mt-6 md:mt-2 md:pr-16">
<p class="max-w-sm leading-loose mt-6 md:mt-2 md:pr-14">
${state.translate('introDescription')}
</p>
<img class="intro" src="${assets.get('intro.svg')}" />
</div>
${sponsor}
</send-intro>
`;
};

View file

@ -1,106 +0,0 @@
const html = require('choo/html');
const modal = require('./modal');
module.exports = function(state, emit) {
return html`
<main class="main">
${state.modal && modal(state, emit)}
<div
class="flex flex-col items-center bg-white m-4 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full"
>
<h1 class="text-center">${state.translate('legalTitle')}</h1>
<p class="mt-2">${state.translate('legalDateStamp')}</p>
<div class="overflow-scroll py-8 px-12">
<p class="leading-normal">
<span>When Mozilla receives information from you, our</span>
<a
href="https://www.mozilla.org/privacy/"
target="__blank"
rel="noopener noreferrer"
class="text-blue-dark hover:underline"
>Mozilla Privacy Policy</a
>
<span
>describes how we handle that information. Below are the top
things you should know about Firefox Send. You can also view the
code</span
>
<a
href="https://github.com/mozilla/send/blob/master/docs/metrics.md"
target="__blank"
rel="noopener noreferrer"
class="text-blue-dark hover:underline"
>here</a
>.
</p>
<ul class="mt-6 leading-normal">
<li class="mb-4">
<b>Content</b>: Mozilla receives an encrypted copy of the file you
upload but we cannot access the content or name of your encrypted
file. By default, files are stored for a maximum of either 24
hours or 7 days. If you choose a download cap, the file can be
deleted from our server sooner.
</li>
<li class="mb-4">
<b>Data on your device</b>: So that you can check status or delete
files, basic information about your uploaded files is stored on
your local device. This includes our identifier for the file, the
filename, and the files unique download URL. This is cleared if
you delete your uploaded file or upon visiting Send after the file
expires. Note, however, that the URL will persist in your browsing
history (and with whomever you shared it) until manually deleted.
</li>
<li class="mb-4">
<b>Personal data</b>: The following is necessary to provide the
service:
<ul class="mt-6 leading-normal">
<li class="mb-4">
<u>IP addresses</u>: We receive IP addresses of downloaders
and uploaders as part of our standard server logs. These are
retained for 90 days, and for that period, may be connected to
activity of a files download URL. Although we develop our
services in ways that minimize identification, you should know
that it may be possible to correlate the IP address of a Send
user to the IP address of other Mozilla services with
accounts; and if there is a match, this could identify the
account email address.
</li>
<li class="mb-4">
<u>Firefox Account</u>: This is required for authentication
only if you wish to upload larger file sizes. Your Firefox
Account record will retain aggregate data on your usage of
Send: for example, if you created a Firefox Account in
connection with Send, number of files sent and approximate
file sizes, and how many times youve used the service.
</li>
</ul>
</li>
<li class="mb-4">
<b>Non-personal data</b>: We receive the following to improve our
service and performance:
<ul class="mt-6 leading-normal">
<li class="mb-4">
<u>Interaction data</u>: This includes information such as
number of people sending and receiving files, number of files
uploaded and approximate file sizes, percentage of file
downloaders who become uploaders, how people engage with the
website (time spent, clicks, referrer information, site exit
path, use of passwords).
</li>
<li class="mb-4">
<u>Technical data</u>: This includes information such as
operating system, browser, language preference, country,
timestamps, duration for file transfer, reasons for errors,
reasons for file expiration.
</li>
</ul>
</li>
<li class="mb-4">
<b>Third Party Services</b>: We use Google Cloud Platform.
</li>
</ul>
</div>
</div>
</main>
`;
};

View file

@ -3,13 +3,12 @@ const html = require('choo/html');
module.exports = function(state, emit) {
return html`
<send-modal
class="absolute pin flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-lg md:my-8"
onclick="${close}"
class="absolute inset-0 flex items-center justify-center overflow-hidden z-40 bg-white md:rounded-xl md:my-8 dark:bg-grey-90"
>
<div
class="h-full w-full max-h-screen absolute pin-t flex items-center justify-center"
class="h-full w-full max-h-screen absolute top-0 flex justify-center md:items-center"
>
<div class="w-full" onclick="${e => e.stopPropagation()}">
<div class="w-full">
${state.modal(state, emit, close)}
</div>
</div>
@ -21,7 +20,6 @@ module.exports = function(state, emit) {
event.preventDefault();
event.stopPropagation();
}
state.modal = null;
emit('render');
emit('closeModal');
}
};

View file

@ -8,18 +8,20 @@ module.exports = function(state, emit) {
<div
class="flex flex-col w-full max-w-md h-full mx-auto items-center justify-center"
>
<h1 class="mb-4">${state.translate('downloadTitle')}</h1>
<h1 class="mb-4 text-3xl font-bold">${state.translate(
'downloadTitle'
)}</h1>
<p
class="w-full p-2 border border-yellow-light rounded md:w-4/5 text-orange-dark bg-yellow-lighter text-center leading-normal"
class="w-full p-2 border-default border-yellow-50 rounded-default md:w-4/5 text-orange-60 bg-yellow-40 text-center leading-normal"
>
${state.translate('noStreamsWarning')}
</p>
<form class="md:w-128" onsubmit=${submit}>
<fieldset class="border rounded p-4 my-4" onchange=${optionChanged}>
<fieldset class="border-default rounded-default p-4 my-4" onchange=${optionChanged}>
<div class="flex items-center mb-2">
<img class="mr-3 flex-no-shrink" src="${assets.get(
'blue_file.svg'
)}"/>
<svg class="h-8 w-6 mr-3 flex-shrink-0 text-primary">
<use xlink:href="${assets.get('blue_file.svg')}#icon"/>
</svg>
<p class="flex-grow">
<h1 class="text-base font-medium word-break-all">${
archive.name
@ -49,10 +51,15 @@ module.exports = function(state, emit) {
</div>
</fieldset>
<input
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
class="btn rounded-lg w-full flex flex-shrink-0 items-center justify-center"
value="${state.translate('copyLinkButton')}"
title="${state.translate('copyLinkButton')}"
type="submit" />
<p
class="text-grey-80 leading-normal dark:text-grey-40 font-semibold text-center md:my-8 md:text-left"
>
${state.translate('downloadConfirmDescription')}
</p>
</form>
</div>
`;
@ -62,6 +69,7 @@ module.exports = function(state, emit) {
const choice = event.target.value;
const button = event.currentTarget.nextElementSibling;
let title = button.title;
console.error(choice, title);
switch (choice) {
case 'copy':
title = state.translate('copyLinkButton');
@ -92,7 +100,7 @@ module.exports = function(state, emit) {
);
break;
case 'download':
emit('download', archive);
emit('download');
break;
}
return false;

View file

@ -3,22 +3,30 @@ const assets = require('../../common/assets');
const modal = require('./modal');
module.exports = function(state, emit) {
const btnText = state.user.loggedIn ? 'okButton' : 'sendYourFilesLink';
return html`
<main class="main">
${state.modal && modal(state, emit)}
<section
class="flex flex-col items-center justify-center h-full w-full p-6 overflow-hidden md:rounded-lg md:shadow-big"
class="flex flex-col items-center justify-center h-full w-full p-6 md:p-8 overflow-hidden md:rounded-xl md:shadow-big"
>
<h1 class="text-center font-bold my-2">
<h1 class="text-center text-3xl font-bold my-2">
${state.translate('expiredTitle')}
</h1>
<img src="${assets.get('notFound.svg')}" class="my-12" />
<p class="max-w-md text-center text-grey-darkest leading-normal">
<svg class="text-primary my-12">
<use xlink:href="${assets.get('notFound.svg')}#svg124" />
</svg>
<p
class="max-w-md text-center text-grey-80 leading-normal dark:text-grey-40 ${state
.user.loggedIn
? 'hidden'
: ''}"
>
${state.translate('trySendDescription')}
</p>
<p class="my-5">
<a href="/" class="btn rounded-lg flex items-center" role="button"
>${state.translate('sendYourFilesLink')}</a
>${state.translate(btnText)}</a
>
</p>
</section>

View file

@ -4,9 +4,11 @@ module.exports = function(message) {
return function(state, emit, close) {
return html`
<send-ok-dialog class="flex flex-col max-w-sm p-4 m-auto">
<h2 class="text-center m-8 leading-normal">${message}</h2>
<h2 class="text-center text-xl font-bold m-8 leading-normal">
${message}
</h2>
<button
class="btn rounded-lg w-full flex-no-shrink"
class="btn rounded-lg w-full flex-shrink-0"
onclick="${close}"
title="${state.translate('okButton')}"
>

View file

@ -1,40 +0,0 @@
const html = require('choo/html');
const Component = require('choo/component');
const assets = require('../../common/assets');
class Promo extends Component {
constructor(name) {
super(name);
}
update() {
return false;
}
createElement() {
return html`
<send-promo
class="w-full flex-none flex-row items-center content-center justify-center text-sm bg-grey-light leading-tight text-grey-darkest px-4 py-3 hidden md:flex"
>
<div class="flex items-center mx-auto">
<img
src="${assets.get('firefox_logo-only.svg')}"
class="w-6"
alt="Firefox"
/>
<span class="ml-3"
>Send is brought to you by the all-new Firefox.${' '}
<a
class="text-blue"
href="https://www.mozilla.org/firefox/new/?utm_campaign=send-acquisition&utm_medium=referral&utm_source=send.firefox.com"
>
Download Firefox now </a
>
</span>
</div>
</send-promo>
`;
}
}
module.exports = Promo;

10
app/ui/qr.js Normal file
View file

@ -0,0 +1,10 @@
const raw = require('choo/html/raw');
const qrcode = require('../qrcode');
module.exports = function(url) {
const gen = qrcode(0, 'L');
gen.addData(url);
gen.make();
const qr = gen.createSvgTag({ scalable: true });
return raw(qr);
};

View file

@ -1,32 +1,35 @@
const html = require('choo/html');
module.exports = function(selected, options, translate, changed, htmlId) {
let x = selected;
function choose(event) {
if (event.target.value != selected) {
console.log(
'Selected new value from dropdown',
htmlId,
':',
selected,
'->',
event.target.value
);
changed(event.target.value);
}
}
return html`
<select
id="${htmlId}"
class="appearance-none cursor-pointer border rounded bg-grey-lightest hover:border-blue-dark focus:border-blue-dark pl-1 pr-8 py-1 my-1 h-8"
class="appearance-none cursor-pointer border-default rounded-default bg-grey-10 hover:border-primary focus:border-primary pl-1 pr-8 py-1 my-1 h-8 dark:bg-grey-80"
data-selected="${selected}"
onchange="${choose}"
>
${options.map(
i =>
value =>
html`
<option value="${i}" ${i === selected ? 'selected' : ''}
>${translate(i)}</option
>
<option value="${value}" ${value == selected ? 'selected' : ''}>
${translate(value)}
</option>
`
)}
</select>
`;
function choose(event) {
const target = event.target;
const value = +target.value;
if (x !== value) {
x = value;
changed(value);
}
}
};

View file

@ -1,40 +1,36 @@
const html = require('choo/html');
/* Possible strings for l10n
shareLinkDescription = Share the link to your file:
shareLinkButton = Share link
shareMessage = Download "{ $name }" with { -send-brand }: simple, safe file sharing
*/
module.exports = function(name, url) {
return function(state, emit, close) {
const dialog = function(state, emit, close) {
return html`
<send-share-dialog
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
>
<h1 class="font-bold my-4">
<h1 class="text-3xl font-bold my-4">
${state.translate('notifyUploadEncryptDone')}
</h1>
<p class="font-normal leading-normal text-grey-darkest word-break-all">
Share the link to your file:<br />
<p
class="font-normal leading-normal text-grey-80 word-break-all dark:text-grey-40"
>
${state.translate('shareLinkDescription')}<br />
${name}
</p>
<input
type="text"
id="share-url"
class="w-full my-4 border rounded-lg leading-loose h-12 px-2 py-1"
class="w-full my-4 border-default rounded-lg leading-loose h-12 px-2 py-1 dark:bg-grey-80"
value="${url}"
readonly="true"
/>
<button
class="btn rounded-lg w-full flex-no-shrink focus:outline"
class="btn rounded-lg w-full flex-shrink-0 focus:outline"
onclick="${share}"
title="Share link"
title="${state.translate('shareLinkButton')}"
>
Share link
${state.translate('shareLinkButton')}
</button>
<button
class="text-blue-dark hover:text-blue-darker focus:text-blue-darker my-4 font-medium cursor-pointer focus:outline"
class="link-primary my-4 font-medium cursor-pointer focus:outline"
onclick="${close}"
title="${state.translate('okButton')}"
>
@ -48,8 +44,7 @@ module.exports = function(name, url) {
try {
await navigator.share({
title: state.translate('-send-brand'),
text: `Download "${name}" with Firefox Send: simple, safe file sharing`,
//state.translate('shareMessage', { name }),
text: state.translate('shareMessage', { name }),
url
});
} catch (e) {
@ -61,4 +56,6 @@ module.exports = function(name, url) {
close();
}
};
dialog.type = 'share';
return dialog;
};

View file

@ -1,29 +1,22 @@
const html = require('choo/html');
const assets = require('../../common/assets');
const { bytes, platform } = require('../utils');
const { canceledSignup, submittedSignup } = require('../metrics');
const { bytes } = require('../utils');
module.exports = function(trigger) {
module.exports = function() {
return function(state, emit, close) {
const DAYS = Math.floor(state.LIMITS.MAX_EXPIRE_SECONDS / 86400);
const hidden = platform() === 'android' ? 'hidden' : '';
let submitting = false;
return html`
<send-signup-dialog
class="flex flex-col lg:flex-row justify-center px-8 md:px-24 w-full h-full"
class="flex flex-col justify-center my-16 md:my-0 px-8 md:px-24 w-full h-full"
>
<img
src="${assets.get('firefox_logo-only.svg')}"
class="h-16 mt-1 mb-4"
/>
<section
class="flex flex-col flex-no-shrink self-center lg:mx-6 lg:max-w-xs"
>
<h1 class="font-bold text-center lg:text-left">
<img src="${assets.get('master-logo.svg')}" class="h-16 mt-1 mb-4" />
<section class="flex flex-col flex-shrink-0 self-center">
<h1 class="text-3xl font-bold text-center">
${state.translate('accountBenefitTitle')}
</h1>
<ul
class="leading-normal text-grey-darkest my-2 mt-4 pl-4 md:self-center"
class="leading-normal list-disc text-grey-80 my-2 mt-4 pl-4 md:self-center dark:text-grey-40"
>
<li>
${state.translate('accountBenefitLargeFiles', {
@ -35,34 +28,35 @@ module.exports = function(trigger) {
${state.translate('accountBenefitTimeLimit', { count: DAYS })}
</li>
<li>${state.translate('accountBenefitSync')}</li>
<li>${state.translate('accountBenefitMoz')}</li>
</ul>
</section>
<section
class="flex flex-col flex-grow m-4 md:self-center md:w-128 lg:max-w-xs"
>
<section class="flex flex-col flex-grow m-4 md:self-center md:w-128">
<form onsubmit=${submitEmail} data-no-csrf>
<input
id="email-input"
type="email"
class="${hidden} border rounded-lg w-full px-2 py-1 h-12 mb-3 text-lg text-grey-darker leading-loose"
class="hidden border-default rounded-lg w-full px-2 py-1 h-12 mb-3 text-lg text-grey-70 leading-loose dark:bg-grey-80 dark:text-white"
placeholder=${state.translate('emailPlaceholder')}
/>
<input
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
value="${state.translate('signInButton')}"
title="${state.translate('signInButton')}"
class="btn rounded-lg w-full flex flex-shrink-0 items-center justify-center"
value="${state.translate('signInOnlyButton')}"
title="${state.translate('signInOnlyButton')}"
id="email-submit"
type="submit"
/>
</form>
${state.user.loginRequired
? ''
: html`
<button
class="my-3 text-blue-dark hover:text-blue-darker focus:text-blue-darker font-medium"
class="my-3 link-primary font-medium"
title="${state.translate('deletePopupCancel')}"
onclick=${cancel}
>
${state.translate('deletePopupCancel')}
</button>
`}
</section>
</send-signup-dialog>
`;
@ -77,7 +71,6 @@ module.exports = function(trigger) {
}
function cancel(event) {
canceledSignup({ trigger });
close(event);
}
@ -90,7 +83,6 @@ module.exports = function(trigger) {
const el = document.getElementById('email-input');
const email = el.value;
submittedSignup({ trigger });
emit('login', emailish(email) ? email : null);
}
};

42
app/ui/surveyDialog.js Normal file
View file

@ -0,0 +1,42 @@
const html = require('choo/html');
const version = require('../../package.json').version;
const { browserName } = require('../utils');
module.exports = function() {
return function(state, emit, close) {
const surveyUrl = `${
state.PREFS.surveyUrl
}?ver=${version}&browser=${browserName()}&anon=${
state.user.loggedIn
}&active_count=${state.storage.files.length}`;
return html`
<send-survey-dialog
class="flex flex-col items-center text-center p-4 max-w-sm m-auto"
>
<h1 class="text-3xl font-bold my-4">
Tell us what you think.
</h1>
<p class="font-normal leading-normal text-grey-80 px-4">
Love Send? Take a quick survey to let us know how we can make it
better.
</p>
<a
class="btn rounded-lg w-full flex-shrink-0 focus:outline my-5"
onclick="${() => emit('closeModal')}"
title="Give feedback"
href="${surveyUrl}"
target="_blank"
>
Give feedback
</a>
<button
class="link-primary font-medium cursor-pointer focus:outline"
onclick="${close}"
title="Skip"
>
Skip
</button>
</send-survey-dialog>
`;
};
};

View file

@ -10,8 +10,8 @@ module.exports = function(state, emit) {
strings = unsupportedStrings(state);
why = html`
<a
class="text-blue"
href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-is-my-browser-not-supported"
class="text-primary"
href="https://github.com/timvisee/send/blob/master/docs/faq.md#why-is-my-browser-not-supported"
>
${state.translate('notSupportedLink')}
</a>
@ -27,9 +27,9 @@ module.exports = function(state, emit) {
<main class="main">
${state.modal && modal(state, emit)}
<section
class="flex flex-col items-center justify-center text-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full"
class="flex flex-col items-center justify-center text-center bg-white m-6 px-6 py-8 border-default border-grey-30 md:border-none md:px-12 md:py-16 shadow-default w-full md:h-full dark:bg-grey-90"
>
<h1 class="">${strings.header}</h1>
<h1 class="text-3xl font-bold">${strings.header}</h1>
<p class="mt-4 mb-8 max-w-md leading-normal">${strings.description}</p>
${why}
<a href="${url}" class="btn rounded-lg mt-8 px-8">

View file

@ -44,6 +44,14 @@ export default class User {
this.storage.set('firstAction', action);
}
get surveyed() {
return this.storage.get('surveyed');
}
set surveyed(yes) {
this.storage.set('surveyed', yes);
}
get avatar() {
const defaultAvatar = assets.get('user.svg');
if (this.info.avatarDefault) {
@ -68,22 +76,20 @@ export default class User {
return this.info.access_token;
}
get refreshToken() {
return this.info.refresh_token;
}
get maxSize() {
return this.loggedIn
? this.limits.MAX_FILE_SIZE
: this.limits.ANON.MAX_FILE_SIZE;
return this.limits.MAX_FILE_SIZE;
}
get maxExpireSeconds() {
return this.loggedIn
? this.limits.MAX_EXPIRE_SECONDS
: this.limits.ANON.MAX_EXPIRE_SECONDS;
return this.limits.MAX_EXPIRE_SECONDS;
}
get maxDownloads() {
return this.loggedIn
? this.limits.MAX_DOWNLOADS
: this.limits.ANON.MAX_DOWNLOADS;
return this.limits.MAX_DOWNLOADS;
}
async metricId() {
@ -94,30 +100,11 @@ export default class User {
return this.loggedIn ? hashId(this.storage.id) : hashId(anonId);
}
async startAuthFlow(source, utms = {}) {
try {
const params = new URLSearchParams({
entrypoint: `send-${source}`,
form_type: 'email',
utm_source: utms.source || 'send',
utm_campaign: utms.campaign || 'none'
});
const res = await fetch(
`${this.authConfig.issuer}/metrics-flow?${params.toString()}`,
{
mode: 'cors'
}
);
const { flowId, flowBeginTime } = await res.json();
this.flowId = flowId;
this.flowBeginTime = flowBeginTime;
async startAuthFlow(trigger, utms = {}) {
this.utms = utms;
} catch (e) {
console.error(e);
this.trigger = trigger;
this.flowId = null;
this.flowBeginTime = null;
this.utms = null;
}
}
async login(email) {
@ -127,6 +114,7 @@ export default class User {
const code_challenge = await preparePkce(this.storage);
const options = {
action: 'email',
access_type: 'offline',
client_id: this.authConfig.client_id,
code_challenge,
code_challenge_method: 'S256',
@ -142,6 +130,9 @@ export default class User {
options.flow_id = this.flowId;
options.flow_begin_time = this.flowBeginTime;
}
if (this.trigger) {
options.entrypoint = `send-${this.trigger}`;
}
if (this.utms) {
options.utm_campaign = this.utms.campaign || 'none';
options.utm_content = this.utms.content || 'none';
@ -181,12 +172,69 @@ export default class User {
});
const userInfo = await infoResponse.json();
userInfo.access_token = auth.access_token;
userInfo.refresh_token = auth.refresh_token;
userInfo.fileListKey = await getFileListKey(this.storage, auth.keys_jwe);
this.info = userInfo;
this.storage.remove('pkceVerifier');
}
logout() {
async refresh() {
if (!this.refreshToken) {
return false;
}
try {
const tokenResponse = await fetch(this.authConfig.token_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
client_id: this.authConfig.client_id,
grant_type: 'refresh_token',
refresh_token: this.refreshToken
})
});
if (tokenResponse.ok) {
const auth = await tokenResponse.json();
const info = { ...this.info, access_token: auth.access_token };
this.info = info;
return true;
}
} catch (e) {
console.error(e);
}
await this.logout();
return false;
}
async logout() {
try {
if (this.refreshToken) {
await fetch(this.authConfig.revocation_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
refresh_token: this.refreshToken
})
});
}
if (this.bearerToken) {
await fetch(this.authConfig.revocation_endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
token: this.bearerToken
})
});
}
} catch (e) {
console.error(e);
// oh well, we tried
}
this.storage.clearLocalFiles();
this.info = {};
}
@ -200,6 +248,14 @@ export default class User {
const key = b64ToArray(this.info.fileListKey);
const sha = await crypto.subtle.digest('SHA-256', key);
const kid = arrayToB64(new Uint8Array(sha)).substring(0, 16);
const retry = async () => {
const refreshed = await this.refresh();
if (refreshed) {
return await this.syncFileList();
} else {
return { incoming: true };
}
};
try {
const encrypted = await getFileList(this.bearerToken, kid);
const decrypted = await streamToArrayBuffer(
@ -208,8 +264,7 @@ export default class User {
list = JSON.parse(textDecoder.decode(decrypted));
} catch (e) {
if (e.message === '401') {
this.logout();
return { incoming: true };
return retry(e);
}
}
changes = await this.storage.merge(list);
@ -225,7 +280,9 @@ export default class User {
);
await setFileList(this.bearerToken, kid, encrypted);
} catch (e) {
//
if (e.message === '401') {
return retry(e);
}
}
return changes;
}

View file

@ -1,5 +1,10 @@
/* global Android */
const html = require('choo/html');
let html;
try {
html = require('choo/html');
} catch (e) {
// running in the service worker
}
const b64 = require('base64-js');
function arrayToB64(array) {
@ -14,6 +19,10 @@ function b64ToArray(str) {
return b64.toByteArray(str + '==='.slice((str.length + 3) % 4));
}
function locale() {
return document.querySelector('html').lang;
}
function loadShim(polyfill) {
return new Promise((resolve, reject) => {
const shim = document.createElement('script');
@ -25,7 +34,7 @@ function loadShim(polyfill) {
}
function isFile(id) {
return /^[0-9a-fA-F]{10}$/.test(id);
return /^[0-9a-fA-F]{10,16}$/.test(id);
}
function copyToClipboard(str) {
@ -67,8 +76,7 @@ function bytes(num) {
let nStr = n.toFixed(decimalDigits);
if (LOCALIZE_NUMBERS) {
try {
const locale = document.querySelector('html').lang;
nStr = n.toLocaleString(locale, {
nStr = n.toLocaleString(locale(), {
minimumFractionDigits: decimalDigits,
maximumFractionDigits: decimalDigits
});
@ -85,8 +93,7 @@ function bytes(num) {
function percent(ratio) {
if (LOCALIZE_NUMBERS) {
try {
const locale = document.querySelector('html').lang;
return ratio.toLocaleString(locale, { style: 'percent' });
return ratio.toLocaleString(locale(), { style: 'percent' });
} catch (e) {
// fall through
}
@ -96,8 +103,7 @@ function percent(ratio) {
function number(n) {
if (LOCALIZE_NUMBERS) {
const locale = document.querySelector('html').lang;
return n.toLocaleString(locale);
return n.toLocaleString(locale());
}
return n.toString();
}
@ -136,12 +142,16 @@ function openLinksInNewTab(links, should = true) {
function browserName() {
try {
// order of these matters
if (/firefox/i.test(navigator.userAgent)) {
return 'firefox';
}
if (/edge/i.test(navigator.userAgent)) {
return 'edge';
}
if (/edg/i.test(navigator.userAgent)) {
return 'edgium';
}
if (/trident/i.test(navigator.userAgent)) {
return 'ie';
}
@ -267,6 +277,7 @@ function setTranslate(t) {
}
module.exports = {
locale,
fadeOut,
delay,
allowedCopy,

View file

@ -29,7 +29,7 @@ class File {
const v = new DataView(h);
v.setUint32(0, 0x04034b50, true); // sig
v.setUint16(4, 20, true); // version
v.setUint16(6, 8, true); // bit flags (8 = use data descriptor)
v.setUint16(6, 0x808, true); // bit flags (use data descriptor(8) + utf8-encoded(8 << 8))
v.setUint16(8, 0, true); // compression
v.setUint16(10, this.dateTime.time, true); // modified time
v.setUint16(12, this.dateTime.date, true); // modified date
@ -50,7 +50,7 @@ class File {
v.setUint32(0, 0x08074b50, true); // sig
v.setUint32(4, this.crc, true); // crc32
v.setUint32(8, this.size, true); // compressed size
v.setUint16(12, this.size, true); // uncompressed size
v.setUint32(12, this.size, true); // uncompressed size
return new Uint8Array(dd);
}
@ -60,7 +60,7 @@ class File {
v.setUint32(0, 0x02014b50, true); // sig
v.setUint16(4, 20, true); // version made
v.setUint16(6, 20, true); // version required
v.setUint16(8, 0, true); // bit flags
v.setUint16(8, 0x808, true); // bit flags (use data descriptor(8) + utf8-encoded(8 << 8))
v.setUint16(10, 0, true); // compression
v.setUint16(12, this.dateTime.time, true); // modified time
v.setUint16(14, this.dateTime.date, true); // modified date

View file

@ -1,9 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
<defs>
<polygon id="addfiles-a" points="11.143 6 11.143 11.143 6 11.143 6 12.857 11.143 12.857 11.143 18 12.857 18 12.857 12.857 18 12.857 18 11.143 12.857 11.143 12.857 6"/>
</defs>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="plus" viewBox="0 0 24 24">
<g fill="none" fill-rule="evenodd">
<path fill="#0060df" fill-rule="nonzero" d="M12,22.6666667 C17.8910373,22.6666667 22.6666667,17.8910373 22.6666667,12 C22.6666667,6.10896267 17.8910373,1.33333333 12,1.33333333 C6.10896267,1.33333333 1.33333333,6.10896267 1.33333333,12 C1.33333333,17.8910373 6.10896267,22.6666667 12,22.6666667 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z"/>
<use fill="#0060df" xlink:href="#addfiles-a"/>
<path fill="currentColor" fill-rule="nonzero" d="M12,22.6666667 C17.8910373,22.6666667 22.6666667,17.8910373 22.6666667,12 C22.6666667,6.10896267 17.8910373,1.33333333 12,1.33333333 C6.10896267,1.33333333 1.33333333,6.10896267 1.33333333,12 C1.33333333,17.8910373 6.10896267,22.6666667 12,22.6666667 Z M12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 Z"/>
<polygon fill="currentColor" points="11.143 6 11.143 11.143 6 11.143 6 12.857 11.143 12.857 11.143 18 12.857 18 12.857 12.857 18 12.857 18 11.143 12.857 11.143 12.857 6"/>
</g>
</symbol>
<use xlink:href="#plus"/>
</svg>

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 831 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

View file

@ -1,27 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="26px" height="32px" viewBox="0 0 26 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com -->
<title>6AF7DAB4-6456-44F2-AABE-F001D910B641</title>
<desc>Created with sketchtool.</desc>
<defs>
<path d="M21.848475,31.6653183 L2.89005487,31.6653183 C1.32717435,31.6653183 0.104050469,30.3742431 0.104050469,28.8793139 L0.104050469,2.7860044 C0.104050469,1.22312388 1.39512568,0 2.89005487,0 L14.7135857,0 C15.4610503,0 16.2085149,0.271805307 16.6841742,0.815415921 L23.8190635,7.95030523 C24.3626741,8.49391584 24.6344794,9.17342911 24.6344794,9.9208937 L24.6344794,28.8793139 C24.6344794,30.3742431 23.4113555,31.6653183 21.848475,31.6653183 Z" id="path-1"></path>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Send_Ready_to_Send-Spec" transform="translate(-277.000000, -206.000000)">
<g id="List-Item-1" transform="translate(253.000000, 192.000000)">
<g id="Locked-File-Icon" transform="translate(24.000000, 14.000000)">
<g id="File-Icon">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<!--
This would be the elegant way, but chrome cannot handle masks in external SVGs.
See https://bugs.chromium.org/p/chromium/issues/detail?id=109212
-->
<!--
<symbol id="icon" viewBox="0 0 26 32">
<g id="Fire-Icon">
<mask id="mask">
<rect x="0" y="0" width="100" height="100" fill="white"/>
<path d="M7.2830232,8.93885547 L8.91906464,8.93885547" stroke="black" stroke-width="2" stroke-linecap="round"/>
<path d="M7.2830232,15.7798836 L17.5412669,15.7798836" stroke="black" stroke-width="2" stroke-linecap="round"/>
<path d="M7.2830232,22.6209117 L17.5412669,22.6209117" stroke="black" stroke-width="2" stroke-linecap="round"/>
<path d="M24.3031318,10.6474633 L16.7826187,10.6474633 C15.2742552,10.6474633 14.051485,9.42469306 14.051485,7.91632957 L14.051485,0.395816478" id="Path" stroke-linecap="square" stroke="black" stroke-width="2" fill="none"/>
</mask>
<use id="Mask" fill="#45A1FF" opacity="0.6" xlink:href="#path-1"></use>
<path d="M24.3031318,10.6474633 L16.7826187,10.6474633 C15.2742552,10.6474633 14.051485,9.42469306 14.051485,7.91632957 L14.051485,0.395816478" id="Path" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,8.93885547 L8.91906464,8.93885547" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,15.7798836 L17.5412669,15.7798836" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
<path d="M7.2830232,22.6209117 L17.5412669,22.6209117" id="Path" stroke="#0060DF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></path>
</g>
</g>
</g>
</g>
<path d="M21.848475,31.6653183 L2.89005487,31.6653183 C1.32717435,31.6653183 0.104050469,30.3742431 0.104050469,28.8793139 L0.104050469,2.7860044 C0.104050469,1.22312388 1.39512568,0 2.89005487,0 L14.7135857,0 C15.4610503,0 16.2085149,0.271805307 16.6841742,0.815415921 L23.8190635,7.95030523 C24.3626741,8.49391584 24.6344794,9.17342911 24.6344794,9.9208937 L24.6344794,28.8793139 C24.6344794,30.3742431 23.4113555,31.6653183 21.848475,31.6653183 Z" id="path-1" fill="currentColor" mask="url(#mask)" />
</g>
</symbol>
-->
<symbol id="icon" viewBox="0 0 26 32">
<path d="m 15 0 c 0.7 0.1 1.233 0.331 1.7 0.8 l 7.1 7.1 c 0.5 0.5 0.8 1.1 0.8 1.8 h -7.9 c -1 0 -1.7 -0.8 -1.7 -1.7 V 0.4 z M 24.65 11.647 v 17.23 c 0 1.5 -1.2 2.8 -2.8 2.8 h -19 c -1.234 -0.017 -2.694 -1.094 -2.7 -2.8 V 2.8 C 0.1 1.2 1.4 0 2.9 0 h 10.15 v 7.5 c -0.135 2.533 1.669 4.119 3.7 4.15 h 7.9 z M 6.3 8.9 c 0 0.6 0.4 1 1 1 h 1.6 c 0.5 0 1 -0.4 1 -1 c 0 -0.5 -0.5 -1 -1 -1 H 7.3 C 6.7 7.9 6.3 8.4 6.3 8.9 z M 18.5 22.6 c 0 -0.5 -0.4 -1 -1 -1 H 7.3 c -0.6 0 -1 0.5 -1 1 s 0.4 1 1 1 h 10.3 C 18.1 23.6 18.5 23.2 18.5 22.6 z M 18.5 15.8 c 0 -0.6 -0.4 -1 -1 -1 H 7.3 c -0.6 0 -1 0.4 -1 1 s 0.4 1 1 1 h 10.3 C 18.1 16.8 18.5 16.3 18.5 15.8 z" fill="currentColor" />
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before After
Before After

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="#4A4A4A" d="M9.414 8l5.293-5.293a1 1 0 0 0-1.414-1.414L8 6.586 2.707 1.293a1 1 0 0 0-1.414 1.414L6.586 8l-5.293 5.293a1 1 0 1 0 1.414 1.414L8 9.414l5.293 5.293a1 1 0 0 0 1.414-1.414z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="#737373" d="M9.414 8l5.293-5.293a1 1 0 0 0-1.414-1.414L8 6.586 2.707 1.293a1 1 0 0 0-1.414 1.414L6.586 8l-5.293 5.293a1 1 0 1 0 1.414 1.414L8 9.414l5.293 5.293a1 1 0 0 0 1.414-1.414z"/></svg>

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 287 B

Before After
Before After

View file

@ -1,93 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="336px" height="210px" viewBox="0 0 336 210" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<?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"
width="336px"
height="210px"
viewBox="0 0 336 210"
version="1.1"
id="svg117">
<metadata
id="metadata121">
<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>CC310D7B-7EC7-4AEF-90E5-10044C2FA0F1</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<!-- Generator: sketchtool 53.1 (72631) - https://sketchapp.com -->
<title>CC310D7B-7EC7-4AEF-90E5-10044C2FA0F1</title>
<desc>Created with sketchtool.</desc>
<defs>
<linearGradient x1="-28.184294%" y1="-47.2118902%" x2="84.470028%" y2="96.7133243%" id="linearGradient-1">
<stop stop-color="#FA357F" offset="0%"></stop>
<stop stop-color="#7878FF" offset="99.91%"></stop>
<title
id="title2">CC310D7B-7EC7-4AEF-90E5-10044C2FA0F1</title>
<desc
id="desc4">Created with sketchtool.</desc>
<defs
id="defs42">
<linearGradient
x1="-28.184294%"
y1="-47.2118902%"
x2="84.470028%"
y2="96.7133243%"
id="linearGradient-1">
<stop
stop-color="#FA357F"
offset="0%"
id="stop6" />
<stop
stop-color="#7878FF"
offset="99.91%"
id="stop8" />
</linearGradient>
<linearGradient x1="20.1958296%" y1="50.3861311%" x2="169.064414%" y2="48.680104%" id="linearGradient-2">
<stop stop-color="#FFF361" offset="0%"></stop>
<stop stop-color="#FFA80A" offset="100%"></stop>
<linearGradient
x1="20.1958296%"
y1="50.3861311%"
x2="169.064414%"
y2="48.680104%"
id="linearGradient-2">
<stop
stop-color="#FFF361"
offset="0%"
id="stop11" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop13" />
</linearGradient>
<linearGradient x1="7.13940616%" y1="-13.3627152%" x2="84.3212705%" y2="120.017199%" id="linearGradient-3">
<stop stop-color="#FF5162" offset="0%"></stop>
<stop stop-color="#83219D" offset="100%"></stop>
<linearGradient
x1="7.13940616%"
y1="-13.3627152%"
x2="84.3212705%"
y2="120.017199%"
id="linearGradient-3">
<stop
stop-color="#FF5162"
offset="0%"
id="stop16" />
<stop
stop-color="#83219D"
offset="100%"
id="stop18" />
</linearGradient>
<linearGradient x1="50.0466667%" y1="98.7466885%" x2="50.0466667%" y2="63.9770799%" id="linearGradient-4">
<stop stop-color="#008787" offset="0.4302823%"></stop>
<stop stop-color="#005E5E" offset="99.91%"></stop>
<linearGradient
x1="50.0466667%"
y1="98.7466885%"
x2="50.0466667%"
y2="63.9770799%"
id="linearGradient-4">
<stop
stop-color="#008787"
offset="0.4302823%"
id="stop21" />
<stop
stop-color="#005E5E"
offset="99.91%"
id="stop23" />
</linearGradient>
<linearGradient x1="34.0866057%" y1="25.5581764%" x2="59.4765337%" y2="63.0992243%" id="linearGradient-5">
<stop stop-color="#FFD943" offset="0%"></stop>
<stop stop-color="#FFA80A" offset="100%"></stop>
<linearGradient
x1="34.0866057%"
y1="25.5581764%"
x2="59.4765337%"
y2="63.0992243%"
id="linearGradient-5">
<stop
stop-color="#FFD943"
offset="0%"
id="stop26" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop28" />
</linearGradient>
<linearGradient x1="21.6627829%" y1="-7.19090722%" x2="65.1350317%" y2="106.40324%" id="linearGradient-6">
<stop stop-color="#FF8748" offset="0%"></stop>
<stop stop-color="#FE7852" offset="13.28%"></stop>
<stop stop-color="#FC546A" offset="50.49%"></stop>
<stop stop-color="#FA3D79" offset="80.73%"></stop>
<stop stop-color="#FA357F" offset="100%"></stop>
<linearGradient
x1="21.6627829%"
y1="-7.19090722%"
x2="65.1350317%"
y2="106.40324%"
id="linearGradient-6">
<stop
stop-color="#FF8748"
offset="0%"
id="stop31" />
<stop
stop-color="#FE7852"
offset="13.28%"
id="stop33" />
<stop
stop-color="#FC546A"
offset="50.49%"
id="stop35" />
<stop
stop-color="#FA3D79"
offset="80.73%"
id="stop37" />
<stop
stop-color="#FA357F"
offset="100%"
id="stop39" />
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Send_Download-Completed" transform="translate(-552.000000, -339.000000)" fill-rule="nonzero">
<g id="firefox-send_illustrations-03" transform="translate(552.000000, 339.000000)">
<ellipse id="Oval" fill="#EDEDF0" opacity="0.5" cx="165.886875" cy="198.410625" rx="73.52625" ry="11.563125"></ellipse>
<g id="Group" transform="translate(0.000000, 39.375000)" fill="#EDEDF0" opacity="0.5">
<g transform="translate(30.187500, 116.812500)">
<g transform="translate(21.000000, 5.250000)" id="Path">
<path d="M1.575,3.255 L91.546875,3.255 C92.26875,3.255 92.859375,2.664375 92.859375,1.9425 C92.859375,1.220625 92.26875,0.63 91.546875,0.63 L1.575,0.63 C0.853125,0.63 0.2625,1.220625 0.2625,1.9425 C0.2625,2.664375 0.853125,3.255 1.575,3.255 Z"></path>
<g
id="Page-1"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd">
<g
id="Send_Download-Completed"
transform="translate(-552.000000, -339.000000)"
fill-rule="nonzero">
<g
id="firefox-send_illustrations-03"
transform="translate(552.000000, 339.000000)">
<ellipse
id="Oval"
fill="#ededf0"
opacity="0.5"
cx="165.88687"
cy="168.0954"
rx="73.526253"
ry="11.563125" />
<g
id="Group"
transform="translate(0.000000, 39.375000)"
fill="#EDEDF0"
opacity="0.5">
<g
transform="translate(30.187500, 116.812500)"
id="g55">
<g
transform="translate(21.000000, 5.250000)"
id="Path">
<path
d="M1.575,3.255 L91.546875,3.255 C92.26875,3.255 92.859375,2.664375 92.859375,1.9425 C92.859375,1.220625 92.26875,0.63 91.546875,0.63 L1.575,0.63 C0.853125,0.63 0.2625,1.220625 0.2625,1.9425 C0.2625,2.664375 0.853125,3.255 1.575,3.255 Z"
id="path45" />
</g>
<g transform="translate(76.125000, 0.000000)" id="Path">
<path d="M1.693125,1.8375 L24.268125,1.8375 C24.635625,1.8375 24.924375,1.54875 24.924375,1.18125 C24.924375,0.81375 24.635625,0.525 24.268125,0.525 L1.693125,0.525 C1.325625,0.525 1.036875,0.81375 1.036875,1.18125 C1.036875,1.54875 1.325625,1.8375 1.693125,1.8375 Z"></path>
<g
transform="translate(76.125000, 0.000000)"
id="g50">
<path
d="M1.693125,1.8375 L24.268125,1.8375 C24.635625,1.8375 24.924375,1.54875 24.924375,1.18125 C24.924375,0.81375 24.635625,0.525 24.268125,0.525 L1.693125,0.525 C1.325625,0.525 1.036875,0.81375 1.036875,1.18125 C1.036875,1.54875 1.325625,1.8375 1.693125,1.8375 Z"
id="path48" />
</g>
<g transform="translate(0.000000, 11.812500)" id="Shape">
<path d="M0.525,1.89 C0.525,1.5225 0.81375,1.23375 1.18125,1.23375 L5.11875,1.23375 C5.48625,1.23375 5.775,1.5225 5.775,1.89 C5.775,2.2575 5.48625,2.54625 5.11875,2.54625 L1.18125,2.54625 C0.81375,2.54625 0.525,2.2575 0.525,1.89 Z M14.9625,1.89 C14.9625,1.5225 15.25125,1.23375 15.61875,1.23375 L31.36875,1.23375 C31.73625,1.23375 32.025,1.5225 32.025,1.89 C32.025,2.2575 31.73625,2.54625 31.36875,2.54625 L15.61875,2.54625 C15.25125,2.54625 14.9625,2.2575 14.9625,1.89 Z M42.525,1.89 C42.525,1.5225 42.81375,1.23375 43.18125,1.23375 L44.49375,1.23375 C44.86125,1.23375 45.15,1.5225 45.15,1.89 C45.15,2.2575 44.86125,2.54625 44.49375,2.54625 L43.18125,2.54625 C42.81375,2.54625 42.525,2.2575 42.525,1.89 Z M49.0875,1.89 C49.0875,1.5225 49.37625,1.23375 49.74375,1.23375 L53.68125,1.23375 C54.04875,1.23375 54.3375,1.5225 54.3375,1.89 C54.3375,2.2575 54.04875,2.54625 53.68125,2.54625 L49.74375,2.54625 C49.37625,2.54625 49.0875,2.2575 49.0875,1.89 Z M63.525,1.89 C63.525,1.5225 63.81375,1.23375 64.18125,1.23375 L79.93125,1.23375 C80.29875,1.23375 80.5875,1.5225 80.5875,1.89 C80.5875,2.2575 80.29875,2.54625 79.93125,2.54625 L64.18125,2.54625 C63.81375,2.54625 63.525,2.2575 63.525,1.89 Z"></path>
<g
transform="translate(0.000000, 11.812500)"
id="Shape">
<path
d="M0.525,1.89 C0.525,1.5225 0.81375,1.23375 1.18125,1.23375 L5.11875,1.23375 C5.48625,1.23375 5.775,1.5225 5.775,1.89 C5.775,2.2575 5.48625,2.54625 5.11875,2.54625 L1.18125,2.54625 C0.81375,2.54625 0.525,2.2575 0.525,1.89 Z M14.9625,1.89 C14.9625,1.5225 15.25125,1.23375 15.61875,1.23375 L31.36875,1.23375 C31.73625,1.23375 32.025,1.5225 32.025,1.89 C32.025,2.2575 31.73625,2.54625 31.36875,2.54625 L15.61875,2.54625 C15.25125,2.54625 14.9625,2.2575 14.9625,1.89 Z M42.525,1.89 C42.525,1.5225 42.81375,1.23375 43.18125,1.23375 L44.49375,1.23375 C44.86125,1.23375 45.15,1.5225 45.15,1.89 C45.15,2.2575 44.86125,2.54625 44.49375,2.54625 L43.18125,2.54625 C42.81375,2.54625 42.525,2.2575 42.525,1.89 Z M49.0875,1.89 C49.0875,1.5225 49.37625,1.23375 49.74375,1.23375 L53.68125,1.23375 C54.04875,1.23375 54.3375,1.5225 54.3375,1.89 C54.3375,2.2575 54.04875,2.54625 53.68125,2.54625 L49.74375,2.54625 C49.37625,2.54625 49.0875,2.2575 49.0875,1.89 Z M63.525,1.89 C63.525,1.5225 63.81375,1.23375 64.18125,1.23375 L79.93125,1.23375 C80.29875,1.23375 80.5875,1.5225 80.5875,1.89 C80.5875,2.2575 80.29875,2.54625 79.93125,2.54625 L64.18125,2.54625 C63.81375,2.54625 63.525,2.2575 63.525,1.89 Z"
id="path52" />
</g>
</g>
<g transform="translate(123.375000, 72.187500)">
<g transform="translate(26.250000, 5.250000)" id="Path">
<path d="M1.771875,3.163125 L147.039375,3.163125 C147.76125,3.163125 148.351875,2.5725 148.351875,1.850625 C148.351875,1.12875 147.76125,0.538125 147.039375,0.538125 L1.771875,0.538125 C1.05,0.538125 0.459375,1.12875 0.459375,1.850625 C0.459375,2.5725 1.05,3.163125 1.771875,3.163125 Z"></path>
<g
transform="translate(123.375000, 72.187500)"
id="g69">
<g
transform="translate(26.250000, 5.250000)"
id="g59">
<path
d="M1.771875,3.163125 L147.039375,3.163125 C147.76125,3.163125 148.351875,2.5725 148.351875,1.850625 C148.351875,1.12875 147.76125,0.538125 147.039375,0.538125 L1.771875,0.538125 C1.05,0.538125 0.459375,1.12875 0.459375,1.850625 C0.459375,2.5725 1.05,3.163125 1.771875,3.163125 Z"
id="path57" />
</g>
<g transform="translate(45.937500, 0.000000)" id="Path">
<path d="M1.70625,1.850625 L38.14125,1.850625 C38.50875,1.850625 38.7975,1.561875 38.7975,1.194375 C38.7975,0.826875 38.50875,0.538125 38.14125,0.538125 L1.70625,0.538125 C1.33875,0.538125 1.05,0.826875 1.05,1.194375 C1.05,1.561875 1.351875,1.850625 1.70625,1.850625 Z"></path>
<g
transform="translate(45.937500, 0.000000)"
id="g63">
<path
d="M1.70625,1.850625 L38.14125,1.850625 C38.50875,1.850625 38.7975,1.561875 38.7975,1.194375 C38.7975,0.826875 38.50875,0.538125 38.14125,0.538125 L1.70625,0.538125 C1.33875,0.538125 1.05,0.826875 1.05,1.194375 C1.05,1.561875 1.351875,1.850625 1.70625,1.850625 Z"
id="path61" />
</g>
<g transform="translate(0.000000, 11.812500)" id="Shape">
<path d="M1.2075,1.666875 C1.2075,1.299375 1.49625,1.010625 1.86375,1.010625 L17.61375,1.010625 C17.98125,1.010625 18.27,1.299375 18.27,1.666875 C18.27,2.034375 17.98125,2.323125 17.61375,2.323125 L1.86375,2.323125 C1.49625,2.323125 1.2075,2.034375 1.2075,1.666875 Z M27.4575,1.666875 C27.4575,1.299375 27.74625,1.010625 28.11375,1.010625 L32.05125,1.010625 C32.41875,1.010625 32.7075,1.299375 32.7075,1.666875 C32.7075,2.034375 32.41875,2.323125 32.05125,2.323125 L28.11375,2.323125 C27.74625,2.323125 27.4575,2.034375 27.4575,1.666875 Z M36.645,1.666875 C36.645,1.299375 36.93375,1.010625 37.30125,1.010625 L38.61375,1.010625 C38.98125,1.010625 39.27,1.299375 39.27,1.666875 C39.27,2.034375 38.98125,2.323125 38.61375,2.323125 L37.30125,2.323125 C36.93375,2.323125 36.645,2.034375 36.645,1.666875 Z M49.77,1.666875 C49.77,1.299375 50.05875,1.010625 50.42625,1.010625 L66.17625,1.010625 C66.54375,1.010625 66.8325,1.299375 66.8325,1.666875 C66.8325,2.034375 66.54375,2.323125 66.17625,2.323125 L50.42625,2.323125 C50.05875,2.323125 49.77,2.034375 49.77,1.666875 Z M76.02,1.666875 C76.02,1.299375 76.30875,1.010625 76.67625,1.010625 L80.61375,1.010625 C80.98125,1.010625 81.27,1.299375 81.27,1.666875 C81.27,2.034375 80.98125,2.323125 80.61375,2.323125 L76.67625,2.323125 C76.30875,2.323125 76.02,2.034375 76.02,1.666875 Z M85.2075,1.666875 C85.2075,1.299375 85.49625,1.010625 85.86375,1.010625 L87.17625,1.010625 C87.54375,1.010625 87.8325,1.299375 87.8325,1.666875 C87.8325,2.034375 87.54375,2.323125 87.17625,2.323125 L85.86375,2.323125 C85.49625,2.323125 85.2075,2.034375 85.2075,1.666875 Z M98.3325,1.666875 C98.3325,1.299375 98.62125,1.010625 98.98875,1.010625 L114.73875,1.010625 C115.10625,1.010625 115.395,1.299375 115.395,1.666875 C115.395,2.034375 115.10625,2.323125 114.73875,2.323125 L98.98875,2.323125 C98.62125,2.323125 98.3325,2.034375 98.3325,1.666875 Z M124.5825,1.666875 C124.5825,1.299375 124.87125,1.010625 125.23875,1.010625 L129.17625,1.010625 C129.54375,1.010625 129.8325,1.299375 129.8325,1.666875 C129.8325,2.034375 129.54375,2.323125 129.17625,2.323125 L125.23875,2.323125 C124.87125,2.323125 124.5825,2.034375 124.5825,1.666875 Z M133.77,1.666875 C133.77,1.299375 134.05875,1.010625 134.42625,1.010625 L135.73875,1.010625 C136.10625,1.010625 136.395,1.299375 136.395,1.666875 C136.395,2.034375 136.10625,2.323125 135.73875,2.323125 L134.42625,2.323125 C134.05875,2.323125 133.77,2.034375 133.77,1.666875 Z M146.895,1.666875 C146.895,1.299375 147.18375,1.010625 147.55125,1.010625 L163.30125,1.010625 C163.66875,1.010625 163.9575,1.299375 163.9575,1.666875 C163.9575,2.034375 163.66875,2.323125 163.30125,2.323125 L147.55125,2.323125 C147.18375,2.323125 146.895,2.034375 146.895,1.666875 Z M173.145,1.666875 C173.145,1.299375 173.43375,1.010625 173.80125,1.010625 L177.73875,1.010625 C178.10625,1.010625 178.395,1.299375 178.395,1.666875 C178.395,2.034375 178.10625,2.323125 177.73875,2.323125 L173.80125,2.323125 C173.43375,2.323125 173.145,2.034375 173.145,1.666875 Z M182.3325,1.666875 C182.3325,1.299375 182.62125,1.010625 182.98875,1.010625 L184.30125,1.010625 C184.66875,1.010625 184.9575,1.299375 184.9575,1.666875 C184.9575,2.034375 184.66875,2.323125 184.30125,2.323125 L182.98875,2.323125 C182.62125,2.323125 182.3325,2.034375 182.3325,1.666875 Z M195.4575,1.666875 C195.4575,1.299375 195.74625,1.010625 196.11375,1.010625 L211.86375,1.010625 C212.23125,1.010625 212.52,1.299375 212.52,1.666875 C212.52,2.034375 212.23125,2.323125 211.86375,2.323125 L196.11375,2.323125 C195.74625,2.323125 195.4575,2.034375 195.4575,1.666875 Z"></path>
<g
transform="translate(0.000000, 11.812500)"
id="g67">
<path
d="M1.2075,1.666875 C1.2075,1.299375 1.49625,1.010625 1.86375,1.010625 L17.61375,1.010625 C17.98125,1.010625 18.27,1.299375 18.27,1.666875 C18.27,2.034375 17.98125,2.323125 17.61375,2.323125 L1.86375,2.323125 C1.49625,2.323125 1.2075,2.034375 1.2075,1.666875 Z M27.4575,1.666875 C27.4575,1.299375 27.74625,1.010625 28.11375,1.010625 L32.05125,1.010625 C32.41875,1.010625 32.7075,1.299375 32.7075,1.666875 C32.7075,2.034375 32.41875,2.323125 32.05125,2.323125 L28.11375,2.323125 C27.74625,2.323125 27.4575,2.034375 27.4575,1.666875 Z M36.645,1.666875 C36.645,1.299375 36.93375,1.010625 37.30125,1.010625 L38.61375,1.010625 C38.98125,1.010625 39.27,1.299375 39.27,1.666875 C39.27,2.034375 38.98125,2.323125 38.61375,2.323125 L37.30125,2.323125 C36.93375,2.323125 36.645,2.034375 36.645,1.666875 Z M49.77,1.666875 C49.77,1.299375 50.05875,1.010625 50.42625,1.010625 L66.17625,1.010625 C66.54375,1.010625 66.8325,1.299375 66.8325,1.666875 C66.8325,2.034375 66.54375,2.323125 66.17625,2.323125 L50.42625,2.323125 C50.05875,2.323125 49.77,2.034375 49.77,1.666875 Z M76.02,1.666875 C76.02,1.299375 76.30875,1.010625 76.67625,1.010625 L80.61375,1.010625 C80.98125,1.010625 81.27,1.299375 81.27,1.666875 C81.27,2.034375 80.98125,2.323125 80.61375,2.323125 L76.67625,2.323125 C76.30875,2.323125 76.02,2.034375 76.02,1.666875 Z M85.2075,1.666875 C85.2075,1.299375 85.49625,1.010625 85.86375,1.010625 L87.17625,1.010625 C87.54375,1.010625 87.8325,1.299375 87.8325,1.666875 C87.8325,2.034375 87.54375,2.323125 87.17625,2.323125 L85.86375,2.323125 C85.49625,2.323125 85.2075,2.034375 85.2075,1.666875 Z M98.3325,1.666875 C98.3325,1.299375 98.62125,1.010625 98.98875,1.010625 L114.73875,1.010625 C115.10625,1.010625 115.395,1.299375 115.395,1.666875 C115.395,2.034375 115.10625,2.323125 114.73875,2.323125 L98.98875,2.323125 C98.62125,2.323125 98.3325,2.034375 98.3325,1.666875 Z M124.5825,1.666875 C124.5825,1.299375 124.87125,1.010625 125.23875,1.010625 L129.17625,1.010625 C129.54375,1.010625 129.8325,1.299375 129.8325,1.666875 C129.8325,2.034375 129.54375,2.323125 129.17625,2.323125 L125.23875,2.323125 C124.87125,2.323125 124.5825,2.034375 124.5825,1.666875 Z M133.77,1.666875 C133.77,1.299375 134.05875,1.010625 134.42625,1.010625 L135.73875,1.010625 C136.10625,1.010625 136.395,1.299375 136.395,1.666875 C136.395,2.034375 136.10625,2.323125 135.73875,2.323125 L134.42625,2.323125 C134.05875,2.323125 133.77,2.034375 133.77,1.666875 Z M146.895,1.666875 C146.895,1.299375 147.18375,1.010625 147.55125,1.010625 L163.30125,1.010625 C163.66875,1.010625 163.9575,1.299375 163.9575,1.666875 C163.9575,2.034375 163.66875,2.323125 163.30125,2.323125 L147.55125,2.323125 C147.18375,2.323125 146.895,2.034375 146.895,1.666875 Z M173.145,1.666875 C173.145,1.299375 173.43375,1.010625 173.80125,1.010625 L177.73875,1.010625 C178.10625,1.010625 178.395,1.299375 178.395,1.666875 C178.395,2.034375 178.10625,2.323125 177.73875,2.323125 L173.80125,2.323125 C173.43375,2.323125 173.145,2.034375 173.145,1.666875 Z M182.3325,1.666875 C182.3325,1.299375 182.62125,1.010625 182.98875,1.010625 L184.30125,1.010625 C184.66875,1.010625 184.9575,1.299375 184.9575,1.666875 C184.9575,2.034375 184.66875,2.323125 184.30125,2.323125 L182.98875,2.323125 C182.62125,2.323125 182.3325,2.034375 182.3325,1.666875 Z M195.4575,1.666875 C195.4575,1.299375 195.74625,1.010625 196.11375,1.010625 L211.86375,1.010625 C212.23125,1.010625 212.52,1.299375 212.52,1.666875 C212.52,2.034375 212.23125,2.323125 211.86375,2.323125 L196.11375,2.323125 C195.74625,2.323125 195.4575,2.034375 195.4575,1.666875 Z"
id="path65" />
</g>
</g>
<g>
<path d="M2.139375,33.2325 L35.503125,33.2325 C35.503125,33.2325 25.06875,9.89625 47.22375,6.8775 C66.99,4.186875 74.799375,24.504375 74.799375,24.504375 C74.799375,24.504375 77.14875,12.78375 88.895625,15.028125 C100.485,17.233125 109.0425,35.88375 109.0425,35.88375 L138.10125,35.88375" id="Path"></path>
<g transform="translate(1.312500, 0.000000)" id="Shape">
<path d="M137.36625,30.37125 L128.7825,30.37125 C128.349375,30.37125 128.008125,30.03 128.008125,29.596875 C128.008125,29.16375 128.349375,28.8225 128.7825,28.8225 L137.36625,28.8225 C137.799375,28.8225 138.140625,29.16375 138.140625,29.596875 C138.140625,30.03 137.799375,30.37125 137.36625,30.37125 Z M114.883125,30.37125 L113.334375,30.37125 C112.90125,30.37125 112.56,30.03 112.56,29.596875 C112.56,29.16375 112.90125,28.8225 113.334375,28.8225 L114.883125,28.8225 C115.31625,28.8225 115.6575,29.16375 115.6575,29.596875 C115.6575,30.03 115.303125,30.37125 114.883125,30.37125 Z M34.755,29.439375 L32.274375,29.439375 C31.84125,29.439375 31.5,29.098125 31.5,28.665 C31.5,28.231875 31.84125,27.890625 32.274375,27.890625 L33.613125,27.890625 C33.508125,27.615 33.39,27.27375 33.25875,26.893125 C33.1275,26.48625 33.3375,26.053125 33.744375,25.90875 C34.15125,25.7775 34.584375,25.9875 34.72875,26.394375 C35.135625,27.58875 35.46375,28.32375 35.46375,28.336875 C35.56875,28.573125 35.5425,28.84875 35.41125,29.071875 C35.266875,29.308125 35.0175,29.439375 34.755,29.439375 Z M19.92375,29.439375 L1.39125,29.439375 C0.958125,29.439375 0.616875,29.098125 0.616875,28.665 C0.616875,28.231875 0.958125,27.890625 1.39125,27.890625 L19.92375,27.890625 C20.356875,27.890625 20.698125,28.231875 20.698125,28.665 C20.698125,29.098125 20.34375,29.439375 19.92375,29.439375 Z M107.769375,29.360625 C107.49375,29.360625 107.23125,29.21625 107.1,28.966875 C106.60125,28.0875 105.7875,26.69625 104.698125,25.06875 C104.461875,24.714375 104.55375,24.22875 104.908125,23.9925 C105.2625,23.75625 105.748125,23.848125 105.984375,24.2025 C107.1,25.869375 107.94,27.3 108.451875,28.205625 C108.661875,28.573125 108.530625,29.045625 108.15,29.255625 C108.01875,29.32125 107.8875,29.360625 107.769375,29.360625 Z M32.55,21.42 C32.169375,21.42 31.84125,21.144375 31.78875,20.750625 C31.71,20.23875 31.6575,19.700625 31.618125,19.1625 C31.57875,18.7425 31.906875,18.361875 32.326875,18.335625 C32.773125,18.309375 33.1275,18.61125 33.15375,19.044375 C33.193125,19.55625 33.245625,20.055 33.324375,20.540625 C33.39,20.960625 33.088125,21.354375 32.668125,21.406875 C32.62875,21.42 32.589375,21.42 32.55,21.42 Z M72.778125,18.020625 C72.5025,18.020625 72.24,17.87625 72.095625,17.61375 C71.8725,17.206875 71.623125,16.760625 71.3475,16.30125 C71.124375,15.93375 71.2425,15.46125 71.61,15.238125 C71.9775,15.015 72.45,15.133125 72.673125,15.500625 C72.961875,15.98625 73.224375,16.445625 73.460625,16.87875 C73.6575,17.259375 73.52625,17.71875 73.145625,17.92875 C73.0275,17.994375 72.89625,18.020625 72.778125,18.020625 Z M97.295625,16.051875 C97.111875,16.051875 96.94125,15.98625 96.796875,15.868125 C93.84375,13.335 90.90375,11.773125 88.029375,11.221875 C85.2075,10.68375 82.71375,10.959375 80.64,12.0225 C80.259375,12.219375 79.8,12.061875 79.603125,11.694375 C79.40625,11.31375 79.550625,10.854375 79.93125,10.6575 C82.306875,9.42375 85.155,9.10875 88.318125,9.7125 C91.455,10.31625 94.644375,11.983125 97.8075,14.7 C98.135625,14.975625 98.161875,15.46125 97.88625,15.789375 C97.715625,15.96 97.505625,16.051875 97.295625,16.051875 Z M68.394375,11.668125 C68.184375,11.668125 67.96125,11.57625 67.816875,11.405625 C66.80625,10.2375 65.716875,9.174375 64.60125,8.2425 C64.273125,7.966875 64.23375,7.48125 64.509375,7.153125 C64.785,6.825 65.270625,6.785625 65.59875,7.06125 C66.78,8.045625 67.921875,9.174375 68.985,10.395 C69.260625,10.723125 69.234375,11.20875 68.90625,11.484375 C68.74875,11.6025 68.565,11.668125 68.394375,11.668125 Z M36.553125,7.16625 C36.343125,7.16625 36.133125,7.074375 35.975625,6.916875 C35.686875,6.601875 35.713125,6.11625 36.028125,5.8275 C38.495625,3.59625 41.97375,2.1525 46.370625,1.561875 C49.06125,1.194375 51.699375,1.23375 54.193125,1.666875 C54.613125,1.745625 54.88875,2.139375 54.823125,2.559375 C54.744375,2.979375 54.350625,3.268125 53.930625,3.189375 C51.594375,2.7825 49.11375,2.75625 46.580625,3.0975 C42.49875,3.661875 39.29625,4.96125 37.065,6.9825 C36.920625,7.100625 36.736875,7.16625 36.553125,7.16625 Z"></path>
<g
id="g81">
<path
d="M2.139375,33.2325 L35.503125,33.2325 C35.503125,33.2325 25.06875,9.89625 47.22375,6.8775 C66.99,4.186875 74.799375,24.504375 74.799375,24.504375 C74.799375,24.504375 77.14875,12.78375 88.895625,15.028125 C100.485,17.233125 109.0425,35.88375 109.0425,35.88375 L138.10125,35.88375"
id="path71" />
<g
transform="translate(1.312500, 0.000000)"
id="g75">
<path
d="M137.36625,30.37125 L128.7825,30.37125 C128.349375,30.37125 128.008125,30.03 128.008125,29.596875 C128.008125,29.16375 128.349375,28.8225 128.7825,28.8225 L137.36625,28.8225 C137.799375,28.8225 138.140625,29.16375 138.140625,29.596875 C138.140625,30.03 137.799375,30.37125 137.36625,30.37125 Z M114.883125,30.37125 L113.334375,30.37125 C112.90125,30.37125 112.56,30.03 112.56,29.596875 C112.56,29.16375 112.90125,28.8225 113.334375,28.8225 L114.883125,28.8225 C115.31625,28.8225 115.6575,29.16375 115.6575,29.596875 C115.6575,30.03 115.303125,30.37125 114.883125,30.37125 Z M34.755,29.439375 L32.274375,29.439375 C31.84125,29.439375 31.5,29.098125 31.5,28.665 C31.5,28.231875 31.84125,27.890625 32.274375,27.890625 L33.613125,27.890625 C33.508125,27.615 33.39,27.27375 33.25875,26.893125 C33.1275,26.48625 33.3375,26.053125 33.744375,25.90875 C34.15125,25.7775 34.584375,25.9875 34.72875,26.394375 C35.135625,27.58875 35.46375,28.32375 35.46375,28.336875 C35.56875,28.573125 35.5425,28.84875 35.41125,29.071875 C35.266875,29.308125 35.0175,29.439375 34.755,29.439375 Z M19.92375,29.439375 L1.39125,29.439375 C0.958125,29.439375 0.616875,29.098125 0.616875,28.665 C0.616875,28.231875 0.958125,27.890625 1.39125,27.890625 L19.92375,27.890625 C20.356875,27.890625 20.698125,28.231875 20.698125,28.665 C20.698125,29.098125 20.34375,29.439375 19.92375,29.439375 Z M107.769375,29.360625 C107.49375,29.360625 107.23125,29.21625 107.1,28.966875 C106.60125,28.0875 105.7875,26.69625 104.698125,25.06875 C104.461875,24.714375 104.55375,24.22875 104.908125,23.9925 C105.2625,23.75625 105.748125,23.848125 105.984375,24.2025 C107.1,25.869375 107.94,27.3 108.451875,28.205625 C108.661875,28.573125 108.530625,29.045625 108.15,29.255625 C108.01875,29.32125 107.8875,29.360625 107.769375,29.360625 Z M32.55,21.42 C32.169375,21.42 31.84125,21.144375 31.78875,20.750625 C31.71,20.23875 31.6575,19.700625 31.618125,19.1625 C31.57875,18.7425 31.906875,18.361875 32.326875,18.335625 C32.773125,18.309375 33.1275,18.61125 33.15375,19.044375 C33.193125,19.55625 33.245625,20.055 33.324375,20.540625 C33.39,20.960625 33.088125,21.354375 32.668125,21.406875 C32.62875,21.42 32.589375,21.42 32.55,21.42 Z M72.778125,18.020625 C72.5025,18.020625 72.24,17.87625 72.095625,17.61375 C71.8725,17.206875 71.623125,16.760625 71.3475,16.30125 C71.124375,15.93375 71.2425,15.46125 71.61,15.238125 C71.9775,15.015 72.45,15.133125 72.673125,15.500625 C72.961875,15.98625 73.224375,16.445625 73.460625,16.87875 C73.6575,17.259375 73.52625,17.71875 73.145625,17.92875 C73.0275,17.994375 72.89625,18.020625 72.778125,18.020625 Z M97.295625,16.051875 C97.111875,16.051875 96.94125,15.98625 96.796875,15.868125 C93.84375,13.335 90.90375,11.773125 88.029375,11.221875 C85.2075,10.68375 82.71375,10.959375 80.64,12.0225 C80.259375,12.219375 79.8,12.061875 79.603125,11.694375 C79.40625,11.31375 79.550625,10.854375 79.93125,10.6575 C82.306875,9.42375 85.155,9.10875 88.318125,9.7125 C91.455,10.31625 94.644375,11.983125 97.8075,14.7 C98.135625,14.975625 98.161875,15.46125 97.88625,15.789375 C97.715625,15.96 97.505625,16.051875 97.295625,16.051875 Z M68.394375,11.668125 C68.184375,11.668125 67.96125,11.57625 67.816875,11.405625 C66.80625,10.2375 65.716875,9.174375 64.60125,8.2425 C64.273125,7.966875 64.23375,7.48125 64.509375,7.153125 C64.785,6.825 65.270625,6.785625 65.59875,7.06125 C66.78,8.045625 67.921875,9.174375 68.985,10.395 C69.260625,10.723125 69.234375,11.20875 68.90625,11.484375 C68.74875,11.6025 68.565,11.668125 68.394375,11.668125 Z M36.553125,7.16625 C36.343125,7.16625 36.133125,7.074375 35.975625,6.916875 C35.686875,6.601875 35.713125,6.11625 36.028125,5.8275 C38.495625,3.59625 41.97375,2.1525 46.370625,1.561875 C49.06125,1.194375 51.699375,1.23375 54.193125,1.666875 C54.613125,1.745625 54.88875,2.139375 54.823125,2.559375 C54.744375,2.979375 54.350625,3.268125 53.930625,3.189375 C51.594375,2.7825 49.11375,2.75625 46.580625,3.0975 C42.49875,3.661875 39.29625,4.96125 37.065,6.9825 C36.920625,7.100625 36.736875,7.16625 36.553125,7.16625 Z"
id="path73" />
</g>
<g transform="translate(0.000000, 32.812500)" id="Path">
<path d="M139.636875,3.49125 L2.12625,3.49125 C1.273125,3.49125 0.5775,2.795625 0.5775,1.9425 C0.5775,1.089375 1.273125,0.39375 2.12625,0.39375 L139.636875,0.39375 C140.49,0.39375 141.185625,1.089375 141.185625,1.9425 C141.185625,2.795625 140.49,3.49125 139.636875,3.49125 Z"></path>
<g
transform="translate(0.000000, 32.812500)"
id="g79">
<path
d="M139.636875,3.49125 L2.12625,3.49125 C1.273125,3.49125 0.5775,2.795625 0.5775,1.9425 C0.5775,1.089375 1.273125,0.39375 2.12625,0.39375 L139.636875,0.39375 C140.49,0.39375 141.185625,1.089375 141.185625,1.9425 C141.185625,2.795625 140.49,3.49125 139.636875,3.49125 Z"
id="path77" />
</g>
</g>
<g transform="translate(217.875000, 1.312500)">
<path d="M2.034375,19.359375 L20.65875,19.359375 C20.65875,19.359375 14.83125,6.339375 27.195,4.659375 C38.22,3.163125 42.590625,14.49 42.590625,14.49 C42.590625,14.49 43.903125,7.95375 50.465625,9.200625 C56.93625,10.434375 61.71375,20.8425 61.71375,20.8425 L77.923125,20.8425" id="Path"></path>
<g transform="translate(1.312500, 0.000000)" id="Shape">
<path d="M19.884375,17.2725 L1.28625,17.2725 C0.853125,17.2725 0.511875,16.93125 0.511875,16.498125 C0.511875,16.065 0.853125,15.72375 1.28625,15.72375 L19.884375,15.72375 C20.3175,15.72375 20.65875,16.065 20.65875,16.498125 C20.65875,16.93125 20.3175,17.2725 19.884375,17.2725 Z M77.175,17.023125 L76.453125,17.023125 C76.02,17.023125 75.67875,16.681875 75.67875,16.24875 C75.67875,15.815625 76.02,15.474375 76.453125,15.474375 L77.175,15.474375 C77.608125,15.474375 77.949375,15.815625 77.949375,16.24875 C77.949375,16.681875 77.608125,17.023125 77.175,17.023125 Z M70.258125,17.023125 L65.611875,17.023125 C65.17875,17.023125 64.8375,16.681875 64.8375,16.24875 C64.8375,15.815625 65.17875,15.474375 65.611875,15.474375 L70.258125,15.474375 C70.69125,15.474375 71.0325,15.815625 71.0325,16.24875 C71.0325,16.681875 70.69125,17.023125 70.258125,17.023125 Z M41.855625,12.39 C41.540625,12.39 41.251875,12.18 41.13375,11.89125 L41.015625,11.615625 C40.858125,11.26125 40.989375,10.84125 41.3175,10.644375 C42.039375,8.47875 44.07375,5.394375 48.129375,5.394375 C48.680625,5.394375 49.27125,5.446875 49.875,5.565 C52.185,5.998125 54.508125,7.35 56.791875,9.555 C57.09375,9.856875 57.106875,10.3425 56.805,10.644375 C56.503125,10.959375 56.0175,10.959375 55.715625,10.6575 C53.655,8.6625 51.594375,7.455 49.58625,7.074375 C49.074375,6.9825 48.58875,6.93 48.129375,6.93 C43.666875,6.93 42.65625,11.563125 42.616875,11.76 C42.538125,12.140625 42.223125,12.39 41.855625,12.39 Z M20.29125,5.473125 C20.1075,5.473125 19.936875,5.4075 19.7925,5.289375 C19.464375,5.01375 19.425,4.528125 19.700625,4.2 C20.724375,2.9925 22.155,2.1 23.953125,1.535625 C24.36,1.404375 24.793125,1.640625 24.924375,2.0475 C25.055625,2.454375 24.819375,2.8875 24.4125,3.01875 C22.903125,3.49125 21.721875,4.22625 20.881875,5.1975 C20.7375,5.38125 20.514375,5.473125 20.29125,5.473125 Z M31.828125,2.874375 C31.7625,2.874375 31.696875,2.86125 31.618125,2.848125 C31.15875,2.73 30.68625,2.625 30.200625,2.559375 C29.780625,2.49375 29.47875,2.1 29.544375,1.68 C29.61,1.26 30.00375,0.984375 30.42375,1.02375 C30.975,1.1025 31.513125,1.220625 32.025,1.351875 C32.431875,1.47 32.68125,1.89 32.57625,2.296875 C32.484375,2.638125 32.169375,2.874375 31.828125,2.874375 Z"></path>
<g
transform="translate(217.875000, 1.312500)"
id="g93">
<path
d="M2.034375,19.359375 L20.65875,19.359375 C20.65875,19.359375 14.83125,6.339375 27.195,4.659375 C38.22,3.163125 42.590625,14.49 42.590625,14.49 C42.590625,14.49 43.903125,7.95375 50.465625,9.200625 C56.93625,10.434375 61.71375,20.8425 61.71375,20.8425 L77.923125,20.8425"
id="path83" />
<g
transform="translate(1.312500, 0.000000)"
id="g87">
<path
d="M19.884375,17.2725 L1.28625,17.2725 C0.853125,17.2725 0.511875,16.93125 0.511875,16.498125 C0.511875,16.065 0.853125,15.72375 1.28625,15.72375 L19.884375,15.72375 C20.3175,15.72375 20.65875,16.065 20.65875,16.498125 C20.65875,16.93125 20.3175,17.2725 19.884375,17.2725 Z M77.175,17.023125 L76.453125,17.023125 C76.02,17.023125 75.67875,16.681875 75.67875,16.24875 C75.67875,15.815625 76.02,15.474375 76.453125,15.474375 L77.175,15.474375 C77.608125,15.474375 77.949375,15.815625 77.949375,16.24875 C77.949375,16.681875 77.608125,17.023125 77.175,17.023125 Z M70.258125,17.023125 L65.611875,17.023125 C65.17875,17.023125 64.8375,16.681875 64.8375,16.24875 C64.8375,15.815625 65.17875,15.474375 65.611875,15.474375 L70.258125,15.474375 C70.69125,15.474375 71.0325,15.815625 71.0325,16.24875 C71.0325,16.681875 70.69125,17.023125 70.258125,17.023125 Z M41.855625,12.39 C41.540625,12.39 41.251875,12.18 41.13375,11.89125 L41.015625,11.615625 C40.858125,11.26125 40.989375,10.84125 41.3175,10.644375 C42.039375,8.47875 44.07375,5.394375 48.129375,5.394375 C48.680625,5.394375 49.27125,5.446875 49.875,5.565 C52.185,5.998125 54.508125,7.35 56.791875,9.555 C57.09375,9.856875 57.106875,10.3425 56.805,10.644375 C56.503125,10.959375 56.0175,10.959375 55.715625,10.6575 C53.655,8.6625 51.594375,7.455 49.58625,7.074375 C49.074375,6.9825 48.58875,6.93 48.129375,6.93 C43.666875,6.93 42.65625,11.563125 42.616875,11.76 C42.538125,12.140625 42.223125,12.39 41.855625,12.39 Z M20.29125,5.473125 C20.1075,5.473125 19.936875,5.4075 19.7925,5.289375 C19.464375,5.01375 19.425,4.528125 19.700625,4.2 C20.724375,2.9925 22.155,2.1 23.953125,1.535625 C24.36,1.404375 24.793125,1.640625 24.924375,2.0475 C25.055625,2.454375 24.819375,2.8875 24.4125,3.01875 C22.903125,3.49125 21.721875,4.22625 20.881875,5.1975 C20.7375,5.38125 20.514375,5.473125 20.29125,5.473125 Z M31.828125,2.874375 C31.7625,2.874375 31.696875,2.86125 31.618125,2.848125 C31.15875,2.73 30.68625,2.625 30.200625,2.559375 C29.780625,2.49375 29.47875,2.1 29.544375,1.68 C29.61,1.26 30.00375,0.984375 30.42375,1.02375 C30.975,1.1025 31.513125,1.220625 32.025,1.351875 C32.431875,1.47 32.68125,1.89 32.57625,2.296875 C32.484375,2.638125 32.169375,2.874375 31.828125,2.874375 Z"
id="path85" />
</g>
<g transform="translate(0.000000, 18.375000)" id="Path">
<path d="M79.1175,4.095 L2.375625,4.095 C1.5225,4.095 0.826875,3.399375 0.826875,2.54625 C0.826875,1.693125 1.5225,0.9975 2.375625,0.9975 L79.1175,0.9975 C79.970625,0.9975 80.66625,1.693125 80.66625,2.54625 C80.66625,3.399375 79.970625,4.095 79.1175,4.095 Z"></path>
<g
transform="translate(0.000000, 18.375000)"
id="g91">
<path
d="M79.1175,4.095 L2.375625,4.095 C1.5225,4.095 0.826875,3.399375 0.826875,2.54625 C0.826875,1.693125 1.5225,0.9975 2.375625,0.9975 L79.1175,0.9975 C79.970625,0.9975 80.66625,1.693125 80.66625,2.54625 C80.66625,3.399375 79.970625,4.095 79.1175,4.095 Z"
id="path89" />
</g>
</g>
</g>
<path d="M199.014375,201.705 L133.363125,201.980625 C127.995,202.006875 123.61125,197.6625 123.598125,192.294375 L123.230625,102.08625 C123.204375,96.705 127.561875,92.32125 132.943125,92.295 L173.8275,92.124375 C176.413125,92.11125 178.89375,93.121875 180.718125,94.94625 L205.56375,119.51625 C207.40125,121.340625 208.45125,123.82125 208.464375,126.406875 L208.74,191.91375 C208.753125,197.295 204.40875,201.67875 199.014375,201.705 Z" id="Path" fill="#2AC3A2"></path>
<g id="Group" transform="translate(90.562500, 0.000000)">
<path d="M127.089375,21.105 C116.851875,11.1825 104.23875,4.580625 90.58875,1.75875 C99.015,5.210625 106.785,11.52375 113.26875,20.356875 C123.598125,34.426875 129.504375,53.26125 129.898125,73.42125 C129.924375,74.655 129.59625,75.83625 128.9925,76.715625 C128.835,76.951875 128.65125,77.14875 128.4675,77.3325 L145.254375,77.188125 C146.44875,77.175 147.590625,76.689375 148.4175,75.83625 C149.244375,74.983125 149.70375,73.828125 149.664375,72.63375 C149.191875,53.038125 141.1725,34.741875 127.089375,21.105 Z" id="Path" fill="url(#linearGradient-1)"></path>
<path d="M21.42,74.379375 C21.459375,54.2325 27.0375,35.28 37.1175,21.039375 C43.60125,11.878125 51.463125,5.355 60.06,1.81125 C46.055625,4.75125 33.193125,11.68125 22.876875,22.036875 C9.03,35.91 1.33875,54.3375 1.2075,73.933125 C1.194375,75.1275 1.666875,76.269375 2.52,77.1225 C3.36,77.9625 4.515,78.435 5.709375,78.421875 L22.929375,78.264375 C22.7325,78.09375 22.561875,77.896875 22.39125,77.660625 C21.774375,76.78125 21.42,75.6 21.42,74.379375 Z" id="Path" fill="url(#linearGradient-2)"></path>
<path d="M129.898125,73.42125 C129.504375,53.274375 123.585,34.426875 113.26875,20.356875 C106.785,11.52375 99.015,5.210625 90.58875,1.75875 C86.296875,0.879375 81.9,0.3675 77.450625,0.249375 C82.2675,2.52 86.75625,9.68625 90.365625,21 C94.801875,34.925625 97.400625,53.52375 97.663125,73.395 C97.67625,74.6025 97.545,75.770625 97.295625,76.636875 C97.1775,77.056875 97.033125,77.385 96.875625,77.608125 L128.480625,77.3325 C128.664375,77.14875 128.848125,76.951875 129.005625,76.715625 C129.59625,75.83625 129.924375,74.655 129.898125,73.42125 Z" id="Path" fill="url(#linearGradient-3)"></path>
<path d="M75.67875,111.22125 C72.410625,111.22125 69.7725,108.583125 69.7725,105.315 L69.7725,28.940625 C69.7725,25.6725 72.410625,23.034375 75.67875,23.034375 C78.946875,23.034375 81.585,25.6725 81.585,28.940625 L81.585,105.315 C81.585,108.57 78.946875,111.22125 75.67875,111.22125 Z" id="Path" fill="url(#linearGradient-4)"></path>
<path d="M52.185,77.030625 C51.9225,76.164375 51.765,74.99625 51.765,73.78875 C51.68625,53.9175 53.94375,35.266875 58.14375,21.275625 C61.53,9.988125 65.848125,2.7825 70.573125,0.3675 C67.01625,0.60375 63.49875,1.07625 60.06,1.798125 C51.463125,5.341875 43.588125,11.878125 37.1175,21.02625 C27.0375,35.266875 21.4725,54.219375 21.42,74.36625 C21.42,75.6 21.76125,76.78125 22.378125,77.6475 C22.54875,77.88375 22.719375,78.080625 22.91625,78.25125 L52.618125,77.98875 C52.47375,77.77875 52.31625,77.450625 52.185,77.030625 Z" id="Path" fill="url(#linearGradient-5)"></path>
<path d="M70.573125,0.3675 C65.848125,2.7825 61.516875,9.988125 58.14375,21.275625 C53.956875,35.266875 51.68625,53.9175 51.765,73.78875 C51.765,74.99625 51.9225,76.164375 52.185,77.030625 C52.31625,77.450625 52.460625,77.765625 52.63125,78.001875 L96.8625,77.608125 C97.02,77.371875 97.164375,77.056875 97.2825,76.636875 C97.531875,75.770625 97.663125,74.6025 97.65,73.395 C97.374375,53.52375 94.78875,34.925625 90.3525,21 C86.743125,9.68625 82.254375,2.52 77.4375,0.249375 C76.558125,0.223125 75.67875,0.196875 74.78625,0.21 C73.381875,0.223125 71.9775,0.28875 70.573125,0.3675 Z" id="Path" fill="url(#linearGradient-6)"></path>
</g>
<path d="M160.88625,175.966875 C159.166875,175.966875 157.513125,175.284375 156.2925,174.06375 L136.78875,154.56 C134.2425,152.01375 134.2425,147.905625 136.78875,145.359375 C139.335,142.813125 143.443125,142.813125 145.989375,145.359375 L160.02,159.39 L184.681875,124.280625 C186.7425,121.340625 190.785,120.61875 193.738125,122.679375 C196.678125,124.74 197.4,128.795625 195.339375,131.735625 L166.24125,173.1975 C165.13875,174.7725 163.393125,175.783125 161.476875,175.940625 C161.266875,175.95375 161.083125,175.966875 160.88625,175.966875 Z" id="Path" fill="#008787"></path>
<path
id="cloud-check"
d="m 240.12048,110.31165 a 39.582604,39.582604 0 0 1 -10.23938,26.55813 33.935974,33.935974 0 0 1 -20.28366,10.27635 39.949372,39.949372 0 0 0 0.80301,-16.48404 16.944722,16.944722 0 0 0 7.65405,-4.47239 23.665469,23.665469 0 0 0 6.1311,-15.87805 26.589359,26.589359 0 0 0 -26.55812,-26.558123 c -0.87568,0 -5.3742,0.56186 -8.11085,0.91445 a 2.6398778,2.6398778 0 0 1 -2.83769,-1.77451 l -1.08155,-3.155106 A 32.772357,32.772357 0 0 0 158.37085,57.356128 31.757517,31.757517 0 0 0 124.14114,96.347867 l 1.13419,4.851433 a 2.6558127,2.6558127 0 0 1 -1.8179,3.14687 l -4.77313,1.44232 a 15.788381,15.788381 0 0 0 -11.35445,15.14642 10.699791,10.699791 0 0 0 2.19933,6.52543 12.871343,12.871343 0 0 0 9.50281,4.09782 h 7.25749 a 40.137987,40.137987 0 0 0 1.02966,15.93487 h -8.28715 A 28.433555,28.433555 0 0 1 96.535402,136.68302 26.739094,26.739094 0 0 1 91.39497,120.93491 31.54075,31.54075 0 0 1 107.53217,93.318597 c -0.13492,-1.42644 -0.20238,-2.84772 -0.20238,-4.25345 a 47.786197,47.786197 0 0 1 90.59848,-21.246498 42.542454,42.542454 0 0 1 42.19216,42.493001 z m -39.83719,26.55813 a 31.869752,31.869752 0 1 1 -31.86975,-31.86975 31.869752,31.869752 0 0 1 31.86975,31.86975 z m -15.15067,-11.86394 -2.71673,-2.01199 a 1.5763311,1.5763311 0 0 0 -2.00127,0.14182 l -16.73162,15.72576 -9.38033,-4.48657 a 1.7144864,1.7144864 0 0 0 -2.00221,0.5062 l -2.30275,2.94497 a 1.576756,1.576756 0 0 0 0.14182,2.00158 l 11.86234,11.8768 a 4.410933,4.410933 0 0 0 6.89242,-0.53116 l 16.51629,-24.2992 a 1.346922,1.346922 0 0 0 -0.27833,-1.86831 z"
style="fill-opacity:1;stroke-width:5.31163" fill="currentColor" />
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

View file

@ -1 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#0060df" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="icon" viewBox="0 0 16 16">
<path fill="currentColor" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 411 B

Before After
Before After

View file

@ -1,15 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="12px" height="16px" viewBox="0 0 12 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com -->
<title>728D143F-562C-4AE5-80DA-9DBBD9D647D8</title>
<desc>Created with sketchtool.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Send_Sending" transform="translate(-770.000000, -481.000000)" fill="#0060DF">
<g id="List-Item-3" transform="translate(744.000000, 350.000000)">
<g id="Download-Icon" transform="translate(26.000000, 131.000000)">
<path d="M5.293,12.707 C5.6835,13.097382 6.316501,13.097383 6.707001,12.707 L11.707,7.707 C12.08597,7.31462 12.08054,6.69092 11.69481,6.305189 C11.30908,5.91946 10.68538,5.91403 10.293,6.293 L7,9.586 L7,1 C7,0.44772 6.552285,0 6,0 C5.447715,0 5,0.44772 5,1 L5,9.586 L1.707,6.293 C1.314621,5.91403 0.690915,5.91945 0.305181,6.305182 C-0.080553,6.690915 -0.085973,7.314622 0.293,7.707001 L5.293,12.707 Z M11,14 L1,14 C0.447715,14 0,14.447715 0,15 C0,15.5522852 0.447715,16 1,16 L11,16 C11.55228,16 12,15.5522852 12,15 C12,14.447715 11.55229,14 11,14 Z" id="Fill-1"></path>
<svg width="12px" height="16px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="icon" viewBox="0 0 12 16">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-770.000000, -481.000000)" fill="currentColor">
<g transform="translate(744.000000, 350.000000)">
<g transform="translate(26.000000, 131.000000)">
<path d="M5.293,12.707 C5.6835,13.097382 6.316501,13.097383 6.707001,12.707 L11.707,7.707 C12.08597,7.31462 12.08054,6.69092 11.69481,6.305189 C11.30908,5.91946 10.68538,5.91403 10.293,6.293 L7,9.586 L7,1 C7,0.44772 6.552285,0 6,0 C5.447715,0 5,0.44772 5,1 L5,9.586 L1.707,6.293 C1.314621,5.91403 0.690915,5.91945 0.305181,6.305182 C-0.080553,6.690915 -0.085973,7.314622 0.293,7.707001 L5.293,12.707 Z M11,14 L1,14 C0.447715,14 0,14.447715 0,15 C0,15.5522852 0.447715,16 1,16 L11,16 C11.55228,16 12,15.5522852 12,15 C12,14.447715 11.55229,14 11,14 Z"></path>
</g>
</g>
</g>
</g>
</symbol>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1,92 +1,258 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="356px" height="210px" viewBox="0 0 356 210" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<?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"
viewBox="0 0 356 210"
version="1.1"
id="svg114">
<metadata
id="metadata118">
<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>5A8EEB55-E89B-49C5-8493-6FC78CEDF580</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<!-- Generator: sketchtool 53.1 (72631) - https://sketchapp.com -->
<title>5A8EEB55-E89B-49C5-8493-6FC78CEDF580</title>
<desc>Created with sketchtool.</desc>
<defs>
<linearGradient x1="58.3126473%" y1="123.961053%" x2="40.1375665%" y2="-37.2724424%" id="linearGradient-1">
<stop stop-color="#0A5CC7" offset="0.4302823%"></stop>
<stop stop-color="#83219D" offset="99.91%"></stop>
<title
id="title2">5A8EEB55-E89B-49C5-8493-6FC78CEDF580</title>
<desc
id="desc4">Created with sketchtool.</desc>
<defs
id="defs42">
<linearGradient
x1="58.3126473%"
y1="123.961053%"
x2="40.1375665%"
y2="-37.2724424%"
id="linearGradient-1">
<stop
stop-color="#0A5CC7"
offset="0.4302823%"
id="stop6" />
<stop
stop-color="#83219D"
offset="99.91%"
id="stop8" />
</linearGradient>
<linearGradient x1="-28.1745341%" y1="-47.2105072%" x2="84.4799145%" y2="96.7146446%" id="linearGradient-2">
<stop stop-color="#FA357F" offset="0%"></stop>
<stop stop-color="#7878FF" offset="99.91%"></stop>
<linearGradient
x1="-28.1745341%"
y1="-47.2105072%"
x2="84.4799145%"
y2="96.7146446%"
id="linearGradient-2">
<stop
stop-color="#FA357F"
offset="0%"
id="stop11" />
<stop
stop-color="#7878FF"
offset="99.91%"
id="stop13" />
</linearGradient>
<linearGradient x1="20.1896063%" y1="50.397188%" x2="169.058059%" y2="48.6911625%" id="linearGradient-3">
<stop stop-color="#FFF361" offset="0%"></stop>
<stop stop-color="#FFA80A" offset="100%"></stop>
<linearGradient
x1="20.1896063%"
y1="50.397188%"
x2="169.058059%"
y2="48.6911625%"
id="linearGradient-3">
<stop
stop-color="#FFF361"
offset="0%"
id="stop16" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop18" />
</linearGradient>
<linearGradient x1="7.14778295%" y1="-13.3614253%" x2="84.3296473%" y2="120.018489%" id="linearGradient-4">
<stop stop-color="#FF5162" offset="0%"></stop>
<stop stop-color="#83219D" offset="100%"></stop>
<linearGradient
x1="7.14778295%"
y1="-13.3614253%"
x2="84.3296473%"
y2="120.018489%"
id="linearGradient-4">
<stop
stop-color="#FF5162"
offset="0%"
id="stop21" />
<stop
stop-color="#83219D"
offset="100%"
id="stop23" />
</linearGradient>
<linearGradient x1="34.0837535%" y1="25.5596147%" x2="59.4736431%" y2="63.1005055%" id="linearGradient-5">
<stop stop-color="#FFD943" offset="0%"></stop>
<stop stop-color="#FFA80A" offset="100%"></stop>
<linearGradient
x1="34.0837535%"
y1="25.5596147%"
x2="59.4736431%"
y2="63.1005055%"
id="linearGradient-5">
<stop
stop-color="#FFD943"
offset="0%"
id="stop26" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop28" />
</linearGradient>
<linearGradient x1="21.6679292%" y1="-7.19688832%" x2="65.140178%" y2="106.397259%" id="linearGradient-6">
<stop stop-color="#FF8748" offset="0%"></stop>
<stop stop-color="#FE7852" offset="13.28%"></stop>
<stop stop-color="#FC546A" offset="50.49%"></stop>
<stop stop-color="#FA3D79" offset="80.73%"></stop>
<stop stop-color="#FA357F" offset="100%"></stop>
<linearGradient
x1="21.6679292%"
y1="-7.19688832%"
x2="65.140178%"
y2="106.397259%"
id="linearGradient-6">
<stop
stop-color="#FF8748"
offset="0%"
id="stop31" />
<stop
stop-color="#FE7852"
offset="13.28%"
id="stop33" />
<stop
stop-color="#FC546A"
offset="50.49%"
id="stop35" />
<stop
stop-color="#FA3D79"
offset="80.73%"
id="stop37" />
<stop
stop-color="#FA357F"
offset="100%"
id="stop39" />
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Send_Went_Wrong" transform="translate(-542.000000, -304.000000)" fill-rule="nonzero">
<g id="firefox-send_illustrations-02" transform="translate(541.986755, 304.000000)">
<g id="Group" transform="translate(0.000000, 41.721854)" fill="#EDEDF0" opacity="0.5">
<g transform="translate(31.986755, 123.774834)">
<g transform="translate(22.251656, 5.562914)" id="Path">
<path d="M1.71059603,3.36556291 L97.0450331,3.36556291 C97.8099338,3.36556291 98.4357616,2.7397351 98.4357616,1.97483444 C98.4357616,1.20993377 97.8099338,0.58410596 97.0450331,0.58410596 L1.71059603,0.58410596 C0.945695364,0.58410596 0.31986755,1.20993377 0.31986755,1.97483444 C0.31986755,2.7397351 0.945695364,3.36556291 1.71059603,3.36556291 Z"></path>
<g
id="Page-1"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd">
<g
id="Send_Went_Wrong"
transform="translate(-542.000000, -304.000000)"
fill-rule="nonzero">
<g
id="firefox-send_illustrations-02"
transform="translate(541.986755, 304.000000)">
<g
id="Group"
transform="translate(0.000000, 41.721854)"
fill="#EDEDF0"
opacity="0.5">
<g
transform="translate(31.986755, 123.774834)"
id="g54">
<g
transform="translate(22.251656, 5.562914)"
id="Path">
<path
d="M1.71059603,3.36556291 L97.0450331,3.36556291 C97.8099338,3.36556291 98.4357616,2.7397351 98.4357616,1.97483444 C98.4357616,1.20993377 97.8099338,0.58410596 97.0450331,0.58410596 L1.71059603,0.58410596 C0.945695364,0.58410596 0.31986755,1.20993377 0.31986755,1.97483444 C0.31986755,2.7397351 0.945695364,3.36556291 1.71059603,3.36556291 Z"
id="path44" />
</g>
<g transform="translate(80.662252, 0.000000)" id="Path">
<path d="M1.84966887,1.86357616 L25.7701987,1.86357616 C26.1596026,1.86357616 26.4655629,1.55761589 26.4655629,1.16821192 C26.4655629,0.778807947 26.1596026,0.472847682 25.7701987,0.472847682 L1.84966887,0.472847682 C1.4602649,0.472847682 1.15430464,0.778807947 1.15430464,1.16821192 C1.15430464,1.55761589 1.4602649,1.86357616 1.84966887,1.86357616 Z"></path>
<g
transform="translate(80.662252, 0.000000)"
id="g49">
<path
d="M1.84966887,1.86357616 L25.7701987,1.86357616 C26.1596026,1.86357616 26.4655629,1.55761589 26.4655629,1.16821192 C26.4655629,0.778807947 26.1596026,0.472847682 25.7701987,0.472847682 L1.84966887,0.472847682 C1.4602649,0.472847682 1.15430464,0.778807947 1.15430464,1.16821192 C1.15430464,1.55761589 1.4602649,1.86357616 1.84966887,1.86357616 Z"
id="path47" />
</g>
<g transform="translate(0.000000, 12.516556)" id="Shape">
<path d="M0.598013245,1.9192053 C0.598013245,1.52980132 0.90397351,1.22384106 1.29337748,1.22384106 L5.46556291,1.22384106 C5.85496689,1.22384106 6.16092715,1.52980132 6.16092715,1.9192053 C6.16092715,2.30860927 5.85496689,2.61456954 5.46556291,2.61456954 L1.29337748,2.61456954 C0.917880795,2.61456954 0.598013245,2.29470199 0.598013245,1.9192053 Z M15.8960265,1.9192053 C15.8960265,1.52980132 16.2019868,1.22384106 16.5913907,1.22384106 L33.2801325,1.22384106 C33.6695364,1.22384106 33.9754967,1.52980132 33.9754967,1.9192053 C33.9754967,2.30860927 33.6695364,2.61456954 33.2801325,2.61456954 L16.5913907,2.61456954 C16.215894,2.61456954 15.8960265,2.29470199 15.8960265,1.9192053 Z M45.1013245,1.9192053 C45.1013245,1.52980132 45.4072848,1.22384106 45.7966887,1.22384106 L47.1874172,1.22384106 C47.5768212,1.22384106 47.8827815,1.52980132 47.8827815,1.9192053 C47.8827815,2.30860927 47.5768212,2.61456954 47.1874172,2.61456954 L45.7966887,2.61456954 C45.4211921,2.61456954 45.1013245,2.29470199 45.1013245,1.9192053 Z M52.0549669,1.9192053 C52.0549669,1.52980132 52.3609272,1.22384106 52.7503311,1.22384106 L56.9225166,1.22384106 C57.3119205,1.22384106 57.6178808,1.52980132 57.6178808,1.9192053 C57.6178808,2.30860927 57.3119205,2.61456954 56.9225166,2.61456954 L52.7503311,2.61456954 C52.3748344,2.61456954 52.0549669,2.29470199 52.0549669,1.9192053 Z M67.3529801,1.9192053 C67.3529801,1.52980132 67.6589404,1.22384106 68.0483444,1.22384106 L84.7370861,1.22384106 C85.1264901,1.22384106 85.4324503,1.52980132 85.4324503,1.9192053 C85.4324503,2.30860927 85.1264901,2.61456954 84.7370861,2.61456954 L68.0483444,2.61456954 C67.6728477,2.61456954 67.3529801,2.29470199 67.3529801,1.9192053 Z"></path>
<g
transform="translate(0.000000, 12.516556)"
id="Shape">
<path
d="M0.598013245,1.9192053 C0.598013245,1.52980132 0.90397351,1.22384106 1.29337748,1.22384106 L5.46556291,1.22384106 C5.85496689,1.22384106 6.16092715,1.52980132 6.16092715,1.9192053 C6.16092715,2.30860927 5.85496689,2.61456954 5.46556291,2.61456954 L1.29337748,2.61456954 C0.917880795,2.61456954 0.598013245,2.29470199 0.598013245,1.9192053 Z M15.8960265,1.9192053 C15.8960265,1.52980132 16.2019868,1.22384106 16.5913907,1.22384106 L33.2801325,1.22384106 C33.6695364,1.22384106 33.9754967,1.52980132 33.9754967,1.9192053 C33.9754967,2.30860927 33.6695364,2.61456954 33.2801325,2.61456954 L16.5913907,2.61456954 C16.215894,2.61456954 15.8960265,2.29470199 15.8960265,1.9192053 Z M45.1013245,1.9192053 C45.1013245,1.52980132 45.4072848,1.22384106 45.7966887,1.22384106 L47.1874172,1.22384106 C47.5768212,1.22384106 47.8827815,1.52980132 47.8827815,1.9192053 C47.8827815,2.30860927 47.5768212,2.61456954 47.1874172,2.61456954 L45.7966887,2.61456954 C45.4211921,2.61456954 45.1013245,2.29470199 45.1013245,1.9192053 Z M52.0549669,1.9192053 C52.0549669,1.52980132 52.3609272,1.22384106 52.7503311,1.22384106 L56.9225166,1.22384106 C57.3119205,1.22384106 57.6178808,1.52980132 57.6178808,1.9192053 C57.6178808,2.30860927 57.3119205,2.61456954 56.9225166,2.61456954 L52.7503311,2.61456954 C52.3748344,2.61456954 52.0549669,2.29470199 52.0549669,1.9192053 Z M67.3529801,1.9192053 C67.3529801,1.52980132 67.6589404,1.22384106 68.0483444,1.22384106 L84.7370861,1.22384106 C85.1264901,1.22384106 85.4324503,1.52980132 85.4324503,1.9192053 C85.4324503,2.30860927 85.1264901,2.61456954 84.7370861,2.61456954 L68.0483444,2.61456954 C67.6728477,2.61456954 67.3529801,2.29470199 67.3529801,1.9192053 Z"
id="path51" />
</g>
</g>
<g transform="translate(130.728477, 76.490066)">
<g transform="translate(27.814570, 5.562914)" id="Path">
<path d="M1.93311258,3.25430464 L155.85894,3.25430464 C156.623841,3.25430464 157.249669,2.62847682 157.249669,1.86357616 C157.249669,1.0986755 156.623841,0.472847682 155.85894,0.472847682 L1.93311258,0.472847682 C1.16821192,0.472847682 0.542384106,1.0986755 0.542384106,1.86357616 C0.542384106,2.62847682 1.15430464,3.25430464 1.93311258,3.25430464 Z"></path>
<g
transform="translate(130.728477, 76.490066)"
id="g68">
<g
transform="translate(27.814570, 5.562914)"
id="g58">
<path
d="M1.93311258,3.25430464 L155.85894,3.25430464 C156.623841,3.25430464 157.249669,2.62847682 157.249669,1.86357616 C157.249669,1.0986755 156.623841,0.472847682 155.85894,0.472847682 L1.93311258,0.472847682 C1.16821192,0.472847682 0.542384106,1.0986755 0.542384106,1.86357616 C0.542384106,2.62847682 1.15430464,3.25430464 1.93311258,3.25430464 Z"
id="path56" />
</g>
<g transform="translate(48.675497, 0.000000)" id="Path">
<path d="M1.86357616,1.86357616 L40.4701987,1.86357616 C40.8596026,1.86357616 41.1655629,1.55761589 41.1655629,1.16821192 C41.1655629,0.778807947 40.8596026,0.472847682 40.4701987,0.472847682 L1.86357616,0.472847682 C1.47417219,0.472847682 1.16821192,0.778807947 1.16821192,1.16821192 C1.16821192,1.55761589 1.47417219,1.86357616 1.86357616,1.86357616 Z"></path>
<g
transform="translate(48.675497, 0.000000)"
id="g62">
<path
d="M1.86357616,1.86357616 L40.4701987,1.86357616 C40.8596026,1.86357616 41.1655629,1.55761589 41.1655629,1.16821192 C41.1655629,0.778807947 40.8596026,0.472847682 40.4701987,0.472847682 L1.86357616,0.472847682 C1.47417219,0.472847682 1.16821192,0.778807947 1.16821192,1.16821192 C1.16821192,1.55761589 1.47417219,1.86357616 1.86357616,1.86357616 Z"
id="path60" />
</g>
<g transform="translate(0.000000, 12.516556)" id="Shape">
<path d="M1.32119205,1.68278146 C1.32119205,1.29337748 1.62715232,0.987417219 2.01655629,0.987417219 L18.705298,0.987417219 C19.094702,0.987417219 19.4006623,1.29337748 19.4006623,1.68278146 C19.4006623,2.07218543 19.094702,2.3781457 18.705298,2.3781457 L2.01655629,2.3781457 C1.6410596,2.3781457 1.32119205,2.07218543 1.32119205,1.68278146 Z M29.1357616,1.68278146 C29.1357616,1.29337748 29.4417219,0.987417219 29.8311258,0.987417219 L34.0033113,0.987417219 C34.3927152,0.987417219 34.6986755,1.29337748 34.6986755,1.68278146 C34.6986755,2.07218543 34.3927152,2.3781457 34.0033113,2.3781457 L29.8311258,2.3781457 C29.4556291,2.3781457 29.1357616,2.07218543 29.1357616,1.68278146 Z M38.8708609,1.68278146 C38.8708609,1.29337748 39.1768212,0.987417219 39.5662252,0.987417219 L40.9569536,0.987417219 C41.3463576,0.987417219 41.6523179,1.29337748 41.6523179,1.68278146 C41.6523179,2.07218543 41.3463576,2.3781457 40.9569536,2.3781457 L39.5662252,2.3781457 C39.1907285,2.3781457 38.8708609,2.07218543 38.8708609,1.68278146 Z M52.7781457,1.68278146 C52.7781457,1.29337748 53.084106,0.987417219 53.4735099,0.987417219 L70.1622517,0.987417219 C70.5516556,0.987417219 70.8576159,1.29337748 70.8576159,1.68278146 C70.8576159,2.07218543 70.5516556,2.3781457 70.1622517,2.3781457 L53.4735099,2.3781457 C53.0980132,2.3781457 52.7781457,2.07218543 52.7781457,1.68278146 Z M80.5927152,1.68278146 C80.5927152,1.29337748 80.8986755,0.987417219 81.2880795,0.987417219 L85.4602649,0.987417219 C85.8496689,0.987417219 86.1556291,1.29337748 86.1556291,1.68278146 C86.1556291,2.07218543 85.8496689,2.3781457 85.4602649,2.3781457 L81.2880795,2.3781457 C80.9125828,2.3781457 80.5927152,2.07218543 80.5927152,1.68278146 Z M90.3278146,1.68278146 C90.3278146,1.29337748 90.6337748,0.987417219 91.0231788,0.987417219 L92.4139073,0.987417219 C92.8033113,0.987417219 93.1092715,1.29337748 93.1092715,1.68278146 C93.1092715,2.07218543 92.8033113,2.3781457 92.4139073,2.3781457 L91.0231788,2.3781457 C90.6476821,2.3781457 90.3278146,2.07218543 90.3278146,1.68278146 Z M104.235099,1.68278146 C104.235099,1.29337748 104.54106,0.987417219 104.930464,0.987417219 L121.619205,0.987417219 C122.008609,0.987417219 122.31457,1.29337748 122.31457,1.68278146 C122.31457,2.07218543 122.008609,2.3781457 121.619205,2.3781457 L104.930464,2.3781457 C104.554967,2.3781457 104.235099,2.07218543 104.235099,1.68278146 Z M132.049669,1.68278146 C132.049669,1.29337748 132.355629,0.987417219 132.745033,0.987417219 L136.917219,0.987417219 C137.306623,0.987417219 137.612583,1.29337748 137.612583,1.68278146 C137.612583,2.07218543 137.306623,2.3781457 136.917219,2.3781457 L132.745033,2.3781457 C132.369536,2.3781457 132.049669,2.07218543 132.049669,1.68278146 Z M141.784768,1.68278146 C141.784768,1.29337748 142.090728,0.987417219 142.480132,0.987417219 L143.870861,0.987417219 C144.260265,0.987417219 144.566225,1.29337748 144.566225,1.68278146 C144.566225,2.07218543 144.260265,2.3781457 143.870861,2.3781457 L142.480132,2.3781457 C142.104636,2.3781457 141.784768,2.07218543 141.784768,1.68278146 Z M155.692053,1.68278146 C155.692053,1.29337748 155.998013,0.987417219 156.387417,0.987417219 L173.076159,0.987417219 C173.465563,0.987417219 173.771523,1.29337748 173.771523,1.68278146 C173.771523,2.07218543 173.465563,2.3781457 173.076159,2.3781457 L156.387417,2.3781457 C156.011921,2.3781457 155.692053,2.07218543 155.692053,1.68278146 Z M183.506623,1.68278146 C183.506623,1.29337748 183.812583,0.987417219 184.201987,0.987417219 L188.374172,0.987417219 C188.763576,0.987417219 189.069536,1.29337748 189.069536,1.68278146 C189.069536,2.07218543 188.763576,2.3781457 188.374172,2.3781457 L184.201987,2.3781457 C183.82649,2.3781457 183.506623,2.07218543 183.506623,1.68278146 Z M193.241722,1.68278146 C193.241722,1.29337748 193.547682,0.987417219 193.937086,0.987417219 L195.327815,0.987417219 C195.717219,0.987417219 196.023179,1.29337748 196.023179,1.68278146 C196.023179,2.07218543 195.717219,2.3781457 195.327815,2.3781457 L193.937086,2.3781457 C193.561589,2.3781457 193.241722,2.07218543 193.241722,1.68278146 Z M207.149007,1.68278146 C207.149007,1.29337748 207.454967,0.987417219 207.844371,0.987417219 L224.533113,0.987417219 C224.922517,0.987417219 225.228477,1.29337748 225.228477,1.68278146 C225.228477,2.07218543 224.922517,2.3781457 224.533113,2.3781457 L207.844371,2.3781457 C207.468874,2.3781457 207.149007,2.07218543 207.149007,1.68278146 Z"></path>
<g
transform="translate(0.000000, 12.516556)"
id="g66">
<path
d="M1.32119205,1.68278146 C1.32119205,1.29337748 1.62715232,0.987417219 2.01655629,0.987417219 L18.705298,0.987417219 C19.094702,0.987417219 19.4006623,1.29337748 19.4006623,1.68278146 C19.4006623,2.07218543 19.094702,2.3781457 18.705298,2.3781457 L2.01655629,2.3781457 C1.6410596,2.3781457 1.32119205,2.07218543 1.32119205,1.68278146 Z M29.1357616,1.68278146 C29.1357616,1.29337748 29.4417219,0.987417219 29.8311258,0.987417219 L34.0033113,0.987417219 C34.3927152,0.987417219 34.6986755,1.29337748 34.6986755,1.68278146 C34.6986755,2.07218543 34.3927152,2.3781457 34.0033113,2.3781457 L29.8311258,2.3781457 C29.4556291,2.3781457 29.1357616,2.07218543 29.1357616,1.68278146 Z M38.8708609,1.68278146 C38.8708609,1.29337748 39.1768212,0.987417219 39.5662252,0.987417219 L40.9569536,0.987417219 C41.3463576,0.987417219 41.6523179,1.29337748 41.6523179,1.68278146 C41.6523179,2.07218543 41.3463576,2.3781457 40.9569536,2.3781457 L39.5662252,2.3781457 C39.1907285,2.3781457 38.8708609,2.07218543 38.8708609,1.68278146 Z M52.7781457,1.68278146 C52.7781457,1.29337748 53.084106,0.987417219 53.4735099,0.987417219 L70.1622517,0.987417219 C70.5516556,0.987417219 70.8576159,1.29337748 70.8576159,1.68278146 C70.8576159,2.07218543 70.5516556,2.3781457 70.1622517,2.3781457 L53.4735099,2.3781457 C53.0980132,2.3781457 52.7781457,2.07218543 52.7781457,1.68278146 Z M80.5927152,1.68278146 C80.5927152,1.29337748 80.8986755,0.987417219 81.2880795,0.987417219 L85.4602649,0.987417219 C85.8496689,0.987417219 86.1556291,1.29337748 86.1556291,1.68278146 C86.1556291,2.07218543 85.8496689,2.3781457 85.4602649,2.3781457 L81.2880795,2.3781457 C80.9125828,2.3781457 80.5927152,2.07218543 80.5927152,1.68278146 Z M90.3278146,1.68278146 C90.3278146,1.29337748 90.6337748,0.987417219 91.0231788,0.987417219 L92.4139073,0.987417219 C92.8033113,0.987417219 93.1092715,1.29337748 93.1092715,1.68278146 C93.1092715,2.07218543 92.8033113,2.3781457 92.4139073,2.3781457 L91.0231788,2.3781457 C90.6476821,2.3781457 90.3278146,2.07218543 90.3278146,1.68278146 Z M104.235099,1.68278146 C104.235099,1.29337748 104.54106,0.987417219 104.930464,0.987417219 L121.619205,0.987417219 C122.008609,0.987417219 122.31457,1.29337748 122.31457,1.68278146 C122.31457,2.07218543 122.008609,2.3781457 121.619205,2.3781457 L104.930464,2.3781457 C104.554967,2.3781457 104.235099,2.07218543 104.235099,1.68278146 Z M132.049669,1.68278146 C132.049669,1.29337748 132.355629,0.987417219 132.745033,0.987417219 L136.917219,0.987417219 C137.306623,0.987417219 137.612583,1.29337748 137.612583,1.68278146 C137.612583,2.07218543 137.306623,2.3781457 136.917219,2.3781457 L132.745033,2.3781457 C132.369536,2.3781457 132.049669,2.07218543 132.049669,1.68278146 Z M141.784768,1.68278146 C141.784768,1.29337748 142.090728,0.987417219 142.480132,0.987417219 L143.870861,0.987417219 C144.260265,0.987417219 144.566225,1.29337748 144.566225,1.68278146 C144.566225,2.07218543 144.260265,2.3781457 143.870861,2.3781457 L142.480132,2.3781457 C142.104636,2.3781457 141.784768,2.07218543 141.784768,1.68278146 Z M155.692053,1.68278146 C155.692053,1.29337748 155.998013,0.987417219 156.387417,0.987417219 L173.076159,0.987417219 C173.465563,0.987417219 173.771523,1.29337748 173.771523,1.68278146 C173.771523,2.07218543 173.465563,2.3781457 173.076159,2.3781457 L156.387417,2.3781457 C156.011921,2.3781457 155.692053,2.07218543 155.692053,1.68278146 Z M183.506623,1.68278146 C183.506623,1.29337748 183.812583,0.987417219 184.201987,0.987417219 L188.374172,0.987417219 C188.763576,0.987417219 189.069536,1.29337748 189.069536,1.68278146 C189.069536,2.07218543 188.763576,2.3781457 188.374172,2.3781457 L184.201987,2.3781457 C183.82649,2.3781457 183.506623,2.07218543 183.506623,1.68278146 Z M193.241722,1.68278146 C193.241722,1.29337748 193.547682,0.987417219 193.937086,0.987417219 L195.327815,0.987417219 C195.717219,0.987417219 196.023179,1.29337748 196.023179,1.68278146 C196.023179,2.07218543 195.717219,2.3781457 195.327815,2.3781457 L193.937086,2.3781457 C193.561589,2.3781457 193.241722,2.07218543 193.241722,1.68278146 Z M207.149007,1.68278146 C207.149007,1.29337748 207.454967,0.987417219 207.844371,0.987417219 L224.533113,0.987417219 C224.922517,0.987417219 225.228477,1.29337748 225.228477,1.68278146 C225.228477,2.07218543 224.922517,2.3781457 224.533113,2.3781457 L207.844371,2.3781457 C207.468874,2.3781457 207.149007,2.07218543 207.149007,1.68278146 Z"
id="path64" />
</g>
</g>
<g>
<path d="M2.30860927,35.1298013 L37.6609272,35.1298013 C37.6609272,35.1298013 26.6046358,10.402649 50.0801325,7.20397351 C71.0245033,4.35298013 79.2993377,25.881457 79.2993377,25.881457 C79.2993377,25.881457 81.7887417,13.4622517 94.2357616,15.8403974 C106.515894,18.1768212 115.583444,37.9390728 115.583444,37.9390728 L146.374172,37.9390728" id="Path"></path>
<g transform="translate(1.390728, 0.000000)" id="Shape">
<path d="M145.609272,32.0980132 L136.513907,32.0980132 C136.054967,32.0980132 135.693377,31.7364238 135.693377,31.2774834 C135.693377,30.818543 136.054967,30.4569536 136.513907,30.4569536 L145.609272,30.4569536 C146.068212,30.4569536 146.429801,30.818543 146.429801,31.2774834 C146.429801,31.7364238 146.054305,32.0980132 145.609272,32.0980132 Z M121.772185,32.0980132 L120.131126,32.0980132 C119.672185,32.0980132 119.310596,31.7364238 119.310596,31.2774834 C119.310596,30.818543 119.672185,30.4569536 120.131126,30.4569536 L121.772185,30.4569536 C122.231126,30.4569536 122.592715,30.818543 122.592715,31.2774834 C122.592715,31.7364238 122.231126,32.0980132 121.772185,32.0980132 Z M36.8821192,31.110596 L34.2536424,31.110596 C33.794702,31.110596 33.4331126,30.7490066 33.4331126,30.2900662 C33.4331126,29.8311258 33.794702,29.4695364 34.2536424,29.4695364 L35.6721854,29.4695364 C35.5609272,29.1774834 35.4357616,28.815894 35.2966887,28.4125828 C35.1576159,27.981457 35.3801325,27.5225166 35.8112583,27.3695364 C36.2423841,27.2304636 36.7013245,27.4529801 36.8543046,27.884106 C37.2854305,29.1496689 37.6331126,29.9284768 37.6331126,29.9423841 C37.7443709,30.1927152 37.7165563,30.4847682 37.5774834,30.7211921 C37.410596,30.9715232 37.1602649,31.110596 36.8821192,31.110596 Z M21.1529801,31.110596 L1.52980132,31.110596 C1.07086093,31.110596 0.709271523,30.7490066 0.709271523,30.2900662 C0.709271523,29.8311258 1.07086093,29.4695364 1.52980132,29.4695364 L21.1668874,29.4695364 C21.6258278,29.4695364 21.9874172,29.8311258 21.9874172,30.2900662 C21.9735099,30.7350993 21.6119205,31.110596 21.1529801,31.110596 Z M114.234437,31.013245 C113.942384,31.013245 113.664238,30.8602649 113.525166,30.5960265 C112.996689,29.6642384 112.134437,28.1900662 110.980132,26.4655629 C110.729801,26.0900662 110.827152,25.5754967 111.202649,25.3251656 C111.578146,25.0748344 112.092715,25.1721854 112.343046,25.5476821 C113.525166,27.3139073 114.415232,28.8298013 114.957616,29.789404 C115.180132,30.1788079 115.04106,30.6794702 114.637748,30.9019868 C114.512583,30.9854305 114.37351,31.013245 114.234437,31.013245 Z M34.5456954,22.613245 C34.1423841,22.613245 33.794702,22.3211921 33.7390728,21.9039735 C33.6556291,21.3615894 33.6,20.7913907 33.5582781,20.2211921 C33.5165563,19.7761589 33.8642384,19.3728477 34.3092715,19.3450331 C34.7821192,19.3172185 35.1576159,19.6370861 35.1854305,20.0960265 C35.2271523,20.6384106 35.2827815,21.1668874 35.3662252,21.681457 C35.4357616,22.1264901 35.115894,22.5437086 34.6708609,22.5993377 C34.6152318,22.613245 34.5735099,22.613245 34.5456954,22.613245 Z M77.1576159,19.0112583 C76.8655629,19.0112583 76.5874172,18.8582781 76.4344371,18.5801325 C76.1980132,18.1490066 75.9337748,17.6761589 75.6417219,17.189404 C75.405298,16.8 75.5304636,16.2993377 75.9198675,16.0629139 C76.3092715,15.8264901 76.8099338,15.9516556 77.0463576,16.3410596 C77.3523179,16.8556291 77.6304636,17.3423841 77.8807947,17.8013245 C78.089404,18.2046358 77.9503311,18.6913907 77.5470199,18.9139073 C77.4218543,18.9695364 77.2966887,19.0112583 77.1576159,19.0112583 Z M103.136424,16.9112583 C102.941722,16.9112583 102.760927,16.8417219 102.607947,16.7165563 C99.4788079,14.0324503 96.3635762,12.3774834 93.3178808,11.7933775 C90.3278146,11.2231788 87.6854305,11.5152318 85.4880795,12.6417219 C85.0847682,12.8503311 84.5980132,12.6834437 84.389404,12.2940397 C84.1807947,11.8907285 84.3337748,11.4039735 84.7370861,11.1953642 C87.2543046,9.88807947 90.2721854,9.55430464 93.6238411,10.1940397 C96.9476821,10.8337748 100.327152,12.6 103.678808,15.4788079 C104.02649,15.7708609 104.054305,16.2854305 103.762252,16.6331126 C103.595364,16.8139073 103.372848,16.9112583 103.136424,16.9112583 Z M72.5125828,12.2801325 C72.2900662,12.2801325 72.0536424,12.1827815 71.9006623,12.0019868 C70.8298013,10.7642384 69.6754967,9.63774834 68.4933775,8.65033113 C68.1456954,8.35827815 68.1039735,7.84370861 68.3960265,7.49602649 C68.6880795,7.14834437 69.202649,7.10662252 69.5503311,7.3986755 C70.8019868,8.44172185 72.0119205,9.63774834 73.1384106,10.9311258 C73.4304636,11.2788079 73.402649,11.7933775 73.0549669,12.0854305 C72.9019868,12.210596 72.7072848,12.2801325 72.5125828,12.2801325 Z M38.7735099,7.50993377 C38.5509934,7.50993377 38.3284768,7.41258278 38.1615894,7.24569536 C37.8556291,6.91192053 37.8834437,6.39735099 38.2172185,6.09139073 C40.8317881,3.72715232 44.5172185,2.19735099 49.1761589,1.57152318 C52.0271523,1.18211921 54.8225166,1.22384106 57.4649007,1.68278146 C57.9099338,1.76622517 58.2019868,2.18344371 58.1324503,2.62847682 C58.0490066,3.07350993 57.6317881,3.3794702 57.186755,3.29602649 C54.7112583,2.86490066 52.0827815,2.83708609 49.3986755,3.1986755 C45.0735099,3.79668874 41.6801325,5.17350993 39.315894,7.31523179 C39.1629139,7.44039735 38.9682119,7.50993377 38.7735099,7.50993377 Z"></path>
<g
id="g80">
<path
d="M2.30860927,35.1298013 L37.6609272,35.1298013 C37.6609272,35.1298013 26.6046358,10.402649 50.0801325,7.20397351 C71.0245033,4.35298013 79.2993377,25.881457 79.2993377,25.881457 C79.2993377,25.881457 81.7887417,13.4622517 94.2357616,15.8403974 C106.515894,18.1768212 115.583444,37.9390728 115.583444,37.9390728 L146.374172,37.9390728"
id="path70" />
<g
transform="translate(1.390728, 0.000000)"
id="g74">
<path
d="M145.609272,32.0980132 L136.513907,32.0980132 C136.054967,32.0980132 135.693377,31.7364238 135.693377,31.2774834 C135.693377,30.818543 136.054967,30.4569536 136.513907,30.4569536 L145.609272,30.4569536 C146.068212,30.4569536 146.429801,30.818543 146.429801,31.2774834 C146.429801,31.7364238 146.054305,32.0980132 145.609272,32.0980132 Z M121.772185,32.0980132 L120.131126,32.0980132 C119.672185,32.0980132 119.310596,31.7364238 119.310596,31.2774834 C119.310596,30.818543 119.672185,30.4569536 120.131126,30.4569536 L121.772185,30.4569536 C122.231126,30.4569536 122.592715,30.818543 122.592715,31.2774834 C122.592715,31.7364238 122.231126,32.0980132 121.772185,32.0980132 Z M36.8821192,31.110596 L34.2536424,31.110596 C33.794702,31.110596 33.4331126,30.7490066 33.4331126,30.2900662 C33.4331126,29.8311258 33.794702,29.4695364 34.2536424,29.4695364 L35.6721854,29.4695364 C35.5609272,29.1774834 35.4357616,28.815894 35.2966887,28.4125828 C35.1576159,27.981457 35.3801325,27.5225166 35.8112583,27.3695364 C36.2423841,27.2304636 36.7013245,27.4529801 36.8543046,27.884106 C37.2854305,29.1496689 37.6331126,29.9284768 37.6331126,29.9423841 C37.7443709,30.1927152 37.7165563,30.4847682 37.5774834,30.7211921 C37.410596,30.9715232 37.1602649,31.110596 36.8821192,31.110596 Z M21.1529801,31.110596 L1.52980132,31.110596 C1.07086093,31.110596 0.709271523,30.7490066 0.709271523,30.2900662 C0.709271523,29.8311258 1.07086093,29.4695364 1.52980132,29.4695364 L21.1668874,29.4695364 C21.6258278,29.4695364 21.9874172,29.8311258 21.9874172,30.2900662 C21.9735099,30.7350993 21.6119205,31.110596 21.1529801,31.110596 Z M114.234437,31.013245 C113.942384,31.013245 113.664238,30.8602649 113.525166,30.5960265 C112.996689,29.6642384 112.134437,28.1900662 110.980132,26.4655629 C110.729801,26.0900662 110.827152,25.5754967 111.202649,25.3251656 C111.578146,25.0748344 112.092715,25.1721854 112.343046,25.5476821 C113.525166,27.3139073 114.415232,28.8298013 114.957616,29.789404 C115.180132,30.1788079 115.04106,30.6794702 114.637748,30.9019868 C114.512583,30.9854305 114.37351,31.013245 114.234437,31.013245 Z M34.5456954,22.613245 C34.1423841,22.613245 33.794702,22.3211921 33.7390728,21.9039735 C33.6556291,21.3615894 33.6,20.7913907 33.5582781,20.2211921 C33.5165563,19.7761589 33.8642384,19.3728477 34.3092715,19.3450331 C34.7821192,19.3172185 35.1576159,19.6370861 35.1854305,20.0960265 C35.2271523,20.6384106 35.2827815,21.1668874 35.3662252,21.681457 C35.4357616,22.1264901 35.115894,22.5437086 34.6708609,22.5993377 C34.6152318,22.613245 34.5735099,22.613245 34.5456954,22.613245 Z M77.1576159,19.0112583 C76.8655629,19.0112583 76.5874172,18.8582781 76.4344371,18.5801325 C76.1980132,18.1490066 75.9337748,17.6761589 75.6417219,17.189404 C75.405298,16.8 75.5304636,16.2993377 75.9198675,16.0629139 C76.3092715,15.8264901 76.8099338,15.9516556 77.0463576,16.3410596 C77.3523179,16.8556291 77.6304636,17.3423841 77.8807947,17.8013245 C78.089404,18.2046358 77.9503311,18.6913907 77.5470199,18.9139073 C77.4218543,18.9695364 77.2966887,19.0112583 77.1576159,19.0112583 Z M103.136424,16.9112583 C102.941722,16.9112583 102.760927,16.8417219 102.607947,16.7165563 C99.4788079,14.0324503 96.3635762,12.3774834 93.3178808,11.7933775 C90.3278146,11.2231788 87.6854305,11.5152318 85.4880795,12.6417219 C85.0847682,12.8503311 84.5980132,12.6834437 84.389404,12.2940397 C84.1807947,11.8907285 84.3337748,11.4039735 84.7370861,11.1953642 C87.2543046,9.88807947 90.2721854,9.55430464 93.6238411,10.1940397 C96.9476821,10.8337748 100.327152,12.6 103.678808,15.4788079 C104.02649,15.7708609 104.054305,16.2854305 103.762252,16.6331126 C103.595364,16.8139073 103.372848,16.9112583 103.136424,16.9112583 Z M72.5125828,12.2801325 C72.2900662,12.2801325 72.0536424,12.1827815 71.9006623,12.0019868 C70.8298013,10.7642384 69.6754967,9.63774834 68.4933775,8.65033113 C68.1456954,8.35827815 68.1039735,7.84370861 68.3960265,7.49602649 C68.6880795,7.14834437 69.202649,7.10662252 69.5503311,7.3986755 C70.8019868,8.44172185 72.0119205,9.63774834 73.1384106,10.9311258 C73.4304636,11.2788079 73.402649,11.7933775 73.0549669,12.0854305 C72.9019868,12.210596 72.7072848,12.2801325 72.5125828,12.2801325 Z M38.7735099,7.50993377 C38.5509934,7.50993377 38.3284768,7.41258278 38.1615894,7.24569536 C37.8556291,6.91192053 37.8834437,6.39735099 38.2172185,6.09139073 C40.8317881,3.72715232 44.5172185,2.19735099 49.1761589,1.57152318 C52.0271523,1.18211921 54.8225166,1.22384106 57.4649007,1.68278146 C57.9099338,1.76622517 58.2019868,2.18344371 58.1324503,2.62847682 C58.0490066,3.07350993 57.6317881,3.3794702 57.186755,3.29602649 C54.7112583,2.86490066 52.0827815,2.83708609 49.3986755,3.1986755 C45.0735099,3.79668874 41.6801325,5.17350993 39.315894,7.31523179 C39.1629139,7.44039735 38.9682119,7.50993377 38.7735099,7.50993377 Z"
id="path72" />
</g>
<g transform="translate(0.000000, 34.768212)" id="Path">
<path d="M148.015232,3.60198675 L2.30860927,3.60198675 C1.40463576,3.60198675 0.667549669,2.86490066 0.667549669,1.96092715 C0.667549669,1.05695364 1.40463576,0.31986755 2.30860927,0.31986755 L148.015232,0.31986755 C148.919205,0.31986755 149.656291,1.05695364 149.656291,1.96092715 C149.642384,2.87880795 148.919205,3.60198675 148.015232,3.60198675 Z"></path>
<g
transform="translate(0.000000, 34.768212)"
id="g78">
<path
d="M148.015232,3.60198675 L2.30860927,3.60198675 C1.40463576,3.60198675 0.667549669,2.86490066 0.667549669,1.96092715 C0.667549669,1.05695364 1.40463576,0.31986755 2.30860927,0.31986755 L148.015232,0.31986755 C148.919205,0.31986755 149.656291,1.05695364 149.656291,1.96092715 C149.642384,2.87880795 148.919205,3.60198675 148.015232,3.60198675 Z"
id="path76" />
</g>
</g>
<g transform="translate(230.860927, 1.390728)">
<path d="M2.21125828,20.415894 L21.9456954,20.415894 C21.9456954,20.415894 15.7708609,6.61986755 28.8715232,4.8397351 C40.5536424,3.25430464 45.1847682,15.2562914 45.1847682,15.2562914 C45.1847682,15.2562914 46.5754967,8.33046358 53.5291391,9.65165563 C60.3854305,10.9589404 65.4476821,21.9874172 65.4476821,21.9874172 L82.6231788,21.9874172" id="Path"></path>
<g transform="translate(1.390728, 0.000000)" id="Shape">
<path d="M21.1251656,18.2046358 L1.41854305,18.2046358 C0.959602649,18.2046358 0.598013245,17.8430464 0.598013245,17.384106 C0.598013245,16.9251656 0.959602649,16.5635762 1.41854305,16.5635762 L21.1251656,16.5635762 C21.584106,16.5635762 21.9456954,16.9251656 21.9456954,17.384106 C21.9456954,17.8430464 21.584106,18.2046358 21.1251656,18.2046358 Z M81.8304636,17.9543046 L81.0655629,17.9543046 C80.6066225,17.9543046 80.2450331,17.5927152 80.2450331,17.1337748 C80.2450331,16.6748344 80.6066225,16.313245 81.0655629,16.313245 L81.8304636,16.313245 C82.289404,16.313245 82.6509934,16.6748344 82.6509934,17.1337748 C82.6509934,17.5927152 82.2754967,17.9543046 81.8304636,17.9543046 Z M74.5013245,17.9543046 L69.5781457,17.9543046 C69.1192053,17.9543046 68.7576159,17.5927152 68.7576159,17.1337748 C68.7576159,16.6748344 69.1192053,16.313245 69.5781457,16.313245 L74.5013245,16.313245 C74.9602649,16.313245 75.3218543,16.6748344 75.3218543,17.1337748 C75.3218543,17.5927152 74.9602649,17.9543046 74.5013245,17.9543046 Z M44.392053,13.0450331 C44.0582781,13.0450331 43.7523179,12.8225166 43.6271523,12.5165563 L43.5019868,12.2245033 C43.3350993,11.8490066 43.4741722,11.4039735 43.8218543,11.1953642 C44.586755,8.90066225 46.7423841,5.63245033 51.0397351,5.63245033 C51.6238411,5.63245033 52.2496689,5.68807947 52.889404,5.81324503 C55.3370861,6.27218543 57.7986755,7.70463576 60.218543,10.0410596 C60.5384106,10.3609272 60.5523179,10.8754967 60.2324503,11.1953642 C59.9125828,11.5291391 59.3980132,11.5291391 59.0781457,11.2092715 C56.894702,9.09536424 54.7112583,7.81589404 52.5834437,7.41258278 C52.0410596,7.31523179 51.5264901,7.25960265 51.0397351,7.25960265 C46.3112583,7.25960265 45.2403974,12.1688742 45.1986755,12.3774834 C45.1152318,12.7668874 44.781457,13.0450331 44.392053,13.0450331 Z M21.5562914,5.71589404 C21.3615894,5.71589404 21.1807947,5.64635762 21.0278146,5.52119205 C20.6801325,5.22913907 20.6384106,4.71456954 20.9304636,4.36688742 C22.0152318,3.08741722 23.5311258,2.14172185 25.4364238,1.54370861 C25.8675497,1.40463576 26.3264901,1.65496689 26.4655629,2.08609272 C26.6046358,2.51721854 26.3543046,2.97615894 25.9231788,3.11523179 C24.3238411,3.61589404 23.0721854,4.39470199 22.1821192,5.42384106 C22.0152318,5.61854305 21.7927152,5.71589404 21.5562914,5.71589404 Z M33.7668874,2.94834437 C33.697351,2.94834437 33.6278146,2.93443709 33.5443709,2.9205298 C33.0576159,2.79536424 32.5569536,2.68410596 32.0423841,2.61456954 C31.597351,2.54503311 31.2774834,2.12781457 31.3470199,1.68278146 C31.4165563,1.23774834 31.8337748,0.945695364 32.2788079,0.987417219 C32.8629139,1.07086093 33.4331126,1.19602649 33.9754967,1.33509934 C34.4066225,1.4602649 34.6708609,1.90529801 34.5596026,2.33642384 C34.4622517,2.71192053 34.1284768,2.94834437 33.7668874,2.94834437 Z"></path>
<g
transform="translate(230.860927, 1.390728)"
id="g92">
<path
d="M2.21125828,20.415894 L21.9456954,20.415894 C21.9456954,20.415894 15.7708609,6.61986755 28.8715232,4.8397351 C40.5536424,3.25430464 45.1847682,15.2562914 45.1847682,15.2562914 C45.1847682,15.2562914 46.5754967,8.33046358 53.5291391,9.65165563 C60.3854305,10.9589404 65.4476821,21.9874172 65.4476821,21.9874172 L82.6231788,21.9874172"
id="path82" />
<g
transform="translate(1.390728, 0.000000)"
id="g86">
<path
d="M21.1251656,18.2046358 L1.41854305,18.2046358 C0.959602649,18.2046358 0.598013245,17.8430464 0.598013245,17.384106 C0.598013245,16.9251656 0.959602649,16.5635762 1.41854305,16.5635762 L21.1251656,16.5635762 C21.584106,16.5635762 21.9456954,16.9251656 21.9456954,17.384106 C21.9456954,17.8430464 21.584106,18.2046358 21.1251656,18.2046358 Z M81.8304636,17.9543046 L81.0655629,17.9543046 C80.6066225,17.9543046 80.2450331,17.5927152 80.2450331,17.1337748 C80.2450331,16.6748344 80.6066225,16.313245 81.0655629,16.313245 L81.8304636,16.313245 C82.289404,16.313245 82.6509934,16.6748344 82.6509934,17.1337748 C82.6509934,17.5927152 82.2754967,17.9543046 81.8304636,17.9543046 Z M74.5013245,17.9543046 L69.5781457,17.9543046 C69.1192053,17.9543046 68.7576159,17.5927152 68.7576159,17.1337748 C68.7576159,16.6748344 69.1192053,16.313245 69.5781457,16.313245 L74.5013245,16.313245 C74.9602649,16.313245 75.3218543,16.6748344 75.3218543,17.1337748 C75.3218543,17.5927152 74.9602649,17.9543046 74.5013245,17.9543046 Z M44.392053,13.0450331 C44.0582781,13.0450331 43.7523179,12.8225166 43.6271523,12.5165563 L43.5019868,12.2245033 C43.3350993,11.8490066 43.4741722,11.4039735 43.8218543,11.1953642 C44.586755,8.90066225 46.7423841,5.63245033 51.0397351,5.63245033 C51.6238411,5.63245033 52.2496689,5.68807947 52.889404,5.81324503 C55.3370861,6.27218543 57.7986755,7.70463576 60.218543,10.0410596 C60.5384106,10.3609272 60.5523179,10.8754967 60.2324503,11.1953642 C59.9125828,11.5291391 59.3980132,11.5291391 59.0781457,11.2092715 C56.894702,9.09536424 54.7112583,7.81589404 52.5834437,7.41258278 C52.0410596,7.31523179 51.5264901,7.25960265 51.0397351,7.25960265 C46.3112583,7.25960265 45.2403974,12.1688742 45.1986755,12.3774834 C45.1152318,12.7668874 44.781457,13.0450331 44.392053,13.0450331 Z M21.5562914,5.71589404 C21.3615894,5.71589404 21.1807947,5.64635762 21.0278146,5.52119205 C20.6801325,5.22913907 20.6384106,4.71456954 20.9304636,4.36688742 C22.0152318,3.08741722 23.5311258,2.14172185 25.4364238,1.54370861 C25.8675497,1.40463576 26.3264901,1.65496689 26.4655629,2.08609272 C26.6046358,2.51721854 26.3543046,2.97615894 25.9231788,3.11523179 C24.3238411,3.61589404 23.0721854,4.39470199 22.1821192,5.42384106 C22.0152318,5.61854305 21.7927152,5.71589404 21.5562914,5.71589404 Z M33.7668874,2.94834437 C33.697351,2.94834437 33.6278146,2.93443709 33.5443709,2.9205298 C33.0576159,2.79536424 32.5569536,2.68410596 32.0423841,2.61456954 C31.597351,2.54503311 31.2774834,2.12781457 31.3470199,1.68278146 C31.4165563,1.23774834 31.8337748,0.945695364 32.2788079,0.987417219 C32.8629139,1.07086093 33.4331126,1.19602649 33.9754967,1.33509934 C34.4066225,1.4602649 34.6708609,1.90529801 34.5596026,2.33642384 C34.4622517,2.71192053 34.1284768,2.94834437 33.7668874,2.94834437 Z"
id="path84" />
</g>
<g transform="translate(0.000000, 19.470199)" id="Path">
<path d="M83.8887417,4.24172185 L2.57284768,4.24172185 C1.66887417,4.24172185 0.931788079,3.50463576 0.931788079,2.60066225 C0.931788079,1.69668874 1.66887417,0.959602649 2.57284768,0.959602649 L83.8887417,0.959602649 C84.7927152,0.959602649 85.5298013,1.69668874 85.5298013,2.60066225 C85.5298013,3.50463576 84.7927152,4.24172185 83.8887417,4.24172185 Z"></path>
<g
transform="translate(0.000000, 19.470199)"
id="g90">
<path
d="M83.8887417,4.24172185 L2.57284768,4.24172185 C1.66887417,4.24172185 0.931788079,3.50463576 0.931788079,2.60066225 C0.931788079,1.69668874 1.66887417,0.959602649 2.57284768,0.959602649 L83.8887417,0.959602649 C84.7927152,0.959602649 85.5298013,1.69668874 85.5298013,2.60066225 C85.5298013,3.50463576 84.7927152,4.24172185 83.8887417,4.24172185 Z"
id="path88" />
</g>
</g>
</g>
<g id="Group" transform="translate(95.960265, 0.000000)">
<path d="M106.710596,170.475497 C105,170.489404 103.400662,171.170861 102.204636,172.380795 L86.7536424,188.109934 L86.3503311,142.883444 L73.5278146,137.682119 L73.9728477,188.221192 L58.2437086,172.770199 C57.0198675,171.574172 55.4205298,170.92053 53.7099338,170.934437 C51.9993377,170.948344 50.4,171.629801 49.2039735,172.839735 C48.007947,174.063576 47.3543046,175.662914 47.3682119,177.37351 C47.3821192,179.084106 48.0635762,180.683444 49.2735099,181.87947 L76.0033113,208.136424 C77.2271523,209.33245 78.8264901,209.986093 80.5370861,209.972185 C82.2476821,209.958278 83.8470199,209.276821 85.0430464,208.066887 L111.3,181.337086 C112.496026,180.113245 113.149669,178.513907 113.135762,176.803311 C113.121854,175.092715 112.440397,173.493377 111.230464,172.297351 C110.02053,171.115232 108.407285,170.461589 106.710596,170.475497 Z" id="Path" fill="#0060DF"></path>
<path d="M86.0165563,80.6066225 C85.9887417,77.0880795 83.0960265,74.2509934 79.5774834,74.2788079 C76.0589404,74.3066225 73.2218543,77.1993377 73.2496689,80.7178808 L73.5278146,114.039735 L86.3503311,119.24106 L86.0165563,80.6066225 Z" id="Path" fill="url(#linearGradient-1)"></path>
<path d="M134.70596,22.2794702 C123.858278,11.7655629 110.493377,4.77019868 96.0298013,1.78013245 C104.958278,5.43774834 113.191391,12.1271523 120.061589,21.486755 C131.006623,36.3953642 137.264901,56.3662252 137.682119,77.7139073 C137.709934,79.0211921 137.362252,80.2728477 136.722517,81.2046358 C136.555629,81.4549669 136.360927,81.6635762 136.166225,81.8582781 L153.953642,81.705298 C155.219205,81.6913907 156.429139,81.1768212 157.305298,80.2728477 C158.181457,79.3688742 158.668212,78.1450331 158.62649,76.8794702 C158.125828,56.115894 149.628477,36.7291391 134.70596,22.2794702 Z" id="Path" fill="url(#linearGradient-2)"></path>
<path d="M22.7523179,78.7152318 C22.7940397,57.3675497 28.7046358,37.2854305 39.3854305,22.1960265 C46.2556291,12.4887417 54.5860927,5.57682119 63.6953642,1.8218543 C48.8562914,4.93708609 35.2271523,12.2801325 24.2960265,23.2529801 C9.62384106,37.9668874 1.47417219,57.4927152 1.33509934,78.2423841 C1.32119205,79.507947 1.8218543,80.7178808 2.72582781,81.6218543 C3.61589404,82.5119205 4.8397351,83.0125828 6.10529801,82.9986755 L24.3516556,82.8317881 C24.1430464,82.6509934 23.9622517,82.4423841 23.781457,82.192053 C23.1139073,81.2741722 22.7523179,80.0225166 22.7523179,78.7152318 Z" id="Path" fill="url(#linearGradient-3)"></path>
<path d="M137.682119,77.7139073 C137.264901,56.3662252 130.992715,36.3953642 120.061589,21.486755 C113.191391,12.1271523 104.958278,5.43774834 96.0298013,1.78013245 C91.4821192,0.848344371 86.8231788,0.305960265 82.1086093,0.180794702 C87.2125828,2.58675497 91.9688742,10.1801325 95.7933775,22.1682119 C100.49404,36.9238411 103.247682,56.6304636 103.525828,77.6860927 C103.539735,78.9655629 103.400662,80.2033113 103.136424,81.1211921 C103.011258,81.5662252 102.858278,81.9139073 102.691391,82.1503311 L136.180132,81.8582781 C136.374834,81.6635762 136.569536,81.4549669 136.736424,81.2046358 C137.362252,80.2728477 137.709934,79.0072848 137.682119,77.7139073 Z" id="Path" fill="url(#linearGradient-4)"></path>
<path d="M55.3509934,81.5384106 C55.0728477,80.6205298 54.9059603,79.3827815 54.9059603,78.1033113 C54.8225166,57.0476821 57.2145695,37.2854305 61.6649007,22.4602649 C65.2529801,10.5 69.8284768,2.86490066 74.8350993,0.305960265 C71.0662252,0.556291391 67.3390728,1.05695364 63.6953642,1.8218543 C54.5860927,5.57682119 46.2417219,12.502649 39.3854305,22.1960265 C28.7046358,37.2854305 22.807947,57.3675497 22.7523179,78.7152318 C22.7523179,80.0225166 23.1139073,81.2741722 23.7675497,82.192053 C23.9483444,82.4423841 24.1291391,82.6509934 24.3377483,82.8317881 L55.8099338,82.5536424 C55.6430464,82.3172185 55.4900662,81.9834437 55.3509934,81.5384106 Z" id="Path" fill="url(#linearGradient-5)"></path>
<path d="M74.8211921,0.305960265 C69.8145695,2.86490066 65.2251656,10.5 61.6509934,22.4602649 C57.2145695,37.2854305 54.8086093,57.0476821 54.892053,78.1033113 C54.892053,79.3827815 55.0589404,80.6205298 55.3370861,81.5384106 C55.4761589,81.9834437 55.6291391,82.3172185 55.8099338,82.5675497 L102.677483,82.1503311 C102.844371,81.9 102.997351,81.5662252 103.122517,81.1211921 C103.386755,80.2033113 103.525828,78.9655629 103.511921,77.6860927 C103.219868,56.6304636 100.480132,36.9238411 95.7794702,22.1682119 C91.9549669,10.1801325 87.1986755,2.58675497 82.094702,0.180794702 C81.1629139,0.152980132 80.2311258,0.125165563 79.2854305,0.139072848 C77.797351,0.139072848 76.3092715,0.208609272 74.8211921,0.305960265 Z" id="Path" fill="url(#linearGradient-6)"></path>
</g>
<ellipse
id="Oval"
fill="#ededf0"
opacity="0.5"
cx="175.9178"
cy="170.85991"
rx="73.526253"
ry="11.563125" />
</g>
</g>
</g>
<path
id="cloud-alert"
d="m 254.54362,110.61709 a 41.858804,41.858804 0 0 1 -10.8282,28.08534 35.887465,35.887465 0 0 1 -21.45007,10.8673 42.246663,42.246663 0 0 0 0.84918,-17.43196 17.919131,17.919131 0 0 0 8.09421,-4.72957 25.026353,25.026353 0 0 0 6.48366,-16.79111 28.118382,28.118382 0 0 0 -28.08535,-28.085359 c -0.92602,0 -5.68324,0.594174 -8.57727,0.967035 a 2.7916842,2.7916842 0 0 1 -3.0008,-1.876551 l -1.14369,-3.336147 A 34.656989,34.656989 0 0 0 168.09302,54.616462 33.58368,33.58368 0 0 0 131.89488,95.850311 l 1.19942,5.130409 a 2.8085354,2.8085354 0 0 1 -1.92244,3.32783 l -5.04762,1.52526 a 16.696293,16.696293 0 0 0 -12.00739,16.01742 11.315083,11.315083 0 0 0 2.32581,6.90069 13.611511,13.611511 0 0 0 10.04928,4.33345 h 7.67482 a 42.446125,42.446125 0 0 0 1.08887,16.85122 h -8.76369 A 30.06863,30.06863 0 0 1 102.70166,138.50495 28.276728,28.276728 0 0 1 97.265633,121.85123 33.354503,33.354503 0 0 1 114.33081,92.64684 c -0.14268,-1.508465 -0.21401,-3.01148 -0.21401,-4.498037 a 50.534146,50.534146 0 0 1 95.80834,-22.468284 44.988861,44.988861 0 0 1 44.61843,44.936571 z m -42.12804,28.08534 a 33.702425,33.702425 0 1 1 -33.70241,-33.70242 33.702425,33.702425 0 0 1 33.70241,33.70242 z m -28.08535,14.04269 a 2.8085354,2.8085354 0 0 0 -2.80853,-2.80853 h -5.61707 a 2.8085354,2.8085354 0 0 0 -2.80853,2.80853 v 5.61706 a 2.8085354,2.8085354 0 0 0 2.80853,2.80855 h 5.61707 a 2.8085354,2.8085354 0 0 0 2.80853,-2.80855 z m 0,-33.70243 a 2.8166239,2.8166239 0 0 0 -2.80853,-2.80853 h -5.61707 a 2.8166239,2.8166239 0 0 0 -2.80853,2.80853 v 11.23415 a 22.144684,22.144684 0 0 0 0.83447,5.49022 l 2.24351,7.21126 a 2.0333796,2.0333796 0 0 0 1.82117,1.34118 h 1.43583 a 2.0333796,2.0333796 0 0 0 1.82118,-1.34118 l 2.2435,-7.21126 a 22.144684,22.144684 0 0 0 0.83447,-5.49022 z"
style="stroke-width:5.61707;fill:currentColor;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

1
assets/eye-off.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#8795a1" d="M256.1 144.8c56.2 0 101.9 45.3 101.9 101.1 0 13.1-2.6 25.5-7.3 37l59.5 59c30.8-25.5 55-58.4 69.9-96-35.3-88.7-122.3-151.6-224.2-151.6-28.5 0-55.8 5.1-81.1 14.1l44 43.7c11.6-4.6 24.1-7.3 37.3-7.3zM52.4 89.7l46.5 46.1 9.4 9.3c-33.9 26-60.4 60.8-76.3 100.8 35.2 88.7 122.2 151.6 224.1 151.6 31.6 0 61.7-6.1 89.2-17l8.6 8.5 59.7 59 25.9-25.7L78.2 64 52.4 89.7zM165 201.4l31.6 31.3c-1 4.2-1.6 8.7-1.6 13.1 0 33.5 27.3 60.6 61.1 60.6 4.5 0 9-.6 13.2-1.6l31.6 31.3c-13.6 6.7-28.7 10.7-44.8 10.7-56.2 0-101.9-45.3-101.9-101.1 0-15.8 4.1-30.7 10.8-44.3zm87.8-15.7l64.2 63.7.4-3.2c0-33.5-27.3-60.6-61.1-60.6l-3.5.1z"/></svg>

After

Width:  |  Height:  |  Size: 701 B

1
assets/eye.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#8795a1" d="M256 105c-101.8 0-188.4 62.4-224 151 35.6 88.6 122.2 151 224 151s188.4-62.4 224-151c-35.6-88.6-122.2-151-224-151zm0 251.7c-56 0-101.8-45.3-101.8-100.7S200 155.3 256 155.3 357.8 200.6 357.8 256 312 356.7 256 356.7zm0-161.1c-33.6 0-61.1 27.2-61.1 60.4s27.5 60.4 61.1 60.4 61.1-27.2 61.1-60.4-27.5-60.4-61.1-60.4z"/></svg>

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 588 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Before After
Before After

BIN
assets/icon-64x64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

34
assets/icon.svg Normal file
View file

@ -0,0 +1,34 @@
<?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"
width="64mm"
height="64mm"
viewBox="0 0 64 64"
version="1.1"
id="svg898">
<defs
id="defs892" />
<metadata
id="metadata895">
<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>
<g
id="layer1">
<path
id="cloud-upload"
d="m 63.999948,34.285731 a 17.033293,17.033293 0 0 1 -4.406235,11.428568 14.856655,14.856655 0 0 1 -10.55805,4.571428 h -2.178561 v -6.857139 h 2.178561 A 8.0044292,8.0044292 0 0 0 54.504416,41.118327 10.183788,10.183788 0 0 0 57.14281,34.285731 11.442004,11.442004 0 0 0 45.714251,22.857173 c -0.37683,0 -2.312648,0.241803 -3.490288,0.393502 A 1.1359993,1.1359993 0 0 1 41.00286,22.487082 L 40.537483,21.129528 A 14.102711,14.102711 0 0 0 28.821257,11.497829 13.665957,13.665957 0 0 0 14.091416,28.276812 l 0.488099,2.087681 a 1.1428564,1.1428564 0 0 1 -0.782255,1.354176 l -2.053987,0.62062 a 6.7940986,6.7940986 0 0 0 -4.8860757,6.517846 4.6043628,4.6043628 0 0 0 0.9464197,2.808045 5.5388308,5.5388308 0 0 0 4.089282,1.763384 h 5.250006 v 6.857137 H 11.892899 A 12.235604,12.235604 0 0 1 2.2121047,45.633903 11.506439,11.506439 0 0 1 5.8514086e-5,38.857135 13.5727,13.5727 0 0 1 6.9442617,26.97321 C 6.8863778,26.359414 6.8571876,25.747771 6.8571876,25.142857 A 20.563484,20.563484 0 0 1 45.843766,16.000009 18.306983,18.306983 0 0 1 64,34.285707 Z M 32.923239,32.122512 a 1.1428564,1.1428564 0 0 0 -1.846543,0 l -8.591651,11.775239 a 1.1428564,1.1428564 0 0 0 0.923268,1.816548 h 5.163091 v 12.571418 a 1.1428564,1.1428564 0 0 0 1.14285,1.142858 h 4.571428 a 1.1428564,1.1428564 0 0 0 1.142859,-1.142858 V 45.714299 h 5.163084 a 1.1428564,1.1428564 0 0 0 0.923265,-1.816548 z"
style="stroke-width:2.28572;fill:#45a1ff;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1,151 +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 264 179" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g transform="matrix(1,0,0,1,-50.1817,-11.5386)">
<g>
<g opacity="0.5">
<path d="M105.47,94.88L126.79,94.89C126.79,94.89 120.12,79.98 134.29,78.05C146.92,76.33 151.91,89.32 151.91,89.32C151.91,89.32 153.41,81.83 160.92,83.27C168.33,84.68 173.79,96.6 173.79,96.6L192.36,96.6" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M192.72,93.09L188.71,93.09C188.43,93.09 188.21,92.87 188.21,92.59C188.21,92.31 188.43,92.09 188.71,92.09L192.72,92.09C193,92.09 193.22,92.31 193.22,92.59C193.22,92.86 193,93.09 192.72,93.09ZM179.71,93.08L178.71,93.08C178.43,93.08 178.21,92.86 178.21,92.58C178.21,92.3 178.43,92.08 178.71,92.08L179.71,92.08C179.99,92.08 180.21,92.3 180.21,92.58C180.21,92.86 179.99,93.08 179.71,93.08ZM174.71,93.08L174.15,93.08C173.96,93.08 173.79,92.97 173.7,92.8C173.59,92.59 173.18,91.81 172.5,90.72C172.35,90.49 172.43,90.18 172.66,90.03C172.89,89.88 173.2,89.96 173.35,90.19C173.88,91.04 174.25,91.71 174.45,92.08L174.71,92.08C174.99,92.08 175.21,92.3 175.21,92.58C175.21,92.86 174.99,93.08 174.71,93.08ZM127.15,92.47L125.83,92.47C125.55,92.47 125.33,92.25 125.33,91.97C125.33,91.69 125.55,91.47 125.83,91.47L126.41,91.47C126.32,91.22 126.21,90.91 126.09,90.55C126.01,90.29 126.15,90.01 126.41,89.92C126.67,89.84 126.95,89.98 127.04,90.24C127.34,91.17 127.6,91.76 127.6,91.77C127.67,91.92 127.66,92.1 127.56,92.25C127.46,92.4 127.32,92.47 127.15,92.47ZM117.83,92.47L105.83,92.47C105.55,92.47 105.33,92.25 105.33,91.97C105.33,91.69 105.55,91.47 105.83,91.47L117.83,91.47C118.11,91.47 118.33,91.69 118.33,91.97C118.33,92.25 118.11,92.47 117.83,92.47ZM125.7,86.99C125.45,86.99 125.23,86.8 125.2,86.55C125.16,86.21 125.13,85.87 125.11,85.52C125.09,85.24 125.3,85.01 125.58,84.99C125.85,84.98 126.09,85.18 126.11,85.46C126.13,85.79 126.16,86.11 126.2,86.43C126.23,86.7 126.04,86.95 125.76,86.99C125.74,86.99 125.72,86.99 125.7,86.99ZM151.84,85.95C151.65,85.95 151.48,85.85 151.39,85.67C151.27,85.42 151.12,85.13 150.94,84.8C150.81,84.56 150.9,84.25 151.14,84.12C151.38,83.99 151.69,84.08 151.82,84.32C152.01,84.66 152.16,84.97 152.29,85.23C152.41,85.48 152.31,85.78 152.06,85.9C151.99,85.94 151.92,85.95 151.84,85.95ZM167.96,84.7C167.84,84.7 167.71,84.65 167.61,84.56C165.45,82.49 163.29,81.24 161.18,80.84C159.74,80.57 158.43,80.62 157.3,81C157.04,81.09 156.75,80.95 156.67,80.68C156.58,80.42 156.72,80.14 156.99,80.05C158.29,79.62 159.77,79.55 161.38,79.86C163.68,80.3 166.01,81.64 168.31,83.84C168.51,84.03 168.52,84.35 168.33,84.55C168.22,84.64 168.09,84.7 167.96,84.7ZM149.16,81.74C149.01,81.74 148.87,81.68 148.77,81.55C148.14,80.77 147.47,80.05 146.77,79.42C146.57,79.23 146.55,78.92 146.74,78.71C146.93,78.5 147.24,78.49 147.45,78.68C148.19,79.35 148.9,80.11 149.55,80.92C149.72,81.13 149.69,81.45 149.47,81.62C149.38,81.7 149.27,81.74 149.16,81.74ZM128.68,77.92C128.53,77.92 128.39,77.86 128.29,77.73C128.12,77.51 128.15,77.2 128.37,77.03C129.91,75.79 132.01,74.99 134.59,74.64C136.56,74.37 138.46,74.44 140.25,74.84C140.52,74.9 140.69,75.17 140.63,75.44C140.57,75.71 140.31,75.88 140.03,75.82C138.35,75.45 136.57,75.38 134.72,75.64C132.32,75.97 130.39,76.7 128.99,77.82C128.9,77.88 128.79,77.92 128.68,77.92Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M193.33,96.88L105.46,96.86C104.91,96.86 104.46,96.41 104.46,95.86C104.46,95.31 104.91,94.86 105.46,94.86L193.33,94.88C193.88,94.88 194.33,95.33 194.33,95.88C194.33,96.43 193.88,96.88 193.33,96.88Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
</g>
</g>
<g>
<g opacity="0.5">
<path d="M306.31,117.22C306.52,116.91 306.83,116.35 306.52,116.05C306.26,115.86 305.95,115.77 305.63,115.79C304.89,115.81 304.17,116.07 303.58,116.53C302.36,117.45 301.24,118.92 301.48,119.69C303.65,119.14 305.58,118.28 306.31,117.22Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M125.12,129.61C128.96,129.7 132.74,128.68 136.01,126.67C138.98,124.82 142.43,123.89 145.93,123.97C149.43,123.88 152.88,124.82 155.86,126.67C162.59,130.59 170.91,130.59 177.64,126.67C183.78,123.07 191.38,123.07 197.52,126.67C204.25,130.59 212.57,130.59 219.3,126.67C225.44,123.07 233.04,123.07 239.18,126.67C242.45,128.68 246.23,129.7 250.07,129.61C250.62,129.61 251.07,129.16 251.07,128.61C251.07,128.06 250.62,127.61 250.07,127.61C246.56,127.7 243.11,126.76 240.13,124.91C233.4,120.99 225.08,120.99 218.35,124.91C212.21,128.51 204.61,128.51 198.47,124.91C191.74,120.99 183.42,120.99 176.69,124.91C170.55,128.5 162.96,128.5 156.82,124.91C153.55,122.9 149.77,121.88 145.93,121.97C142.09,121.88 138.31,122.9 135.04,124.91C132.06,126.76 128.61,127.7 125.1,127.61C121.59,127.7 118.14,126.76 115.16,124.91C111.89,122.9 108.11,121.88 104.27,121.97C103.72,121.97 103.27,122.42 103.27,122.97C103.27,123.52 103.72,123.97 104.27,123.97C107.78,123.88 111.23,124.82 114.21,126.67C117.48,128.68 121.27,129.7 125.12,129.61Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M313.27,118.55C313.1,118.34 312.79,118.3 312.57,118.47C309.82,120.29 306.65,121.37 303.37,121.63C302.13,121.83 300.87,121.83 299.63,121.63C301.63,121.01 303.39,120.14 304.18,119C305.18,117.63 304.56,116.82 304.27,116.54C303.39,115.69 301.45,115.87 300.03,116.94C298.96,117.74 297.14,119.61 297.55,121.14C295.97,121.5 294.36,121.73 292.74,121.82C292.46,121.82 292.24,122.04 292.24,122.32C292.24,122.6 292.46,122.82 292.74,122.82C294.54,122.72 296.33,122.45 298.09,122.03C298.97,122.74 300.73,122.95 303.43,122.65C309.69,121.95 313,119.39 313.14,119.28C313.37,119.13 313.45,118.82 313.3,118.59C313.29,118.58 313.28,118.56 313.27,118.55ZM300.62,117.71C301.21,117.25 301.93,116.99 302.67,116.97C302.99,116.95 303.3,117.04 303.56,117.23C303.87,117.53 303.56,118.09 303.35,118.4C302.62,119.46 300.69,120.29 298.52,120.87C298.29,120.09 299.4,118.62 300.62,117.71Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M210.52,122.99C210.22,122.99 209.95,122.76 209.92,122.45C209.89,122.12 210.13,121.83 210.46,121.79C211.75,121.66 212.93,121.41 214.05,121.01C214.36,120.9 214.7,121.06 214.82,121.38C214.93,121.69 214.77,122.04 214.45,122.15C213.24,122.58 211.97,122.86 210.58,122.99C210.56,122.99 210.54,122.99 210.52,122.99Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M253.58,122.83C253.29,122.83 253.04,122.62 252.99,122.33C252.93,122 253.15,121.69 253.48,121.64C256.49,121.12 258.39,119.9 260.23,118.72C260.51,118.54 260.88,118.62 261.06,118.9C261.24,119.18 261.16,119.55 260.88,119.73C259.03,120.92 256.93,122.26 253.68,122.82C253.65,122.82 253.61,122.83 253.58,122.83Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M204.8,122.78C204.76,122.78 204.73,122.78 204.69,122.77C201.59,122.19 199.57,120.9 197.63,119.65L197.54,119.59C197.26,119.41 197.18,119.04 197.36,118.76C197.54,118.48 197.91,118.4 198.19,118.58L198.28,118.64C200.22,119.88 202.05,121.05 204.92,121.59C205.25,121.65 205.46,121.97 205.4,122.29C205.34,122.58 205.09,122.78 204.8,122.78Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M288.07,122.71C288.03,122.71 287.99,122.71 287.95,122.7C285.06,122.09 283.13,120.85 281.26,119.66L280.86,119.41C280.58,119.23 280.5,118.86 280.68,118.58C280.86,118.3 281.23,118.22 281.51,118.4L281.91,118.65C283.77,119.84 285.53,120.96 288.21,121.53C288.53,121.6 288.74,121.92 288.67,122.24C288.6,122.52 288.35,122.71 288.07,122.71Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M245.97,122.65C245.93,122.65 245.88,122.64 245.83,122.63C245.5,122.55 245.18,122.47 244.87,122.38C244.55,122.28 244.37,121.95 244.47,121.63C244.57,121.31 244.9,121.13 245.22,121.23C245.5,121.32 245.8,121.4 246.11,121.47C246.43,121.54 246.63,121.87 246.56,122.19C246.49,122.46 246.24,122.65 245.97,122.65Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M241.55,120.86C241.45,120.86 241.34,120.83 241.25,120.78C240.62,120.42 240.03,120.04 239.43,119.66C238.95,119.36 238.48,119.05 237.99,118.76C237.71,118.59 237.61,118.22 237.78,117.94C237.95,117.65 238.32,117.56 238.6,117.73C239.1,118.03 239.59,118.34 240.07,118.65C240.65,119.02 241.23,119.39 241.84,119.75C242.13,119.92 242.22,120.28 242.06,120.57C241.96,120.75 241.76,120.86 241.55,120.86Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M217.68,120.49C217.48,120.49 217.28,120.39 217.17,120.2C217,119.92 217.09,119.55 217.37,119.37C217.64,119.2 217.91,119.04 218.17,118.87C218.45,118.69 218.82,118.77 219,119.05C219.18,119.33 219.1,119.7 218.82,119.88C218.55,120.05 218.28,120.22 218,120.39C217.89,120.47 217.79,120.49 217.68,120.49Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M265.64,117.2C265.39,117.2 265.15,117.04 265.07,116.78C264.97,116.46 265.14,116.13 265.46,116.02C266.67,115.63 267.94,115.38 269.35,115.27C269.7,115.23 269.97,115.49 270,115.82C270.03,116.15 269.78,116.44 269.45,116.47C268.14,116.57 266.96,116.8 265.84,117.17C265.76,117.19 265.7,117.2 265.64,117.2Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M182.36,117.09C182.1,117.09 181.86,116.92 181.78,116.66C181.69,116.34 181.87,116.01 182.18,115.91C183.39,115.55 184.67,115.33 186.08,115.24C186.41,115.2 186.7,115.47 186.72,115.8C186.74,116.13 186.49,116.42 186.16,116.44C184.84,116.52 183.65,116.72 182.53,117.06C182.47,117.08 182.41,117.09 182.36,117.09Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M225.39,116.78C225.11,116.78 224.86,116.59 224.8,116.3C224.73,115.98 224.94,115.66 225.26,115.59C226.51,115.33 227.83,115.2 229.31,115.2C230.69,115.2 231.93,115.31 233.11,115.54C233.44,115.6 233.65,115.92 233.59,116.24C233.53,116.57 233.22,116.78 232.89,116.72C231.79,116.51 230.62,116.4 229.32,116.4C227.93,116.4 226.68,116.52 225.52,116.76C225.47,116.78 225.43,116.78 225.39,116.78Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M190.89,116.68C190.86,116.68 190.82,116.68 190.79,116.67C190.5,116.62 190.19,116.58 189.88,116.54C189.55,116.5 189.32,116.2 189.35,115.87C189.39,115.54 189.7,115.3 190.02,115.34C190.36,115.38 190.68,115.43 191,115.48C191.33,115.54 191.55,115.85 191.49,116.17C191.43,116.47 191.18,116.68 190.89,116.68Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M274.16,116.62C274.13,116.62 274.1,116.62 274.07,116.61C273.77,116.57 273.47,116.53 273.15,116.5C272.82,116.47 272.58,116.17 272.61,115.84C272.64,115.51 272.93,115.27 273.27,115.3C273.61,115.33 273.93,115.37 274.25,115.42C274.58,115.47 274.8,115.78 274.75,116.1C274.71,116.41 274.45,116.62 274.16,116.62Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
</g>
</g>
<g>
<g opacity="0.5">
<path d="M221.43,31.94L242.75,31.95C242.75,31.95 236.08,17.04 250.25,15.11C262.88,13.39 267.87,26.38 267.87,26.38C267.87,26.38 269.37,18.89 276.88,20.33C284.29,21.74 289.75,33.66 289.75,33.66L308.32,33.66" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M308.69,30.15L304.68,30.15C304.4,30.15 304.18,29.93 304.18,29.65C304.18,29.37 304.4,29.15 304.68,29.15L308.69,29.15C308.97,29.15 309.19,29.37 309.19,29.65C309.19,29.92 308.96,30.15 308.69,30.15ZM295.68,30.14L294.68,30.14C294.4,30.14 294.18,29.92 294.18,29.64C294.18,29.36 294.4,29.14 294.68,29.14L295.68,29.14C295.96,29.14 296.18,29.36 296.18,29.64C296.18,29.92 295.95,30.14 295.68,30.14ZM290.68,30.14L290.12,30.14C289.93,30.14 289.76,30.03 289.67,29.86C289.56,29.65 289.15,28.87 288.47,27.78C288.32,27.55 288.4,27.24 288.63,27.09C288.86,26.94 289.17,27.02 289.32,27.25C289.85,28.1 290.22,28.77 290.42,29.14L290.68,29.14C290.96,29.14 291.18,29.36 291.18,29.64C291.18,29.92 290.95,30.14 290.68,30.14ZM243.12,29.53L241.8,29.53C241.52,29.53 241.3,29.31 241.3,29.03C241.3,28.75 241.52,28.53 241.8,28.53L242.38,28.53C242.29,28.28 242.18,27.97 242.06,27.61C241.98,27.35 242.12,27.07 242.38,26.98C242.64,26.9 242.92,27.04 243.01,27.3C243.31,28.23 243.57,28.82 243.57,28.83C243.64,28.98 243.63,29.16 243.53,29.31C243.43,29.46 243.29,29.53 243.12,29.53ZM233.8,29.53L221.8,29.53C221.52,29.53 221.3,29.31 221.3,29.03C221.3,28.75 221.52,28.53 221.8,28.53L233.8,28.53C234.08,28.53 234.3,28.75 234.3,29.03C234.3,29.31 234.07,29.53 233.8,29.53ZM241.67,24.05C241.42,24.05 241.2,23.86 241.17,23.61C241.13,23.27 241.1,22.93 241.08,22.58C241.06,22.3 241.27,22.07 241.55,22.05C241.82,22.04 242.06,22.24 242.08,22.52C242.1,22.85 242.13,23.17 242.17,23.49C242.2,23.76 242.01,24.01 241.73,24.05C241.7,24.05 241.68,24.05 241.67,24.05ZM267.81,23.01C267.62,23.01 267.45,22.91 267.36,22.73C267.24,22.48 267.09,22.19 266.91,21.86C266.78,21.62 266.87,21.31 267.11,21.18C267.35,21.05 267.66,21.14 267.79,21.38C267.98,21.72 268.13,22.03 268.26,22.29C268.38,22.54 268.28,22.84 268.03,22.96C267.96,23 267.88,23.01 267.81,23.01ZM283.93,21.76C283.81,21.76 283.68,21.71 283.58,21.62C281.42,19.55 279.26,18.3 277.15,17.9C275.71,17.63 274.4,17.68 273.27,18.06C273.01,18.15 272.72,18.01 272.64,17.74C272.55,17.48 272.69,17.2 272.96,17.11C274.26,16.68 275.74,16.61 277.35,16.92C279.65,17.36 281.98,18.7 284.28,20.9C284.48,21.09 284.49,21.41 284.3,21.61C284.19,21.7 284.06,21.76 283.93,21.76ZM265.13,18.8C264.98,18.8 264.84,18.74 264.74,18.61C264.11,17.83 263.44,17.11 262.74,16.48C262.54,16.29 262.52,15.98 262.71,15.77C262.9,15.56 263.21,15.55 263.42,15.74C264.16,16.41 264.87,17.17 265.52,17.98C265.69,18.19 265.66,18.51 265.44,18.68C265.35,18.76 265.24,18.8 265.13,18.8ZM244.64,14.98C244.49,14.98 244.35,14.92 244.25,14.79C244.08,14.57 244.11,14.26 244.33,14.09C245.87,12.85 247.97,12.05 250.55,11.7C252.52,11.43 254.42,11.5 256.21,11.9C256.48,11.96 256.65,12.23 256.59,12.5C256.53,12.77 256.27,12.94 255.99,12.88C254.31,12.51 252.53,12.44 250.68,12.7C248.28,13.03 246.35,13.76 244.95,14.88C244.86,14.95 244.75,14.98 244.64,14.98Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M309.3,33.94L221.43,33.92C220.88,33.92 220.43,33.47 220.43,32.92C220.43,32.37 220.88,31.92 221.43,31.92L309.3,31.94C309.85,31.94 310.3,32.39 310.3,32.94C310.3,33.49 309.85,33.94 309.3,33.94Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
</g>
</g>
<g>
<g opacity="0.5">
<g>
<path d="M182.8,150.59C186.64,150.68 190.42,149.66 193.69,147.65C199.83,144.05 207.42,144.05 213.56,147.65C220.29,151.56 228.6,151.56 235.33,147.65C238.31,145.8 241.76,144.86 245.27,144.95C245.82,144.95 246.27,144.5 246.27,143.95C246.27,143.4 245.82,142.95 245.27,142.95C241.43,142.86 237.65,143.88 234.38,145.89C228.24,149.49 220.65,149.49 214.51,145.89C207.78,141.98 199.47,141.98 192.74,145.89C189.76,147.74 186.31,148.68 182.8,148.59C179.56,148.69 176.36,147.88 173.56,146.26C173.26,146.86 172.9,147.43 172.51,147.97C175.63,149.78 179.19,150.69 182.8,150.59Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<g>
<path d="M226.93,157.84C226.64,157.84 226.39,157.63 226.34,157.34C226.28,157.01 226.5,156.7 226.83,156.65C229.84,156.13 231.74,154.91 233.58,153.73C233.86,153.55 234.23,153.63 234.41,153.91C234.59,154.19 234.51,154.56 234.23,154.74C232.38,155.93 230.28,157.27 227.03,157.83C227,157.84 226.96,157.84 226.93,157.84Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M219.32,157.66C219.28,157.66 219.23,157.65 219.18,157.64C218.85,157.56 218.53,157.48 218.22,157.39C217.9,157.29 217.72,156.96 217.82,156.64C217.92,156.32 218.25,156.14 218.57,156.24C218.85,156.33 219.15,156.41 219.46,156.48C219.78,156.55 219.98,156.88 219.91,157.2C219.84,157.47 219.59,157.66 219.32,157.66Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M214.9,155.87C214.8,155.87 214.69,155.84 214.6,155.79C213.97,155.43 213.38,155.05 212.78,154.67C212.3,154.37 211.83,154.06 211.34,153.77C211.06,153.6 210.96,153.23 211.13,152.95C211.3,152.66 211.67,152.57 211.95,152.74C212.45,153.04 212.94,153.35 213.42,153.66C214,154.03 214.58,154.4 215.19,154.76C215.48,154.93 215.57,155.29 215.41,155.58C215.31,155.76 215.11,155.87 214.9,155.87Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M238.99,152.21C238.74,152.21 238.5,152.05 238.42,151.79C238.32,151.47 238.49,151.14 238.81,151.03C240.02,150.64 241.29,150.39 242.7,150.28C243.05,150.24 243.32,150.5 243.35,150.83C243.38,151.16 243.13,151.45 242.8,151.48C241.49,151.58 240.31,151.81 239.19,152.18C239.11,152.2 239.05,152.21 238.99,152.21Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M198.74,151.79C198.46,151.79 198.21,151.6 198.15,151.31C198.08,150.99 198.29,150.67 198.61,150.6C199.86,150.34 201.18,150.21 202.66,150.21C204.04,150.21 205.28,150.32 206.46,150.55C206.79,150.61 207,150.93 206.94,151.25C206.88,151.58 206.57,151.79 206.24,151.73C205.14,151.52 203.97,151.41 202.67,151.41C201.28,151.41 200.03,151.53 198.87,151.77C198.82,151.79 198.78,151.79 198.74,151.79Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
<path d="M247.51,151.63C247.48,151.63 247.45,151.63 247.42,151.62C247.12,151.58 246.82,151.54 246.5,151.51C246.17,151.48 245.93,151.18 245.96,150.85C245.99,150.52 246.28,150.28 246.62,150.31C246.96,150.34 247.28,150.38 247.6,150.43C247.93,150.48 248.15,150.79 248.1,151.11C248.06,151.42 247.8,151.63 247.51,151.63Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
</g>
</g>
<path d="M272.47,147.27C272.3,147.06 271.99,147.02 271.77,147.19C269.02,149.01 265.85,150.09 262.57,150.35C261.33,150.55 260.07,150.55 258.83,150.35C260.83,149.73 262.59,148.86 263.38,147.72C264.38,146.35 263.76,145.54 263.47,145.26C262.59,144.41 260.65,144.59 259.23,145.66C258.16,146.46 256.34,148.33 256.75,149.86C255.17,150.22 253.56,150.45 251.94,150.54C251.66,150.54 251.44,150.76 251.44,151.04C251.44,151.32 251.66,151.54 251.94,151.54C253.74,151.44 255.53,151.17 257.29,150.75C258.17,151.46 259.93,151.67 262.63,151.37C268.89,150.67 272.2,148.11 272.34,148C272.57,147.85 272.65,147.54 272.5,147.31C272.49,147.3 272.48,147.29 272.47,147.27ZM259.82,146.43C260.41,145.97 261.13,145.71 261.87,145.69C262.19,145.67 262.5,145.76 262.76,145.95C263.07,146.25 262.76,146.81 262.55,147.12C261.82,148.18 259.89,149.01 257.72,149.59C257.49,148.81 258.6,147.34 259.82,146.43Z" style="fill:rgb(237,237,240);fill-rule:nonzero;"/>
</g>
</g>
<g>
<path d="M139.13,114.49L117.33,106.16C115.55,105.48 114.65,103.48 115.33,101.69L126.78,71.74C127.46,69.95 129.47,69.06 131.25,69.74L144.83,74.93C145.69,75.26 146.38,75.91 146.75,76.75L151.84,88.08C152.22,88.92 152.24,89.88 151.92,90.74L143.61,112.49C142.92,114.27 140.92,115.17 139.13,114.49Z" style="fill:rgb(69,161,255);fill-rule:nonzero;"/>
<g>
<path id="XMLID_2_" d="M145.68,93.72C145.44,93.2 145.02,92.8 144.48,92.6C143.94,92.4 143.36,92.42 142.84,92.65L136.1,95.7L146.02,69.37C146.44,68.26 145.88,67.03 144.77,66.61C143.66,66.19 142.43,66.75 142.01,67.86L132.09,94.19L129.04,87.45C128.8,86.93 128.38,86.53 127.84,86.33C127.3,86.13 126.72,86.15 126.2,86.38C125.68,86.62 125.28,87.04 125.08,87.58C124.88,88.12 124.9,88.7 125.13,89.22L130.31,100.67C130.55,101.19 130.97,101.59 131.51,101.79C132.05,101.99 132.63,101.97 133.15,101.74L144.6,96.56C145.12,96.32 145.52,95.9 145.72,95.36C145.93,94.83 145.91,94.25 145.68,93.72Z" style="fill:rgb(0,96,223);fill-rule:nonzero;"/>
<clipPath id="_clip1">
<path d="M145.68,93.72C145.44,93.2 145.02,92.8 144.48,92.6C143.94,92.4 143.36,92.42 142.84,92.65L136.1,95.7L146.02,69.37C146.44,68.26 145.88,67.03 144.77,66.61C143.66,66.19 142.43,66.75 142.01,67.86L132.09,94.19L129.04,87.45C128.8,86.93 128.38,86.53 127.84,86.33C127.3,86.13 126.72,86.15 126.2,86.38C125.68,86.62 125.28,87.04 125.08,87.58C124.88,88.12 124.9,88.7 125.13,89.22L130.31,100.67C130.55,101.19 130.97,101.59 131.51,101.79C132.05,101.99 132.63,101.97 133.15,101.74L144.6,96.56C145.12,96.32 145.52,95.9 145.72,95.36C145.93,94.83 145.91,94.25 145.68,93.72Z"/>
</clipPath>
<g clip-path="url(#_clip1)">
<path d="M136.62,76.97L145.86,85.65L151.63,67.2L139.96,59.57L136.62,76.97Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
</g>
</g>
<path d="M168.32,57.02C166.2,52.42 162.86,48.61 158.7,45.92C161.05,48.14 162.82,51.23 163.83,55C165.45,60.99 164.99,67.99 162.54,74.72C162.39,75.13 162.13,75.48 161.82,75.7C161.74,75.76 161.65,75.8 161.57,75.84L167.15,77.94C167.55,78.09 167.99,78.07 168.37,77.9C168.76,77.72 169.05,77.4 169.2,77C171.55,70.44 171.24,63.35 168.32,57.02Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
<path d="M126.46,61.13C129.06,54.46 133.34,48.89 138.51,45.46C141.83,43.25 145.28,42.1 148.58,42.03C143.56,41.21 138.41,41.86 133.66,43.97C127.29,46.8 122.38,51.92 119.82,58.4C119.66,58.79 119.67,59.24 119.85,59.62C120.02,60.01 120.34,60.31 120.74,60.46L126.47,62.62C126.43,62.54 126.39,62.45 126.37,62.35C126.26,61.97 126.3,61.53 126.46,61.13Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
<path d="M162.54,74.72C164.99,67.99 165.45,60.98 163.83,55C162.81,51.24 161.05,48.15 158.7,45.92C157.39,45.08 156,44.34 154.54,43.73C155.84,45.1 156.42,48.05 156.16,52.27C155.85,57.45 154.32,63.96 151.86,70.58C151.71,70.98 151.52,71.35 151.32,71.61C151.23,71.73 151.14,71.82 151.05,71.88L161.56,75.84C161.65,75.81 161.73,75.76 161.81,75.7C162.13,75.49 162.39,75.13 162.54,74.72Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
<path d="M136.32,65.95C136.34,65.63 136.44,65.22 136.59,64.82C139.11,58.22 142.25,52.33 145.44,48.23C148.01,44.92 150.37,43.09 152.24,42.89C151.03,42.51 149.81,42.22 148.57,42.02C145.27,42.09 141.82,43.25 138.5,45.45C133.33,48.88 129.05,54.45 126.45,61.12C126.29,61.53 126.26,61.96 126.35,62.33C126.37,62.43 126.41,62.52 126.45,62.6L136.33,66.32C136.31,66.24 136.3,66.11 136.32,65.95Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
<path d="M152.24,42.9C150.36,43.09 148.01,44.93 145.44,48.24C142.25,52.34 139.11,58.23 136.59,64.83C136.44,65.23 136.34,65.64 136.32,65.96C136.31,66.11 136.32,66.24 136.34,66.34L151.05,71.88C151.13,71.82 151.22,71.73 151.32,71.61C151.51,71.36 151.71,70.98 151.86,70.58C154.32,63.96 155.85,57.46 156.16,52.27C156.42,48.06 155.84,45.1 154.54,43.73C154.25,43.61 153.96,43.49 153.67,43.38C153.19,43.21 152.72,43.05 152.24,42.9Z" style="fill:url(#_Linear7);fill-rule:nonzero;"/>
</g>
<path d="M232.86,27.14C228.84,27.55 223.78,31.49 218.28,38.58C211.45,47.37 204.72,60 199.31,74.14C198.98,75 198.77,75.87 198.72,76.56C198.7,76.89 198.72,77.16 198.77,77.37L230.31,89.25C230.49,89.13 230.68,88.94 230.88,88.68C231.3,88.13 231.71,87.34 232.03,86.47C237.3,72.28 240.57,58.35 241.25,47.23C241.8,38.2 240.57,31.87 237.78,28.93C237.16,28.67 236.54,28.41 235.91,28.17C234.9,27.8 233.88,27.46 232.86,27.14Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
<g>
<path d="M204.77,180.58L158.04,162.72C154.22,161.26 152.3,156.97 153.76,153.15L178.29,88.95C179.75,85.12 184.05,83.2 187.88,84.66L216.98,95.78C218.82,96.48 220.3,97.88 221.11,99.68L232.01,123.97C232.82,125.77 232.88,127.82 232.17,129.66L214.35,176.28C212.89,180.13 208.6,182.05 204.77,180.58Z" style="fill:rgb(69,161,255);fill-rule:nonzero;"/>
<g>
<path id="XMLID_1_" d="M218.79,136.08C218.28,134.96 217.37,134.11 216.23,133.68C215.08,133.25 213.83,133.29 212.72,133.79L198.28,140.33L219.54,83.9C220.43,81.53 219.23,78.88 216.86,77.98C214.49,77.09 211.84,78.29 210.94,80.66L189.68,137.09L183.14,122.65C182.63,121.53 181.72,120.68 180.58,120.25C179.43,119.82 178.18,119.86 177.07,120.36C175.95,120.87 175.1,121.78 174.67,122.92C174.24,124.07 174.28,125.32 174.78,126.43L185.89,150.97C186.4,152.09 187.31,152.94 188.45,153.37C189.6,153.8 190.85,153.76 191.96,153.26L216.5,142.15C217.62,141.64 218.47,140.73 218.9,139.59C219.33,138.45 219.29,137.2 218.79,136.08Z" style="fill:rgb(0,96,223);fill-rule:nonzero;"/>
<clipPath id="_clip9">
<path d="M218.79,136.08C218.28,134.96 217.37,134.11 216.23,133.68C215.08,133.25 213.83,133.29 212.72,133.79L198.28,140.33L219.54,83.9C220.43,81.53 219.23,78.88 216.86,77.98C214.49,77.09 211.84,78.29 210.94,80.66L189.68,137.09L183.14,122.65C182.63,121.53 181.72,120.68 180.58,120.25C179.43,119.82 178.18,119.86 177.07,120.36C175.95,120.87 175.1,121.78 174.67,122.92C174.24,124.07 174.28,125.32 174.78,126.43L185.89,150.97C186.4,152.09 187.31,152.94 188.45,153.37C189.6,153.8 190.85,153.76 191.96,153.26L216.5,142.15C217.62,141.64 218.47,140.73 218.9,139.59C219.33,138.45 219.29,137.2 218.79,136.08Z"/>
</clipPath>
<g clip-path="url(#_clip9)">
<path d="M199.39,100.16L219.18,118.78L231.56,79.23L206.54,62.89L199.39,100.16Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
</g>
</g>
<path d="M267.32,57.41C262.77,47.55 255.63,39.38 246.7,33.63C251.74,38.4 255.52,45.02 257.7,53.08C261.17,65.91 260.19,80.93 254.93,95.35C254.61,96.23 254.05,96.98 253.38,97.44C253.2,97.56 253.02,97.66 252.84,97.73L264.81,102.24C265.66,102.56 266.61,102.53 267.43,102.15C268.26,101.77 268.89,101.07 269.2,100.21C274.25,86.18 273.58,70.97 267.32,57.41Z" style="fill:url(#_Linear11);fill-rule:nonzero;"/>
<path d="M177.6,66.22C183.17,51.91 192.34,39.98 203.42,32.63C210.54,27.9 217.93,25.43 225.01,25.27C214.25,23.51 203.2,24.9 193.02,29.42C179.37,35.48 168.84,46.46 163.36,60.34C163.03,61.19 163.05,62.13 163.41,62.96C163.78,63.79 164.47,64.44 165.32,64.76L177.6,69.39C177.51,69.21 177.44,69.02 177.38,68.81C177.18,68.02 177.26,67.09 177.6,66.22Z" style="fill:url(#_Linear12);fill-rule:nonzero;"/>
<path d="M254.94,95.36C260.19,80.93 261.18,65.92 257.71,53.09C255.53,45.03 251.75,38.41 246.71,33.64C243.9,31.83 240.92,30.26 237.79,28.95C240.59,31.88 241.81,38.21 241.26,47.25C240.59,58.36 237.31,72.3 232.04,86.49C231.72,87.36 231.3,88.15 230.89,88.7C230.69,88.96 230.5,89.15 230.32,89.27L252.85,97.76C253.03,97.69 253.22,97.59 253.39,97.47C254.06,96.99 254.62,96.24 254.94,95.36Z" style="fill:url(#_Linear13);fill-rule:nonzero;"/>
<path d="M198.73,76.56C198.78,75.88 198.99,75 199.32,74.14C204.72,60 211.46,47.37 218.29,38.58C223.8,31.49 228.85,27.55 232.87,27.14C230.28,26.33 227.65,25.7 225.01,25.27C217.93,25.43 210.54,27.9 203.42,32.63C192.34,39.98 183.18,51.91 177.6,66.22C177.26,67.09 177.18,68.03 177.38,68.82C177.43,69.03 177.51,69.22 177.6,69.4L198.78,77.38C198.72,77.16 198.7,76.89 198.73,76.56Z" style="fill:url(#_Linear14);fill-rule:nonzero;"/>
<path d="M232.86,27.14C228.84,27.55 223.78,31.49 218.28,38.58C211.45,47.37 204.72,60 199.31,74.14C198.98,75 198.77,75.87 198.72,76.56C198.7,76.89 198.72,77.16 198.77,77.37L230.31,89.25C230.49,89.13 230.68,88.94 230.88,88.68C231.3,88.13 231.71,87.34 232.03,86.47C237.3,72.28 240.57,58.35 241.25,47.23C241.8,38.2 240.57,31.87 237.78,28.93C237.16,28.67 236.54,28.41 235.91,28.17C234.9,27.8 233.88,27.46 232.86,27.14Z" style="fill:url(#_Linear15);fill-rule:nonzero;"/>
</g>
<g>
<path d="M269.57,162.35L258.74,158.21C257.85,157.87 257.41,156.88 257.75,155.99L263.44,141.11C263.78,140.22 264.77,139.78 265.66,140.12L272.41,142.7C272.84,142.86 273.18,143.19 273.37,143.6L275.9,149.23C276.09,149.65 276.1,150.12 275.94,150.55L271.81,161.36C271.46,162.24 270.46,162.69 269.57,162.35Z" style="fill:rgb(69,161,255);fill-rule:nonzero;"/>
<g>
<path id="XMLID_3_" d="M272.83,152.03C272.71,151.77 272.5,151.57 272.24,151.47C271.97,151.37 271.68,151.38 271.43,151.5L268.08,153.02L273.01,139.94C273.22,139.39 272.94,138.78 272.39,138.57C271.84,138.36 271.23,138.64 271.02,139.19L266.09,152.27L264.57,148.92C264.45,148.66 264.24,148.46 263.98,148.36C263.71,148.26 263.42,148.27 263.17,148.39C262.91,148.51 262.71,148.72 262.61,148.98C262.51,149.25 262.52,149.54 262.64,149.79L265.22,155.48C265.34,155.74 265.55,155.94 265.81,156.04C266.07,156.14 266.37,156.13 266.62,156.01L272.31,153.43C272.57,153.31 272.77,153.1 272.87,152.84C272.95,152.58 272.94,152.29 272.83,152.03Z" style="fill:rgb(0,96,223);fill-rule:nonzero;"/>
<clipPath id="_clip16">
<path d="M272.83,152.03C272.71,151.77 272.5,151.57 272.24,151.47C271.97,151.37 271.68,151.38 271.43,151.5L268.08,153.02L273.01,139.94C273.22,139.39 272.94,138.78 272.39,138.57C271.84,138.36 271.23,138.64 271.02,139.19L266.09,152.27L264.57,148.92C264.45,148.66 264.24,148.46 263.98,148.36C263.71,148.26 263.42,148.27 263.17,148.39C262.91,148.51 262.71,148.72 262.61,148.98C262.51,149.25 262.52,149.54 262.64,149.79L265.22,155.48C265.34,155.74 265.55,155.94 265.81,156.04C266.07,156.14 266.37,156.13 266.62,156.01L272.31,153.43C272.57,153.31 272.77,153.1 272.87,152.84C272.95,152.58 272.94,152.29 272.83,152.03Z"/>
</clipPath>
<g clip-path="url(#_clip16)">
<path d="M268.33,143.7L272.92,148.02L275.79,138.85L269.98,135.06L268.33,143.7Z" style="fill:url(#_Linear17);fill-rule:nonzero;"/>
</g>
</g>
<path d="M284.08,133.79C283.02,131.5 281.37,129.61 279.3,128.28C280.47,129.39 281.35,130.92 281.85,132.79C282.65,135.77 282.43,139.25 281.21,142.59C281.14,142.79 281.01,142.97 280.85,143.08C280.81,143.11 280.77,143.13 280.72,143.15L283.49,144.2C283.69,144.27 283.91,144.27 284.1,144.18C284.29,144.09 284.44,143.93 284.51,143.73C285.68,140.46 285.53,136.93 284.08,133.79Z" style="fill:url(#_Linear18);fill-rule:nonzero;"/>
<path d="M263.28,135.83C264.57,132.51 266.7,129.75 269.27,128.04C270.92,126.94 272.63,126.37 274.28,126.33C271.79,125.92 269.22,126.24 266.86,127.29C263.7,128.69 261.25,131.24 259.98,134.46C259.9,134.66 259.91,134.88 259.99,135.07C260.08,135.26 260.23,135.41 260.43,135.49L263.28,136.56C263.26,136.52 263.24,136.47 263.23,136.43C263.18,136.25 263.2,136.03 263.28,135.83Z" style="fill:url(#_Linear19);fill-rule:nonzero;"/>
<path d="M281.21,142.59C282.43,139.25 282.66,135.76 281.85,132.79C281.34,130.92 280.47,129.39 279.3,128.28C278.65,127.86 277.96,127.5 277.23,127.19C277.88,127.87 278.16,129.34 278.03,131.43C277.87,134.01 277.12,137.24 275.89,140.53C275.82,140.73 275.72,140.91 275.62,141.04C275.57,141.1 275.53,141.15 275.49,141.17L280.71,143.14C280.75,143.12 280.79,143.1 280.84,143.07C281,142.97 281.13,142.79 281.21,142.59Z" style="fill:url(#_Linear20);fill-rule:nonzero;"/>
<path d="M268.17,138.23C268.18,138.07 268.23,137.87 268.31,137.67C269.56,134.39 271.12,131.46 272.71,129.43C273.99,127.79 275.16,126.87 276.09,126.78C275.49,126.59 274.88,126.45 274.27,126.35C272.63,126.39 270.92,126.96 269.26,128.06C266.69,129.76 264.57,132.53 263.27,135.85C263.19,136.05 263.17,136.27 263.22,136.45C263.23,136.5 263.25,136.54 263.27,136.58L268.18,138.43C268.17,138.37 268.17,138.31 268.17,138.23Z" style="fill:url(#_Linear21);fill-rule:nonzero;"/>
<path d="M276.09,126.77C275.16,126.87 273.99,127.78 272.71,129.42C271.13,131.46 269.57,134.39 268.31,137.66C268.23,137.86 268.18,138.06 268.17,138.22C268.16,138.3 268.17,138.36 268.18,138.41L275.49,141.17C275.53,141.14 275.58,141.1 275.62,141.04C275.72,140.91 275.81,140.73 275.89,140.53C277.11,137.24 277.87,134.01 278.03,131.43C278.16,129.34 277.87,127.87 277.23,127.19C277.09,127.13 276.94,127.07 276.8,127.01C276.56,126.93 276.32,126.85 276.09,126.77Z" style="fill:url(#_Linear22);fill-rule:nonzero;"/>
</g>
<g>
<path d="M77.27,189.52L52.69,180.13C50.68,179.36 49.67,177.11 50.44,175.1L63.34,141.33C64.11,139.31 66.37,138.3 68.38,139.08L83.68,144.93C84.65,145.3 85.43,146.04 85.85,146.98L91.58,159.76C92.01,160.71 92.04,161.78 91.67,162.75L82.3,187.27C81.54,189.28 79.28,190.29 77.27,189.52Z" style="fill:rgb(69,161,255);fill-rule:nonzero;"/>
<g>
<path id="XMLID_4_" d="M84.64,166.12C84.37,165.53 83.89,165.08 83.29,164.86C82.69,164.63 82.03,164.65 81.44,164.92L73.84,168.36L85.02,138.68C85.49,137.43 84.86,136.04 83.61,135.57C82.36,135.1 80.97,135.73 80.5,136.98L69.32,166.66L65.88,159.06C65.61,158.47 65.13,158.02 64.53,157.8C63.93,157.57 63.27,157.59 62.68,157.86C62.09,158.13 61.64,158.61 61.42,159.21C61.2,159.81 61.21,160.47 61.48,161.06L67.32,173.97C67.59,174.56 68.07,175.01 68.67,175.23C69.27,175.46 69.93,175.44 70.52,175.17L83.43,169.33C84.02,169.06 84.47,168.58 84.69,167.98C84.93,167.36 84.91,166.7 84.64,166.12Z" style="fill:rgb(0,96,223);fill-rule:nonzero;"/>
<clipPath id="_clip23">
<path d="M84.64,166.12C84.37,165.53 83.89,165.08 83.29,164.86C82.69,164.63 82.03,164.65 81.44,164.92L73.84,168.36L85.02,138.68C85.49,137.43 84.86,136.04 83.61,135.57C82.36,135.1 80.97,135.73 80.5,136.98L69.32,166.66L65.88,159.06C65.61,158.47 65.13,158.02 64.53,157.8C63.93,157.57 63.27,157.59 62.68,157.86C62.09,158.13 61.64,158.61 61.42,159.21C61.2,159.81 61.21,160.47 61.48,161.06L67.32,173.97C67.59,174.56 68.07,175.01 68.67,175.23C69.27,175.46 69.93,175.44 70.52,175.17L83.43,169.33C84.02,169.06 84.47,168.58 84.69,167.98C84.93,167.36 84.91,166.7 84.64,166.12Z"/>
</clipPath>
<g clip-path="url(#_clip23)">
<path d="M74.44,147.22L84.85,157.02L91.36,136.21L78.2,127.62L74.44,147.22Z" style="fill:url(#_Linear24);fill-rule:nonzero;"/>
</g>
</g>
<path d="M110.17,124.74C107.78,119.55 104.02,115.26 99.32,112.23C101.97,114.74 103.96,118.22 105.11,122.46C106.93,129.21 106.42,137.11 103.65,144.69C103.48,145.15 103.19,145.55 102.83,145.79C102.74,145.85 102.64,145.9 102.54,145.94L108.83,148.31C109.28,148.48 109.77,148.46 110.21,148.26C110.64,148.06 110.98,147.69 111.14,147.24C113.81,139.87 113.46,131.87 110.17,124.74Z" style="fill:url(#_Linear25);fill-rule:nonzero;"/>
<path d="M62.98,129.37C65.91,121.85 70.73,115.57 76.56,111.7C80.31,109.21 84.19,107.91 87.92,107.83C82.26,106.9 76.45,107.63 71.1,110.01C63.92,113.2 58.38,118.97 55.5,126.27C55.32,126.72 55.33,127.21 55.53,127.65C55.72,128.09 56.09,128.43 56.53,128.6L62.99,131.03C62.94,130.94 62.9,130.84 62.88,130.73C62.76,130.32 62.8,129.83 62.98,129.37Z" style="fill:url(#_Linear26);fill-rule:nonzero;"/>
<path d="M103.65,144.7C106.41,137.11 106.93,129.22 105.11,122.47C103.96,118.23 101.97,114.75 99.32,112.24C97.84,111.29 96.28,110.46 94.63,109.77C96.1,111.31 96.74,114.64 96.46,119.39C96.11,125.23 94.38,132.56 91.61,140.03C91.44,140.49 91.22,140.9 91,141.19C90.89,141.33 90.79,141.43 90.7,141.49L102.55,145.95C102.65,145.91 102.74,145.86 102.84,145.8C103.19,145.56 103.48,145.16 103.65,144.7Z" style="fill:url(#_Linear27);fill-rule:nonzero;"/>
<path d="M74.09,134.81C74.11,134.45 74.23,133.99 74.4,133.54C77.24,126.1 80.79,119.46 84.38,114.84C87.28,111.11 89.94,109.04 92.05,108.82C90.69,108.39 89.31,108.06 87.92,107.83C84.19,107.91 80.31,109.21 76.56,111.7C70.73,115.57 65.91,121.84 62.98,129.37C62.8,129.83 62.76,130.32 62.87,130.74C62.9,130.85 62.94,130.95 62.98,131.04L74.12,135.24C74.09,135.13 74.08,134.99 74.09,134.81Z" style="fill:url(#_Linear28);fill-rule:nonzero;"/>
<path d="M92.04,108.82C89.93,109.04 87.27,111.11 84.37,114.84C80.78,119.46 77.24,126.11 74.39,133.54C74.22,133.99 74.11,134.45 74.08,134.81C74.07,134.98 74.08,135.13 74.11,135.23L90.7,141.48C90.79,141.42 90.89,141.32 91,141.18C91.22,140.89 91.44,140.47 91.61,140.02C94.38,132.56 96.1,125.23 96.46,119.38C96.75,114.63 96.1,111.3 94.63,109.76C94.3,109.62 93.98,109.49 93.65,109.36C93.12,109.17 92.58,108.99 92.04,108.82Z" style="fill:url(#_Linear29);fill-rule:nonzero;"/>
</g>
</g>
<defs>
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.59681e-15,-26.0779,26.0779,1.59681e-15,144.128,85.6518)"><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(22.1565,50.0308,-50.0308,22.1565,148.016,28.2064)"><stop offset="0" style="stop-color:rgb(250,53,127);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(49.3863,18.6083,-18.6083,49.3863,124.013,47.2236)"><stop offset="0" style="stop-color:rgb(255,243,97);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(15.9622,45.5041,-45.5041,15.9622,148.35,37.4201)"><stop offset="0" style="stop-color:rgb(255,81,98);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.638,13.7126,-13.7126,6.638,135.036,43.8416)"><stop offset="0" style="stop-color:rgb(255,217,67);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.67361,36.6506,-36.6506,7.67361,141.962,36.7113)"><stop offset="0" style="stop-color:rgb(255,135,72);stop-opacity:1"/><stop offset="0.13" style="stop-color:rgb(254,120,82);stop-opacity:1"/><stop offset="0.5" style="stop-color:rgb(252,84,106);stop-opacity:1"/><stop offset="0.81" style="stop-color:rgb(250,61,121);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(250,53,127);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.69647,51.7596,-51.7596,4.69647,216.443,19.2225)"><stop offset="0" style="stop-color:rgb(255,243,97);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.42253e-15,-55.8942,55.8942,3.42253e-15,215.472,118.78)"><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear11" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(47.4893,107.234,-107.234,47.4893,223.805,-4.3458)"><stop offset="0" style="stop-color:rgb(250,53,127);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear12" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(105.852,39.8841,-39.8841,105.852,172.363,36.4203)"><stop offset="0" style="stop-color:rgb(255,243,97);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear13" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(34.2127,97.5317,-97.5317,34.2127,224.522,15.4024)"><stop offset="0" style="stop-color:rgb(255,81,98);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear14" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.2275,29.391,-29.391,14.2275,195.984,29.166)"><stop offset="0" style="stop-color:rgb(255,217,67);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear15" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(16.4472,78.5554,-78.5554,16.4472,210.834,13.8887)"><stop offset="0" style="stop-color:rgb(255,135,72);stop-opacity:1"/><stop offset="0.13" style="stop-color:rgb(254,120,82);stop-opacity:1"/><stop offset="0.5" style="stop-color:rgb(252,84,106);stop-opacity:1"/><stop offset="0.81" style="stop-color:rgb(250,61,121);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(250,53,127);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear17" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.93467e-16,-12.9583,12.9583,7.93467e-16,272.056,148.018)"><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear18" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(11.0097,24.8605,-24.8605,11.0097,273.988,119.473)"><stop offset="0" style="stop-color:rgb(250,53,127);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear19" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.5402,9.24651,-9.24651,24.5402,262.063,128.92)"><stop offset="0" style="stop-color:rgb(255,243,97);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear20" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.9317,22.6113,-22.6113,7.9317,274.154,124.051)"><stop offset="0" style="stop-color:rgb(255,81,98);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear21" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.2985,6.8138,-6.8138,3.2985,267.538,127.242)"><stop offset="0" style="stop-color:rgb(255,217,67);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear22" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.81308,18.2119,-18.2119,3.81308,270.982,123.697)"><stop offset="0" style="stop-color:rgb(255,135,72);stop-opacity:1"/><stop offset="0.13" style="stop-color:rgb(254,120,82);stop-opacity:1"/><stop offset="0.5" style="stop-color:rgb(252,84,106);stop-opacity:1"/><stop offset="0.81" style="stop-color:rgb(250,61,121);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(250,53,127);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear24" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.80008e-15,-29.3976,29.3976,1.80008e-15,82.8973,157.016)"><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="0" style="stop-color:rgb(10,92,199);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear25" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(24.9771,56.3998,-56.3998,24.9771,87.2799,92.2572)"><stop offset="0" style="stop-color:rgb(250,53,127);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(120,120,255);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear26" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(55.6733,20.9771,-20.9771,55.6733,60.2207,113.698)"><stop offset="0" style="stop-color:rgb(255,243,97);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear27" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(17.9942,51.297,-51.297,17.9942,87.6569,102.644)"><stop offset="0" style="stop-color:rgb(255,81,98);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(131,33,157);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear28" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.483,15.4582,-15.4582,7.483,72.6475,109.883)"><stop offset="0" style="stop-color:rgb(255,217,67);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,168,10);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear29" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.6504,41.3164,-41.3164,8.6504,80.4547,101.848)"><stop offset="0" style="stop-color:rgb(255,135,72);stop-opacity:1"/><stop offset="0.13" style="stop-color:rgb(254,120,82);stop-opacity:1"/><stop offset="0.5" style="stop-color:rgb(252,84,106);stop-opacity:1"/><stop offset="0.81" style="stop-color:rgb(250,61,121);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(250,53,127);stop-opacity:1"/></linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 45 KiB

View file

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="201px" height="36px" viewBox="0 0 201 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com -->
<title>56F8E94A-92C7-41A4-BF32-064D0F1FE0CE</title>
<desc>Created with sketchtool.</desc>
<defs>
<linearGradient x1="71.1627137%" y1="8.3795633%" x2="23.6307692%" y2="89.0750207%" id="linearGradient-1">
<stop stop-color="#FF980E" offset="0%"></stop>
<stop stop-color="#FF7139" offset="20.75%"></stop>
<stop stop-color="#FF5854" offset="36.33%"></stop>
<stop stop-color="#FF4F5E" offset="45.63%"></stop>
<stop stop-color="#FF3750" offset="69.29%"></stop>
<stop stop-color="#F92261" offset="85.75%"></stop>
<stop stop-color="#F5156C" offset="100%"></stop>
</linearGradient>
<linearGradient x1="71.1627137%" y1="8.3795633%" x2="23.6307692%" y2="89.0750207%" id="linearGradient-2">
<stop stop-color="#FFF44F" stop-opacity="0.8" offset="0%"></stop>
<stop stop-color="#FFF44F" stop-opacity="0" offset="75%"></stop>
</linearGradient>
<linearGradient x1="14.3945107%" y1="105.534329%" x2="62.8615752%" y2="24.3294529%" id="linearGradient-3">
<stop stop-color="#3A8EE6" offset="0%"></stop>
<stop stop-color="#5C79F0" offset="23.59%"></stop>
<stop stop-color="#9059FF" offset="62.93%"></stop>
<stop stop-color="#C139E6" offset="100%"></stop>
</linearGradient>
<linearGradient x1="62.8713604%" y1="29.0228725%" x2="42.5369928%" y2="60.7429512%" id="linearGradient-4">
<stop stop-color="#6E008B" stop-opacity="0.5" offset="0%"></stop>
<stop stop-color="#C846CB" stop-opacity="0" offset="50%"></stop>
</linearGradient>
<linearGradient x1="73.7626536%" y1="58.1514822%" x2="20.9130221%" y2="45.4476366%" id="linearGradient-5">
<stop stop-color="#6A2BEA" stop-opacity="0" offset="13.6%"></stop>
<stop stop-color="#662CE6" stop-opacity="0.09459748" offset="29.95%"></stop>
<stop stop-color="#592FDB" stop-opacity="0.1926" offset="46.89%"></stop>
<stop stop-color="#4534C9" stop-opacity="0.2923" offset="64.1%"></stop>
<stop stop-color="#283BAF" stop-opacity="0.393" offset="81.5%"></stop>
<stop stop-color="#03448D" stop-opacity="0.4936" offset="98.9%"></stop>
<stop stop-color="#00458B" stop-opacity="0.5" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Send_Home-With-Files" transform="translate(-24.000000, -31.000000)">
<g id="Header" transform="translate(24.000000, 24.000000)">
<g id="Send" transform="translate(0.000000, 7.000000)">
<g id="FF_Send_Logo">
<g id="Group">
<g>
<path d="M18.4801773,0.309677419 C8.4846097,0.309677419 0.34868259,8.28387097 0.34868259,18.0774194 C0.34868259,19.1225806 1.20101781,19.9741935 2.24706558,19.9741935 L16.5817943,19.9741935 L16.5817943,25.1612903 L16.5817943,25.1612903 L16.5817943,29.4193548 L12.1264056,25.0064516 C11.390298,24.2709677 10.1892801,24.2709677 9.41442994,25.0064516 C8.67832225,25.7419355 8.67832225,26.9419355 9.41442994,27.716129 L17.1241894,35.4193548 C17.162932,35.4580645 17.2016745,35.4967742 17.2791595,35.5354839 C17.2791595,35.5354839 17.2791595,35.5354839 17.317902,35.5354839 C17.3566445,35.5741935 17.395387,35.6129032 17.4341295,35.6129032 C17.4341295,35.6129032 17.4341295,35.6129032 17.472872,35.6129032 C17.5116145,35.6516129 17.5503571,35.6516129 17.5890996,35.6903226 C17.5890996,35.6903226 17.5890996,35.6903226 17.6278421,35.6903226 C17.6665846,35.7290323 17.7440696,35.7290323 17.7828121,35.7677419 C17.7828121,35.7677419 17.7828121,35.7677419 17.7828121,35.7677419 C17.8215546,35.8064516 17.8990396,35.8064516 17.9377822,35.8064516 C17.9377822,35.8064516 17.9377822,35.8064516 17.9377822,35.8064516 C17.9765247,35.8064516 18.0540097,35.8451613 18.0927522,35.8451613 C18.0927522,35.8451613 18.1314947,35.8451613 18.1314947,35.8451613 C18.1702372,35.8451613 18.2089797,35.8451613 18.2864647,35.883871 C18.3639498,35.883871 18.4026923,35.883871 18.4801773,35.883871 C18.5576623,35.883871 18.5964048,35.883871 18.6738898,35.883871 C18.7126324,35.883871 18.7513749,35.883871 18.8288599,35.8451613 C18.8288599,35.8451613 18.8676024,35.8451613 18.8676024,35.8451613 C18.9063449,35.8451613 18.9838299,35.8064516 19.0225724,35.8064516 C19.0225724,35.8064516 19.0225724,35.8064516 19.0225724,35.8064516 C19.0613149,35.8064516 19.1388,35.7677419 19.1775425,35.7290323 C19.1775425,35.7290323 19.1775425,35.7290323 19.1775425,35.7290323 C19.216285,35.6903226 19.29377,35.6903226 19.3325125,35.6516129 C19.3325125,35.6516129 19.3325125,35.6516129 19.3325125,35.6516129 C19.371255,35.6129032 19.4099975,35.6129032 19.44874,35.5741935 C19.44874,35.5741935 19.44874,35.5741935 19.4874826,35.5741935 C19.5262251,35.5354839 19.5649676,35.4967742 19.6037101,35.4967742 C19.6037101,35.4967742 19.6037101,35.4967742 19.6424526,35.4967742 C19.6811951,35.4580645 19.7199376,35.4193548 19.7974226,35.3806452 L27.5071821,27.6774194 C28.2432898,26.9419355 28.2432898,25.7419355 27.5071821,24.9677419 C26.7710744,24.2322581 25.5700566,24.2322581 24.7952064,24.9677419 L20.3785603,29.4193548 L20.3785603,20.0129032 L34.713289,20.0129032 C35.7593368,20.0129032 36.611672,19.1612903 36.611672,18.116129 C36.611672,8.28387097 28.4757449,0.309677419 18.4801773,0.309677419 Z M4.26167611,16.1806452 C5.23023886,9.40645161 11.2353279,4.14193548 18.4801773,4.14193548 C25.7250267,4.14193548 31.6913732,9.40645161 32.659936,16.1806452 L4.26167611,16.1806452 Z" id="Shape" fill="url(#linearGradient-1)" fill-rule="nonzero"></path>
<path d="M18.4801773,0.309677419 C8.4846097,0.309677419 0.34868259,8.28387097 0.34868259,18.0774194 C0.34868259,19.1225806 1.20101781,19.9741935 2.24706558,19.9741935 L16.5817943,19.9741935 L16.5817943,25.1612903 L16.5817943,25.1612903 L16.5817943,29.4193548 L12.1264056,25.0064516 C11.390298,24.2709677 10.1892801,24.2709677 9.41442994,25.0064516 C8.67832225,25.7419355 8.67832225,26.9419355 9.41442994,27.716129 L17.1241894,35.4193548 C17.162932,35.4580645 17.2016745,35.4967742 17.2791595,35.5354839 C17.2791595,35.5354839 17.2791595,35.5354839 17.317902,35.5354839 C17.3566445,35.5741935 17.395387,35.6129032 17.4341295,35.6129032 C17.4341295,35.6129032 17.4341295,35.6129032 17.472872,35.6129032 C17.5116145,35.6516129 17.5503571,35.6516129 17.5890996,35.6903226 C17.5890996,35.6903226 17.5890996,35.6903226 17.6278421,35.6903226 C17.6665846,35.7290323 17.7440696,35.7290323 17.7828121,35.7677419 C17.7828121,35.7677419 17.7828121,35.7677419 17.7828121,35.7677419 C17.8215546,35.8064516 17.8990396,35.8064516 17.9377822,35.8064516 C17.9377822,35.8064516 17.9377822,35.8064516 17.9377822,35.8064516 C17.9765247,35.8064516 18.0540097,35.8451613 18.0927522,35.8451613 C18.0927522,35.8451613 18.1314947,35.8451613 18.1314947,35.8451613 C18.1702372,35.8451613 18.2089797,35.8451613 18.2864647,35.883871 C18.3639498,35.883871 18.4026923,35.883871 18.4801773,35.883871 C18.5576623,35.883871 18.5964048,35.883871 18.6738898,35.883871 C18.7126324,35.883871 18.7513749,35.883871 18.8288599,35.8451613 C18.8288599,35.8451613 18.8676024,35.8451613 18.8676024,35.8451613 C18.9063449,35.8451613 18.9838299,35.8064516 19.0225724,35.8064516 C19.0225724,35.8064516 19.0225724,35.8064516 19.0225724,35.8064516 C19.0613149,35.8064516 19.1388,35.7677419 19.1775425,35.7290323 C19.1775425,35.7290323 19.1775425,35.7290323 19.1775425,35.7290323 C19.216285,35.6903226 19.29377,35.6903226 19.3325125,35.6516129 C19.3325125,35.6516129 19.3325125,35.6516129 19.3325125,35.6516129 C19.371255,35.6129032 19.4099975,35.6129032 19.44874,35.5741935 C19.44874,35.5741935 19.44874,35.5741935 19.4874826,35.5741935 C19.5262251,35.5354839 19.5649676,35.4967742 19.6037101,35.4967742 C19.6037101,35.4967742 19.6037101,35.4967742 19.6424526,35.4967742 C19.6811951,35.4580645 19.7199376,35.4193548 19.7974226,35.3806452 L27.5071821,27.6774194 C28.2432898,26.9419355 28.2432898,25.7419355 27.5071821,24.9677419 C26.7710744,24.2322581 25.5700566,24.2322581 24.7952064,24.9677419 L20.3785603,29.4193548 L20.3785603,20.0129032 L34.713289,20.0129032 C35.7593368,20.0129032 36.611672,19.1612903 36.611672,18.116129 C36.611672,8.28387097 28.4757449,0.309677419 18.4801773,0.309677419 Z M4.26167611,16.1806452 C5.23023886,9.40645161 11.2353279,4.14193548 18.4801773,4.14193548 C25.7250267,4.14193548 31.6913732,9.40645161 32.659936,16.1806452 L4.26167611,16.1806452 Z" id="Shape" fill="url(#linearGradient-2)" fill-rule="nonzero"></path>
<path d="M20.3785603,4.25806452 C26.7323319,5.10967742 31.7688582,9.98709677 32.659936,16.1806452 L24.2140688,16.1806452 C22.1219732,16.1806452 20.4173028,17.883871 20.4173028,19.9741935 L20.4173028,19.9741935 L34.713289,19.9741935 C35.7593368,19.9741935 36.611672,19.1225806 36.611672,18.0774194 C36.611672,11.3032258 31.8076008,7.97419355 27.7396372,6.07741935 C23.9816137,4.33548387 20.3785603,4.25806452 20.3785603,4.25806452 Z" id="Path" fill="url(#linearGradient-3)"></path>
<path d="M32.582451,15.7548387 C33.8609538,16.8 35.1781991,17.8064516 36.4179595,18.8903226 C36.534187,18.6580645 36.611672,18.3870968 36.611672,18.0774194 C36.611672,11.3032258 31.8076008,7.97419355 27.7396372,6.07741935 C23.9816137,4.33548387 20.3785603,4.25806452 20.3785603,4.25806452 C26.5773619,5.07096774 31.5364032,9.79354839 32.582451,15.7548387 Z" id="Path" fill="url(#linearGradient-4)"></path>
</g>
<path d="M32.3499959,16.1806452 L24.2140688,16.1806452 C22.1219732,16.1806452 20.4173028,17.883871 20.4173028,19.9741935 L34.713289,19.9741935 C35.2944267,19.9741935 35.8368218,19.7032258 36.1855044,19.2774194 C34.9070016,18.2322581 33.6284987,17.2258065 32.3499959,16.1806452 Z" id="Path" fill="url(#linearGradient-5)" opacity="0.9"></path>
</g>
<g id="Group" transform="translate(50.365263, 8.129032)" fill="#220033">
<polygon id="Path" points="0.30994008 1.74193548 11.6614955 1.74193548 11.6614955 4.99354839 3.71928097 4.99354839 3.71928097 9.09677419 11.6614955 9.09677419 11.6614955 12.2709677 3.71928097 12.2709677 3.71928097 19.3935484 0.27119757 19.3935484 0.27119757 1.74193548"></polygon>
<path d="M13.7535911,2.67096774 C13.7535911,2.0516129 13.9473036,1.50967742 14.3734712,1.12258065 C14.7608963,0.696774194 15.3032915,0.503225806 15.8844291,0.503225806 C16.5430518,0.503225806 17.0467044,0.696774194 17.4341295,1.12258065 C17.8215546,1.5483871 18.0152672,2.0516129 18.0152672,2.67096774 C18.0152672,3.29032258 17.8215546,3.79354839 17.4341295,4.18064516 C17.0467044,4.56774194 16.5043093,4.8 15.8844291,4.8 C15.264549,4.8 14.7608963,4.60645161 14.3347287,4.18064516 C13.9473036,3.79354839 13.7535911,3.2516129 13.7535911,2.67096774 Z M14.1797587,6.3483871 L17.5890996,6.3483871 L17.5890996,19.3935484 L14.1797587,19.3935484 L14.1797587,6.3483871 Z" id="Shape" fill-rule="nonzero"></path>
<path d="M20.2623328,6.3483871 L23.5554461,6.3483871 L23.5554461,8.36129032 C23.8653862,7.58709677 24.3302963,7.00645161 24.988919,6.65806452 C25.6087991,6.30967742 26.3449068,6.11612903 27.1584995,6.11612903 C27.5846672,6.11612903 28.0108348,6.15483871 28.3982599,6.27096774 C28.785685,6.3483871 29.0956251,6.50322581 29.3668226,6.61935484 L28.1658048,9.90967742 C27.9720923,9.79354839 27.7396372,9.67741935 27.4296971,9.6 C27.119757,9.52258065 26.7710744,9.48387097 26.4223919,9.48387097 C25.5700566,9.48387097 24.8726915,9.71612903 24.3690388,10.1806452 C23.8653862,10.6451613 23.5941886,11.4580645 23.5941886,12.5419355 L23.5941886,19.4322581 L20.2623328,19.4322581 L20.2623328,6.3483871 L20.2623328,6.3483871 Z" id="Path"></path>
<path d="M36.4954445,19.6645161 C35.4493967,19.6645161 34.4808339,19.5096774 33.6284987,19.1612903 C32.7761635,18.8129032 32.0400558,18.3483871 31.4589182,17.7290323 C30.839038,17.1096774 30.3741279,16.4129032 30.0641878,15.5612903 C29.7542477,14.7483871 29.5992777,13.8580645 29.5992777,12.8903226 C29.5992777,11.9225806 29.7542477,11.0322581 30.1029303,10.2193548 C30.4516129,9.40645161 30.916523,8.67096774 31.5364032,8.0516129 C32.1562833,7.43225806 32.892391,6.96774194 33.7059837,6.61935484 C34.558319,6.27096774 35.4493967,6.07741935 36.4179595,6.07741935 C37.3865222,6.07741935 38.3163424,6.23225806 39.1299352,6.58064516 C39.9435279,6.92903226 40.6796356,7.39354839 41.2607732,7.97419355 C41.8419109,8.55483871 42.306821,9.2516129 42.6555036,10.1032258 C43.0041862,10.916129 43.1591562,11.8064516 43.1591562,12.7741935 L43.1591562,14.0129032 L32.7761635,14.0129032 C33.0086186,14.8645161 33.4347862,15.5225806 34.0934088,16.0258065 C34.7520315,16.5290323 35.5656242,16.7612903 36.534187,16.7612903 C37.3090372,16.7612903 37.9676599,16.6064516 38.510055,16.2967742 C39.0524501,15.9870968 39.4786177,15.5612903 39.7885578,15.0193548 L42.539276,16.6064516 C41.8806534,17.5354839 41.0670607,18.2709677 40.1372404,18.8129032 C39.1299352,19.3548387 37.9289173,19.6645161 36.4954445,19.6645161 Z M36.4179595,8.90322581 C35.5656242,8.90322581 34.8295165,9.13548387 34.2096364,9.56129032 C33.5897562,10.0258065 33.1635886,10.6064516 32.892391,11.3806452 L39.8660428,11.3806452 C39.6335878,10.5677419 39.2461627,9.9483871 38.6262825,9.52258065 C38.0064024,9.09677419 37.2702947,8.90322581 36.4179595,8.90322581 Z" id="Shape" fill-rule="nonzero"></path>
<path d="M44.127719,6.3483871 L46.2972995,6.3483871 L46.2972995,5.88387097 C46.2972995,4.83870968 46.3747845,3.9483871 46.5684971,3.21290323 C46.7622096,2.51612903 47.0721497,1.93548387 47.4983173,1.50967742 C47.9244849,1.08387097 48.5056226,0.774193548 49.2029878,0.619354839 C49.9390955,0.425806452 50.8301732,0.348387097 51.876221,0.348387097 L52.7285562,0.348387097 L52.7285562,3.40645161 L52.186161,3.40645161 C51.6050234,3.40645161 51.1401133,3.44516129 50.7914307,3.48387097 C50.4427481,3.52258065 50.1715505,3.63870968 50.0165805,3.83225806 C49.8228679,3.98709677 49.7066404,4.21935484 49.6678979,4.52903226 C49.6291554,4.83870968 49.5904129,5.22580645 49.5904129,5.72903226 L49.5904129,6.3483871 L52.7285562,6.3483871 L52.7285562,9.32903226 L49.5904129,9.32903226 L49.5904129,19.3935484 L46.258557,19.3935484 L46.258557,9.32903226 L44.0889764,9.32903226 L44.0889764,6.3483871 L44.127719,6.3483871 Z" id="Path"></path>
<path d="M60.3995732,19.6645161 C59.4310104,19.6645161 58.5011902,19.4709677 57.648855,19.1225806 C56.7965197,18.7741935 56.0991546,18.2709677 55.4792744,17.6516129 C54.8593942,17.0322581 54.3557416,16.2967742 54.0458015,15.483871 C53.6971189,14.6709677 53.5421489,13.7806452 53.5421489,12.8516129 C53.5421489,11.9225806 53.6971189,11.0322581 54.0458015,10.2193548 C54.3944841,9.40645161 54.8593942,8.67096774 55.4792744,8.0516129 C56.0991546,7.43225806 56.8352623,6.96774194 57.648855,6.61935484 C58.5011902,6.27096774 59.3922679,6.07741935 60.3995732,6.07741935 C61.3681359,6.07741935 62.2592137,6.27096774 63.1115489,6.61935484 C63.9638841,6.96774194 64.6999918,7.47096774 65.319872,8.0516129 C65.9397521,8.67096774 66.4434047,9.36774194 66.7920873,10.2193548 C67.1407699,11.0322581 67.3344825,11.9225806 67.3344825,12.8516129 C67.3344825,13.7806452 67.1407699,14.6709677 66.7920873,15.483871 C66.4434047,16.2967742 65.9397521,17.0322581 65.3586145,17.6516129 C64.7387343,18.2709677 64.0026266,18.7741935 63.1890339,19.1225806 C62.2979562,19.4709677 61.4068784,19.6645161 60.3995732,19.6645161 Z M60.4383157,16.4903226 C60.9419683,16.4903226 61.4068784,16.4129032 61.833046,16.2193548 C62.2592137,16.0258065 62.6466388,15.7548387 62.9565788,15.4451613 C63.2665189,15.1354839 63.5377165,14.7483871 63.731429,14.283871 C63.9251416,13.8580645 64.0026266,13.3548387 64.0026266,12.8516129 C64.0026266,12.3483871 63.9251416,11.883871 63.731429,11.4193548 C63.5377165,10.9548387 63.3052614,10.5677419 62.9565788,10.2580645 C62.6466388,9.9483871 62.2592137,9.67741935 61.833046,9.48387097 C61.4068784,9.29032258 60.9419683,9.21290323 60.4383157,9.21290323 C59.9346631,9.21290323 59.4697529,9.29032258 59.0435853,9.48387097 C58.6174177,9.67741935 58.2299926,9.9483871 57.9200525,10.2580645 C57.6101125,10.5677419 57.3389149,10.9548387 57.1452023,11.4193548 C56.9514898,11.883871 56.8740048,12.3483871 56.8740048,12.8516129 C56.8740048,13.3548387 56.9514898,13.8580645 57.1452023,14.283871 C57.3389149,14.7096774 57.5713699,15.0967742 57.9200525,15.4451613 C58.2299926,15.7548387 58.6174177,16.0258065 59.0435853,16.2193548 C59.4697529,16.3741935 59.9346631,16.4903226 60.4383157,16.4903226 Z" id="Shape" fill-rule="nonzero"></path>
<polygon id="Path" points="72.3322663 12.6967742 67.7219076 6.3483871 71.6736436 6.3483871 74.4243618 10.2193548 77.17508 6.3483871 81.0880735 6.3483871 76.4389723 12.7354839 81.4367561 19.3935484 77.4075351 19.3935484 74.3856193 15.2903226 71.4411885 19.3935484 67.4119675 19.3935484"></polygon>
<g transform="translate(89.107773, 0.000000)">
<path d="M7.78724452,19.6258065 C6.00508906,19.6258065 4.49413117,19.2774194 3.25437084,18.6193548 C2.01461052,17.9612903 1.00730526,17.0709677 0.15497004,15.9483871 L1.89838299,14.5548387 C3.25437084,16.683871 5.19149635,17.7290323 7.7097595,17.7290323 C9.06574735,17.7290323 10.1117951,17.4193548 10.8479028,16.8 C11.545268,16.1806452 11.8939506,15.3677419 11.8939506,14.4 C11.8939506,13.8193548 11.7389805,13.3548387 11.467783,12.9677419 C11.1965854,12.5806452 10.8091603,12.3096774 10.3055077,12.0387097 C9.84059755,11.8064516 9.29820241,11.6129032 8.67832225,11.4580645 C8.05844209,11.3032258 7.39981942,11.1870968 6.74119675,11.0322581 C6.04383157,10.8774194 5.3852089,10.7225806 4.68784372,10.5290323 C4.02922105,10.3354839 3.40934088,10.0645161 2.90568825,9.75483871 C2.40203562,9.44516129 1.9371255,8.98064516 1.62718542,8.43870968 C1.27850283,7.89677419 1.12353279,7.2 1.12353279,6.3483871 C1.12353279,5.69032258 1.27850283,5.03225806 1.5497004,4.4516129 C1.82089797,3.87096774 2.24706558,3.32903226 2.75071821,2.90322581 C3.29311335,2.47741935 3.91299352,2.12903226 4.6103587,1.85806452 C5.34646639,1.58709677 6.1600591,1.47096774 7.05113683,1.47096774 C8.60083723,1.47096774 9.87934006,1.74193548 10.9253878,2.32258065 C11.9714356,2.90322581 12.9012558,3.63870968 13.676106,4.60645161 L12.0489206,5.88387097 C11.5065255,5.07096774 10.8479028,4.4516129 10.0730526,3.98709677 C9.29820241,3.52258065 8.29089715,3.29032258 7.08987934,3.29032258 C5.73389149,3.29032258 4.76532874,3.56129032 4.14544858,4.14193548 C3.52556842,4.72258065 3.21562833,5.41935484 3.21562833,6.30967742 C3.21562833,6.8516129 3.33185586,7.27741935 3.56431093,7.58709677 C3.79676599,7.93548387 4.14544858,8.20645161 4.57161619,8.4 C4.9977838,8.59354839 5.50143643,8.78709677 6.04383157,8.90322581 C6.62496922,9.01935484 7.20610687,9.17419355 7.86472954,9.32903226 C8.56209472,9.48387097 9.2594599,9.63870968 9.99556759,9.83225806 C10.7316753,10.0258065 11.390298,10.2967742 11.9714356,10.683871 C12.5525733,11.0322581 13.0562259,11.5354839 13.4049085,12.116129 C13.7923336,12.6967742 13.9860461,13.4322581 13.9860461,14.3612903 C13.9860461,15.0580645 13.8310761,15.716129 13.5598785,16.3354839 C13.2886809,16.9548387 12.8625133,17.5354839 12.3201182,18 C11.7777231,18.4645161 11.1578429,18.8516129 10.3829927,19.1612903 C9.60814249,19.4709677 8.75580727,19.6258065 7.78724452,19.6258065 Z" id="Path"></path>
<path d="M23.4779611,19.6645161 C22.4319133,19.6645161 21.5020931,19.5096774 20.6497579,19.1612903 C19.7974226,18.8129032 19.0613149,18.3483871 18.4801773,17.7290323 C17.8602971,17.1096774 17.395387,16.4129032 17.0854469,15.6 C16.7755069,14.7870968 16.6205368,13.8967742 16.6205368,12.9290323 C16.6205368,11.9612903 16.7755069,11.0709677 17.1241894,10.2193548 C17.472872,9.40645161 17.9377822,8.67096774 18.5576623,8.0516129 C19.1775425,7.43225806 19.8749077,6.96774194 20.7272429,6.61935484 C21.5408356,6.27096774 22.4706558,6.07741935 23.4392186,6.07741935 C24.4077813,6.07741935 25.2601166,6.23225806 26.0737093,6.58064516 C26.887302,6.92903226 27.5846672,7.35483871 28.1658048,7.97419355 C28.7469425,8.55483871 29.2118526,9.2516129 29.5605352,10.0645161 C29.9092178,10.8774194 30.0641878,11.7677419 30.0641878,12.7354839 L30.0641878,13.6258065 L18.5189198,13.6258065 C18.5964048,14.2451613 18.7513749,14.8258065 19.0225724,15.3290323 C19.29377,15.8322581 19.6424526,16.2967742 20.0686202,16.683871 C20.4947878,17.0709677 20.9984404,17.3419355 21.5795781,17.5741935 C22.1607158,17.7677419 22.7805959,17.883871 23.4779611,17.883871 C24.5240089,17.883871 25.4150866,17.6516129 26.1124518,17.2258065 C26.809817,16.8 27.3909546,16.1806452 27.8558647,15.3677419 L29.5605352,16.3741935 C28.9019125,17.4193548 28.0495773,18.2322581 27.0810145,18.8129032 C26.1124518,19.3935484 24.9501765,19.6645161 23.4779611,19.6645161 Z M23.4392186,7.81935484 C22.8193384,7.81935484 22.2382008,7.93548387 21.6958056,8.12903226 C21.1534105,8.32258065 20.6885004,8.59354839 20.2623328,8.98064516 C19.8361651,9.32903226 19.4874826,9.75483871 19.216285,10.2580645 C18.9450874,10.7612903 18.7513749,11.3032258 18.6351473,11.883871 L28.0883198,11.883871 C27.9333497,10.6451613 27.4296971,9.67741935 26.6161044,8.94193548 C25.7637692,8.20645161 24.6789789,7.81935484 23.4392186,7.81935484 Z" id="Shape" fill-rule="nonzero"></path>
<path d="M33.0473611,6.3483871 L34.9844866,6.3483871 L34.9844866,8.51612903 C35.4493967,7.78064516 36.0692769,7.2 36.8441271,6.73548387 C37.6189773,6.27096774 38.510055,6.07741935 39.5561028,6.07741935 C40.408438,6.07741935 41.1832882,6.19354839 41.8806534,6.46451613 C42.5780186,6.73548387 43.1591562,7.12258065 43.6240663,7.62580645 C44.0889764,8.12903226 44.4764015,8.7483871 44.7475991,9.48387097 C45.0187967,10.2193548 45.1350242,11.0322581 45.1350242,11.9612903 L45.1350242,19.3935484 L43.1204137,19.3935484 L43.1204137,12.0387097 C43.1204137,10.7612903 42.7717311,9.75483871 42.1131084,8.98064516 C41.4544858,8.20645161 40.4471805,7.85806452 39.1686777,7.85806452 C38.58754,7.85806452 38.0451449,7.97419355 37.5414922,8.16774194 C37.0378396,8.36129032 36.611672,8.67096774 36.2242469,9.05806452 C35.8368218,9.44516129 35.5656242,9.87096774 35.3719117,10.4129032 C35.1781991,10.9548387 35.0619716,11.4967742 35.0619716,12.1548387 L35.0619716,19.3935484 L33.0861036,19.3935484 L33.0861036,6.3483871 L33.0473611,6.3483871 Z" id="Path"></path>
<path d="M54.5881967,19.6645161 C53.6583764,19.6645161 52.8060412,19.5096774 51.9924485,19.1612903 C51.1788558,18.8129032 50.4814906,18.3483871 49.8616104,17.7677419 C49.2804728,17.1483871 48.7768202,16.4516129 48.4281376,15.6 C48.079455,14.7870968 47.9244849,13.8580645 47.9244849,12.8516129 C47.9244849,11.8451613 48.079455,10.9548387 48.4281376,10.1032258 C48.7768202,9.29032258 49.2417303,8.55483871 49.8616104,7.93548387 C50.4814906,7.31612903 51.1788558,6.8516129 51.9924485,6.54193548 C52.8060412,6.19354839 53.6583764,6.03870968 54.5881967,6.03870968 C55.0531068,6.03870968 55.5180169,6.07741935 56.0216695,6.19354839 C56.4865797,6.30967742 56.9514898,6.46451613 57.3776574,6.69677419 C57.803825,6.92903226 58.1912501,7.16129032 58.5786752,7.50967742 C58.9273578,7.81935484 59.2372979,8.16774194 59.5084954,8.59354839 L59.5084954,0.309677419 L61.4843635,0.309677419 L61.4843635,19.3548387 L59.5084954,19.3548387 L59.5084954,17.0322581 C59.2372979,17.4193548 58.9273578,17.8064516 58.5786752,18.116129 C58.2299926,18.4258065 57.803825,18.6967742 57.3776574,18.9290323 C56.9514898,19.1612903 56.4865797,19.316129 56.0216695,19.4322581 C55.5180169,19.5870968 55.0531068,19.6645161 54.5881967,19.6645161 Z M54.7431667,17.7677419 C55.4405319,17.7677419 56.0991546,17.6516129 56.6802922,17.3806452 C57.2614299,17.1096774 57.803825,16.7612903 58.2299926,16.3354839 C58.6561602,15.9096774 59.0048428,15.3677419 59.2372979,14.7483871 C59.4697529,14.1290323 59.5859805,13.5096774 59.5859805,12.8129032 C59.5859805,12.1548387 59.4697529,11.4967742 59.2372979,10.8774194 C59.0048428,10.2580645 58.6561602,9.75483871 58.2299926,9.29032258 C57.803825,8.86451613 57.2614299,8.47741935 56.6802922,8.24516129 C56.0991546,7.97419355 55.4405319,7.85806452 54.7431667,7.85806452 C54.084544,7.85806452 53.4259214,7.97419355 52.8447837,8.24516129 C52.2636461,8.51612903 51.7599934,8.86451613 51.2950833,9.29032258 C50.8689157,9.71612903 50.5202331,10.2580645 50.2877781,10.8774194 C50.055323,11.4967742 49.9390955,12.116129 49.9390955,12.8129032 C49.9390955,13.5096774 50.055323,14.1677419 50.2877781,14.7870968 C50.5202331,15.4064516 50.8689157,15.9096774 51.2950833,16.3741935 C51.7212509,16.8 52.2249036,17.1483871 52.8447837,17.4193548 C53.4646639,17.6516129 54.084544,17.7677419 54.7431667,17.7677419 Z" id="Shape" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 25 KiB

99
assets/master-logo.svg Normal file
View file

@ -0,0 +1,99 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
<defs>
<radialGradient id="a" cx="-1186.91" cy="-517.676" r="90.78" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff36e"/>
<stop offset=".5" stop-color="#fc4055"/>
<stop offset="1" stop-color="#e31587"/>
</radialGradient>
<radialGradient id="b" cx="-1251.812" cy="-513.921" r="53.726" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
<stop offset=".001" stop-color="#c60084"/>
<stop offset="1" stop-color="#fc4055" stop-opacity="0"/>
</radialGradient>
<radialGradient id="c" cx="-1179.15" cy="-522.842" r="106.599" gradientTransform="translate(1258.441 534.061)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ffde67" stop-opacity=".6"/>
<stop offset=".093" stop-color="#ffd966" stop-opacity=".581"/>
<stop offset=".203" stop-color="#ffca65" stop-opacity=".525"/>
<stop offset=".321" stop-color="#feb262" stop-opacity=".432"/>
<stop offset=".446" stop-color="#fe8f5e" stop-opacity=".302"/>
<stop offset=".573" stop-color="#fd6459" stop-opacity=".137"/>
<stop offset=".664" stop-color="#fc4055" stop-opacity="0"/>
</radialGradient>
<radialGradient id="d" cx="42.285" cy="44.499" r="137.521" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
<stop offset=".153" stop-color="#810220"/>
<stop offset=".167" stop-color="#920b27" stop-opacity=".861"/>
<stop offset=".216" stop-color="#cb2740" stop-opacity=".398"/>
<stop offset=".253" stop-color="#ef394f" stop-opacity=".11"/>
<stop offset=".272" stop-color="#fc4055" stop-opacity="0"/>
</radialGradient>
<radialGradient id="e" cx="31.878" cy="42.77" r="137.521" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
<stop offset=".113" stop-color="#810220"/>
<stop offset=".133" stop-color="#920b27" stop-opacity=".861"/>
<stop offset=".204" stop-color="#cb2740" stop-opacity=".398"/>
<stop offset=".257" stop-color="#ef394f" stop-opacity=".11"/>
<stop offset=".284" stop-color="#fc4055" stop-opacity="0"/>
</radialGradient>
<linearGradient id="f" x1="-1212.61" y1="-525.103" x2="-1189.052" y2="-484.299" gradientTransform="translate(1258.441 532.89)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ffbd4f"/>
<stop offset=".508" stop-color="#ff9640" stop-opacity="0"/>
</linearGradient>
<radialGradient id="g" cx="-1255.933" cy="-77.395" r="88.863" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9640"/>
<stop offset=".8" stop-color="#fc4055"/>
</radialGradient>
<radialGradient id="h" cx="-1255.933" cy="-77.395" r="88.863" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
<stop offset=".084" stop-color="#ffde67"/>
<stop offset=".147" stop-color="#ffdc66" stop-opacity=".968"/>
<stop offset=".246" stop-color="#ffd562" stop-opacity=".879"/>
<stop offset=".369" stop-color="#ffcb5d" stop-opacity=".734"/>
<stop offset=".511" stop-color="#ffbc55" stop-opacity=".533"/>
<stop offset=".667" stop-color="#ffaa4b" stop-opacity=".28"/>
<stop offset=".822" stop-color="#ff9640" stop-opacity="0"/>
</radialGradient>
<radialGradient id="i" cx="49.941" cy="38.654" r="41.79" gradientTransform="matrix(.247 .971 -1.011 .259 76.681 -19.851)" gradientUnits="userSpaceOnUse">
<stop offset=".363" stop-color="#fc4055"/>
<stop offset=".443" stop-color="#fd604d" stop-opacity=".633"/>
<stop offset=".545" stop-color="#fe8644" stop-opacity=".181"/>
<stop offset=".59" stop-color="#ff9640" stop-opacity="0"/>
</radialGradient>
<radialGradient id="j" cx="42.737" cy="42.193" r="41.79" gradientTransform="translate(0 -.095)" gradientUnits="userSpaceOnUse">
<stop offset=".216" stop-color="#fc4055" stop-opacity=".8"/>
<stop offset=".267" stop-color="#fd5251" stop-opacity=".633"/>
<stop offset=".41" stop-color="#fe8345" stop-opacity=".181"/>
<stop offset=".474" stop-color="#ff9640" stop-opacity="0"/>
</radialGradient>
<radialGradient id="k" cx="-1238.198" cy="-87.433" r="150.195" gradientTransform="matrix(.959 0 0 .961 1273.896 86.468)" gradientUnits="userSpaceOnUse">
<stop offset=".054" stop-color="#fff36e"/>
<stop offset=".457" stop-color="#ff9640"/>
<stop offset=".639" stop-color="#ff9640"/>
</radialGradient>
<linearGradient id="l" x1="59.052" y1="7.083" x2="18.155" y2="77.92" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff36e" stop-opacity=".8"/>
<stop offset=".094" stop-color="#fff36e" stop-opacity=".699"/>
<stop offset=".752" stop-color="#fff36e" stop-opacity="0"/>
</linearGradient>
<linearGradient id="m" x1="40.585" y1="-.67" x2="62.3" y2="62.203" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#b833e1"/>
<stop offset=".371" stop-color="#9059ff"/>
<stop offset=".614" stop-color="#5b6df8"/>
<stop offset="1" stop-color="#0090ed"/>
</linearGradient>
<linearGradient id="n" x1="-1230.731" y1="-532.566" x2="-1190.37" y2="-492.205" gradientTransform="translate(1258.441 532.89)" gradientUnits="userSpaceOnUse">
<stop offset=".805" stop-color="#722291" stop-opacity="0"/>
<stop offset="1" stop-color="#592acb" stop-opacity=".5"/>
</linearGradient>
</defs>
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#a)"/>
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#b)" opacity=".67"/>
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#c)"/>
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#d)"/>
<path d="M71.944 15.7A39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522c15.83.2 32.832 10.981 35.357 30.413 2.9 22.306-12.637 40.923-34.493 40.98-24.045.061-38.67-21.229-34.847-40.352a19.735 19.735 0 0 1 .413-2.787 37.815 37.815 0 0 1 4.193-14.018c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7zm-63.4 3.487z" fill="url(#e)"/>
<path d="M75.651 30.935a41.01 41.01 0 0 1 .3 7.247q1.99-.3 3.987-.53A40.01 40.01 0 0 0 71.944 15.7 39.47 39.47 0 0 0 41.588.009C32.3-.177 25.884 2.614 22.254 4.858 27.111 2.041 34.14.443 40.294.522 56.124.724 73.126 11.5 75.651 30.935z" fill="url(#f)"/>
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" fill="url(#g)"/>
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" fill="url(#h)"/>
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" style="mix-blend-mode:multiply" opacity=".53" fill="url(#i)"/>
<path d="M76.625 29.826C74.374 9.518 56.263.39 40.294.522c-6.155.05-13.183 1.519-18.04 4.336a19.7 19.7 0 0 0-3.56 2.7c.129-.107.514-.424 1.152-.862l.063-.043.056-.038a26.655 26.655 0 0 1 7.692-3.572A43.5 43.5 0 0 1 40.84 1.5a33.254 33.254 0 0 1 31.25 31.993C72.457 46.7 61.648 57.23 49.188 57.84c-9.062.444-17.6-3.941-21.77-12.713a21.68 21.68 0 0 1-1.964-6.333c-1.976-13.35 6.989-24.735 15.21-27.554-4.435-3.874-15.548-3.611-23.819 2.474-5.956 4.382-9.82 11.049-11.1 19a32.945 32.945 0 0 0 2.34 18 35.3 35.3 0 0 0 30.089 21.443q1.489.114 2.984.113c26.462 0 37.942-20.087 35.467-42.444z" style="mix-blend-mode:multiply" opacity=".53" fill="url(#j)"/>
<path d="M49.188 57.84c17.1-1.04 24.42-15.2 24.879-25.245C74.783 16.9 65.472-.02 40.84 1.5a43.5 43.5 0 0 0-13.183 1.546 28.855 28.855 0 0 0-7.692 3.572l-.056.038-.063.043q-.574.4-1.123.842A33.482 33.482 0 0 1 39.7 3.605c14.142 1.856 27.072 12.857 27.072 27.373 0 11.169-8.631 19.7-18.738 19.087-15.015-.9-18.8-16.3-10.989-22.954-2.106-.453-6.064.435-8.82 4.555-2.473 3.7-2.333 9.41-.807 13.461a22.118 22.118 0 0 0 21.77 12.713z" fill="url(#k)"/>
<path d="M71.944 15.7a39.958 39.958 0 0 0-3.482-3.982 31.342 31.342 0 0 0-3.177-2.926 24.393 24.393 0 0 1 1.849 1.79 22.466 22.466 0 0 1 4.882 8.144c2.089 6.329 1.953 14.25-2.036 20.471a23.539 23.539 0 0 1-20.855 10.895c-.361 0-.725 0-1.091-.027-15.015-.9-18.8-16.3-10.988-22.954-2.107-.453-6.065.435-8.821 4.555-2.473 3.7-2.333 9.41-.807 13.461a21.679 21.679 0 0 1-1.963-6.333c-1.977-13.35 6.988-24.735 15.209-27.554-4.435-3.874-15.548-3.611-23.819 2.474a27.845 27.845 0 0 0-10.087 14.6 38.5 38.5 0 0 1 4.159-13.553c-2.769 1.433-6.295 5.965-8.035 10.163A41.355 41.355 0 0 0 .284 45.1c.06.518.114 1.035.182 1.549A40.062 40.062 0 1 0 71.944 15.7z" fill="url(#l)"/>
<path d="M72.016 18.726a22.458 22.458 0 0 0-4.882-8.144 30.224 30.224 0 0 0-9.094-6.493A40.518 40.518 0 0 0 49.1.92a39.834 39.834 0 0 0-16.565-.1c-5.683 1.2-10.68 3.659-13.841 6.733a32.1 32.1 0 0 1 8.031-3.2 33.565 33.565 0 0 1 31.173 8.1 27.01 27.01 0 0 1 4.329 5.3c4.895 7.959 4.432 17.965.615 23.866-2.835 4.384-8.907 8.5-14.572 8.452A23.629 23.629 0 0 0 69.98 39.2c3.989-6.224 4.125-14.145 2.036-20.474z" fill="url(#m)"/>
<path d="M72.016 18.726a22.458 22.458 0 0 0-4.882-8.144 30.224 30.224 0 0 0-9.094-6.493A40.518 40.518 0 0 0 49.1.92a39.834 39.834 0 0 0-16.565-.1c-5.683 1.2-10.68 3.659-13.841 6.733a32.1 32.1 0 0 1 8.031-3.2 33.565 33.565 0 0 1 31.173 8.1 27.01 27.01 0 0 1 4.329 5.3c4.895 7.959 4.432 17.965.615 23.866-2.835 4.384-8.907 8.5-14.572 8.452A23.629 23.629 0 0 0 69.98 39.2c3.989-6.224 4.125-14.145 2.036-20.474z" fill="url(#n)"/>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 578.55 185.54"><path d="M503.5 117.21c0 4.92 2.37 8.82 9 8.82 7.8 0 16.11-5.6 16.61-18.31a80.86 80.86 0 0 0-11-1c-7.83-.01-14.61 2.19-14.61 10.49z"/><path d="M0 0v185.54h578.55V0zm163.78 139.93h-32V96.87c0-13.22-4.41-18.31-13.05-18.31-10.51 0-14.75 7.46-14.75 18.14v26.64h10.12v16.61h-32V96.87c0-13.22-4.4-18.31-13.05-18.31-10.51 0-14.75 7.46-14.75 18.14v26.64h14.54v16.61H22.22v-16.61h10.17V80.09h-11V63.48h32.87V75c4.58-8.13 12.55-13.05 23.22-13.05 11 0 21.19 5.26 24.92 16.45 4.24-10.17 12.88-16.45 24.92-16.45 13.73 0 26.28 8.31 26.28 26.45v34.94h10.17zm48.65 1.69c-23.56 0-39.84-14.41-39.84-38.82 0-22.38 13.56-40.86 41-40.86s40.86 18.48 40.86 39.84c.02 24.42-17.61 39.85-42.02 39.85zm121.72-1.69h-66.8l-2.2-11.53 42-48.32h-23.9l-3.39 11.87-15.77-1.69 2.71-26.79H334L335.69 75l-42.4 48.34H318l3.56-11.87 17.29 1.69zm41.36 0h-22.89v-27.46h22.89zm0-49h-22.89V63.48h22.89zm12 49L420.6 23.34h21.53l-33.06 116.59zm44.42 0L465 23.34h21.53l-33.04 116.59zm113.92 1.69c-10.17 0-15.76-5.94-16.78-15.26-4.41 7.8-12.21 15.26-24.58 15.26-11 0-23.56-5.94-23.56-21.87 0-18.82 18.14-23.22 35.6-23.22a100.23 100.23 0 0 1 12.55.68v-2.54c0-7.8-.17-17.12-12.55-17.12-4.58 0-8.14.34-11.7 2.2L502 90.6l-17.46-1.87 3.39-19.83c13.39-5.43 20.17-7 32.72-7 16.45 0 30.35 8.48 30.35 25.94v33.23c0 4.41 1.69 5.94 5.26 5.94a11.5 11.5 0 0 0 3.22-.51l.17 11.53a29.57 29.57 0 0 1-13.77 3.6z"/><path d="M213.27 78.73c-11.19 0-18.14 8.3-18.14 22.72 0 13.22 6.1 23.39 18 23.39 11.36 0 18.82-9.15 18.82-23.73-.03-15.43-8.33-22.38-18.68-22.38z"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

@ -1,34 +1,34 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
<?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"
width="64mm"
height="64mm"
viewBox="0 0 64 64"
version="1.1"
id="svg898">
<defs
id="defs892" />
<metadata
id="metadata895">
<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>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3279 6996 c-2 -2 -40 -6 -84 -10 -44 -3 -98 -8 -120 -11 -22 -3 -58
-7 -80 -10 -22 -3 -51 -7 -65 -10 -14 -3 -52 -10 -85 -16 -274 -49 -603 -159
-879 -294 -874 -428 -1546 -1218 -1816 -2135 -12 -41 -26 -86 -31 -100 -7 -21
-17 -62 -34 -140 -16 -77 -45 -237 -50 -285 -4 -33 -9 -69 -11 -80 -10 -54
-18 -205 -19 -340 0 -143 2 -153 27 -208 49 -104 122 -171 223 -206 59 -20 77
-20 1464 -21 773 0 1407 -2 1409 -5 6 -6 9 -1803 3 -1829 -3 -14 -108 87 -445
427 -243 245 -459 456 -482 470 -124 76 -296 68 -412 -19 -117 -89 -168 -229
-136 -381 19 -93 54 -144 215 -308 81 -82 196 -200 256 -261 146 -151 936
-954 1045 -1064 121 -121 210 -161 347 -156 62 2 85 8 126 31 28 15 61 34 75
41 14 8 121 111 239 231 117 120 398 406 625 637 760 773 708 716 741 809 37
102 30 199 -22 304 -109 220 -403 265 -584 89 -42 -41 -491 -501 -734 -752
-63 -65 -115 -112 -116 -104 -4 64 0 1822 5 1827 3 3 628 6 1388 5 948 -1
1400 2 1438 10 117 22 210 96 264 208 l31 65 -1 180 c0 155 -5 230 -29 412 -2
17 -9 60 -16 95 -6 35 -13 76 -16 92 -2 16 -20 90 -38 165 -116 472 -343 932
-654 1326 -30 39 -60 75 -66 82 -360 404 -677 654 -1112 874 -286 145 -636
262 -943 315 -101 17 -103 18 -195 29 -33 3 -71 9 -85 12 -31 5 -555 14 -561
9z m427 -760 c530 -39 1049 -239 1486 -573 123 -94 359 -324 459 -448 293
-362 512 -854 574 -1287 l7 -48 -853 -1 c-470 0 -1700 -1 -2734 -1 l-1880 -1
1 34 c0 30 7 76 18 134 14 72 62 240 95 336 203 595 612 1105 1163 1450 178
112 434 227 638 288 58 17 119 36 135 41 25 7 104 24 214 45 13 2 49 7 80 11
31 3 59 8 62 10 3 1 55 6 115 10 60 3 110 7 111 8 4 3 231 -2 309 -8z"/>
<g
id="layer1">
<path
id="cloud-upload"
d="m 63.999948,34.285731 a 17.033293,17.033293 0 0 1 -4.406235,11.428568 14.856655,14.856655 0 0 1 -10.55805,4.571428 h -2.178561 v -6.857139 h 2.178561 A 8.0044292,8.0044292 0 0 0 54.504416,41.118327 10.183788,10.183788 0 0 0 57.14281,34.285731 11.442004,11.442004 0 0 0 45.714251,22.857173 c -0.37683,0 -2.312648,0.241803 -3.490288,0.393502 A 1.1359993,1.1359993 0 0 1 41.00286,22.487082 L 40.537483,21.129528 A 14.102711,14.102711 0 0 0 28.821257,11.497829 13.665957,13.665957 0 0 0 14.091416,28.276812 l 0.488099,2.087681 a 1.1428564,1.1428564 0 0 1 -0.782255,1.354176 l -2.053987,0.62062 a 6.7940986,6.7940986 0 0 0 -4.8860757,6.517846 4.6043628,4.6043628 0 0 0 0.9464197,2.808045 5.5388308,5.5388308 0 0 0 4.089282,1.763384 h 5.250006 v 6.857137 H 11.892899 A 12.235604,12.235604 0 0 1 2.2121047,45.633903 11.506439,11.506439 0 0 1 5.8514086e-5,38.857135 13.5727,13.5727 0 0 1 6.9442617,26.97321 C 6.8863778,26.359414 6.8571876,25.747771 6.8571876,25.142857 A 20.563484,20.563484 0 0 1 45.843766,16.000009 18.306983,18.306983 0 0 1 64,34.285707 Z M 32.923239,32.122512 a 1.1428564,1.1428564 0 0 0 -1.846543,0 l -8.591651,11.775239 a 1.1428564,1.1428564 0 0 0 0.923268,1.816548 h 5.163091 v 12.571418 a 1.1428564,1.1428564 0 0 0 1.14285,1.142858 h 4.571428 a 1.1428564,1.1428564 0 0 0 1.142859,-1.142858 V 45.714299 h 5.163084 a 1.1428564,1.1428564 0 0 0 0.923265,-1.816548 z"
style="stroke-width:2.28572;fill:#000000;fill-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

View file

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="8px" height="6px" viewBox="0 0 8 6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 53 (72520) - https://sketchapp.com -->
<title>37845F0A-2932-4C2D-98E1-89BE1B168092</title>
<desc>Created with sketchtool.</desc>
<defs>
<path d="M6,8.48771202 C5.73480519,8.48765538 5.48049273,8.3822614 5.293,8.19471202 L2.293,5.19471202 C1.91402779,4.80233313 1.91944763,4.17862724 2.30518142,3.79289345 C2.69091522,3.40715965 3.31462111,3.40173981 3.707,3.78071202 L6,6.07371202 L8.293,3.78071202 C8.68537889,3.40173981 9.30908478,3.40715965 9.69481858,3.79289345 C10.0805524,4.17862724 10.0859722,4.80233313 9.707,5.19471202 L6.707,8.19471202 C6.51950727,8.3822614 6.26519481,8.48765538 6,8.48771202 Z" id="path-1"></path>
</defs>
@ -14,7 +11,7 @@
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<use id="Shape" fill="#0C0C0D" fill-rule="nonzero" opacity="0.599283854" xlink:href="#path-1"></use>
<use id="Shape" fill="#b1b1b3" fill-rule="nonzero" opacity="0.599283854" xlink:href="#path-1"></use>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

@ -1,4 +1,5 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M18 9a3 3 0 1 0-2.977-2.63l-6.94 3.47a3 3 0 1 0 0 4.319l6.94 3.47a3 3 0 1 0 .895-1.789l-6.94-3.47a3.03 3.03 0 0 0 0-.74l6.94-3.47C16.456 8.68 17.19 9 18 9z" fill="#0060df" fill-opacity=".8"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="icon" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M18 9a3 3 0 1 0-2.977-2.63l-6.94 3.47a3 3 0 1 0 0 4.319l6.94 3.47a3 3 0 1 0 .895-1.789l-6.94-3.47a3.03 3.03 0 0 0 0-.74l6.94-3.47C16.456 8.68 17.19 9 18 9z" fill="currentColor"></path></symbol></svg>

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 539 B

Before After
Before After

View file

@ -0,0 +1,65 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 750 750">
<path fill="url(#a)" d="m 314.805,154.949 h 0.06 c 22.04,-77.0499 118.08,-114.6599 215.95,-114.6599 67.63,0 128.341,21.41 169.961,55.4 -24.838,1.1712 -49.362,6.0449 -72.76,14.4599 33.63,12.5 62.519,31.73 83.929,55.52 -16.153,-2.78 -32.532,-4.019 -48.919,-3.7 40.276,58.343 61.794,127.585 61.68,198.48 0,193.3 -156.701,350 -350.001,350 -190.32,0 -349.9999,-159.35 -349.9999,-350 0,-30.11 4,-61.2 11.77,-90.36 2.04,-6.12 4.88,-11.99 8.65,-14.14 4.72,-2.69 9.02,5.33 9.71,7.94 5.1177,19.17 12.0039,37.823 20.57,55.72 -0.75,-39.96 16.32,-76.36 39.7999,-107.84 15.66,-20.99 30.18,-40.44 36.88,-96.57 0.45,-3.77 4.02,-6.48 7.63,-5.3 50.96,16.68 78.2,101.54 73.97,172.5 28.15,4.03 28.02,-25.38 28.02,-25.38 -9,-27.66 -3,-79.07 53,-102.07 z"/>
<path fill="url(#b)" d="m 713.254,271.32 c 8.51,192.5 -149.74,358.47 -342.71,358.47 -180.65,0 -328.6792,-139.63 -342.0692,-316.85 -2.3889,16.596 -3.6452,33.334 -3.76,50.1 1.37,189.62 160.6592,347.41 349.9992,347.41 193.3,0 350,-156.7 350,-350 0,-30.8 -3.99,-60.67 -11.46,-89.13 z" opacity="0.9"/>
<path fill="url(#c)" d="m 366.175,180.459 c -3.77,-6.67 -21.18,-16.54 -28.79,-18.26 28.8,-92.2499 175.521,-120.5699 265.321,-104.2499 37.37,6.8 83.91,27.16 98.07,37.74 -41.62,-33.99 -102.341,-55.4 -169.961,-55.4 -97.87,0 -193.91,37.61 -215.95,114.6599 h -0.16 c -56,23 -62,74.43 -53,102.08 8.64,-32.99 49.75,-73.53 104.47,-76.57 z" style="mix-blend-mode:screen"/>
<path fill="url(#d)" d="m 467.885,116.748 c -78.62,15.47 -104.31,20.53 -130.62,45.54 29.55,-78.2297 104.98,-94.0897 194.86,-58.43 -21.391,4.41 -42.805,8.71 -64.24,12.9 z"/>
<path fill="url(#e)" d="m 43.7049,259.38 c -21.48,87.94 -4.88,191.3 92.6991,278.04 -29.05,-31.77 -64.5191,-149.07 13.75,-232.87 5.27,-5.65 14.34,-1.5 14.63,6.22 6.45,174.16 146.98,280.53 309,260.64 -50.2,-2.82 -216.22,-60.97 -92.72,-83.97 64.55,-12.03 165.76,-30.88 165.76,-121.7 0,-147.22 -113.83,-190.26 -182.86,-183.86 -47.24,4.38 -89.29,34.36 -102.23,75.13 4.97,16.07 -14.84,27.32 -28.05,25.43 4.24,-70.95 -23,-155.86 -73.97,-172.54 -3.6,-1.18 -7.18,1.53 -7.63,5.3 -6.7,56.13 -21.22,75.58 -36.87,96.57 -23.4891,31.49 -40.5591,67.88 -39.8091,107.84 -8.5659,-17.897 -15.4521,-36.55 -20.57,-55.72 -0.57,-2.16 -3.7,-8.19 -7.48,-8.47 -2.05,-0.15 -3.14,1.85 -3.65,3.96 z"/>
<path fill="url(#f)" d="m 337.695,496.349 c 95.04,77.17 286.17,19.31 286.17,-168.32 -77.16,116.96 -175.44,197.64 -286.16,168.32 z" style="mix-blend-mode:screen"/>
<path fill="url(#g)" d="m 150.155,304.55 c 0.864,-0.967 1.953,-1.706 3.17,-2.153 1.217,-0.446 2.526,-0.586 3.81,-0.407 -70.0595,85.45 -13.549,235.52 25.231,272.39 2.17,6.14 -36.791,-25.79 -42.161,-33.26 -29.5,-25.03 -71.7795,-149.06 9.95,-236.57 z" style="mix-blend-mode:screen"/>
<path fill="url(#h)" d="m 374.705,503.419 c 95.06,0 172.13,-62.879 172.13,-140.449 0,-77.57 -77.07,-140.45 -172.13,-140.45 -81.1,0 -172.17,52.76 -172.13,142.5 0.04,138.67 146.54,218.45 271.42,206.37 -9.38,-1.09 -67.9,-4.2 -107.45,-48.94 -3.57,-4.03 -9.76,-11.07 -6.95,-15.64 2.8,-4.57 10.52,-3.4 15.1,-3.4 z"/>
<path fill="#fff" d="m 528.085,299.15 -136.04,130.18 c -12.07,8.58 -24.92,9.2 -37.6,1.42 L 221.015,299.63 c 3.807,-6.118 8.087,-11.929 12.8,-17.38 l 14,13.1 c 35.04,32.84 63.37,59.37 103.3,93.45 18.02,15.38 23.62,15.08 41.3,0 45.68,-39 79.09,-68.5 122.52,-107.29 4.841,5.526 9.235,11.428 13.14,17.65 z" opacity="0.6"/>
<mask id="i" width="345" height="276" x="202" y="297" maskUnits="userSpaceOnUse">
<path fill="#fff" d="m 546.835,362.969 c 0,77.57 -77.07,140.45 -172.13,140.45 -4.59,0 -12.3,-1.18 -15.11,3.4 -2.81,4.56 3.38,11.6 6.95,15.63 37.16,42.04 91.07,47.33 105.22,48.72 l 2.23,0.22 c -124.88,12.08 -271.38,-67.7 -271.42,-206.37 -0.131,-23.089 6.295,-45.74 18.53,-65.32 l 134.08,121.78 c 9.54,8.66 25.61,8.66 35.15,0 l 136.62,-124.09 c 12.7,19.58 19.88,41.9 19.88,65.58 z"/>
</mask>
<g mask="url(#i)">
<path fill="url(#j)" d="m 162.705,200.979 h 435.07 v 394.47 h -435.07 z" opacity="0.7"/>
<g filter="url(#k)">
<path fill="#458fcd" fill-rule="evenodd" d="m 334.745,422.298 c -25.35,-26.38 -101.27,-114.03 -101.27,-114.03 l 5.87,0.26 118.86,88.77 c 8.9,6.47 21.6,6.4 30.42,-0.15 l 116.55,-88.5 6.18,-0.49 c 0,0 -73.44,85.57 -101.57,113.76 -28.13,28.19 -49.69,26.76 -75.04,0.38 z" clip-rule="evenodd"/>
</g>
</g>
<path fill="#fff" d="m 398.855,152.258 c 18.42,-5.8 16.8,-24.03 16.8,-24.03 0,0 -9.21,-10.85 -27.46,-4.84 -17.08,5.63 -19.73,17.8 -19.73,17.8 0,0 9.33,17.7 30.39,11.07 z"/>
<defs>
<linearGradient id="a" x1="146.185" x2="639.58502" y1="155.649" y2="615.86902" gradientUnits="userSpaceOnUse">
<stop stop-color="#1B91F3"/>
<stop offset="1" stop-color="#0B68CB"/>
</linearGradient>
<linearGradient id="d" x1="283.47501" x2="461.01501" y1="273.45801" y2="75.818298" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F5DB0"/>
<stop offset="1" stop-color="#0F5DB0" stop-opacity="0"/>
</linearGradient>
<linearGradient id="f" x1="594.625" x2="512.07501" y1="416.55899" y2="619.24902" gradientUnits="userSpaceOnUse">
<stop stop-color="#E247C4" stop-opacity="0"/>
<stop offset="1" stop-color="#E247C4" stop-opacity="0.64"/>
</linearGradient>
<linearGradient id="g" x1="82.7155" x2="155.44501" y1="234.78999" y2="527.51001" gradientUnits="userSpaceOnUse">
<stop offset="0.1" stop-color="#EF3ACC"/>
<stop offset="1" stop-color="#EF3ACC" stop-opacity="0"/>
</linearGradient>
<linearGradient id="h" x1="374.70499" x2="374.70499" y1="273.95001" y2="569.94897" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff"/>
<stop offset="0.91" stop-color="#BEE1FE"/>
<stop offset="1" stop-color="#96CEFD"/>
</linearGradient>
<linearGradient id="j" x1="380.245" x2="380.245" y1="441.44901" y2="565.44897" gradientUnits="userSpaceOnUse">
<stop stop-color="#BCE0FD"/>
<stop offset="1" stop-color="#88CCFC"/>
</linearGradient>
<radialGradient id="b" cx="0" cy="0" r="1" gradientTransform="matrix(117.92992,271.44954,-260.03887,112.97261,145.274,314)" gradientUnits="userSpaceOnUse">
<stop offset="0.53" stop-color="#0B4186" stop-opacity="0"/>
<stop offset="1" stop-color="#0B4186" stop-opacity="0.45"/>
</radialGradient>
<radialGradient id="c" cx="0" cy="0" r="1" gradientTransform="matrix(-38.950414,-49.859637,82.506525,-64.454205,383.705,192.449)" gradientUnits="userSpaceOnUse">
<stop stop-color="#EF3ACC" stop-opacity="0"/>
<stop offset="1" stop-color="#EF3ACC" stop-opacity="0.64"/>
</radialGradient>
<radialGradient id="e" cx="0" cy="0" r="1" gradientTransform="matrix(200.50032,-415.91019,513.77136,247.67684,242.704,551.15)" gradientUnits="userSpaceOnUse">
<stop offset="0.02" stop-color="#094188"/>
<stop offset="0.97" stop-color="#0B4186" stop-opacity="0"/>
</radialGradient>
<filter id="k" width="341.88" height="198.416" x="201.47501" y="276.15799" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur result="effect1_foregroundBlur_106_1002" stdDeviation="16"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

6
assets/wordmark.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="logo">
<path d="m 105.17,33.27 c -1.04895,-0.638175 -2.18377,-1.123082 -3.37,-1.44 -1.25,-0.34 -2.46,-0.63 -3.63,-0.88 l -3.08,-0.7 C 94.22073,30.069182 93.37751,29.78027 92.58,29.39 91.90449,29.074134 91.31719,28.596738 90.87,28 c -0.43741,-0.644047 -0.65489,-1.412243 -0.62,-2.19 -0.0406,-1.405196 0.53693,-2.75754 1.58,-3.7 1.06,-1 2.73,-1.44 5,-1.44 1.76437,-0.07198 3.51559,0.332147 5.07,1.17 1.35935,0.80694 2.51833,1.911219 3.39,3.23 l 2.79,-2.18 c -1.26761,-1.5933 -2.84201,-2.916072 -4.63,-3.89 -2.04373,-1.017745 -4.30804,-1.512526 -6.59,-1.44 -1.40785,-0.02195 -2.80876,0.201387 -4.14,0.66 -1.16063,0.399115 -2.24085,1.001871 -3.19,1.78 -0.8713,0.712445 -1.5718,1.611145 -2.05,2.63 -0.4819,1.011666 -0.72807,2.119452 -0.72,3.24 -0.05,1.231532 0.24064,2.452997 0.84,3.53 0.55827,0.895068 1.31002,1.653654 2.2,2.22 0.94422,0.612326 1.97599,1.077636 3.06,1.38 1.13,0.32 2.29,0.6 3.47,0.84 l 3.26,0.74 c 0.96945,0.22193 1.90929,0.557589 2.8,1 0.77256,0.367753 1.45522,0.900225 2,1.56 0.51019,0.701297 0.77072,1.553301 0.74,2.42 0.0438,1.566414 -0.62122,3.069031 -1.81,4.09 -1.52512,1.147855 -3.41702,1.699065 -5.32,1.55 -4.03416,0.15747 -7.83041,-1.90763 -9.89,-5.38 l -3,2.34 c 1.3876,1.880136 3.1735,3.430427 5.23,4.54 2.3855,1.197767 5.03194,1.782045 7.7,1.7 1.49114,0.02151 2.97422,-0.222285 4.38,-0.72 1.21788,-0.44929 2.33816,-1.128248 3.3,-2 0.88604,-0.797749 1.60053,-1.767412 2.1,-2.85 0.48895,-1.06318 0.74142,-2.219779 0.74,-3.39 0.0397,-1.336553 -0.30755,-2.656119 -1,-3.8 -0.62101,-0.95962 -1.44763,-1.769154 -2.42,-2.37 z m 27.51,-4.72 c -1.0207,-1.016684 -2.23916,-1.813109 -3.58,-2.34 -1.42831,-0.567565 -2.95311,-0.852828 -4.49,-0.84 -1.58532,-0.01887 -3.15769,0.287432 -4.62,0.9 -1.3691,0.572827 -2.61257,1.408599 -3.66,2.46 -2.1451,2.217513 -3.33989,5.184759 -3.33,8.27 -0.0138,1.54162 0.26439,3.071916 0.82,4.51 0.5255,1.363982 1.32922,2.603618 2.36,3.64 1.06096,1.043663 2.31862,1.866239 3.7,2.42 1.53222,0.610739 3.17082,0.909903 4.82,0.88 2.13421,0.08534 4.25095,-0.416179 6.12,-1.45 1.69947,-1.049265 3.13073,-2.480527 4.18,-4.18 l -2.88,-1.69 c -1.41279,2.768876 -4.32635,4.443291 -7.43,4.27 -1.09666,0.02103 -2.18793,-0.158593 -3.22,-0.53 -0.93382,-0.341463 -1.79784,-0.849713 -2.55,-1.5 -0.72694,-0.645531 -1.33013,-1.418157 -1.78,-2.28 -0.47812,-0.903522 -0.77374,-1.892313 -0.87,-2.91 h 19.59 v -1.52 c 0.0166,-1.555338 -0.27566,-3.098506 -0.86,-4.54 -0.54053,-1.333176 -1.33916,-2.54641 -2.35,-3.57 z m -16.28,6.67 c 0.18109,-0.958759 0.51895,-1.881119 1,-2.73 0.47186,-0.820757 1.07675,-1.557447 1.79,-2.18 0.72195,-0.61779 1.5482,-1.102022 2.44,-1.43 0.95944,-0.356614 1.97651,-0.532906 3,-0.52 4.04346,-0.224227 7.5255,2.82256 7.84,6.86 z M 158.82,28 c -0.83726,-0.883328 -1.8626,-1.566885 -3,-2 -1.25447,-0.462049 -2.58329,-0.689169 -3.92,-0.67 -1.60057,-0.03131 -3.18086,0.362037 -4.58,1.14 -1.28188,0.720594 -2.36173,1.752297 -3.14,3 v -3.65 h -3.29 V 48 h 3.37 V 35.67 c -0.0102,-1.001391 0.16968,-1.995625 0.53,-2.93 0.3373,-0.856524 0.84023,-1.638106 1.48,-2.3 0.62704,-0.649648 1.38331,-1.160636 2.22,-1.5 0.87089,-0.363534 1.8063,-0.547214 2.75,-0.54 1.87023,-0.128793 3.70135,0.578019 5,1.93 1.22147,1.441484 1.85048,3.292756 1.76,5.18 V 48 h 3.41 V 35.34 c 0.0211,-1.424123 -0.20214,-2.84132 -0.66,-4.19 -0.40985,-1.176324 -1.06809,-2.250653 -1.93,-3.15 z m 27,-12.42 v 14.1 c -0.43264,-0.685249 -0.96517,-1.302051 -1.58,-1.83 -0.60967,-0.53196 -1.28117,-0.98858 -2,-1.36 -0.73088,-0.369676 -1.5029,-0.651634 -2.3,-0.84 -0.78611,-0.187908 -1.59174,-0.281898 -2.4,-0.28 -1.50724,-0.0078 -3.00162,0.277523 -4.4,0.84 -1.34071,0.551089 -2.56038,1.35967 -3.59,2.38 -1.03697,1.047216 -1.85907,2.287165 -2.42,3.65 -1.17023,2.996466 -1.17023,6.323534 0,9.32 0.55964,1.361695 1.37424,2.603955 2.4,3.66 1.02081,1.031107 2.2428,1.841226 3.59,2.38 1.40561,0.561607 2.90636,0.846817 4.42,0.84 0.80981,-0.0026 1.6161,-0.106786 2.4,-0.31 0.79636,-0.199929 1.56783,-0.488392 2.3,-0.86 0.72123,-0.371416 1.39312,-0.831661 2,-1.37 0.61025,-0.540083 1.14205,-1.162767 1.58,-1.85 v 4 h 3.33 V 15.59 Z m -0.37,24.58 c -1.76276,4.229524 -6.6195,6.23041 -10.85,4.47 v 0 c -0.97862,-0.401365 -1.86378,-1.000551 -2.6,-1.76 -0.7522,-0.76312 -1.34086,-1.671634 -1.73,-2.67 -0.41974,-1.066531 -0.63023,-2.203893 -0.62,-3.35 -0.0103,-1.129892 0.20027,-2.250911 0.62,-3.3 0.39328,-0.993283 0.98151,-1.897738 1.73,-2.66 0.74207,-0.76001 1.62521,-1.368023 2.6,-1.79 2.07874,-0.890012 4.43126,-0.890012 6.51,0 0.98149,0.434716 1.87338,1.048526 2.63,1.81 0.74927,0.763509 1.33458,1.672102 1.72,2.67 0.41464,1.036611 0.62516,2.14355 0.62,3.26 -1.3e-4,1.141508 -0.22084,2.272237 -0.65,3.33 z" fill="currentColor"/>
</symbol>
<use xlink:href="#logo"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

284
assets_src/completed.svg Normal file
View file

@ -0,0 +1,284 @@
<?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="336px"
height="210px"
viewBox="0 0 336 210"
version="1.1"
id="svg117"
sodipodi:docname="completed.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata121">
<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>CC310D7B-7EC7-4AEF-90E5-10044C2FA0F1</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="1920"
inkscape:window-height="1048"
id="namedview119"
showgrid="false"
inkscape:zoom="2.4075302"
inkscape:cx="148.92273"
inkscape:cy="105.20232"
inkscape:window-x="1920"
inkscape:window-y="32"
inkscape:window-maximized="0"
inkscape:current-layer="firefox-send_illustrations-03" />
<!-- Generator: sketchtool 53.1 (72631) - https://sketchapp.com -->
<title
id="title2">CC310D7B-7EC7-4AEF-90E5-10044C2FA0F1</title>
<desc
id="desc4">Created with sketchtool.</desc>
<defs
id="defs42">
<linearGradient
x1="-28.184294%"
y1="-47.2118902%"
x2="84.470028%"
y2="96.7133243%"
id="linearGradient-1">
<stop
stop-color="#FA357F"
offset="0%"
id="stop6" />
<stop
stop-color="#7878FF"
offset="99.91%"
id="stop8" />
</linearGradient>
<linearGradient
x1="20.1958296%"
y1="50.3861311%"
x2="169.064414%"
y2="48.680104%"
id="linearGradient-2">
<stop
stop-color="#FFF361"
offset="0%"
id="stop11" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop13" />
</linearGradient>
<linearGradient
x1="7.13940616%"
y1="-13.3627152%"
x2="84.3212705%"
y2="120.017199%"
id="linearGradient-3">
<stop
stop-color="#FF5162"
offset="0%"
id="stop16" />
<stop
stop-color="#83219D"
offset="100%"
id="stop18" />
</linearGradient>
<linearGradient
x1="50.0466667%"
y1="98.7466885%"
x2="50.0466667%"
y2="63.9770799%"
id="linearGradient-4">
<stop
stop-color="#008787"
offset="0.4302823%"
id="stop21" />
<stop
stop-color="#005E5E"
offset="99.91%"
id="stop23" />
</linearGradient>
<linearGradient
x1="34.0866057%"
y1="25.5581764%"
x2="59.4765337%"
y2="63.0992243%"
id="linearGradient-5">
<stop
stop-color="#FFD943"
offset="0%"
id="stop26" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop28" />
</linearGradient>
<linearGradient
x1="21.6627829%"
y1="-7.19090722%"
x2="65.1350317%"
y2="106.40324%"
id="linearGradient-6">
<stop
stop-color="#FF8748"
offset="0%"
id="stop31" />
<stop
stop-color="#FE7852"
offset="13.28%"
id="stop33" />
<stop
stop-color="#FC546A"
offset="50.49%"
id="stop35" />
<stop
stop-color="#FA3D79"
offset="80.73%"
id="stop37" />
<stop
stop-color="#FA357F"
offset="100%"
id="stop39" />
</linearGradient>
</defs>
<g
id="Page-1"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd">
<g
id="Send_Download-Completed"
transform="translate(-552.000000, -339.000000)"
fill-rule="nonzero">
<g
id="firefox-send_illustrations-03"
transform="translate(552.000000, 339.000000)">
<ellipse
id="Oval"
fill="#ededf0"
opacity="0.5"
cx="165.88687"
cy="168.0954"
rx="73.526253"
ry="11.563125" />
<g
id="Group"
transform="translate(0.000000, 39.375000)"
fill="#EDEDF0"
opacity="0.5">
<g
transform="translate(30.187500, 116.812500)"
id="g55">
<g
transform="translate(21.000000, 5.250000)"
id="Path">
<path
d="M1.575,3.255 L91.546875,3.255 C92.26875,3.255 92.859375,2.664375 92.859375,1.9425 C92.859375,1.220625 92.26875,0.63 91.546875,0.63 L1.575,0.63 C0.853125,0.63 0.2625,1.220625 0.2625,1.9425 C0.2625,2.664375 0.853125,3.255 1.575,3.255 Z"
id="path45" />
</g>
<g
transform="translate(76.125000, 0.000000)"
id="g50">
<path
d="M1.693125,1.8375 L24.268125,1.8375 C24.635625,1.8375 24.924375,1.54875 24.924375,1.18125 C24.924375,0.81375 24.635625,0.525 24.268125,0.525 L1.693125,0.525 C1.325625,0.525 1.036875,0.81375 1.036875,1.18125 C1.036875,1.54875 1.325625,1.8375 1.693125,1.8375 Z"
id="path48" />
</g>
<g
transform="translate(0.000000, 11.812500)"
id="Shape">
<path
d="M0.525,1.89 C0.525,1.5225 0.81375,1.23375 1.18125,1.23375 L5.11875,1.23375 C5.48625,1.23375 5.775,1.5225 5.775,1.89 C5.775,2.2575 5.48625,2.54625 5.11875,2.54625 L1.18125,2.54625 C0.81375,2.54625 0.525,2.2575 0.525,1.89 Z M14.9625,1.89 C14.9625,1.5225 15.25125,1.23375 15.61875,1.23375 L31.36875,1.23375 C31.73625,1.23375 32.025,1.5225 32.025,1.89 C32.025,2.2575 31.73625,2.54625 31.36875,2.54625 L15.61875,2.54625 C15.25125,2.54625 14.9625,2.2575 14.9625,1.89 Z M42.525,1.89 C42.525,1.5225 42.81375,1.23375 43.18125,1.23375 L44.49375,1.23375 C44.86125,1.23375 45.15,1.5225 45.15,1.89 C45.15,2.2575 44.86125,2.54625 44.49375,2.54625 L43.18125,2.54625 C42.81375,2.54625 42.525,2.2575 42.525,1.89 Z M49.0875,1.89 C49.0875,1.5225 49.37625,1.23375 49.74375,1.23375 L53.68125,1.23375 C54.04875,1.23375 54.3375,1.5225 54.3375,1.89 C54.3375,2.2575 54.04875,2.54625 53.68125,2.54625 L49.74375,2.54625 C49.37625,2.54625 49.0875,2.2575 49.0875,1.89 Z M63.525,1.89 C63.525,1.5225 63.81375,1.23375 64.18125,1.23375 L79.93125,1.23375 C80.29875,1.23375 80.5875,1.5225 80.5875,1.89 C80.5875,2.2575 80.29875,2.54625 79.93125,2.54625 L64.18125,2.54625 C63.81375,2.54625 63.525,2.2575 63.525,1.89 Z"
id="path52" />
</g>
</g>
<g
transform="translate(123.375000, 72.187500)"
id="g69">
<g
transform="translate(26.250000, 5.250000)"
id="g59">
<path
d="M1.771875,3.163125 L147.039375,3.163125 C147.76125,3.163125 148.351875,2.5725 148.351875,1.850625 C148.351875,1.12875 147.76125,0.538125 147.039375,0.538125 L1.771875,0.538125 C1.05,0.538125 0.459375,1.12875 0.459375,1.850625 C0.459375,2.5725 1.05,3.163125 1.771875,3.163125 Z"
id="path57" />
</g>
<g
transform="translate(45.937500, 0.000000)"
id="g63">
<path
d="M1.70625,1.850625 L38.14125,1.850625 C38.50875,1.850625 38.7975,1.561875 38.7975,1.194375 C38.7975,0.826875 38.50875,0.538125 38.14125,0.538125 L1.70625,0.538125 C1.33875,0.538125 1.05,0.826875 1.05,1.194375 C1.05,1.561875 1.351875,1.850625 1.70625,1.850625 Z"
id="path61" />
</g>
<g
transform="translate(0.000000, 11.812500)"
id="g67">
<path
d="M1.2075,1.666875 C1.2075,1.299375 1.49625,1.010625 1.86375,1.010625 L17.61375,1.010625 C17.98125,1.010625 18.27,1.299375 18.27,1.666875 C18.27,2.034375 17.98125,2.323125 17.61375,2.323125 L1.86375,2.323125 C1.49625,2.323125 1.2075,2.034375 1.2075,1.666875 Z M27.4575,1.666875 C27.4575,1.299375 27.74625,1.010625 28.11375,1.010625 L32.05125,1.010625 C32.41875,1.010625 32.7075,1.299375 32.7075,1.666875 C32.7075,2.034375 32.41875,2.323125 32.05125,2.323125 L28.11375,2.323125 C27.74625,2.323125 27.4575,2.034375 27.4575,1.666875 Z M36.645,1.666875 C36.645,1.299375 36.93375,1.010625 37.30125,1.010625 L38.61375,1.010625 C38.98125,1.010625 39.27,1.299375 39.27,1.666875 C39.27,2.034375 38.98125,2.323125 38.61375,2.323125 L37.30125,2.323125 C36.93375,2.323125 36.645,2.034375 36.645,1.666875 Z M49.77,1.666875 C49.77,1.299375 50.05875,1.010625 50.42625,1.010625 L66.17625,1.010625 C66.54375,1.010625 66.8325,1.299375 66.8325,1.666875 C66.8325,2.034375 66.54375,2.323125 66.17625,2.323125 L50.42625,2.323125 C50.05875,2.323125 49.77,2.034375 49.77,1.666875 Z M76.02,1.666875 C76.02,1.299375 76.30875,1.010625 76.67625,1.010625 L80.61375,1.010625 C80.98125,1.010625 81.27,1.299375 81.27,1.666875 C81.27,2.034375 80.98125,2.323125 80.61375,2.323125 L76.67625,2.323125 C76.30875,2.323125 76.02,2.034375 76.02,1.666875 Z M85.2075,1.666875 C85.2075,1.299375 85.49625,1.010625 85.86375,1.010625 L87.17625,1.010625 C87.54375,1.010625 87.8325,1.299375 87.8325,1.666875 C87.8325,2.034375 87.54375,2.323125 87.17625,2.323125 L85.86375,2.323125 C85.49625,2.323125 85.2075,2.034375 85.2075,1.666875 Z M98.3325,1.666875 C98.3325,1.299375 98.62125,1.010625 98.98875,1.010625 L114.73875,1.010625 C115.10625,1.010625 115.395,1.299375 115.395,1.666875 C115.395,2.034375 115.10625,2.323125 114.73875,2.323125 L98.98875,2.323125 C98.62125,2.323125 98.3325,2.034375 98.3325,1.666875 Z M124.5825,1.666875 C124.5825,1.299375 124.87125,1.010625 125.23875,1.010625 L129.17625,1.010625 C129.54375,1.010625 129.8325,1.299375 129.8325,1.666875 C129.8325,2.034375 129.54375,2.323125 129.17625,2.323125 L125.23875,2.323125 C124.87125,2.323125 124.5825,2.034375 124.5825,1.666875 Z M133.77,1.666875 C133.77,1.299375 134.05875,1.010625 134.42625,1.010625 L135.73875,1.010625 C136.10625,1.010625 136.395,1.299375 136.395,1.666875 C136.395,2.034375 136.10625,2.323125 135.73875,2.323125 L134.42625,2.323125 C134.05875,2.323125 133.77,2.034375 133.77,1.666875 Z M146.895,1.666875 C146.895,1.299375 147.18375,1.010625 147.55125,1.010625 L163.30125,1.010625 C163.66875,1.010625 163.9575,1.299375 163.9575,1.666875 C163.9575,2.034375 163.66875,2.323125 163.30125,2.323125 L147.55125,2.323125 C147.18375,2.323125 146.895,2.034375 146.895,1.666875 Z M173.145,1.666875 C173.145,1.299375 173.43375,1.010625 173.80125,1.010625 L177.73875,1.010625 C178.10625,1.010625 178.395,1.299375 178.395,1.666875 C178.395,2.034375 178.10625,2.323125 177.73875,2.323125 L173.80125,2.323125 C173.43375,2.323125 173.145,2.034375 173.145,1.666875 Z M182.3325,1.666875 C182.3325,1.299375 182.62125,1.010625 182.98875,1.010625 L184.30125,1.010625 C184.66875,1.010625 184.9575,1.299375 184.9575,1.666875 C184.9575,2.034375 184.66875,2.323125 184.30125,2.323125 L182.98875,2.323125 C182.62125,2.323125 182.3325,2.034375 182.3325,1.666875 Z M195.4575,1.666875 C195.4575,1.299375 195.74625,1.010625 196.11375,1.010625 L211.86375,1.010625 C212.23125,1.010625 212.52,1.299375 212.52,1.666875 C212.52,2.034375 212.23125,2.323125 211.86375,2.323125 L196.11375,2.323125 C195.74625,2.323125 195.4575,2.034375 195.4575,1.666875 Z"
id="path65" />
</g>
</g>
<g
id="g81">
<path
d="M2.139375,33.2325 L35.503125,33.2325 C35.503125,33.2325 25.06875,9.89625 47.22375,6.8775 C66.99,4.186875 74.799375,24.504375 74.799375,24.504375 C74.799375,24.504375 77.14875,12.78375 88.895625,15.028125 C100.485,17.233125 109.0425,35.88375 109.0425,35.88375 L138.10125,35.88375"
id="path71" />
<g
transform="translate(1.312500, 0.000000)"
id="g75">
<path
d="M137.36625,30.37125 L128.7825,30.37125 C128.349375,30.37125 128.008125,30.03 128.008125,29.596875 C128.008125,29.16375 128.349375,28.8225 128.7825,28.8225 L137.36625,28.8225 C137.799375,28.8225 138.140625,29.16375 138.140625,29.596875 C138.140625,30.03 137.799375,30.37125 137.36625,30.37125 Z M114.883125,30.37125 L113.334375,30.37125 C112.90125,30.37125 112.56,30.03 112.56,29.596875 C112.56,29.16375 112.90125,28.8225 113.334375,28.8225 L114.883125,28.8225 C115.31625,28.8225 115.6575,29.16375 115.6575,29.596875 C115.6575,30.03 115.303125,30.37125 114.883125,30.37125 Z M34.755,29.439375 L32.274375,29.439375 C31.84125,29.439375 31.5,29.098125 31.5,28.665 C31.5,28.231875 31.84125,27.890625 32.274375,27.890625 L33.613125,27.890625 C33.508125,27.615 33.39,27.27375 33.25875,26.893125 C33.1275,26.48625 33.3375,26.053125 33.744375,25.90875 C34.15125,25.7775 34.584375,25.9875 34.72875,26.394375 C35.135625,27.58875 35.46375,28.32375 35.46375,28.336875 C35.56875,28.573125 35.5425,28.84875 35.41125,29.071875 C35.266875,29.308125 35.0175,29.439375 34.755,29.439375 Z M19.92375,29.439375 L1.39125,29.439375 C0.958125,29.439375 0.616875,29.098125 0.616875,28.665 C0.616875,28.231875 0.958125,27.890625 1.39125,27.890625 L19.92375,27.890625 C20.356875,27.890625 20.698125,28.231875 20.698125,28.665 C20.698125,29.098125 20.34375,29.439375 19.92375,29.439375 Z M107.769375,29.360625 C107.49375,29.360625 107.23125,29.21625 107.1,28.966875 C106.60125,28.0875 105.7875,26.69625 104.698125,25.06875 C104.461875,24.714375 104.55375,24.22875 104.908125,23.9925 C105.2625,23.75625 105.748125,23.848125 105.984375,24.2025 C107.1,25.869375 107.94,27.3 108.451875,28.205625 C108.661875,28.573125 108.530625,29.045625 108.15,29.255625 C108.01875,29.32125 107.8875,29.360625 107.769375,29.360625 Z M32.55,21.42 C32.169375,21.42 31.84125,21.144375 31.78875,20.750625 C31.71,20.23875 31.6575,19.700625 31.618125,19.1625 C31.57875,18.7425 31.906875,18.361875 32.326875,18.335625 C32.773125,18.309375 33.1275,18.61125 33.15375,19.044375 C33.193125,19.55625 33.245625,20.055 33.324375,20.540625 C33.39,20.960625 33.088125,21.354375 32.668125,21.406875 C32.62875,21.42 32.589375,21.42 32.55,21.42 Z M72.778125,18.020625 C72.5025,18.020625 72.24,17.87625 72.095625,17.61375 C71.8725,17.206875 71.623125,16.760625 71.3475,16.30125 C71.124375,15.93375 71.2425,15.46125 71.61,15.238125 C71.9775,15.015 72.45,15.133125 72.673125,15.500625 C72.961875,15.98625 73.224375,16.445625 73.460625,16.87875 C73.6575,17.259375 73.52625,17.71875 73.145625,17.92875 C73.0275,17.994375 72.89625,18.020625 72.778125,18.020625 Z M97.295625,16.051875 C97.111875,16.051875 96.94125,15.98625 96.796875,15.868125 C93.84375,13.335 90.90375,11.773125 88.029375,11.221875 C85.2075,10.68375 82.71375,10.959375 80.64,12.0225 C80.259375,12.219375 79.8,12.061875 79.603125,11.694375 C79.40625,11.31375 79.550625,10.854375 79.93125,10.6575 C82.306875,9.42375 85.155,9.10875 88.318125,9.7125 C91.455,10.31625 94.644375,11.983125 97.8075,14.7 C98.135625,14.975625 98.161875,15.46125 97.88625,15.789375 C97.715625,15.96 97.505625,16.051875 97.295625,16.051875 Z M68.394375,11.668125 C68.184375,11.668125 67.96125,11.57625 67.816875,11.405625 C66.80625,10.2375 65.716875,9.174375 64.60125,8.2425 C64.273125,7.966875 64.23375,7.48125 64.509375,7.153125 C64.785,6.825 65.270625,6.785625 65.59875,7.06125 C66.78,8.045625 67.921875,9.174375 68.985,10.395 C69.260625,10.723125 69.234375,11.20875 68.90625,11.484375 C68.74875,11.6025 68.565,11.668125 68.394375,11.668125 Z M36.553125,7.16625 C36.343125,7.16625 36.133125,7.074375 35.975625,6.916875 C35.686875,6.601875 35.713125,6.11625 36.028125,5.8275 C38.495625,3.59625 41.97375,2.1525 46.370625,1.561875 C49.06125,1.194375 51.699375,1.23375 54.193125,1.666875 C54.613125,1.745625 54.88875,2.139375 54.823125,2.559375 C54.744375,2.979375 54.350625,3.268125 53.930625,3.189375 C51.594375,2.7825 49.11375,2.75625 46.580625,3.0975 C42.49875,3.661875 39.29625,4.96125 37.065,6.9825 C36.920625,7.100625 36.736875,7.16625 36.553125,7.16625 Z"
id="path73" />
</g>
<g
transform="translate(0.000000, 32.812500)"
id="g79">
<path
d="M139.636875,3.49125 L2.12625,3.49125 C1.273125,3.49125 0.5775,2.795625 0.5775,1.9425 C0.5775,1.089375 1.273125,0.39375 2.12625,0.39375 L139.636875,0.39375 C140.49,0.39375 141.185625,1.089375 141.185625,1.9425 C141.185625,2.795625 140.49,3.49125 139.636875,3.49125 Z"
id="path77" />
</g>
</g>
<g
transform="translate(217.875000, 1.312500)"
id="g93">
<path
d="M2.034375,19.359375 L20.65875,19.359375 C20.65875,19.359375 14.83125,6.339375 27.195,4.659375 C38.22,3.163125 42.590625,14.49 42.590625,14.49 C42.590625,14.49 43.903125,7.95375 50.465625,9.200625 C56.93625,10.434375 61.71375,20.8425 61.71375,20.8425 L77.923125,20.8425"
id="path83" />
<g
transform="translate(1.312500, 0.000000)"
id="g87">
<path
d="M19.884375,17.2725 L1.28625,17.2725 C0.853125,17.2725 0.511875,16.93125 0.511875,16.498125 C0.511875,16.065 0.853125,15.72375 1.28625,15.72375 L19.884375,15.72375 C20.3175,15.72375 20.65875,16.065 20.65875,16.498125 C20.65875,16.93125 20.3175,17.2725 19.884375,17.2725 Z M77.175,17.023125 L76.453125,17.023125 C76.02,17.023125 75.67875,16.681875 75.67875,16.24875 C75.67875,15.815625 76.02,15.474375 76.453125,15.474375 L77.175,15.474375 C77.608125,15.474375 77.949375,15.815625 77.949375,16.24875 C77.949375,16.681875 77.608125,17.023125 77.175,17.023125 Z M70.258125,17.023125 L65.611875,17.023125 C65.17875,17.023125 64.8375,16.681875 64.8375,16.24875 C64.8375,15.815625 65.17875,15.474375 65.611875,15.474375 L70.258125,15.474375 C70.69125,15.474375 71.0325,15.815625 71.0325,16.24875 C71.0325,16.681875 70.69125,17.023125 70.258125,17.023125 Z M41.855625,12.39 C41.540625,12.39 41.251875,12.18 41.13375,11.89125 L41.015625,11.615625 C40.858125,11.26125 40.989375,10.84125 41.3175,10.644375 C42.039375,8.47875 44.07375,5.394375 48.129375,5.394375 C48.680625,5.394375 49.27125,5.446875 49.875,5.565 C52.185,5.998125 54.508125,7.35 56.791875,9.555 C57.09375,9.856875 57.106875,10.3425 56.805,10.644375 C56.503125,10.959375 56.0175,10.959375 55.715625,10.6575 C53.655,8.6625 51.594375,7.455 49.58625,7.074375 C49.074375,6.9825 48.58875,6.93 48.129375,6.93 C43.666875,6.93 42.65625,11.563125 42.616875,11.76 C42.538125,12.140625 42.223125,12.39 41.855625,12.39 Z M20.29125,5.473125 C20.1075,5.473125 19.936875,5.4075 19.7925,5.289375 C19.464375,5.01375 19.425,4.528125 19.700625,4.2 C20.724375,2.9925 22.155,2.1 23.953125,1.535625 C24.36,1.404375 24.793125,1.640625 24.924375,2.0475 C25.055625,2.454375 24.819375,2.8875 24.4125,3.01875 C22.903125,3.49125 21.721875,4.22625 20.881875,5.1975 C20.7375,5.38125 20.514375,5.473125 20.29125,5.473125 Z M31.828125,2.874375 C31.7625,2.874375 31.696875,2.86125 31.618125,2.848125 C31.15875,2.73 30.68625,2.625 30.200625,2.559375 C29.780625,2.49375 29.47875,2.1 29.544375,1.68 C29.61,1.26 30.00375,0.984375 30.42375,1.02375 C30.975,1.1025 31.513125,1.220625 32.025,1.351875 C32.431875,1.47 32.68125,1.89 32.57625,2.296875 C32.484375,2.638125 32.169375,2.874375 31.828125,2.874375 Z"
id="path85" />
</g>
<g
transform="translate(0.000000, 18.375000)"
id="g91">
<path
d="M79.1175,4.095 L2.375625,4.095 C1.5225,4.095 0.826875,3.399375 0.826875,2.54625 C0.826875,1.693125 1.5225,0.9975 2.375625,0.9975 L79.1175,0.9975 C79.970625,0.9975 80.66625,1.693125 80.66625,2.54625 C80.66625,3.399375 79.970625,4.095 79.1175,4.095 Z"
id="path89" />
</g>
</g>
</g>
<path
id="cloud-check"
d="m 240.12048,110.31165 a 39.582604,39.582604 0 0 1 -10.23938,26.55813 33.935974,33.935974 0 0 1 -20.28366,10.27635 39.949372,39.949372 0 0 0 0.80301,-16.48404 16.944722,16.944722 0 0 0 7.65405,-4.47239 23.665469,23.665469 0 0 0 6.1311,-15.87805 26.589359,26.589359 0 0 0 -26.55812,-26.558123 c -0.87568,0 -5.3742,0.56186 -8.11085,0.91445 a 2.6398778,2.6398778 0 0 1 -2.83769,-1.77451 l -1.08155,-3.155106 A 32.772357,32.772357 0 0 0 158.37085,57.356128 31.757517,31.757517 0 0 0 124.14114,96.347867 l 1.13419,4.851433 a 2.6558127,2.6558127 0 0 1 -1.8179,3.14687 l -4.77313,1.44232 a 15.788381,15.788381 0 0 0 -11.35445,15.14642 10.699791,10.699791 0 0 0 2.19933,6.52543 12.871343,12.871343 0 0 0 9.50281,4.09782 h 7.25749 a 40.137987,40.137987 0 0 0 1.02966,15.93487 h -8.28715 A 28.433555,28.433555 0 0 1 96.535402,136.68302 26.739094,26.739094 0 0 1 91.39497,120.93491 31.54075,31.54075 0 0 1 107.53217,93.318597 c -0.13492,-1.42644 -0.20238,-2.84772 -0.20238,-4.25345 a 47.786197,47.786197 0 0 1 90.59848,-21.246498 42.542454,42.542454 0 0 1 42.19216,42.493001 z m -39.83719,26.55813 a 31.869752,31.869752 0 1 1 -31.86975,-31.86975 31.869752,31.869752 0 0 1 31.86975,31.86975 z m -15.15067,-11.86394 -2.71673,-2.01199 a 1.5763311,1.5763311 0 0 0 -2.00127,0.14182 l -16.73162,15.72576 -9.38033,-4.48657 a 1.7144864,1.7144864 0 0 0 -2.00221,0.5062 l -2.30275,2.94497 a 1.576756,1.576756 0 0 0 0.14182,2.00158 l 11.86234,11.8768 a 4.410933,4.410933 0 0 0 6.89242,-0.53116 l 16.51629,-24.2992 a 1.346922,1.346922 0 0 0 -0.27833,-1.86831 z"
style="fill:#45a1ff;fill-opacity:1;stroke-width:5.31163" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

284
assets_src/error.svg Normal file
View file

@ -0,0 +1,284 @@
<?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="356px"
height="210px"
viewBox="0 0 356 210"
version="1.1"
id="svg114"
sodipodi:docname="error.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata118">
<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>5A8EEB55-E89B-49C5-8493-6FC78CEDF580</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="1606"
inkscape:window-height="1038"
id="namedview116"
showgrid="false"
inkscape:zoom="2.298097"
inkscape:cx="165.36624"
inkscape:cy="104.49445"
inkscape:window-x="1924"
inkscape:window-y="36"
inkscape:window-maximized="0"
inkscape:current-layer="firefox-send_illustrations-02" />
<!-- Generator: sketchtool 53.1 (72631) - https://sketchapp.com -->
<title
id="title2">5A8EEB55-E89B-49C5-8493-6FC78CEDF580</title>
<desc
id="desc4">Created with sketchtool.</desc>
<defs
id="defs42">
<linearGradient
x1="58.3126473%"
y1="123.961053%"
x2="40.1375665%"
y2="-37.2724424%"
id="linearGradient-1">
<stop
stop-color="#0A5CC7"
offset="0.4302823%"
id="stop6" />
<stop
stop-color="#83219D"
offset="99.91%"
id="stop8" />
</linearGradient>
<linearGradient
x1="-28.1745341%"
y1="-47.2105072%"
x2="84.4799145%"
y2="96.7146446%"
id="linearGradient-2">
<stop
stop-color="#FA357F"
offset="0%"
id="stop11" />
<stop
stop-color="#7878FF"
offset="99.91%"
id="stop13" />
</linearGradient>
<linearGradient
x1="20.1896063%"
y1="50.397188%"
x2="169.058059%"
y2="48.6911625%"
id="linearGradient-3">
<stop
stop-color="#FFF361"
offset="0%"
id="stop16" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop18" />
</linearGradient>
<linearGradient
x1="7.14778295%"
y1="-13.3614253%"
x2="84.3296473%"
y2="120.018489%"
id="linearGradient-4">
<stop
stop-color="#FF5162"
offset="0%"
id="stop21" />
<stop
stop-color="#83219D"
offset="100%"
id="stop23" />
</linearGradient>
<linearGradient
x1="34.0837535%"
y1="25.5596147%"
x2="59.4736431%"
y2="63.1005055%"
id="linearGradient-5">
<stop
stop-color="#FFD943"
offset="0%"
id="stop26" />
<stop
stop-color="#FFA80A"
offset="100%"
id="stop28" />
</linearGradient>
<linearGradient
x1="21.6679292%"
y1="-7.19688832%"
x2="65.140178%"
y2="106.397259%"
id="linearGradient-6">
<stop
stop-color="#FF8748"
offset="0%"
id="stop31" />
<stop
stop-color="#FE7852"
offset="13.28%"
id="stop33" />
<stop
stop-color="#FC546A"
offset="50.49%"
id="stop35" />
<stop
stop-color="#FA3D79"
offset="80.73%"
id="stop37" />
<stop
stop-color="#FA357F"
offset="100%"
id="stop39" />
</linearGradient>
</defs>
<g
id="Page-1"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd">
<g
id="Send_Went_Wrong"
transform="translate(-542.000000, -304.000000)"
fill-rule="nonzero">
<g
id="firefox-send_illustrations-02"
transform="translate(541.986755, 304.000000)">
<g
id="Group"
transform="translate(0.000000, 41.721854)"
fill="#EDEDF0"
opacity="0.5">
<g
transform="translate(31.986755, 123.774834)"
id="g54">
<g
transform="translate(22.251656, 5.562914)"
id="Path">
<path
d="M1.71059603,3.36556291 L97.0450331,3.36556291 C97.8099338,3.36556291 98.4357616,2.7397351 98.4357616,1.97483444 C98.4357616,1.20993377 97.8099338,0.58410596 97.0450331,0.58410596 L1.71059603,0.58410596 C0.945695364,0.58410596 0.31986755,1.20993377 0.31986755,1.97483444 C0.31986755,2.7397351 0.945695364,3.36556291 1.71059603,3.36556291 Z"
id="path44" />
</g>
<g
transform="translate(80.662252, 0.000000)"
id="g49">
<path
d="M1.84966887,1.86357616 L25.7701987,1.86357616 C26.1596026,1.86357616 26.4655629,1.55761589 26.4655629,1.16821192 C26.4655629,0.778807947 26.1596026,0.472847682 25.7701987,0.472847682 L1.84966887,0.472847682 C1.4602649,0.472847682 1.15430464,0.778807947 1.15430464,1.16821192 C1.15430464,1.55761589 1.4602649,1.86357616 1.84966887,1.86357616 Z"
id="path47" />
</g>
<g
transform="translate(0.000000, 12.516556)"
id="Shape">
<path
d="M0.598013245,1.9192053 C0.598013245,1.52980132 0.90397351,1.22384106 1.29337748,1.22384106 L5.46556291,1.22384106 C5.85496689,1.22384106 6.16092715,1.52980132 6.16092715,1.9192053 C6.16092715,2.30860927 5.85496689,2.61456954 5.46556291,2.61456954 L1.29337748,2.61456954 C0.917880795,2.61456954 0.598013245,2.29470199 0.598013245,1.9192053 Z M15.8960265,1.9192053 C15.8960265,1.52980132 16.2019868,1.22384106 16.5913907,1.22384106 L33.2801325,1.22384106 C33.6695364,1.22384106 33.9754967,1.52980132 33.9754967,1.9192053 C33.9754967,2.30860927 33.6695364,2.61456954 33.2801325,2.61456954 L16.5913907,2.61456954 C16.215894,2.61456954 15.8960265,2.29470199 15.8960265,1.9192053 Z M45.1013245,1.9192053 C45.1013245,1.52980132 45.4072848,1.22384106 45.7966887,1.22384106 L47.1874172,1.22384106 C47.5768212,1.22384106 47.8827815,1.52980132 47.8827815,1.9192053 C47.8827815,2.30860927 47.5768212,2.61456954 47.1874172,2.61456954 L45.7966887,2.61456954 C45.4211921,2.61456954 45.1013245,2.29470199 45.1013245,1.9192053 Z M52.0549669,1.9192053 C52.0549669,1.52980132 52.3609272,1.22384106 52.7503311,1.22384106 L56.9225166,1.22384106 C57.3119205,1.22384106 57.6178808,1.52980132 57.6178808,1.9192053 C57.6178808,2.30860927 57.3119205,2.61456954 56.9225166,2.61456954 L52.7503311,2.61456954 C52.3748344,2.61456954 52.0549669,2.29470199 52.0549669,1.9192053 Z M67.3529801,1.9192053 C67.3529801,1.52980132 67.6589404,1.22384106 68.0483444,1.22384106 L84.7370861,1.22384106 C85.1264901,1.22384106 85.4324503,1.52980132 85.4324503,1.9192053 C85.4324503,2.30860927 85.1264901,2.61456954 84.7370861,2.61456954 L68.0483444,2.61456954 C67.6728477,2.61456954 67.3529801,2.29470199 67.3529801,1.9192053 Z"
id="path51" />
</g>
</g>
<g
transform="translate(130.728477, 76.490066)"
id="g68">
<g
transform="translate(27.814570, 5.562914)"
id="g58">
<path
d="M1.93311258,3.25430464 L155.85894,3.25430464 C156.623841,3.25430464 157.249669,2.62847682 157.249669,1.86357616 C157.249669,1.0986755 156.623841,0.472847682 155.85894,0.472847682 L1.93311258,0.472847682 C1.16821192,0.472847682 0.542384106,1.0986755 0.542384106,1.86357616 C0.542384106,2.62847682 1.15430464,3.25430464 1.93311258,3.25430464 Z"
id="path56" />
</g>
<g
transform="translate(48.675497, 0.000000)"
id="g62">
<path
d="M1.86357616,1.86357616 L40.4701987,1.86357616 C40.8596026,1.86357616 41.1655629,1.55761589 41.1655629,1.16821192 C41.1655629,0.778807947 40.8596026,0.472847682 40.4701987,0.472847682 L1.86357616,0.472847682 C1.47417219,0.472847682 1.16821192,0.778807947 1.16821192,1.16821192 C1.16821192,1.55761589 1.47417219,1.86357616 1.86357616,1.86357616 Z"
id="path60" />
</g>
<g
transform="translate(0.000000, 12.516556)"
id="g66">
<path
d="M1.32119205,1.68278146 C1.32119205,1.29337748 1.62715232,0.987417219 2.01655629,0.987417219 L18.705298,0.987417219 C19.094702,0.987417219 19.4006623,1.29337748 19.4006623,1.68278146 C19.4006623,2.07218543 19.094702,2.3781457 18.705298,2.3781457 L2.01655629,2.3781457 C1.6410596,2.3781457 1.32119205,2.07218543 1.32119205,1.68278146 Z M29.1357616,1.68278146 C29.1357616,1.29337748 29.4417219,0.987417219 29.8311258,0.987417219 L34.0033113,0.987417219 C34.3927152,0.987417219 34.6986755,1.29337748 34.6986755,1.68278146 C34.6986755,2.07218543 34.3927152,2.3781457 34.0033113,2.3781457 L29.8311258,2.3781457 C29.4556291,2.3781457 29.1357616,2.07218543 29.1357616,1.68278146 Z M38.8708609,1.68278146 C38.8708609,1.29337748 39.1768212,0.987417219 39.5662252,0.987417219 L40.9569536,0.987417219 C41.3463576,0.987417219 41.6523179,1.29337748 41.6523179,1.68278146 C41.6523179,2.07218543 41.3463576,2.3781457 40.9569536,2.3781457 L39.5662252,2.3781457 C39.1907285,2.3781457 38.8708609,2.07218543 38.8708609,1.68278146 Z M52.7781457,1.68278146 C52.7781457,1.29337748 53.084106,0.987417219 53.4735099,0.987417219 L70.1622517,0.987417219 C70.5516556,0.987417219 70.8576159,1.29337748 70.8576159,1.68278146 C70.8576159,2.07218543 70.5516556,2.3781457 70.1622517,2.3781457 L53.4735099,2.3781457 C53.0980132,2.3781457 52.7781457,2.07218543 52.7781457,1.68278146 Z M80.5927152,1.68278146 C80.5927152,1.29337748 80.8986755,0.987417219 81.2880795,0.987417219 L85.4602649,0.987417219 C85.8496689,0.987417219 86.1556291,1.29337748 86.1556291,1.68278146 C86.1556291,2.07218543 85.8496689,2.3781457 85.4602649,2.3781457 L81.2880795,2.3781457 C80.9125828,2.3781457 80.5927152,2.07218543 80.5927152,1.68278146 Z M90.3278146,1.68278146 C90.3278146,1.29337748 90.6337748,0.987417219 91.0231788,0.987417219 L92.4139073,0.987417219 C92.8033113,0.987417219 93.1092715,1.29337748 93.1092715,1.68278146 C93.1092715,2.07218543 92.8033113,2.3781457 92.4139073,2.3781457 L91.0231788,2.3781457 C90.6476821,2.3781457 90.3278146,2.07218543 90.3278146,1.68278146 Z M104.235099,1.68278146 C104.235099,1.29337748 104.54106,0.987417219 104.930464,0.987417219 L121.619205,0.987417219 C122.008609,0.987417219 122.31457,1.29337748 122.31457,1.68278146 C122.31457,2.07218543 122.008609,2.3781457 121.619205,2.3781457 L104.930464,2.3781457 C104.554967,2.3781457 104.235099,2.07218543 104.235099,1.68278146 Z M132.049669,1.68278146 C132.049669,1.29337748 132.355629,0.987417219 132.745033,0.987417219 L136.917219,0.987417219 C137.306623,0.987417219 137.612583,1.29337748 137.612583,1.68278146 C137.612583,2.07218543 137.306623,2.3781457 136.917219,2.3781457 L132.745033,2.3781457 C132.369536,2.3781457 132.049669,2.07218543 132.049669,1.68278146 Z M141.784768,1.68278146 C141.784768,1.29337748 142.090728,0.987417219 142.480132,0.987417219 L143.870861,0.987417219 C144.260265,0.987417219 144.566225,1.29337748 144.566225,1.68278146 C144.566225,2.07218543 144.260265,2.3781457 143.870861,2.3781457 L142.480132,2.3781457 C142.104636,2.3781457 141.784768,2.07218543 141.784768,1.68278146 Z M155.692053,1.68278146 C155.692053,1.29337748 155.998013,0.987417219 156.387417,0.987417219 L173.076159,0.987417219 C173.465563,0.987417219 173.771523,1.29337748 173.771523,1.68278146 C173.771523,2.07218543 173.465563,2.3781457 173.076159,2.3781457 L156.387417,2.3781457 C156.011921,2.3781457 155.692053,2.07218543 155.692053,1.68278146 Z M183.506623,1.68278146 C183.506623,1.29337748 183.812583,0.987417219 184.201987,0.987417219 L188.374172,0.987417219 C188.763576,0.987417219 189.069536,1.29337748 189.069536,1.68278146 C189.069536,2.07218543 188.763576,2.3781457 188.374172,2.3781457 L184.201987,2.3781457 C183.82649,2.3781457 183.506623,2.07218543 183.506623,1.68278146 Z M193.241722,1.68278146 C193.241722,1.29337748 193.547682,0.987417219 193.937086,0.987417219 L195.327815,0.987417219 C195.717219,0.987417219 196.023179,1.29337748 196.023179,1.68278146 C196.023179,2.07218543 195.717219,2.3781457 195.327815,2.3781457 L193.937086,2.3781457 C193.561589,2.3781457 193.241722,2.07218543 193.241722,1.68278146 Z M207.149007,1.68278146 C207.149007,1.29337748 207.454967,0.987417219 207.844371,0.987417219 L224.533113,0.987417219 C224.922517,0.987417219 225.228477,1.29337748 225.228477,1.68278146 C225.228477,2.07218543 224.922517,2.3781457 224.533113,2.3781457 L207.844371,2.3781457 C207.468874,2.3781457 207.149007,2.07218543 207.149007,1.68278146 Z"
id="path64" />
</g>
</g>
<g
id="g80">
<path
d="M2.30860927,35.1298013 L37.6609272,35.1298013 C37.6609272,35.1298013 26.6046358,10.402649 50.0801325,7.20397351 C71.0245033,4.35298013 79.2993377,25.881457 79.2993377,25.881457 C79.2993377,25.881457 81.7887417,13.4622517 94.2357616,15.8403974 C106.515894,18.1768212 115.583444,37.9390728 115.583444,37.9390728 L146.374172,37.9390728"
id="path70" />
<g
transform="translate(1.390728, 0.000000)"
id="g74">
<path
d="M145.609272,32.0980132 L136.513907,32.0980132 C136.054967,32.0980132 135.693377,31.7364238 135.693377,31.2774834 C135.693377,30.818543 136.054967,30.4569536 136.513907,30.4569536 L145.609272,30.4569536 C146.068212,30.4569536 146.429801,30.818543 146.429801,31.2774834 C146.429801,31.7364238 146.054305,32.0980132 145.609272,32.0980132 Z M121.772185,32.0980132 L120.131126,32.0980132 C119.672185,32.0980132 119.310596,31.7364238 119.310596,31.2774834 C119.310596,30.818543 119.672185,30.4569536 120.131126,30.4569536 L121.772185,30.4569536 C122.231126,30.4569536 122.592715,30.818543 122.592715,31.2774834 C122.592715,31.7364238 122.231126,32.0980132 121.772185,32.0980132 Z M36.8821192,31.110596 L34.2536424,31.110596 C33.794702,31.110596 33.4331126,30.7490066 33.4331126,30.2900662 C33.4331126,29.8311258 33.794702,29.4695364 34.2536424,29.4695364 L35.6721854,29.4695364 C35.5609272,29.1774834 35.4357616,28.815894 35.2966887,28.4125828 C35.1576159,27.981457 35.3801325,27.5225166 35.8112583,27.3695364 C36.2423841,27.2304636 36.7013245,27.4529801 36.8543046,27.884106 C37.2854305,29.1496689 37.6331126,29.9284768 37.6331126,29.9423841 C37.7443709,30.1927152 37.7165563,30.4847682 37.5774834,30.7211921 C37.410596,30.9715232 37.1602649,31.110596 36.8821192,31.110596 Z M21.1529801,31.110596 L1.52980132,31.110596 C1.07086093,31.110596 0.709271523,30.7490066 0.709271523,30.2900662 C0.709271523,29.8311258 1.07086093,29.4695364 1.52980132,29.4695364 L21.1668874,29.4695364 C21.6258278,29.4695364 21.9874172,29.8311258 21.9874172,30.2900662 C21.9735099,30.7350993 21.6119205,31.110596 21.1529801,31.110596 Z M114.234437,31.013245 C113.942384,31.013245 113.664238,30.8602649 113.525166,30.5960265 C112.996689,29.6642384 112.134437,28.1900662 110.980132,26.4655629 C110.729801,26.0900662 110.827152,25.5754967 111.202649,25.3251656 C111.578146,25.0748344 112.092715,25.1721854 112.343046,25.5476821 C113.525166,27.3139073 114.415232,28.8298013 114.957616,29.789404 C115.180132,30.1788079 115.04106,30.6794702 114.637748,30.9019868 C114.512583,30.9854305 114.37351,31.013245 114.234437,31.013245 Z M34.5456954,22.613245 C34.1423841,22.613245 33.794702,22.3211921 33.7390728,21.9039735 C33.6556291,21.3615894 33.6,20.7913907 33.5582781,20.2211921 C33.5165563,19.7761589 33.8642384,19.3728477 34.3092715,19.3450331 C34.7821192,19.3172185 35.1576159,19.6370861 35.1854305,20.0960265 C35.2271523,20.6384106 35.2827815,21.1668874 35.3662252,21.681457 C35.4357616,22.1264901 35.115894,22.5437086 34.6708609,22.5993377 C34.6152318,22.613245 34.5735099,22.613245 34.5456954,22.613245 Z M77.1576159,19.0112583 C76.8655629,19.0112583 76.5874172,18.8582781 76.4344371,18.5801325 C76.1980132,18.1490066 75.9337748,17.6761589 75.6417219,17.189404 C75.405298,16.8 75.5304636,16.2993377 75.9198675,16.0629139 C76.3092715,15.8264901 76.8099338,15.9516556 77.0463576,16.3410596 C77.3523179,16.8556291 77.6304636,17.3423841 77.8807947,17.8013245 C78.089404,18.2046358 77.9503311,18.6913907 77.5470199,18.9139073 C77.4218543,18.9695364 77.2966887,19.0112583 77.1576159,19.0112583 Z M103.136424,16.9112583 C102.941722,16.9112583 102.760927,16.8417219 102.607947,16.7165563 C99.4788079,14.0324503 96.3635762,12.3774834 93.3178808,11.7933775 C90.3278146,11.2231788 87.6854305,11.5152318 85.4880795,12.6417219 C85.0847682,12.8503311 84.5980132,12.6834437 84.389404,12.2940397 C84.1807947,11.8907285 84.3337748,11.4039735 84.7370861,11.1953642 C87.2543046,9.88807947 90.2721854,9.55430464 93.6238411,10.1940397 C96.9476821,10.8337748 100.327152,12.6 103.678808,15.4788079 C104.02649,15.7708609 104.054305,16.2854305 103.762252,16.6331126 C103.595364,16.8139073 103.372848,16.9112583 103.136424,16.9112583 Z M72.5125828,12.2801325 C72.2900662,12.2801325 72.0536424,12.1827815 71.9006623,12.0019868 C70.8298013,10.7642384 69.6754967,9.63774834 68.4933775,8.65033113 C68.1456954,8.35827815 68.1039735,7.84370861 68.3960265,7.49602649 C68.6880795,7.14834437 69.202649,7.10662252 69.5503311,7.3986755 C70.8019868,8.44172185 72.0119205,9.63774834 73.1384106,10.9311258 C73.4304636,11.2788079 73.402649,11.7933775 73.0549669,12.0854305 C72.9019868,12.210596 72.7072848,12.2801325 72.5125828,12.2801325 Z M38.7735099,7.50993377 C38.5509934,7.50993377 38.3284768,7.41258278 38.1615894,7.24569536 C37.8556291,6.91192053 37.8834437,6.39735099 38.2172185,6.09139073 C40.8317881,3.72715232 44.5172185,2.19735099 49.1761589,1.57152318 C52.0271523,1.18211921 54.8225166,1.22384106 57.4649007,1.68278146 C57.9099338,1.76622517 58.2019868,2.18344371 58.1324503,2.62847682 C58.0490066,3.07350993 57.6317881,3.3794702 57.186755,3.29602649 C54.7112583,2.86490066 52.0827815,2.83708609 49.3986755,3.1986755 C45.0735099,3.79668874 41.6801325,5.17350993 39.315894,7.31523179 C39.1629139,7.44039735 38.9682119,7.50993377 38.7735099,7.50993377 Z"
id="path72" />
</g>
<g
transform="translate(0.000000, 34.768212)"
id="g78">
<path
d="M148.015232,3.60198675 L2.30860927,3.60198675 C1.40463576,3.60198675 0.667549669,2.86490066 0.667549669,1.96092715 C0.667549669,1.05695364 1.40463576,0.31986755 2.30860927,0.31986755 L148.015232,0.31986755 C148.919205,0.31986755 149.656291,1.05695364 149.656291,1.96092715 C149.642384,2.87880795 148.919205,3.60198675 148.015232,3.60198675 Z"
id="path76" />
</g>
</g>
<g
transform="translate(230.860927, 1.390728)"
id="g92">
<path
d="M2.21125828,20.415894 L21.9456954,20.415894 C21.9456954,20.415894 15.7708609,6.61986755 28.8715232,4.8397351 C40.5536424,3.25430464 45.1847682,15.2562914 45.1847682,15.2562914 C45.1847682,15.2562914 46.5754967,8.33046358 53.5291391,9.65165563 C60.3854305,10.9589404 65.4476821,21.9874172 65.4476821,21.9874172 L82.6231788,21.9874172"
id="path82" />
<g
transform="translate(1.390728, 0.000000)"
id="g86">
<path
d="M21.1251656,18.2046358 L1.41854305,18.2046358 C0.959602649,18.2046358 0.598013245,17.8430464 0.598013245,17.384106 C0.598013245,16.9251656 0.959602649,16.5635762 1.41854305,16.5635762 L21.1251656,16.5635762 C21.584106,16.5635762 21.9456954,16.9251656 21.9456954,17.384106 C21.9456954,17.8430464 21.584106,18.2046358 21.1251656,18.2046358 Z M81.8304636,17.9543046 L81.0655629,17.9543046 C80.6066225,17.9543046 80.2450331,17.5927152 80.2450331,17.1337748 C80.2450331,16.6748344 80.6066225,16.313245 81.0655629,16.313245 L81.8304636,16.313245 C82.289404,16.313245 82.6509934,16.6748344 82.6509934,17.1337748 C82.6509934,17.5927152 82.2754967,17.9543046 81.8304636,17.9543046 Z M74.5013245,17.9543046 L69.5781457,17.9543046 C69.1192053,17.9543046 68.7576159,17.5927152 68.7576159,17.1337748 C68.7576159,16.6748344 69.1192053,16.313245 69.5781457,16.313245 L74.5013245,16.313245 C74.9602649,16.313245 75.3218543,16.6748344 75.3218543,17.1337748 C75.3218543,17.5927152 74.9602649,17.9543046 74.5013245,17.9543046 Z M44.392053,13.0450331 C44.0582781,13.0450331 43.7523179,12.8225166 43.6271523,12.5165563 L43.5019868,12.2245033 C43.3350993,11.8490066 43.4741722,11.4039735 43.8218543,11.1953642 C44.586755,8.90066225 46.7423841,5.63245033 51.0397351,5.63245033 C51.6238411,5.63245033 52.2496689,5.68807947 52.889404,5.81324503 C55.3370861,6.27218543 57.7986755,7.70463576 60.218543,10.0410596 C60.5384106,10.3609272 60.5523179,10.8754967 60.2324503,11.1953642 C59.9125828,11.5291391 59.3980132,11.5291391 59.0781457,11.2092715 C56.894702,9.09536424 54.7112583,7.81589404 52.5834437,7.41258278 C52.0410596,7.31523179 51.5264901,7.25960265 51.0397351,7.25960265 C46.3112583,7.25960265 45.2403974,12.1688742 45.1986755,12.3774834 C45.1152318,12.7668874 44.781457,13.0450331 44.392053,13.0450331 Z M21.5562914,5.71589404 C21.3615894,5.71589404 21.1807947,5.64635762 21.0278146,5.52119205 C20.6801325,5.22913907 20.6384106,4.71456954 20.9304636,4.36688742 C22.0152318,3.08741722 23.5311258,2.14172185 25.4364238,1.54370861 C25.8675497,1.40463576 26.3264901,1.65496689 26.4655629,2.08609272 C26.6046358,2.51721854 26.3543046,2.97615894 25.9231788,3.11523179 C24.3238411,3.61589404 23.0721854,4.39470199 22.1821192,5.42384106 C22.0152318,5.61854305 21.7927152,5.71589404 21.5562914,5.71589404 Z M33.7668874,2.94834437 C33.697351,2.94834437 33.6278146,2.93443709 33.5443709,2.9205298 C33.0576159,2.79536424 32.5569536,2.68410596 32.0423841,2.61456954 C31.597351,2.54503311 31.2774834,2.12781457 31.3470199,1.68278146 C31.4165563,1.23774834 31.8337748,0.945695364 32.2788079,0.987417219 C32.8629139,1.07086093 33.4331126,1.19602649 33.9754967,1.33509934 C34.4066225,1.4602649 34.6708609,1.90529801 34.5596026,2.33642384 C34.4622517,2.71192053 34.1284768,2.94834437 33.7668874,2.94834437 Z"
id="path84" />
</g>
<g
transform="translate(0.000000, 19.470199)"
id="g90">
<path
d="M83.8887417,4.24172185 L2.57284768,4.24172185 C1.66887417,4.24172185 0.931788079,3.50463576 0.931788079,2.60066225 C0.931788079,1.69668874 1.66887417,0.959602649 2.57284768,0.959602649 L83.8887417,0.959602649 C84.7927152,0.959602649 85.5298013,1.69668874 85.5298013,2.60066225 C85.5298013,3.50463576 84.7927152,4.24172185 83.8887417,4.24172185 Z"
id="path88" />
</g>
</g>
</g>
<ellipse
id="Oval"
fill="#ededf0"
opacity="0.5"
cx="175.9178"
cy="170.85991"
rx="73.526253"
ry="11.563125" />
</g>
</g>
</g>
<path
id="cloud-alert"
d="m 254.54362,110.61709 a 41.858804,41.858804 0 0 1 -10.8282,28.08534 35.887465,35.887465 0 0 1 -21.45007,10.8673 42.246663,42.246663 0 0 0 0.84918,-17.43196 17.919131,17.919131 0 0 0 8.09421,-4.72957 25.026353,25.026353 0 0 0 6.48366,-16.79111 28.118382,28.118382 0 0 0 -28.08535,-28.085359 c -0.92602,0 -5.68324,0.594174 -8.57727,0.967035 a 2.7916842,2.7916842 0 0 1 -3.0008,-1.876551 l -1.14369,-3.336147 A 34.656989,34.656989 0 0 0 168.09302,54.616462 33.58368,33.58368 0 0 0 131.89488,95.850311 l 1.19942,5.130409 a 2.8085354,2.8085354 0 0 1 -1.92244,3.32783 l -5.04762,1.52526 a 16.696293,16.696293 0 0 0 -12.00739,16.01742 11.315083,11.315083 0 0 0 2.32581,6.90069 13.611511,13.611511 0 0 0 10.04928,4.33345 h 7.67482 a 42.446125,42.446125 0 0 0 1.08887,16.85122 h -8.76369 A 30.06863,30.06863 0 0 1 102.70166,138.50495 28.276728,28.276728 0 0 1 97.265633,121.85123 33.354503,33.354503 0 0 1 114.33081,92.64684 c -0.14268,-1.508465 -0.21401,-3.01148 -0.21401,-4.498037 a 50.534146,50.534146 0 0 1 95.80834,-22.468284 44.988861,44.988861 0 0 1 44.61843,44.936571 z m -42.12804,28.08534 a 33.702425,33.702425 0 1 1 -33.70241,-33.70242 33.702425,33.702425 0 0 1 33.70241,33.70242 z m -28.08535,14.04269 a 2.8085354,2.8085354 0 0 0 -2.80853,-2.80853 h -5.61707 a 2.8085354,2.8085354 0 0 0 -2.80853,2.80853 v 5.61706 a 2.8085354,2.8085354 0 0 0 2.80853,2.80855 h 5.61707 a 2.8085354,2.8085354 0 0 0 2.80853,-2.80855 z m 0,-33.70243 a 2.8166239,2.8166239 0 0 0 -2.80853,-2.80853 h -5.61707 a 2.8166239,2.8166239 0 0 0 -2.80853,2.80853 v 11.23415 a 22.144684,22.144684 0 0 0 0.83447,5.49022 l 2.24351,7.21126 a 2.0333796,2.0333796 0 0 0 1.82117,1.34118 h 1.43583 a 2.0333796,2.0333796 0 0 0 1.82118,-1.34118 l 2.2435,-7.21126 a 22.144684,22.144684 0 0 0 0.83447,-5.49022 z"
style="stroke-width:5.61707;fill:#45a1ff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 25 KiB

76
assets_src/icon.svg Normal file
View file

@ -0,0 +1,76 @@
<?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="64mm"
height="64mm"
viewBox="0 0 64 64"
version="1.1"
id="svg898"
sodipodi:docname="icon.svg"
inkscape:export-filename="/home/timvisee/git/send/assets/favicon-32x32.png"
inkscape:export-xdpi="12.7"
inkscape:export-ydpi="12.7"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<defs
id="defs892" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="196.2752"
inkscape:cy="146.91833"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-nodes="true"
inkscape:snap-page="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-text-baseline="true"
inkscape:snap-center="true"
inkscape:snap-midpoints="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:object-paths="true"
inkscape:window-width="1920"
inkscape:window-height="1048"
inkscape:window-x="1920"
inkscape:window-y="32"
inkscape:window-maximized="1" />
<metadata
id="metadata895">
<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>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="cloud-upload"
d="m 63.999948,34.285731 a 17.033293,17.033293 0 0 1 -4.406235,11.428568 14.856655,14.856655 0 0 1 -10.55805,4.571428 h -2.178561 v -6.857139 h 2.178561 A 8.0044292,8.0044292 0 0 0 54.504416,41.118327 10.183788,10.183788 0 0 0 57.14281,34.285731 11.442004,11.442004 0 0 0 45.714251,22.857173 c -0.37683,0 -2.312648,0.241803 -3.490288,0.393502 A 1.1359993,1.1359993 0 0 1 41.00286,22.487082 L 40.537483,21.129528 A 14.102711,14.102711 0 0 0 28.821257,11.497829 13.665957,13.665957 0 0 0 14.091416,28.276812 l 0.488099,2.087681 a 1.1428564,1.1428564 0 0 1 -0.782255,1.354176 l -2.053987,0.62062 a 6.7940986,6.7940986 0 0 0 -4.8860757,6.517846 4.6043628,4.6043628 0 0 0 0.9464197,2.808045 5.5388308,5.5388308 0 0 0 4.089282,1.763384 h 5.250006 v 6.857137 H 11.892899 A 12.235604,12.235604 0 0 1 2.2121047,45.633903 11.506439,11.506439 0 0 1 5.8514086e-5,38.857135 13.5727,13.5727 0 0 1 6.9442617,26.97321 C 6.8863778,26.359414 6.8571876,25.747771 6.8571876,25.142857 A 20.563484,20.563484 0 0 1 45.843766,16.000009 18.306983,18.306983 0 0 1 64,34.285707 Z M 32.923239,32.122512 a 1.1428564,1.1428564 0 0 0 -1.846543,0 l -8.591651,11.775239 a 1.1428564,1.1428564 0 0 0 0.923268,1.816548 h 5.163091 v 12.571418 a 1.1428564,1.1428564 0 0 0 1.14285,1.142858 h 4.571428 a 1.1428564,1.1428564 0 0 0 1.142859,-1.142858 V 45.714299 h 5.163084 a 1.1428564,1.1428564 0 0 0 0.923265,-1.816548 z"
style="stroke-width:2.28572;fill:#45a1ff;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Some files were not shown because too many files have changed in this diff Show more