Compare commits
1207 Commits
photosd-v1
...
auth-v3.0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
feaf8e3a8d | ||
|
|
72584e49d6 | ||
|
|
21f269c999 | ||
|
|
0e92a56378 | ||
|
|
e560eaeb41 | ||
|
|
753801c401 | ||
|
|
057ea875c9 | ||
|
|
278e40639f | ||
|
|
93d1813f97 | ||
|
|
ae93fbf45e | ||
|
|
a4ff0f0fd8 | ||
|
|
cd56583a56 | ||
|
|
42ac43ed90 | ||
|
|
face4bb55b | ||
|
|
c6110087d9 | ||
|
|
b89968ca47 | ||
|
|
f9588cf1c8 | ||
|
|
04fd2f8007 | ||
|
|
b52192df6a | ||
|
|
95cf85e573 | ||
|
|
6ed2ad0d28 | ||
|
|
22cf4eb1fb | ||
|
|
431ad66723 | ||
|
|
b7d3e5439a | ||
|
|
cca1b1971f | ||
|
|
e6a47b29bb | ||
|
|
a10562018c | ||
|
|
2a905a439c | ||
|
|
ef37a4cad8 | ||
|
|
2fcbebd375 | ||
|
|
c50366ce3b | ||
|
|
70a33ca0b8 | ||
|
|
b89378e838 | ||
|
|
00f59dc842 | ||
|
|
64470e156a | ||
|
|
5fbca87998 | ||
|
|
ce989b786f | ||
|
|
480a86af0a | ||
|
|
8a9d196282 | ||
|
|
a5b0bc259d | ||
|
|
0ee2da9028 | ||
|
|
a099869ecc | ||
|
|
d282ef2eae | ||
|
|
bcca58d5c0 | ||
|
|
ff0fa9a69f | ||
|
|
852e3a59a3 | ||
|
|
5bad7dcb7a | ||
|
|
23f6da17c4 | ||
|
|
b22af43e8a | ||
|
|
36e3907dfc | ||
|
|
38ee01017a | ||
|
|
ec81300971 | ||
|
|
bd239241d7 | ||
|
|
9951e8def4 | ||
|
|
76993961f0 | ||
|
|
29805bdf4d | ||
|
|
7fb2956a2e | ||
|
|
ec82518639 | ||
|
|
b4cd1c715f | ||
|
|
9603c284dc | ||
|
|
a638f9b4a1 | ||
|
|
a5c28f1a8e | ||
|
|
dd3d9c8d51 | ||
|
|
58b9121e52 | ||
|
|
606b0c35bb | ||
|
|
429d9fdbe5 | ||
|
|
326e673d12 | ||
|
|
dcbdeca64e | ||
|
|
32faa7f4f8 | ||
|
|
ecb0d47055 | ||
|
|
804fc71538 | ||
|
|
eebfb27e5e | ||
|
|
d18e257788 | ||
|
|
adec30a01e | ||
|
|
6645bd59b0 | ||
|
|
1aa3e9ac56 | ||
|
|
ad406a0f0b | ||
|
|
6d6eae4c11 | ||
|
|
772e3f2ebd | ||
|
|
00b68131a8 | ||
|
|
de8d81300f | ||
|
|
34f92f93e5 | ||
|
|
00a293df02 | ||
|
|
8ebdab291c | ||
|
|
148ee3f2c4 | ||
|
|
4428996541 | ||
|
|
fdd2bffc07 | ||
|
|
dbf737092b | ||
|
|
5506652179 | ||
|
|
d1c9033866 | ||
|
|
795767b2cb | ||
|
|
544a1df21b | ||
|
|
e287e80257 | ||
|
|
1dffe49069 | ||
|
|
64dedb7edd | ||
|
|
7566702569 | ||
|
|
d716f18c2e | ||
|
|
d006f74cd4 | ||
|
|
27191d777a | ||
|
|
c68a16a9a9 | ||
|
|
ed1e6df967 | ||
|
|
396651b2b5 | ||
|
|
93f9848d02 | ||
|
|
aa0325d72c | ||
|
|
4510c14af2 | ||
|
|
dc709e7649 | ||
|
|
b7fdf6c66b | ||
|
|
9f5115cc08 | ||
|
|
a9bace7781 | ||
|
|
014fbfe0eb | ||
|
|
38cdfcf0a4 | ||
|
|
3f9107c497 | ||
|
|
8870738330 | ||
|
|
38cae5c3d9 | ||
|
|
e133e6272a | ||
|
|
c486b8f2c1 | ||
|
|
f6cbbbead6 | ||
|
|
3ecef5e751 | ||
|
|
ef64ce065b | ||
|
|
99fdbd8d40 | ||
|
|
ac4a68d64e | ||
|
|
dae5b29ef1 | ||
|
|
4451b489e4 | ||
|
|
b19281ea2b | ||
|
|
8e923fe443 | ||
|
|
fe47186ace | ||
|
|
326704a605 | ||
|
|
d560ed9a33 | ||
|
|
0a8f51832a | ||
|
|
d2112b984d | ||
|
|
50aad0c5d1 | ||
|
|
e6e721f0ba | ||
|
|
80b34f1aef | ||
|
|
d5a8586152 | ||
|
|
bfcd84c940 | ||
|
|
a4bc5fa0df | ||
|
|
ed406e7eb0 | ||
|
|
b4dc49ef2f | ||
|
|
483e3be682 | ||
|
|
17f0d77a31 | ||
|
|
c6f644ef8a | ||
|
|
01b566698f | ||
|
|
469f884d8c | ||
|
|
9e4412cbee | ||
|
|
f4bab262ca | ||
|
|
73fd63616d | ||
|
|
9362a4b9d3 | ||
|
|
6c5ea59506 | ||
|
|
90845bdb02 | ||
|
|
f6729be5ab | ||
|
|
344c5cc399 | ||
|
|
6e1ea29c39 | ||
|
|
d76c6dd63c | ||
|
|
f69daa4608 | ||
|
|
290564c973 | ||
|
|
b781f33e4b | ||
|
|
b8bc01561d | ||
|
|
734cb798d3 | ||
|
|
ac8ebd0ed3 | ||
|
|
fc5eb296d2 | ||
|
|
c05d8a8e44 | ||
|
|
24845a4735 | ||
|
|
2b490fe131 | ||
|
|
07f0cc9342 | ||
|
|
49ddd287d0 | ||
|
|
bffcd11100 | ||
|
|
25d6ebdb19 | ||
|
|
64a539adb0 | ||
|
|
3646809f06 | ||
|
|
fb0e857514 | ||
|
|
a1059c543b | ||
|
|
8fe2b9cb27 | ||
|
|
5e080a90e3 | ||
|
|
08255b3f8a | ||
|
|
f032739461 | ||
|
|
841da80c97 | ||
|
|
60b1c32567 | ||
|
|
bd6ac2c4fc | ||
|
|
eaccba5f22 | ||
|
|
562313b218 | ||
|
|
0650d176ee | ||
|
|
6bbd944de4 | ||
|
|
8aaad79897 | ||
|
|
d499549734 | ||
|
|
db22c5bc97 | ||
|
|
34f49362fd | ||
|
|
af21ff640d | ||
|
|
69e69c2e0f | ||
|
|
a0445fb4f6 | ||
|
|
8161403d84 | ||
|
|
0713e34aec | ||
|
|
b504f554b3 | ||
|
|
3d6af698b6 | ||
|
|
ff3ddb3d8d | ||
|
|
16817eceac | ||
|
|
500e40035f | ||
|
|
366da2c328 | ||
|
|
203d46b2cf | ||
|
|
0e772fcfb7 | ||
|
|
bbd6745372 | ||
|
|
dd1e0a9b1d | ||
|
|
940231e38d | ||
|
|
4c8db02de5 | ||
|
|
8af5aadd1b | ||
|
|
205feab4c2 | ||
|
|
60ab2b4427 | ||
|
|
612329f584 | ||
|
|
a5f4a676a7 | ||
|
|
9608cfaa4e | ||
|
|
ddd4d3e16c | ||
|
|
df0d48af73 | ||
|
|
c82193cae6 | ||
|
|
2c0928bd02 | ||
|
|
8c8ffa9397 | ||
|
|
3689ecb6e7 | ||
|
|
ca080ad6b2 | ||
|
|
48d9ac63bb | ||
|
|
887066962f | ||
|
|
cb2615b083 | ||
|
|
de459e68eb | ||
|
|
9cc559870c | ||
|
|
395774c0e4 | ||
|
|
b3a7aebf95 | ||
|
|
b2e56fc01e | ||
|
|
0e0761bac7 | ||
|
|
79d7fe18ea | ||
|
|
228dd90bce | ||
|
|
93380d05b4 | ||
|
|
4123197c6d | ||
|
|
cc3f398a78 | ||
|
|
48155692ff | ||
|
|
dd0f7d3142 | ||
|
|
325c963b7a | ||
|
|
fbf29585eb | ||
|
|
8a2cc858ae | ||
|
|
b931825d3b | ||
|
|
2dc9b015a6 | ||
|
|
32c2456f03 | ||
|
|
084027df31 | ||
|
|
852878e3f4 | ||
|
|
f07e88b2dc | ||
|
|
d2e526769d | ||
|
|
867fdb7e2c | ||
|
|
a830b771f8 | ||
|
|
cc21f1a36d | ||
|
|
9ff8469a54 | ||
|
|
cfafcf8278 | ||
|
|
1829bcfdcf | ||
|
|
608fec9129 | ||
|
|
f5c9fa3d6c | ||
|
|
4a21ee0fa9 | ||
|
|
da853fdfde | ||
|
|
f2928c8ab8 | ||
|
|
d34bcffafd | ||
|
|
67028a072c | ||
|
|
2bbf33287b | ||
|
|
e60df5c54a | ||
|
|
b100392d7e | ||
|
|
b2154429f3 | ||
|
|
e9f10f77d9 | ||
|
|
1d3452a1f0 | ||
|
|
4e9ff3024c | ||
|
|
c193377640 | ||
|
|
6f4b20ad6f | ||
|
|
ee86de6b30 | ||
|
|
7930e95f4a | ||
|
|
2c3f82023c | ||
|
|
1f6c5d9782 | ||
|
|
b4640935a8 | ||
|
|
e64ef1a7d8 | ||
|
|
346e205001 | ||
|
|
8193379fad | ||
|
|
d3b589e622 | ||
|
|
ec68a11ec3 | ||
|
|
ca949ac077 | ||
|
|
54092c8fba | ||
|
|
4b3f5e4cca | ||
|
|
aebe483d80 | ||
|
|
ea5cd4a7d0 | ||
|
|
15a745266d | ||
|
|
fdde16e76c | ||
|
|
39adba94dd | ||
|
|
ef33065c5b | ||
|
|
dab15b2429 | ||
|
|
c0367729a7 | ||
|
|
fa3d3bceed | ||
|
|
26051985d5 | ||
|
|
fe2f30a92c | ||
|
|
af3f2280d6 | ||
|
|
d513019e1b | ||
|
|
c611d43204 | ||
|
|
cd76da836d | ||
|
|
9086d37a7c | ||
|
|
7234aef6c7 | ||
|
|
20a4e78998 | ||
|
|
280fa9a171 | ||
|
|
13e0cf1826 | ||
|
|
498e651d6d | ||
|
|
66d58d1538 | ||
|
|
27f95e433a | ||
|
|
9053717699 | ||
|
|
82b6187e26 | ||
|
|
b7bf4e7015 | ||
|
|
fbd572f23a | ||
|
|
92d017a701 | ||
|
|
422adf0a62 | ||
|
|
f85a1da9c2 | ||
|
|
afffcec3f2 | ||
|
|
77715e4d05 | ||
|
|
34eb9d7fba | ||
|
|
01c3308019 | ||
|
|
2f699365fb | ||
|
|
622c4e7258 | ||
|
|
68003e203b | ||
|
|
b273ac3cf0 | ||
|
|
3d46b015e1 | ||
|
|
523317eb71 | ||
|
|
4ce913cda6 | ||
|
|
7fdf52309a | ||
|
|
186981014e | ||
|
|
0bde1ab22d | ||
|
|
b2f9c6ff6b | ||
|
|
6aa810b500 | ||
|
|
cf4d407f39 | ||
|
|
ac05f085c1 | ||
|
|
7e48953b6a | ||
|
|
6f4bb6bf95 | ||
|
|
0666fc0ac2 | ||
|
|
6f304cb7a1 | ||
|
|
30c368d99f | ||
|
|
adaa81f50c | ||
|
|
c8a5ca41a2 | ||
|
|
dce84c4262 | ||
|
|
f529460eda | ||
|
|
ae170acb30 | ||
|
|
bfca0730b2 | ||
|
|
c95260a228 | ||
|
|
da43e27688 | ||
|
|
2e442c2152 | ||
|
|
d15d2437fb | ||
|
|
860ca9852b | ||
|
|
eb8ce32acb | ||
|
|
05327bb028 | ||
|
|
47a965f0a1 | ||
|
|
f7a500b811 | ||
|
|
0ce25916e6 | ||
|
|
504bae5dd8 | ||
|
|
8bb748ae22 | ||
|
|
e5bc7b218d | ||
|
|
29ea968408 | ||
|
|
07cd9be3f4 | ||
|
|
946605554c | ||
|
|
2b00418695 | ||
|
|
1a43c0feb2 | ||
|
|
309d3321b9 | ||
|
|
25f2fc46a9 | ||
|
|
48fc966457 | ||
|
|
d2fd7dea97 | ||
|
|
a2e93489f2 | ||
|
|
5150dc00e1 | ||
|
|
68ebd1ef69 | ||
|
|
1d1fa29239 | ||
|
|
04b3e0c7fb | ||
|
|
624a8bf6a9 | ||
|
|
2bebd2ead7 | ||
|
|
e7deb0fb94 | ||
|
|
d37cb971aa | ||
|
|
4470e039eb | ||
|
|
564222b3f0 | ||
|
|
2e1c5d7684 | ||
|
|
b5e3bf8d4b | ||
|
|
fbff908c90 | ||
|
|
3cb9b12f26 | ||
|
|
c4d5bc5aa7 | ||
|
|
237fc3cdb1 | ||
|
|
96386e8f9e | ||
|
|
8df19efc1a | ||
|
|
a0f7c6f302 | ||
|
|
fdef3dc439 | ||
|
|
3285ccdb3a | ||
|
|
a27da1de31 | ||
|
|
d6885d66c3 | ||
|
|
15b2b05487 | ||
|
|
03c4d42a03 | ||
|
|
621d58ec0e | ||
|
|
e51f9f1e08 | ||
|
|
3517050c23 | ||
|
|
4561c8f85c | ||
|
|
48d0e250c6 | ||
|
|
632224b94c | ||
|
|
8ecb88cbb4 | ||
|
|
330600543e | ||
|
|
4a9fe006d5 | ||
|
|
e50ae02dbb | ||
|
|
bc7075f81a | ||
|
|
f8d2fda602 | ||
|
|
896d7402b4 | ||
|
|
55a16d053a | ||
|
|
9a1254b745 | ||
|
|
afe5809cb2 | ||
|
|
d6c4d5f87f | ||
|
|
9de5f01727 | ||
|
|
4569ae01df | ||
|
|
896001100c | ||
|
|
332c8d9695 | ||
|
|
6df8a2204f | ||
|
|
4a16fa8701 | ||
|
|
92dc6cacfa | ||
|
|
b40419bcea | ||
|
|
f84b2b5ad3 | ||
|
|
2da32c3193 | ||
|
|
3011248017 | ||
|
|
54be100830 | ||
|
|
c37b6e0441 | ||
|
|
c113e09204 | ||
|
|
19f93087db | ||
|
|
3f736e82ae | ||
|
|
4f6e97eafd | ||
|
|
8c75a2324c | ||
|
|
91a4b1143f | ||
|
|
79b37f16f5 | ||
|
|
e45792ad09 | ||
|
|
00769bdd7a | ||
|
|
89f58236fc | ||
|
|
eca48a4cc3 | ||
|
|
93bddbe6f1 | ||
|
|
17e48ed83f | ||
|
|
4c7583240f | ||
|
|
a46c8a4579 | ||
|
|
fe324c3124 | ||
|
|
c0ac43b6c8 | ||
|
|
eb1f0a31a8 | ||
|
|
ec67437273 | ||
|
|
c10bce3767 | ||
|
|
af60ae46c1 | ||
|
|
d47287095d | ||
|
|
b9d4f9ff10 | ||
|
|
fc826e8acb | ||
|
|
f6377b98cb | ||
|
|
6f487f0478 | ||
|
|
b8c6a67faa | ||
|
|
27536676f1 | ||
|
|
0b4d479337 | ||
|
|
4893684cf1 | ||
|
|
e18c79c895 | ||
|
|
a036d7c2b0 | ||
|
|
5c175c75df | ||
|
|
389401adc9 | ||
|
|
ae4f1df76c | ||
|
|
03d90515a4 | ||
|
|
e23ac45fb3 | ||
|
|
f5a90abbaf | ||
|
|
f9c6151482 | ||
|
|
fb28b4ca28 | ||
|
|
a10f278d44 | ||
|
|
99833e287c | ||
|
|
1bf0676034 | ||
|
|
9c1ae27a21 | ||
|
|
bd9dacfaa9 | ||
|
|
951d797fce | ||
|
|
a30f9b9977 | ||
|
|
6a8cb8d149 | ||
|
|
d814511dae | ||
|
|
055cada5ed | ||
|
|
f40da137cd | ||
|
|
d9e6379020 | ||
|
|
39396a520c | ||
|
|
37fa4ba7b6 | ||
|
|
1c4684596a | ||
|
|
1aea5a9cdd | ||
|
|
6c56ae1bd5 | ||
|
|
a2b7786ed4 | ||
|
|
6137dd923c | ||
|
|
c1aa8f3777 | ||
|
|
55fdf23188 | ||
|
|
9a6e553a53 | ||
|
|
e1f36b8f8c | ||
|
|
858f6c3a8d | ||
|
|
e8ab08f3ca | ||
|
|
dff7a59801 | ||
|
|
2a26cc5afd | ||
|
|
5adf10dcbb | ||
|
|
81e274babd | ||
|
|
b6761bd5b2 | ||
|
|
b37e6cfa12 | ||
|
|
6108a20036 | ||
|
|
ef2039e681 | ||
|
|
ab4939b931 | ||
|
|
7b45d689db | ||
|
|
34d85df2ee | ||
|
|
9e1553aeb6 | ||
|
|
ea0396954d | ||
|
|
6bd307a2cd | ||
|
|
e85fb9df0e | ||
|
|
baf9c02bc8 | ||
|
|
36596683f2 | ||
|
|
01925952b2 | ||
|
|
e8d5863c82 | ||
|
|
2b34cfc688 | ||
|
|
bb957685b3 | ||
|
|
445f8c4635 | ||
|
|
f2bb1430fe | ||
|
|
eddb774b19 | ||
|
|
7abfe633c6 | ||
|
|
fabd6351d9 | ||
|
|
2bd538624c | ||
|
|
2dca9f1758 | ||
|
|
cbdca9851c | ||
|
|
8a5c3a3262 | ||
|
|
076d62a22b | ||
|
|
56b1365747 | ||
|
|
9d2441d255 | ||
|
|
ffde4c2bb8 | ||
|
|
06ee928aac | ||
|
|
a4799a2909 | ||
|
|
a0ca3f2c5a | ||
|
|
62297d1fe6 | ||
|
|
f73a044cc9 | ||
|
|
26b8456dee | ||
|
|
b16bce7f04 | ||
|
|
a8834f5d7e | ||
|
|
b07841f972 | ||
|
|
e68a968255 | ||
|
|
9d670db89c | ||
|
|
0da1337921 | ||
|
|
1e8ec0e814 | ||
|
|
242c669de4 | ||
|
|
dd6f36e037 | ||
|
|
6d4e434a8d | ||
|
|
17025a24f4 | ||
|
|
849adb8a0b | ||
|
|
4ca5f80241 | ||
|
|
bde9903b1d | ||
|
|
c9bf449521 | ||
|
|
332168af1a | ||
|
|
73cebcdb54 | ||
|
|
33be371d85 | ||
|
|
897f3d074d | ||
|
|
8f77318e88 | ||
|
|
9660a1c32a | ||
|
|
b43d626653 | ||
|
|
964215bbc9 | ||
|
|
3a97f16435 | ||
|
|
5297156229 | ||
|
|
9bdf316683 | ||
|
|
2ba4177f8a | ||
|
|
7356522c6f | ||
|
|
cafead44d4 | ||
|
|
28ba02a2ef | ||
|
|
8854807f09 | ||
|
|
cb01c6d5ce | ||
|
|
772a9e38dd | ||
|
|
3b2f72459d | ||
|
|
645a7f32e1 | ||
|
|
2afc424f62 | ||
|
|
20b23422e2 | ||
|
|
06d6cd10ba | ||
|
|
9cdd184ee1 | ||
|
|
c983c43ba1 | ||
|
|
0e284752d1 | ||
|
|
e9129473ed | ||
|
|
a1fd652ce0 | ||
|
|
5494b2a20e | ||
|
|
637f3522a9 | ||
|
|
5dda37a192 | ||
|
|
6b3c9ee19c | ||
|
|
9634c1e291 | ||
|
|
13bc758dde | ||
|
|
7b299c5a42 | ||
|
|
0969ded02a | ||
|
|
655ed91980 | ||
|
|
e398db0c10 | ||
|
|
405e452eee | ||
|
|
09d05b0d04 | ||
|
|
ca42feffe6 | ||
|
|
229f7cc676 | ||
|
|
6f1c52d548 | ||
|
|
633e006b73 | ||
|
|
144ebca203 | ||
|
|
7f08b31771 | ||
|
|
386e2846e7 | ||
|
|
3389acd42b | ||
|
|
57629f26c0 | ||
|
|
aed516988f | ||
|
|
ba20fd4763 | ||
|
|
0d3db76cb0 | ||
|
|
985659ea56 | ||
|
|
54884a7dd2 | ||
|
|
a0393bc2b6 | ||
|
|
76c684b25e | ||
|
|
e96eeb2315 | ||
|
|
4d2e4f0194 | ||
|
|
4bdca0f09f | ||
|
|
c51edddb53 | ||
|
|
71e908c3a2 | ||
|
|
836712c020 | ||
|
|
c035d5cafa | ||
|
|
d247cc6cad | ||
|
|
8e54da8026 | ||
|
|
a3ebd4c062 | ||
|
|
3d3588e64e | ||
|
|
d5eb850503 | ||
|
|
07a137ea74 | ||
|
|
5f9a466178 | ||
|
|
725478b0da | ||
|
|
ab893bc274 | ||
|
|
ee30dc3e91 | ||
|
|
08340b124b | ||
|
|
f4d44e484d | ||
|
|
015f761866 | ||
|
|
d7926e05bb | ||
|
|
2d621b9879 | ||
|
|
19e1bd51c8 | ||
|
|
afc4a007db | ||
|
|
02e8923e77 | ||
|
|
485614166d | ||
|
|
b49e829cc5 | ||
|
|
d3ddf92849 | ||
|
|
3e09fda76c | ||
|
|
0e028fa9d1 | ||
|
|
263f207995 | ||
|
|
85bfa826b2 | ||
|
|
2a0a7675a3 | ||
|
|
9fef6ae662 | ||
|
|
b602e68c5b | ||
|
|
7a2168a7b7 | ||
|
|
9ee4ab4cc0 | ||
|
|
b987f80ee5 | ||
|
|
ecaba3fb78 | ||
|
|
c83172f552 | ||
|
|
1ff6a53131 | ||
|
|
b0ce1c971b | ||
|
|
33fc86cff7 | ||
|
|
674907cd2a | ||
|
|
50b032654c | ||
|
|
62c413959e | ||
|
|
1d182d4ed6 | ||
|
|
6c4d2e8a9e | ||
|
|
7b3a66a117 | ||
|
|
0f5f488fc7 | ||
|
|
26a0796efe | ||
|
|
a65ebacfbd | ||
|
|
2213b7c39f | ||
|
|
78ce353069 | ||
|
|
b62e5a5f82 | ||
|
|
bad51eaab0 | ||
|
|
c1134c9b0c | ||
|
|
e65ea1a8c5 | ||
|
|
af8c9a686e | ||
|
|
29cd3a69d0 | ||
|
|
88d51c3746 | ||
|
|
0dcec4cb9d | ||
|
|
608a4e00bb | ||
|
|
419a4a78cf | ||
|
|
7281827981 | ||
|
|
ade74be871 | ||
|
|
017cb7eb96 | ||
|
|
bf36f415db | ||
|
|
5c9990e0a6 | ||
|
|
24ea4374cf | ||
|
|
79838bd49d | ||
|
|
35a290f221 | ||
|
|
4d3674f6a5 | ||
|
|
068c01a4d4 | ||
|
|
13584c6137 | ||
|
|
d68da33bb4 | ||
|
|
7d9a28a394 | ||
|
|
010b6e873d | ||
|
|
13665d9ff4 | ||
|
|
7999c6432c | ||
|
|
b96a8ed59e | ||
|
|
df3a37b55e | ||
|
|
c04e6a2eae | ||
|
|
e29908f8b3 | ||
|
|
d0640a094b | ||
|
|
82fbbd427e | ||
|
|
69b1602f9c | ||
|
|
a90275f491 | ||
|
|
1b6995fc78 | ||
|
|
5723654ee0 | ||
|
|
120642850e | ||
|
|
551f4a848e | ||
|
|
cfbba44bc1 | ||
|
|
e490487788 | ||
|
|
93bcb279ef | ||
|
|
598be87e61 | ||
|
|
bd86951d12 | ||
|
|
d6f4eb69d1 | ||
|
|
11304d9093 | ||
|
|
2eb7d4639a | ||
|
|
4e45867994 | ||
|
|
9d156daf3a | ||
|
|
129fd98fcc | ||
|
|
c94bc25811 | ||
|
|
f06b7a4b71 | ||
|
|
a65e2333ae | ||
|
|
9dac3bf51b | ||
|
|
0c29e408f9 | ||
|
|
2a7f2ac292 | ||
|
|
fe6492009b | ||
|
|
447fa5afad | ||
|
|
0a7af5b26d | ||
|
|
6a0126926d | ||
|
|
d14c7cf4c9 | ||
|
|
834660bee4 | ||
|
|
47e2c1bbc7 | ||
|
|
48a03ae0b0 | ||
|
|
3734a50713 | ||
|
|
5b6a1198b1 | ||
|
|
c69fe2a979 | ||
|
|
d582f79f42 | ||
|
|
85449fad70 | ||
|
|
5c35fe785c | ||
|
|
1af5008ed8 | ||
|
|
8841ef9dc1 | ||
|
|
b56a093052 | ||
|
|
75dee19c62 | ||
|
|
465760e329 | ||
|
|
04048b20fe | ||
|
|
6743aa3db4 | ||
|
|
e3bbd7f536 | ||
|
|
e5a71da00a | ||
|
|
f47fc2c27c | ||
|
|
a24d8f94d3 | ||
|
|
f8b933a08f | ||
|
|
943dceb993 | ||
|
|
0f99fa2ba7 | ||
|
|
8a81c0e66c | ||
|
|
9faa75e7aa | ||
|
|
1e420fce74 | ||
|
|
04a41e278d | ||
|
|
3735c0ba4f | ||
|
|
e49a7abe6d | ||
|
|
a9c368fa0c | ||
|
|
1fcb26453a | ||
|
|
d863797f34 | ||
|
|
13c64e0cce | ||
|
|
21d3d55bf5 | ||
|
|
895ab1764e | ||
|
|
d44b951f0d | ||
|
|
515c28530e | ||
|
|
9edbdfdd49 | ||
|
|
efcf36ea4e | ||
|
|
471df817ac | ||
|
|
dcc599d856 | ||
|
|
f2283edb79 | ||
|
|
89b703498c | ||
|
|
72f4ebfe42 | ||
|
|
f876ba627e | ||
|
|
358761f267 | ||
|
|
efcf304194 | ||
|
|
d839be5a76 | ||
|
|
6808bdb9e3 | ||
|
|
e4bc206d6a | ||
|
|
2d9b95f950 | ||
|
|
9a921c314a | ||
|
|
0b626fc781 | ||
|
|
feeebea75b | ||
|
|
e8dcd3d742 | ||
|
|
3d0a810f26 | ||
|
|
1a10e2da4f | ||
|
|
6aabeb3e7e | ||
|
|
8be2746d65 | ||
|
|
9151821f05 | ||
|
|
1ab9c31a51 | ||
|
|
ac3f9f7ea1 | ||
|
|
4133764cb0 | ||
|
|
8f773be4b6 | ||
|
|
aa25174fbe | ||
|
|
1d825f2f89 | ||
|
|
d9f33379f2 | ||
|
|
31a63447d6 | ||
|
|
9db9a18e3e | ||
|
|
e61d9886dc | ||
|
|
11d9529496 | ||
|
|
9916032e23 | ||
|
|
22d468836c | ||
|
|
8b44165b77 | ||
|
|
482239ce8d | ||
|
|
ee602e63d2 | ||
|
|
5367e90ecf | ||
|
|
7204d3471f | ||
|
|
f7e24287ba | ||
|
|
810fd2a51a | ||
|
|
0784dc926b | ||
|
|
ee5448b5c6 | ||
|
|
8367e4d4e1 | ||
|
|
7ee9d8efdd | ||
|
|
88e8f997ef | ||
|
|
4f2dd7ccdf | ||
|
|
b22733692a | ||
|
|
8b83975edf | ||
|
|
a63a6fc1c2 | ||
|
|
08a60d827f | ||
|
|
c9340ed383 | ||
|
|
ea476b9c96 | ||
|
|
c8c19972d9 | ||
|
|
ac32a33358 | ||
|
|
6b6a81b6a8 | ||
|
|
16272dc7b0 | ||
|
|
9a47135209 | ||
|
|
c91b0e4d3e | ||
|
|
ff29bda5ac | ||
|
|
78b82e774d | ||
|
|
2d8b16ca99 | ||
|
|
493153dce1 | ||
|
|
d6b6e691c4 | ||
|
|
6a266d86a6 | ||
|
|
187dc0e280 | ||
|
|
08c8e11924 | ||
|
|
dd7d082ca3 | ||
|
|
6aeb69bdde | ||
|
|
81c2a5c94b | ||
|
|
7cd998ba3e | ||
|
|
ad0069087f | ||
|
|
741018b802 | ||
|
|
b753c47e01 | ||
|
|
0d99d3e037 | ||
|
|
39d50d24f0 | ||
|
|
ebf83b7bba | ||
|
|
555f987511 | ||
|
|
122a84c818 | ||
|
|
0cbf7db745 | ||
|
|
247db36c3b | ||
|
|
79d9eba099 | ||
|
|
19980559f4 | ||
|
|
b365e03acd | ||
|
|
d067673dca | ||
|
|
9deefeb019 | ||
|
|
861b4d9228 | ||
|
|
1d5f936ced | ||
|
|
e8a3b3b299 | ||
|
|
62f3e6d47b | ||
|
|
0e9a4911b5 | ||
|
|
7c3a137723 | ||
|
|
c9c582cbcc | ||
|
|
d924ee636d | ||
|
|
176289d0a8 | ||
|
|
f663c436cb | ||
|
|
3f3a63d8da | ||
|
|
1360378aaa | ||
|
|
14e4c3a133 | ||
|
|
a6b8bfcf90 | ||
|
|
ae6e17c200 | ||
|
|
bf2a97f4a1 | ||
|
|
ebab8568b9 | ||
|
|
55ee9a5d29 | ||
|
|
27b7532ca4 | ||
|
|
d38ea56492 | ||
|
|
37f09c0dc3 | ||
|
|
22b9bc7804 | ||
|
|
aad4d62f05 | ||
|
|
f716f3bed7 | ||
|
|
c2bf99531a | ||
|
|
0d3db30cac | ||
|
|
d9477891bb | ||
|
|
429caf5f6c | ||
|
|
39a17bc0b8 | ||
|
|
2310758810 | ||
|
|
781a99aa42 | ||
|
|
3ff5b2f18f | ||
|
|
38c88c9aa8 | ||
|
|
b6cb264cbb | ||
|
|
74ff0e4abe | ||
|
|
cab8660446 | ||
|
|
e4e47ab3d4 | ||
|
|
b8911d8303 | ||
|
|
1fdbf4f5f5 | ||
|
|
87f53177c0 | ||
|
|
33656c8206 | ||
|
|
a43162d76a | ||
|
|
68f291efe7 | ||
|
|
6e9b7272f3 | ||
|
|
b53dc645c3 | ||
|
|
12f28b489f | ||
|
|
ebc3f53fe3 | ||
|
|
1f33df7147 | ||
|
|
26cbc5a2f0 | ||
|
|
4674ab63e9 | ||
|
|
8b35cfd802 | ||
|
|
010ff29b16 | ||
|
|
354762eb72 | ||
|
|
641efa15be | ||
|
|
55e2911eef | ||
|
|
d9553fc5bb | ||
|
|
9ce613eae5 | ||
|
|
be3e33f5c5 | ||
|
|
f5fee2185c | ||
|
|
44fefac37c | ||
|
|
8b53dac00c | ||
|
|
abf13245dc | ||
|
|
e87475beb7 | ||
|
|
55b62ce3cc | ||
|
|
b2405e8b59 | ||
|
|
1eaa635d0e | ||
|
|
291d5c437c | ||
|
|
7f4b0c3d10 | ||
|
|
4718e640b4 | ||
|
|
c7c50293df | ||
|
|
054dd58435 | ||
|
|
b7181963ca | ||
|
|
fa06a15ad7 | ||
|
|
133693d058 | ||
|
|
d3ad6cbd4e | ||
|
|
bfe34a908c | ||
|
|
f6bdeef33d | ||
|
|
9a7ba8a406 | ||
|
|
a850500beb | ||
|
|
72a3f7f17a | ||
|
|
c8d30323e4 | ||
|
|
029872e54e | ||
|
|
3ad8f73289 | ||
|
|
2ad4912d7e | ||
|
|
b3c907f8ee | ||
|
|
50a8ddc002 | ||
|
|
5fc03bca1c | ||
|
|
ce7451dbb4 | ||
|
|
05e4d18a14 | ||
|
|
387ca79b6d | ||
|
|
ddaa872b97 | ||
|
|
67169b4efa | ||
|
|
52b3a6d0f7 | ||
|
|
575c5aad81 | ||
|
|
f062074177 | ||
|
|
41124d07a5 | ||
|
|
5042e3cbd7 | ||
|
|
1227bbc4a9 | ||
|
|
27a5aa99c0 | ||
|
|
5049b5cc4e | ||
|
|
beedbd0991 | ||
|
|
113a949a4b | ||
|
|
c70c498d38 | ||
|
|
c0c4412b19 | ||
|
|
84ac002885 | ||
|
|
29f89ab901 | ||
|
|
253b74d58f | ||
|
|
89064f77ae | ||
|
|
9d309dd6de | ||
|
|
9fbe02eeac | ||
|
|
0d38c6ac1b | ||
|
|
453f196a63 | ||
|
|
e99da59699 | ||
|
|
6635f4c9a4 | ||
|
|
5448ca116c | ||
|
|
bfa652df36 | ||
|
|
f14f973a61 | ||
|
|
a830e42ead | ||
|
|
62e5950429 | ||
|
|
1c241d70fd | ||
|
|
81472fdafb | ||
|
|
c1097de27f | ||
|
|
f647355666 | ||
|
|
f71dd32400 | ||
|
|
f871255833 | ||
|
|
ae9d406fe9 | ||
|
|
8f7af989bb | ||
|
|
21567d546e | ||
|
|
3c5ba5b94e | ||
|
|
400a6a9054 | ||
|
|
7cc29c302e | ||
|
|
654f6b8934 | ||
|
|
3e1dbce629 | ||
|
|
ce93ce6529 | ||
|
|
e682b065d1 | ||
|
|
9f2d770bc2 | ||
|
|
27523e2f10 | ||
|
|
5a76df7f62 | ||
|
|
12d9bc7bce | ||
|
|
966e5527ec | ||
|
|
074e867886 | ||
|
|
46761622f1 | ||
|
|
45d7e3da2c | ||
|
|
1f6be04bf4 | ||
|
|
6327a7f9da | ||
|
|
9dbec2729c | ||
|
|
2b3b84de0f | ||
|
|
a6a0a24b26 | ||
|
|
1a292aae27 | ||
|
|
154cb7a8bc | ||
|
|
bb9a605b0d | ||
|
|
b2277cfcc2 | ||
|
|
69c18cb852 | ||
|
|
b9a07e536c | ||
|
|
6b0501e272 | ||
|
|
57404e1f49 | ||
|
|
b5c52a4ae2 | ||
|
|
2abcb709d9 | ||
|
|
13d15ceeb9 | ||
|
|
5099dfdd74 | ||
|
|
34166ecffb | ||
|
|
40d35e157e | ||
|
|
91be44c4c5 | ||
|
|
6d3391528d | ||
|
|
4b202d2dda | ||
|
|
ac8677d7b4 | ||
|
|
227873cc2d | ||
|
|
3fc41aecca | ||
|
|
6dc26b9124 | ||
|
|
841a67443d | ||
|
|
c71e56ec43 | ||
|
|
fd4a788953 | ||
|
|
81f9efbace | ||
|
|
23c73a83eb | ||
|
|
6e6c88826e | ||
|
|
80be753d77 | ||
|
|
e41e0eadee | ||
|
|
53dea9dcf3 | ||
|
|
7f816e80a2 | ||
|
|
6b1484671b | ||
|
|
c3347bae5d | ||
|
|
b17933a2b3 | ||
|
|
d448676b8f | ||
|
|
c8a7152cdc | ||
|
|
3c3f9b2b48 | ||
|
|
f66170b5b2 | ||
|
|
8e1d7bc884 | ||
|
|
dafdeca7e4 | ||
|
|
6be42225c2 | ||
|
|
403cc3cca0 | ||
|
|
321422e915 | ||
|
|
3c92349054 | ||
|
|
c3f6ecbf6a | ||
|
|
35090a6cdd | ||
|
|
ab61fee8de | ||
|
|
896de62794 | ||
|
|
d9200f4703 | ||
|
|
3c0d82279c | ||
|
|
f6bd99386e | ||
|
|
85785f7543 | ||
|
|
aa353b57e8 | ||
|
|
cbdd82f6c0 | ||
|
|
ddddc09226 | ||
|
|
bae4c65ab3 | ||
|
|
54654159ff | ||
|
|
8a1acc756e | ||
|
|
61fb9cf544 | ||
|
|
7739be4e21 | ||
|
|
3b8ab89647 | ||
|
|
4ce02fba93 | ||
|
|
72851397b1 | ||
|
|
08a073fc1b | ||
|
|
ce1ba6112f | ||
|
|
6097f9d4ba | ||
|
|
daf72d8ac6 | ||
|
|
9adc8126bb | ||
|
|
c968cc3c41 | ||
|
|
7f150d8dc7 | ||
|
|
f8aa749799 | ||
|
|
2fb7ee0171 | ||
|
|
a44e932c84 | ||
|
|
d92e7e0c5d | ||
|
|
9ae13ec159 | ||
|
|
d83eedc93d | ||
|
|
588df2c346 | ||
|
|
1e792459a1 | ||
|
|
245e9c0fff | ||
|
|
85ce2d7e49 | ||
|
|
ee3ea77831 | ||
|
|
9922b704e8 | ||
|
|
a24cfe9d05 | ||
|
|
6c77901396 | ||
|
|
272025e657 | ||
|
|
798f5d2e11 | ||
|
|
6b655c8157 | ||
|
|
2ba802d59f | ||
|
|
27d89c4952 | ||
|
|
642ea88319 | ||
|
|
e2791723d0 | ||
|
|
edb6c804e6 | ||
|
|
319108db1b | ||
|
|
09aa2fece0 | ||
|
|
535d24779f | ||
|
|
979730d740 | ||
|
|
f8f2bae173 | ||
|
|
079ff43557 | ||
|
|
b3a0bc624b | ||
|
|
cee093c214 | ||
|
|
8dd0d58319 | ||
|
|
34d4aeaf56 | ||
|
|
b5eae21ae7 | ||
|
|
431cd39358 | ||
|
|
25d13d531d | ||
|
|
bb46e98e85 | ||
|
|
f0f3af96d1 | ||
|
|
9c60fe6f3f | ||
|
|
0cae667b44 | ||
|
|
2f7d1401cd | ||
|
|
cfb4ded991 | ||
|
|
b1e64cadf6 | ||
|
|
4aaafd3b08 | ||
|
|
f34a4d4a21 | ||
|
|
c8a3728f5d | ||
|
|
b10f4ee18a | ||
|
|
433c23ca07 | ||
|
|
cb0cffce3d | ||
|
|
853f291de3 | ||
|
|
9887d44416 | ||
|
|
ca7b609217 | ||
|
|
f1b2e2bec2 | ||
|
|
f5947a0c4a | ||
|
|
126727a9cc | ||
|
|
5e49b8a528 | ||
|
|
3664532f91 | ||
|
|
8ea7a742b1 | ||
|
|
77f3503a0b | ||
|
|
8975af7a71 | ||
|
|
b64077d5e7 | ||
|
|
50968fd6a1 | ||
|
|
89a47026d9 | ||
|
|
9a8c4d9cfd | ||
|
|
284bca782e | ||
|
|
1535f61653 | ||
|
|
b45dfa9cfc | ||
|
|
f9b3a931a5 | ||
|
|
dd83edf0e3 | ||
|
|
6988b70d9f | ||
|
|
d33c92a51c | ||
|
|
54aecfd721 | ||
|
|
d8f3a48a6f | ||
|
|
cb8d572951 | ||
|
|
c1e5249c9b | ||
|
|
07552f7a89 | ||
|
|
6c28dede44 | ||
|
|
b2df698e42 | ||
|
|
2ae869075e | ||
|
|
95ae7a6cd0 | ||
|
|
d1b2d5696a | ||
|
|
705fae35e6 | ||
|
|
cad07cd96f | ||
|
|
50556b9930 | ||
|
|
5e50d80547 | ||
|
|
65201d2b57 | ||
|
|
5e18ae1938 | ||
|
|
37d3776e28 | ||
|
|
05579ef368 | ||
|
|
90e467c7c0 | ||
|
|
f5093ddf63 | ||
|
|
ac3c6b10a5 | ||
|
|
99cf23d286 | ||
|
|
95bb363aba | ||
|
|
acf7b3a865 | ||
|
|
8f1119525b | ||
|
|
bcf3084d97 | ||
|
|
fae54faffc | ||
|
|
7a6fa1cd80 | ||
|
|
022448155d | ||
|
|
ed830dc387 | ||
|
|
a79d11c263 | ||
|
|
a470ed4dfa | ||
|
|
500d7da306 | ||
|
|
637adb4617 | ||
|
|
320f79bb52 | ||
|
|
484d2dc6cb | ||
|
|
a63558a309 | ||
|
|
5e4d530b93 | ||
|
|
22ff318249 | ||
|
|
643b77e81e | ||
|
|
3ce8a09e39 | ||
|
|
7aa26a950d | ||
|
|
b74be0b8f1 | ||
|
|
8caa559812 | ||
|
|
22fc67c8c3 | ||
|
|
ce6160a06a | ||
|
|
cb9ac0d939 | ||
|
|
f513473362 | ||
|
|
4fb9e75394 | ||
|
|
ee348f5585 | ||
|
|
eaca151a9f | ||
|
|
c21a0cfdb4 | ||
|
|
241c755446 | ||
|
|
e3ea22f479 | ||
|
|
5a017616f5 | ||
|
|
159fdf83ad | ||
|
|
b2a359ca59 | ||
|
|
cae3748995 | ||
|
|
49e64b3d4c | ||
|
|
d4f781bf35 | ||
|
|
a7e0f3df7b | ||
|
|
ab9cef689d | ||
|
|
18d68bbdf3 | ||
|
|
48436694eb | ||
|
|
16178b6f09 | ||
|
|
c2b6032b6f | ||
|
|
a44e5f9505 | ||
|
|
9c4e72aa0f | ||
|
|
28ddb93747 | ||
|
|
2b0fa9bae6 | ||
|
|
16d54645bc | ||
|
|
dec7c45310 | ||
|
|
1a360d3ee7 | ||
|
|
584a37d2a2 | ||
|
|
cd023b621a | ||
|
|
7fdc2b5e66 | ||
|
|
1e7779a819 | ||
|
|
56478fcb8a | ||
|
|
e179d351d9 | ||
|
|
25554209ec | ||
|
|
d1a5921c27 | ||
|
|
ff14eb1d5a | ||
|
|
8fcd05b95f | ||
|
|
3a0882a1a9 | ||
|
|
5bd845d32b | ||
|
|
cff695dd02 | ||
|
|
5f9b0d11f2 | ||
|
|
e75be714d9 | ||
|
|
da329c498c | ||
|
|
cc74e08155 |
31
.github/workflows/auth-crowdin-push.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: "Push sources to Crowdin (auth)"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
# Run workflow when auth's intl_en.arb is changed
|
||||
- "auth/lib/l10n/arb/app_en.arb"
|
||||
# Or the workflow itself is changed
|
||||
- ".github/workflows/auth-crowdin.yml"
|
||||
|
||||
jobs:
|
||||
push-sources-to-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "auth/"
|
||||
config: "auth/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: false
|
||||
project_id: 575169
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
@@ -1,17 +1,10 @@
|
||||
name: "Sync Crowdin translations (auth)"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
# Run workflow when auth's intl_en.arb is changed
|
||||
- "mobile/lib/l10n/arb/app_en.arb"
|
||||
# Or the workflow itself is changed
|
||||
- ".github/workflows/auth-crowdin.yml"
|
||||
schedule:
|
||||
# See: [Note: Run workflow on specific days of the week]
|
||||
- cron: "50 1 * * 2,5"
|
||||
# Also allow manually running the workflow
|
||||
- cron: "50 1 * * 2"
|
||||
# Also allow manually running the workflow.
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -23,7 +16,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v1
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "auth/"
|
||||
config: "auth/crowdin.yml"
|
||||
2
.github/workflows/auth-lint.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
- ".github/workflows/auth-lint.yml"
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.19.3"
|
||||
FLUTTER_VERSION: "3.22.2"
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
|
||||
2
.github/workflows/auth-release.yml
vendored
@@ -29,7 +29,7 @@ on:
|
||||
- "auth-v*"
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.19.3"
|
||||
FLUTTER_VERSION: "3.22.2"
|
||||
|
||||
jobs:
|
||||
build-ubuntu:
|
||||
|
||||
@@ -1,45 +1,43 @@
|
||||
name: "Deploy (staff)"
|
||||
|
||||
on:
|
||||
# Run on every push to main that changes web/apps/staff/
|
||||
# Run on every push to main that changes infra/staff/
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "web/apps/staff/**"
|
||||
- ".github/workflows/web-deploy-staff.yml"
|
||||
- "infra/staff/**"
|
||||
- ".github/workflows/infra-deploy-staff.yml"
|
||||
# Also allow manually running the workflow
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: web
|
||||
working-directory: infra/staff
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "yarn"
|
||||
cache-dependency-path: "web/yarn.lock"
|
||||
cache-dependency-path: "infra/staff/yarn.lock"
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install
|
||||
|
||||
- name: Build staff
|
||||
run: yarn build:staff
|
||||
- name: Build
|
||||
run: yarn build
|
||||
|
||||
- name: Publish staff
|
||||
- name: Publish
|
||||
uses: cloudflare/wrangler-action@v3
|
||||
with:
|
||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/staff web/apps/staff/dist
|
||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/staff infra/staff/dist
|
||||
34
.github/workflows/infra-lint-staff.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: "Lint (staff)"
|
||||
|
||||
on:
|
||||
# Run on every push to a branch other than main that changes infra/staff/
|
||||
push:
|
||||
branches-ignore: [main]
|
||||
paths:
|
||||
- "infra/staff/**"
|
||||
- ".github/workflows/infra-deploy-staff.yml"
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: infra/staff
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "yarn"
|
||||
cache-dependency-path: "infra/staff/yarn.lock"
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install
|
||||
|
||||
- name: Lint
|
||||
run: yarn lint
|
||||
31
.github/workflows/mobile-crowdin-push.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: "Push sources to Crowdin (mobile)"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
# Run workflow when mobiles's intl_en.arb is changed
|
||||
- "mobile/lib/l10n/intl_en.arb"
|
||||
# Or the workflow itself is changed
|
||||
- ".github/workflows/mobile-crowdin.yml"
|
||||
|
||||
jobs:
|
||||
push-sources-to-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "mobile/"
|
||||
config: "mobile/crowdin.yml"
|
||||
upload_sources: true
|
||||
upload_translations: false
|
||||
download_translations: false
|
||||
project_id: 574741
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
@@ -1,17 +1,10 @@
|
||||
name: "Sync Crowdin translations (mobile)"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
# Run workflow when mobiles's intl_en.arb is changed
|
||||
- "mobile/lib/l10n/intl_en.arb"
|
||||
# Or the workflow itself is changed
|
||||
- ".github/workflows/mobile-crowdin.yml"
|
||||
schedule:
|
||||
# See: [Note: Run workflow on specific days of the week]
|
||||
- cron: "40 1 * * 2,5"
|
||||
# Also allow manually running the workflow
|
||||
- cron: "40 1 * * 2"
|
||||
# Also allow manually running the workflow.
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -23,7 +16,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v1
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "mobile/"
|
||||
config: "mobile/crowdin.yml"
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
workflow_dispatch: # Allow manually running the action
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.22.0"
|
||||
FLUTTER_VERSION: "3.22.2"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
3
.github/workflows/mobile-lint.yml
vendored
@@ -9,7 +9,8 @@ on:
|
||||
- ".github/workflows/mobile-lint.yml"
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.22.0"
|
||||
|
||||
FLUTTER_VERSION: "3.22.2"
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
|
||||
2
.github/workflows/mobile-release.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
- "photos-v*"
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.19.3"
|
||||
FLUTTER_VERSION: "3.22.2"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
2
.github/workflows/server-publish.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
registry: ghcr.io
|
||||
enableBuildKit: true
|
||||
multiPlatform: true
|
||||
platform: linux/amd64,linux/arm64,linux/arm/v7
|
||||
platform: linux/amd64,linux/arm64
|
||||
buildArgs: GIT_COMMIT=${{ inputs.commit }}
|
||||
tags: ${{ inputs.commit }}, latest
|
||||
username: ${{ github.actor }}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: "Push Crowdin translations (web)"
|
||||
|
||||
# This is a variant of web-crowdin.yml that uploads the translated strings in
|
||||
# This is a variant of web-crowdin-sync.yml that uploads the translated strings in
|
||||
# addition to the source strings.
|
||||
#
|
||||
# This allows us to change the strings in our source code for an automated
|
||||
@@ -9,11 +9,11 @@ name: "Push Crowdin translations (web)"
|
||||
|
||||
on:
|
||||
# Trigger manually, or using
|
||||
# `gh workflow run web-crowdin-push.yml --ref <my-branch>`
|
||||
# `gh workflow run web-crowdin-push-both.yml --ref <my-branch>`
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
push-to-crowdin:
|
||||
push-both-to-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin push
|
||||
uses: crowdin/github-action@v1
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "web/"
|
||||
config: "web/crowdin.yml"
|
||||
@@ -16,8 +16,8 @@ on:
|
||||
# and FRI, this can be set to `2,5`.
|
||||
#
|
||||
# See also: [Note: Run workflow every 24 hours]
|
||||
- cron: "20 1 * * 2,5"
|
||||
# Also allow manually running the workflow
|
||||
- cron: "20 1 * * 2"
|
||||
# Also allow manually running the workflow.
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Crowdin's action
|
||||
uses: crowdin/github-action@v1
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
base_path: "web/"
|
||||
config: "web/crowdin.yml"
|
||||
@@ -12,9 +12,10 @@ There are many ways to contribute, and most of them don't require writing code.
|
||||
|
||||
## Spread the word
|
||||
|
||||
This is perhaps the most impactful contribution you can make. Spread the word.
|
||||
Online on your favorite social media channels. Offline to your friends and
|
||||
family who are looking for a privacy-friendly alternative to big tech.
|
||||
This is perhaps the most impactful contribution you can make. [Spread the
|
||||
word](https://help.ente.io/photos/features/referral-program/). Online on your
|
||||
favorite social media channels. Offline to your friends and family who are
|
||||
looking for a privacy-friendly alternative to big tech.
|
||||
|
||||
## Engage with the community
|
||||
|
||||
@@ -76,7 +77,10 @@ us](https://github.com/ente-io/ente/discussions). Discussing your idea with us
|
||||
first ensures that everyone is on the same page before you start working on your
|
||||
change.
|
||||
|
||||
## Star
|
||||
## Leave a review or star
|
||||
|
||||
If you haven't already done so, consider [starring this
|
||||
repository](https://github.com/ente-io/ente/stargazers).
|
||||
repository](https://github.com/ente-io/ente/stargazers) or leaving a review on
|
||||
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
|
||||
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
|
||||
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).
|
||||
|
||||
@@ -60,8 +60,8 @@ Our labour of love. Two years ago, while building Ente Photos, we realized that
|
||||
there was no open source end-to-end encrypted authenticator app. We already had
|
||||
the building blocks, so we built one.
|
||||
|
||||
Ente Auth is currently free. If in the future we convert this to a paid service,
|
||||
existing users will be grandfathered in.
|
||||
Ente Auth is free, and will remain free forever. If you like the service and
|
||||
want to give back, please check out Ente Photos or spread the word.
|
||||
|
||||
<br />
|
||||
|
||||
@@ -70,7 +70,7 @@ existing users will be grandfathered in.
|
||||
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
|
||||
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
|
||||
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
|
||||
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
|
||||
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
|
||||
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
|
||||
|
||||
</div>
|
||||
|
||||
71
SECURITY.md
@@ -1,51 +1,54 @@
|
||||
# Security Policy
|
||||
|
||||
Ente believes that working with security researchers across the globe is crucial
|
||||
to keeping our users safe. If you believe you've found a security issue in our
|
||||
product or service, we encourage you to notify us, by email (security@ente.io)
|
||||
or by [filling this
|
||||
form](https://github.com/ente-io/ente/security/advisories/new) We welcome
|
||||
working with you to resolve the issue promptly. Thanks in advance!
|
||||
product or service, we encourage you to notify us by email at security@ente.io
|
||||
or by
|
||||
[filling out this form](https://github.com/ente-io/ente/security/advisories/new).
|
||||
We welcome working with you to resolve the issue promptly. Thanks in advance!
|
||||
|
||||
## Disclosure Policy
|
||||
|
||||
- Let us know as soon as possible upon discovery of a potential security issue,
|
||||
and we'll make every effort to quickly resolve the issue.
|
||||
- Provide us a reasonable amount of time to resolve the issue before any
|
||||
disclosure to the public or a third-party. We may publicly disclose the issue
|
||||
before resolving it, if appropriate.
|
||||
- Make a good faith effort to avoid privacy violations, destruction of data, and
|
||||
interruption or degradation of our service. Only interact with accounts you
|
||||
own or with explicit permission of the account holder.
|
||||
- If you would like to encrypt your report, please use the PGP key with long ID
|
||||
`E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public keyserver
|
||||
pool).
|
||||
- Let us know as soon as possible upon discovery of a potential security
|
||||
issue, and we'll make every effort to quickly resolve the issue.
|
||||
- Provide us with a reasonable amount of time to resolve the issue before any
|
||||
disclosure to the public or a third party. We may publicly disclose the
|
||||
issue before resolving it if appropriate.
|
||||
- Make a good faith effort to avoid privacy violations, destruction of data,
|
||||
and interruption or degradation of our service. Only interact with accounts
|
||||
you own or with the explicit permission of the account holder.
|
||||
- If you would like to encrypt your report, please use the PGP key with long
|
||||
ID `E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public
|
||||
keyserver pool).
|
||||
|
||||
## In-scope
|
||||
|
||||
- Security issues in any current release of Ente's services. Product downloads
|
||||
are available at https://ente.io. Source code is available at
|
||||
https://github.com/ente-io.
|
||||
- Security issues in any current release of Ente's services. Product downloads
|
||||
are available at [https://ente.io](https://ente.io). Source code is
|
||||
available at [https://github.com/ente-io](https://github.com/ente-io).
|
||||
|
||||
## Exclusions
|
||||
|
||||
The following bug classes are out-of scope:
|
||||
The following bug classes are out of scope:
|
||||
|
||||
- Bugs that are already reported on any of [Ente's issue
|
||||
trackers](https://github.com/ente-io), or that we already know of (Note that
|
||||
some of our issue tracking is private)
|
||||
- Issues in an upstream software dependency (ex: Flutter, Next.js etc) which are
|
||||
already reported to the upstream maintainer
|
||||
- Attacks requiring physical access to a user's device
|
||||
- Self-XSS
|
||||
- Issues related to software or protocols not under ente's control
|
||||
- Vulnerabilities in outdated versions of ente
|
||||
- Missing security best practices that do not directly lead to a vulnerability
|
||||
- Issues that do not have any impact on the general public
|
||||
- Bugs that are already reported on any of
|
||||
[Ente's issue trackers](https://github.com/ente-io) or that we already know
|
||||
of (note that some of our issue tracking is private).
|
||||
- Issues in an upstream software dependency (e.g., Flutter, Next.js, etc.)
|
||||
that are already reported to the upstream maintainer.
|
||||
- Attacks requiring physical access to a user's device.
|
||||
- Self-XSS.
|
||||
- Issues related to software or protocols not under Ente's control.
|
||||
- Vulnerabilities in outdated versions of Ente.
|
||||
- Missing security best practices that do not directly lead to a
|
||||
vulnerability.
|
||||
- Issues that do not have any impact on the general public.
|
||||
|
||||
While researching, we'd like to ask you to refrain from:
|
||||
|
||||
- Denial of service
|
||||
- Spamming
|
||||
- Social engineering (including phishing) of Ente staff or contractors
|
||||
- Any physical attempts against Ente property or data centers
|
||||
- Denial of service
|
||||
- Spamming
|
||||
- Social engineering (including phishing) of Ente staff or contractors
|
||||
- Any physical attempts against Ente property or data centers
|
||||
|
||||
Thank you for helping keep Ente and our users safe!
|
||||
|
||||
@@ -12,7 +12,7 @@ multi-device sync.
|
||||
### Android
|
||||
|
||||
This repository's [GitHub
|
||||
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
|
||||
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
|
||||
contains APKs, built straight from source. These builds keep themselves updated,
|
||||
without relying on third party stores.
|
||||
|
||||
@@ -33,7 +33,7 @@ You can alternatively install the build from PlayStore or F-Droid.
|
||||
|
||||
### Desktop
|
||||
|
||||
You can [**download**](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
|
||||
You can [**download**](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
|
||||
a native desktop app from this repository's GitHub releases. The desktop app
|
||||
works on Windows, Linux and macOS.
|
||||
|
||||
@@ -95,13 +95,10 @@ more, see [docs/adding-icons](docs/adding-icons.md).
|
||||
|
||||
## 💚 Contribute
|
||||
|
||||
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
|
||||
The best way to support this project is by checking out [Ente
|
||||
Photos](../mobile/README.md) or spreading the word.
|
||||
|
||||
You can also support us by giving this project a ⭐ star on GitHub or by leaving
|
||||
a review on
|
||||
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
|
||||
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
|
||||
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).
|
||||
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
|
||||
|
||||
## ⭐️ About
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ FEATURES
|
||||
|
||||
- Secure Backups
|
||||
Auth provides end-to-end encrypted cloud backups so that you don't have to worry
|
||||
about losing your tokens. We use the same protocols ente Photos uses to encrypt
|
||||
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
|
||||
and preserve your data.
|
||||
|
||||
- Multi Device Synchronization
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
||||
@@ -17,11 +17,17 @@
|
||||
{
|
||||
"title": "AscendEX"
|
||||
},
|
||||
{
|
||||
"title": "Bitfinex"
|
||||
},
|
||||
{
|
||||
"title": "BitMEX"
|
||||
},
|
||||
{
|
||||
"title": "Bitfinex"
|
||||
"title": "BitSkins"
|
||||
},
|
||||
{
|
||||
"title": "Bitstamp"
|
||||
},
|
||||
{
|
||||
"title": "Bitvavo",
|
||||
@@ -32,13 +38,12 @@
|
||||
},
|
||||
{
|
||||
"title": "Bloom Host",
|
||||
"slug": "bloom_host"
|
||||
"slug": "bloom_host",
|
||||
"altNames": ["Bloom Host Billing"]
|
||||
},
|
||||
{
|
||||
"title": "BorgBase",
|
||||
"altNames": [
|
||||
"borg"
|
||||
],
|
||||
"altNames": ["borg"],
|
||||
"slug": "BorgBase"
|
||||
},
|
||||
{
|
||||
@@ -51,16 +56,22 @@
|
||||
{
|
||||
"title": "CERN"
|
||||
},
|
||||
{
|
||||
"title": "ChangeNOW"
|
||||
},
|
||||
{
|
||||
"title": "Channel Island Hosting",
|
||||
"slug": "cih",
|
||||
"hex": "D14633"
|
||||
},
|
||||
{
|
||||
"title": "ConfigCat"
|
||||
"title": "Cloudflare"
|
||||
},
|
||||
{
|
||||
"title": "Cloudflare"
|
||||
"title": "CoinDCX"
|
||||
},
|
||||
{
|
||||
"title": "ConfigCat"
|
||||
},
|
||||
{
|
||||
"title": "Control D",
|
||||
@@ -72,17 +83,24 @@
|
||||
},
|
||||
{
|
||||
"title": "DCS",
|
||||
"altNames": [
|
||||
"Digital Combat Simulator"
|
||||
],
|
||||
"altNames": ["Digital Combat Simulator"],
|
||||
"slug": "dcs"
|
||||
},
|
||||
{
|
||||
"title": "DEGIRO"
|
||||
},
|
||||
{
|
||||
"title": "DirectAdmin"
|
||||
},
|
||||
{
|
||||
"title": "Discourse"
|
||||
},
|
||||
{
|
||||
"title": "DMarket"
|
||||
},
|
||||
{
|
||||
"title": "Doppler"
|
||||
},
|
||||
{
|
||||
"title": "dus.net",
|
||||
"slug": "dusnet"
|
||||
@@ -117,14 +135,15 @@
|
||||
{
|
||||
"title": "GitLab"
|
||||
},
|
||||
{
|
||||
"title": "GMX"
|
||||
},
|
||||
{
|
||||
"title": "Google"
|
||||
},
|
||||
{
|
||||
"title": "Gosuslugi",
|
||||
"altNames": [
|
||||
"Госуслуги"
|
||||
],
|
||||
"altNames": ["Госуслуги"],
|
||||
"slug": "Gosuslugi"
|
||||
},
|
||||
{
|
||||
@@ -135,21 +154,28 @@
|
||||
"slug": "healthchecks"
|
||||
},
|
||||
{
|
||||
"title": "ING"
|
||||
"title": "Hivelocity"
|
||||
},
|
||||
{
|
||||
"title": "INWX"
|
||||
"title": "IceDrive",
|
||||
"slug": "Icedrive"
|
||||
},
|
||||
{
|
||||
"title": "ING"
|
||||
},
|
||||
{
|
||||
"title": "Instagram"
|
||||
},
|
||||
{
|
||||
"title": "IVPN",
|
||||
"slug": "IVPN"
|
||||
"title": "INWX"
|
||||
},
|
||||
{
|
||||
"title": "IceDrive",
|
||||
"slug": "Icedrive"
|
||||
"title": "Itch.io",
|
||||
"slug": "itch_io"
|
||||
},
|
||||
{
|
||||
"title": "IVPN",
|
||||
"slug": "IVPN"
|
||||
},
|
||||
{
|
||||
"title": "Jagex",
|
||||
@@ -158,10 +184,6 @@
|
||||
{
|
||||
"title": "Kagi"
|
||||
},
|
||||
{
|
||||
"title": "KPN",
|
||||
"color": "00CC00"
|
||||
},
|
||||
{
|
||||
"title": "Kick",
|
||||
"hex": "53FC19"
|
||||
@@ -172,6 +194,10 @@
|
||||
{
|
||||
"title": "Koofr"
|
||||
},
|
||||
{
|
||||
"title": "KPN",
|
||||
"color": "00CC00"
|
||||
},
|
||||
{
|
||||
"title": "Kraken",
|
||||
"hex": "5848D5"
|
||||
@@ -190,41 +216,51 @@
|
||||
{
|
||||
"title": "Letterboxd"
|
||||
},
|
||||
{
|
||||
"title": "Local",
|
||||
"slug": "local_wp",
|
||||
"altNames": ["LocalWP", "Local WP", "Local Wordpress"]
|
||||
},
|
||||
{
|
||||
"title": "Marketplace.tf",
|
||||
"slug": "marketplacedottf"
|
||||
},
|
||||
{
|
||||
"title": "Mastodon",
|
||||
"altNames": [
|
||||
"mstdn",
|
||||
"fediscience",
|
||||
"mathstodon",
|
||||
"fosstodon"
|
||||
],
|
||||
"altNames": ["mstdn", "fediscience", "mathstodon", "fosstodon"],
|
||||
"slug": "mastodon",
|
||||
"hex": "6364FF"
|
||||
},
|
||||
{
|
||||
"title": "Mercado Livre",
|
||||
"slug": "mercado_livre"
|
||||
},
|
||||
{
|
||||
"title": "Murena",
|
||||
"altNames": [
|
||||
"eCloud"
|
||||
],
|
||||
"slug": "ecloud"
|
||||
"slug": "mercado_livre",
|
||||
"altNames": ["Mercado Libre", "MercadoLibre", "MercadoLivre"]
|
||||
},
|
||||
{
|
||||
"title": "Microsoft"
|
||||
},
|
||||
{
|
||||
"title": "Migros"
|
||||
},
|
||||
{
|
||||
"title": "Mintos"
|
||||
},
|
||||
{
|
||||
"title": "Mozilla"
|
||||
},
|
||||
{
|
||||
"title": "Murena",
|
||||
"altNames": ["eCloud"],
|
||||
"slug": "ecloud"
|
||||
},
|
||||
{
|
||||
"title": "MyFRITZ!Net",
|
||||
"slug": "myfritz"
|
||||
},
|
||||
{
|
||||
"title": "Name.com",
|
||||
"slug": "name_com"
|
||||
},
|
||||
{
|
||||
"title": "NextDNS"
|
||||
},
|
||||
@@ -294,6 +330,14 @@
|
||||
{
|
||||
"title": "Proxmox"
|
||||
},
|
||||
{
|
||||
"title": "Real-Debrid",
|
||||
"slug": "real_debrid"
|
||||
},
|
||||
{
|
||||
"title": "Registro.br",
|
||||
"slug": "registro_br"
|
||||
},
|
||||
{
|
||||
"title": "Revolt",
|
||||
"hex": "858585"
|
||||
@@ -327,6 +371,9 @@
|
||||
"title": "Skiff",
|
||||
"hex": "EF5A3C"
|
||||
},
|
||||
{
|
||||
"title": "Skinport"
|
||||
},
|
||||
{
|
||||
"title": "Snapchat"
|
||||
},
|
||||
@@ -335,6 +382,9 @@
|
||||
"slug": "standardnotes",
|
||||
"hex": "2173E6"
|
||||
},
|
||||
{
|
||||
"title": "Surfshark"
|
||||
},
|
||||
{
|
||||
"title": "Synology DSM",
|
||||
"slug": "synology_dsm"
|
||||
@@ -345,7 +395,8 @@
|
||||
"hex": "FFFFFF"
|
||||
},
|
||||
{
|
||||
"title": "Techlore"
|
||||
"title": "Techlore",
|
||||
"altNames": ["Techlore Courses", "Techlore Forums"]
|
||||
},
|
||||
{
|
||||
"title": "Termius",
|
||||
@@ -379,6 +430,10 @@
|
||||
"title": "Ubisoft",
|
||||
"hex": "4285f4"
|
||||
},
|
||||
{
|
||||
"title": "Ubuntu One",
|
||||
"slug": "ubuntu_one"
|
||||
},
|
||||
{
|
||||
"title": "Unity",
|
||||
"hex": "858585"
|
||||
@@ -402,28 +457,26 @@
|
||||
"title": "WYZE",
|
||||
"slug": "wyze"
|
||||
},
|
||||
{
|
||||
"title": "WorkOS",
|
||||
"slug": "workos",
|
||||
"altNames": ["Work OS"]
|
||||
},
|
||||
{
|
||||
"title": "X",
|
||||
"altNames": [
|
||||
"twitter"
|
||||
],
|
||||
"altNames": ["twitter"],
|
||||
"slug": "x"
|
||||
},
|
||||
{
|
||||
"title": "Yandex",
|
||||
"altNames": [
|
||||
"Ya",
|
||||
"Яндекс"
|
||||
],
|
||||
"altNames": ["Ya", "Яндекс"],
|
||||
"slug": "Yandex"
|
||||
},
|
||||
{
|
||||
"title": "YNAB",
|
||||
"altNames": [
|
||||
"You Need A Budget"
|
||||
],
|
||||
"altNames": ["You Need A Budget"],
|
||||
"slug": "ynab",
|
||||
"hex": "3B5EDA"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 339 339">
|
||||
<defs />
|
||||
<defs>
|
||||
<linearGradient id="b" x1="193.9" x2="198.7" y1="166.8" y2="223.3" gradientTransform="rotate(5 4448 -4204) scale(2.93671)" gradientUnits="userSpaceOnUse" xlink:href="#a" />
|
||||
<linearGradient id="a">
|
||||
<stop offset="0" />
|
||||
<stop offset="1" stop-color="#fff9f9" stop-opacity="0" />
|
||||
</linearGradient>
|
||||
<linearGradient id="c" x1="167.8" x2="270.6" y1="76.9" y2="64.2" gradientTransform="rotate(5 465 -2050) scale(1.50082)" gradientUnits="userSpaceOnUse" xlink:href="#a" />
|
||||
</defs>
|
||||
<g transform="translate(0 42)">
|
||||
<path fill="url(#b)" d="M160 205l154 42-141 44-155-42z" />
|
||||
<path fill="url(#c)" d="M160-35v240l154 42 1-253z" />
|
||||
<path fill="none" stroke-width="1.2" d="M160 205V-35m0 240L18 249m142-44l154 41" />
|
||||
<path d="M84 109l35 54V98l21-7v91l-27 9-35-54v65l-21 6v-91z" />
|
||||
<rect width="86.1" height="12.6" x="185" y="97" fill="#bebebe" ry="2.3" transform="skewY(15) scale(.9669 1)" />
|
||||
<path fill="#bebebe" d="M181 169l99 26 2 3v8c0 1-1 2-2 1l-99-26-2-3v-7c0-2 1-2 2-2zm0-47l99 27 2 2v8l-2 2-99-27c-1 0-2-1-2-3v-7l2-2z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
3
auth/assets/custom-icons/icons/bitskins.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
28
auth/assets/custom-icons/icons/bitstamp.svg
Executable file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="layer" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 652 652" style="enable-background:new 0 0 652 652;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#003B2F;}
|
||||
</style>
|
||||
<path class="st0" d="M108.8,331.4c0-11.4-6.6-20.5-17.3-24.2c8.1-3.7,13.7-11.4,13.7-21.3c0-15.5-13-26.3-31.5-26.3H21v13.2
|
||||
c8.3,0,15,6.7,15,15s-6.7,15-15,15v11.9c8.3,0,15,6.7,15,15s-6.7,15-15,15V359h55c18.9,0,32.6-11.2,32.6-27.5 M49.3,273.9H71
|
||||
c8.9,0,15.2,5.8,15.2,13.9s-6.3,13.7-15.2,13.7H49.3C49.3,301.5,49.3,273.9,49.3,273.9z M49.3,344.5v-30H73
|
||||
c9.8,0,16.4,6.1,16.4,14.9s-6.6,15.1-16.4,15.1C73,344.5,49.3,344.5,49.3,344.5z M130.2,254.4c6.6,0,11.4,4.7,11.4,11.4
|
||||
s-4.7,11.4-11.4,11.4c-6.6,0-11.2-4.7-11.2-11.4S123.7,254.4,130.2,254.4 M120.7,286.5h18.9v72.4h-18.9V286.5L120.7,286.5z
|
||||
M176.2,286.4h20.1v14.4h-20.1v34.6c0,5.5,4.4,10.1,9.9,10.2c2.9,0,6.1-0.4,9.6-1.3l2.5,14.2c-5.8,1.5-11.2,2.2-16.4,2.2
|
||||
c-14.5,0-24.6-9.5-24.6-23.4v-67.4c0-2.6,2.1-4.7,4.7-4.7h14.2V286.4L176.2,286.4z M234.6,284.7c8.4,0,17.4,1.7,26.6,5l-4.1,13.6
|
||||
c-7.3-2.8-14.5-4.6-21-4.6c-6.5,0-11.2,3.1-11.2,7.8c0,13.1,38.7,3.6,38.7,31.6c0,13.2-11.9,22.5-29,22.5c-8.9,0-18.6-2-28.8-5.8
|
||||
l4-13.5c8.4,3.4,16.4,5.2,23.4,5.2c7,0,11.9-3.4,11.9-8.4c0-13.7-38.6-4.1-38.6-31.6c0-12.7,11.5-21.9,28.3-21.9 M293.7,286.4h20.1
|
||||
v14.4h-20.1v34.6c0,5.5,4.4,10.1,9.9,10.2c2.9,0,6.1-0.4,9.6-1.3l2.5,14.2c-5.8,1.5-11.2,2.2-16.4,2.2c-14.5,0-24.6-9.5-24.6-23.4
|
||||
v-67.4c0-2.7,2.2-4.7,4.7-4.7h14.2V286.4z M413.8,286.4h15.1l2.4,9.9c5.8-7.5,14.2-11.6,23.8-11.6c10.5,0,19,5,23.2,13.3
|
||||
c6.6-8.6,15.7-13.3,26.2-13.3c15.8,0,27.1,11,27.1,26.4v47.7h-18.9v-44.8c0-8.1-5.8-13.9-14-13.9c-9.6,0-16.4,7.3-16.4,17.6v41.1
|
||||
h-18.9v-44.8c0-8.1-5.8-13.9-13.9-13.9c-9.8,0-16.5,7.3-16.5,17.6v41.1h-18.9v-72.4H413.8z M547.1,286.4h15.1l2.4,9.3
|
||||
c5.3-7.1,13.6-11.1,23.2-11.1c19.5,0,33.3,15.7,33.3,38c0,22.3-13.7,37.9-33.3,37.9c-8.9,0-16.5-3.6-21.8-10v32.2
|
||||
c0,2.6-2.1,4.7-4.7,4.7H547L547.1,286.4L547.1,286.4z M582.8,299.6c-10,0-17.2,7.5-17.2,18.2v9.8c0,10.5,7.1,18.2,17.2,18.2
|
||||
c11.1,0,18.9-9.6,18.9-23C601.8,309.4,593.9,299.7,582.8,299.6 M378.1,327.5c0,10.5-7.1,18.2-17.2,18.2c-11.1,0-18.9-9.6-18.9-23
|
||||
c0-13.4,7.8-23.1,18.9-23.1c10,0,17.2,7.5,17.2,18.2V327.5L378.1,327.5z M396.7,323.3L396.7,323.3v-36.9h-15.1l-2.4,9.3
|
||||
c-5.3-7.1-13.6-11.1-23.2-11.1c-19.5,0-33.3,15.7-33.3,38c0,22.3,13.7,37.9,33.3,37.9c1.1,0,2.2,0,3.3-0.2
|
||||
c8.2-0.8,15.1-4.7,19.9-10.9l2.4,9.3h15.1L396.7,323.3L396.7,323.3z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
15
auth/assets/custom-icons/icons/changenow.svg
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
4
auth/assets/custom-icons/icons/coindcx.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 500 500">
|
||||
<path fill="#182954" d="m75.705 269.386 12.606 10.812a40.902 40.902 0 0 1-8.642 8.853 53.365 53.365 0 0 1-13.599 7.73 45.769 45.769 0 0 1-16.998 3.094 49.02 49.02 0 0 1-25.212-6.466A45.84 45.84 0 0 1 6.72 275.84a50.83 50.83 0 0 1-6.212-25.287 52.621 52.621 0 0 1 3.525-19.394 49.28 49.28 0 0 1 10.2-16.022 46.603 46.603 0 0 1 15.44-10.812 49.626 49.626 0 0 1 19.969-3.938 45.9 45.9 0 0 1 23.51 5.48A49.016 49.016 0 0 1 88.308 219.5l-12.744 11.244A39.368 39.368 0 0 0 64.938 220.2a27.358 27.358 0 0 0-15.296-3.933 27.636 27.636 0 0 0-16.147 4.632 30.695 30.695 0 0 0-10.478 12.508 38.957 38.957 0 0 0-3.688 16.879 36.724 36.724 0 0 0 3.684 16.442 29.719 29.719 0 0 0 10.184 11.793 27.208 27.208 0 0 0 15.44 4.358c4.608.197 9.203-.62 13.456-2.391a27.765 27.765 0 0 0 8.214-5.622l5.381-5.481M93.275 264.047a35.477 35.477 0 0 1 4.535-17.71 34.84 34.84 0 0 1 12.748-12.929 39.497 39.497 0 0 1 18.838-4.778 39.497 39.497 0 0 1 18.838 4.778 34.846 34.846 0 0 1 12.749 12.928 36.889 36.889 0 0 1 4.532 17.709 36.891 36.891 0 0 1-4.532 17.708 36.519 36.519 0 0 1-13.365 13.153 36.875 36.875 0 0 1-18.181 4.837 36.88 36.88 0 0 1-18.203-4.756 36.513 36.513 0 0 1-13.424-13.092 35.479 35.479 0 0 1-4.535-17.707v-.141zm35.979 21.224a16.949 16.949 0 0 0 10.623-3.23c2.804-2.121 5-4.93 6.375-8.151a24.848 24.848 0 0 0 2.124-9.698 24.293 24.293 0 0 0-2.124-9.697 20.265 20.265 0 0 0-6.375-8.15 19.056 19.056 0 0 0-10.623-3.233 19.057 19.057 0 0 0-10.625 3.233 20.118 20.118 0 0 0-6.231 8.009 24.296 24.296 0 0 0-2.125 9.697 24.713 24.713 0 0 0 2.125 9.839 19.985 19.985 0 0 0 6.374 8.15 16.949 16.949 0 0 0 10.624 3.231M168.905 202.628h16.856v17.71h-16.856v-17.71zm0 28.11h16.856v66.758h-16.856v-66.758zM192.416 297.495V230.88h16.147l.42 7.589a35.937 35.937 0 0 1 7.505-5.905 23.656 23.656 0 0 1 12.749-3.094 24.38 24.38 0 0 1 10.396 1.612 24.22 24.22 0 0 1 8.726 5.836 29.047 29.047 0 0 1 6.66 20.097v40.477H238.02v-40.335a13.257 13.257 0 0 0-.76-5.278 13.337 13.337 0 0 0-2.78-4.561 12.19 12.19 0 0 0-4.164-2.694 12.27 12.27 0 0 0-4.902-.82 14.974 14.974 0 0 0-6.377 1.24 14.87 14.87 0 0 0-5.236 3.82 18.046 18.046 0 0 0-4.534 12.51v36.118l-16.851.004z"/>
|
||||
<path fill="#FA4A29" d="m463.25 246.618 29.754-44.007h-28.187l-15.44 24.596-15.883-24.596h-31.163l1.416 1.967-.993-.416a63.329 63.329 0 0 0-23.083-4.046 50.453 50.453 0 0 0-25.92 6.607 46.609 46.609 0 0 0-14.308 12.929 40.334 40.334 0 0 0-15.582-11.806 65.028 65.028 0 0 0-26.344-5.077h-36.686v94.727h36.544a64.026 64.026 0 0 0 26.344-5.202A41.612 41.612 0 0 0 339.3 280.63c3.87 5.299 8.846 9.709 14.59 12.928a51.44 51.44 0 0 0 25.777 6.325 55.023 55.023 0 0 0 24.646-5.34l-1.982 2.953h27.76l18.558-29.108 19.122 29.108h31.73l-36.252-50.878zm-147.452 21.624a25.772 25.772 0 0 1-8.902 5.504 25.916 25.916 0 0 1-10.376 1.523h-10.334v-50.573h10.338c3.62-.305 7.264.165 10.685 1.378a25.427 25.427 0 0 1 9.147 5.65 26.146 26.146 0 0 1 6.374 18.271 24.821 24.821 0 0 1-1.597 9.836 24.965 24.965 0 0 1-5.343 8.436l.008-.025zm101.549 6.911-12.04-11.228a38.572 38.572 0 0 1-10.197 9.149 27.09 27.09 0 0 1-13.6 2.952 25.509 25.509 0 0 1-13.314-3.372 22.838 22.838 0 0 1-8.8-9.415 29.459 29.459 0 0 1-3.118-13.63c-.091-4.623.929-9.2 2.975-13.353a23.258 23.258 0 0 1 8.642-9.415 25.653 25.653 0 0 1 13.738-3.513 24.798 24.798 0 0 1 12.748 3.23 32.061 32.061 0 0 1 9.639 8.733l12.606-12.508 18.415 26.28-17.694 26.09z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
8
auth/assets/custom-icons/icons/directadmin.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg width="100" height="100" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="rotate(-45 57.071 32.929)">
|
||||
<path fill="#31B7E9" d="m20 0v20h-20v18h40v-38z"/>
|
||||
<rect fill="#0682B4" y="36" width="40" height="4"/>
|
||||
<path fill="#31B7E9" d="m50 0v50h-50v18h70v-68z"/>
|
||||
<rect fill="#0682B4" y="66" width="70" height="4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 378 B |
1
auth/assets/custom-icons/icons/dmarket.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 2000 1948.02"><defs><style>.cls-1,.cls-2{opacity:0.25;isolation:isolate;}.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:url(#linear-gradient-3);}.cls-4{fill:url(#linear-gradient-4);}</style><linearGradient id="linear-gradient" x1="83.62" y1="947.07" x2="878.54" y2="947.07" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#00ba96"/><stop offset="0.52" stop-color="#00d9af"/><stop offset="1" stop-color="#00d9af"/></linearGradient><linearGradient id="linear-gradient-2" x1="1144.49" y1="948.99" x2="2001.4" y2="948.99" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#008d85"/><stop offset="1" stop-color="#00ffe0"/></linearGradient><linearGradient id="linear-gradient-3" x1="250.91" y1="949" x2="1904.03" y2="949" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#008d94"/><stop offset="1" stop-color="#00ffe0"/></linearGradient><linearGradient id="linear-gradient-4" y1="947.06" x2="794.89" y2="947.06" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#00ba96"/><stop offset="0.52" stop-color="#00d9af"/><stop offset="1" stop-color="#00faaf"/></linearGradient></defs><title>dmt</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M857,890.24,625.08,489,389.28,83.76a168.38,168.38,0,0,0-54.57-56.49h-1.95a148.49,148.49,0,0,0-56.52,58.44L100.85,389.6a138.94,138.94,0,0,0,0,140.26L311.32,894.13c15.59,25.32,21.44,54.54,21.44,83.76h0a178.34,178.34,0,0,1-21.44,83.76L102.8,1422a138.94,138.94,0,0,0,0,140.26l175.39,303.89c13.64,23.38,33.13,44.8,56.52,58.44h2c23.39-13.64,40.93-33.12,54.57-56.49l233.86-405.18L857,1057.76A171,171,0,0,0,857,890.24Z"/><path class="cls-2" d="M1975.62,878.55,1741.76,475.31,1502.06,60.39a171.53,171.53,0,0,0-42.87-48.7C1449.44,3.9,1439.69,0,1428,0c-122.78,0-206.58,3.9-268.94,3.9-9.74,0-15.59,11.69-13.64,21.43l60.41,339c0,3.9,0,7.79-1.95,11.69-23.39,42.86-21.44,95.45,3.9,138.31l214.37,374c15.59,27.27,23.39,56.49,23.39,85.71s-7.8,58.44-23.39,85.71l-216.32,374c-25.33,42.86-25.33,95.45-3.9,138.31,2,3.9,2,7.79,2,11.69l-60.41,337c-2,9.74,3.9,21.43,13.64,21.43,56.52,0-23.39,5.84,276.73,5.84,5.85,0,13.64-2,19.49-3.9,21.44-7.79,35.08-33.12,46.77-54.54l239.71-416.87,231.91-403.24c37-58.47,37-130.53,3.9-190.92"/><path class="cls-3" d="M1880.13,890.24,1414.36,83.76C1385.13,33.12,1330.56,0,1270.15,0H338.61c-31.18,0-60.41,9.74-87.7,25.32v1.95a168.38,168.38,0,0,1,54.57,56.49L539.34,489c21.44-9.74,46.77-15.58,70.16-15.58H995.36c60.41,0,115,31.17,144.21,83.76L1332.5,890.24c29.23,50.65,29.23,114.93,0,167.53l-192.93,333.11c-29.23,50.65-85.75,83.76-144.21,83.76H611.44a168.21,168.21,0,0,1-70.16-15.58L307.43,1864.24a168.38,168.38,0,0,1-54.57,56.49v2c25.33,15.58,56.52,25.32,87.7,25.32H1274c60.41,0,115-31.17,144.21-83.76L1884,1057.76c27.31-52.59,27.31-114.93-3.87-167.52"/><path class="cls-4" d="M771.25,890.24,539.34,489,305.48,83.76a168.38,168.38,0,0,0-54.57-56.49H249a148.49,148.49,0,0,0-56.52,58.44L19,387.65a138.94,138.94,0,0,0,0,140.26L229.47,892.18c15.59,25.32,21.44,54.54,21.44,83.76h0a178.34,178.34,0,0,1-21.44,83.76L19,1422a138.94,138.94,0,0,0,0,140.26l175.4,303.92c13.64,23.38,33.13,44.8,56.52,58.44h2c23.39-13.64,40.93-33.12,54.57-56.49L541.3,1463l231.9-401.29C802.43,1005.17,802.43,942.83,771.25,890.24Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
1
auth/assets/custom-icons/icons/doppler.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" height="800" viewBox="0 0 800 800" width="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="0" cy="0" gradientTransform="matrix(-423.0004 -300.00003 172.7003 -243.50762 861 448)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5926"/><stop offset="1" stop-color="#ea5a25" stop-opacity="0"/></radialGradient><radialGradient id="b" cx="0" cy="0" gradientTransform="matrix(-318.99928 -110.0022 110.0022 -318.99928 800 736)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5a25"/><stop offset="1" stop-color="#ed5a21" stop-opacity="0"/></radialGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="505" x2="1.46826" y1="-305" y2="800.669"><stop offset="0" stop-color="#ff9efa"/><stop offset=".426562" stop-color="#ac50f7"/><stop offset=".646435" stop-color="#6b13f5"/></linearGradient><clipPath id="d"><path d="m0 0h500v500h-500z" transform="translate(150 150)"/></clipPath><rect fill="url(#c)" height="800" rx="400" width="800"/><rect fill="url(#a)" height="800" rx="400" width="800"/><rect fill="url(#b)" height="800" rx="400" width="800"/><g clip-path="url(#d)" fill="#fff"><path d="m467.396 151.3c-21.021-5.632-42.449 7.589-46.843 28.903l-19.94 96.716c-13.025 63.174-62.376 112.549-125.545 125.603l-94.873 19.607c-21.312 4.405-34.527 25.833-28.894 46.854 5.633 21.023 27.796 32.974 48.456 26.128l92.327-30.593c61.386-20.341 128.989-2.227 171.981 46.082l64.666 72.664c14.467 16.255 39.63 16.987 55.017 1.6 15.39-15.389 14.655-40.558-1.607-55.023l-73.135-65.056c-48.44-43.09-66.604-110.866-46.202-172.405l30.71-92.633c6.847-20.655-5.099-42.815-26.118-48.447z"/><path d="m216.103 272.283c-17.191-15.554-17.86-42.331-1.467-58.723 16.393-16.393 43.169-15.724 58.723 1.467l48.898 54.045c13.189 14.578 12.631 36.937-1.27 50.838s-36.261 14.46-50.839 1.271zm380.232 29.881c22.065-7.11 45.589 5.698 51.589 28.091s-7.967 45.248-30.632 50.122l-71.253 15.325c-19.22 4.133-38.305-7.53-43.393-26.52-5.088-18.989 5.608-38.632 24.32-44.662zm-217.826 315.811c-4.875 22.664-27.73 36.632-50.122 30.632-22.393-6-35.202-29.524-28.091-51.589l22.355-69.37c6.03-18.711 25.673-29.407 44.663-24.319 18.989 5.088 30.653 24.173 26.519 43.392z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
5
auth/assets/custom-icons/icons/gmx.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="512" cy="512" r="512" style="fill:#004788"/>
|
||||
<path d="m736.6 506.6 50.1-83.3h-51.1L709 465.6l-28.6-42.3h-56l59 83.2-59 93.9h56l31.9-53.4 37.8 53.4h50l-63.5-93.8zm-185.1-83.4-38 94.8-36-94.8h-45.4L402 600.6h45.9l14.8-102.2h.5l40.7 102.2h18.4l42.6-102.2h.6l12.9 102.2h46.1l-26.9-177.4h-46.1zm-233.8 78.5v36.1h37.6c-2 20.2-17.3 30.6-37.1 30.6-30.1 0-46.4-27.7-46.4-55.2s15.6-55.6 45.7-55.6c18.5 0 31.7 11.2 38.1 27.9l43.5-18.2c-15.2-32.9-43.2-49.2-79.5-49.2-56.8 0-95.5 37.6-95.5 94.8 0 55.4 38.5 93 93.9 93 29.4 0 55.4-10.5 72.6-34.6 15.4-21.8 17.6-43.9 18-69.7h-90.9z" style="fill:#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 825 B |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 8.0 KiB |
1
auth/assets/custom-icons/icons/hivelocity.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="logosandtypes_com" data-name="logosandtypes com" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150"><defs><style>.cls-1{fill:none;}.cls-2{fill:#e31937;}</style></defs><g id="Layer_2" data-name="Layer 2"><path id="Layer_3" data-name="Layer 3" class="cls-1" d="M0,0H150V150H0Z" transform="translate(0 0)"/></g><rect class="cls-2" x="13.34" y="14.37" width="15.01" height="123.08"/><rect class="cls-2" x="122.92" y="14.37" width="15.01" height="123.08"/><rect class="cls-2" x="43.36" y="54.9" width="64.54" height="15.01"/><rect class="cls-2" x="43.36" y="83.42" width="64.54" height="15.01"/></svg>
|
||||
|
After Width: | Height: | Size: 611 B |
6
auth/assets/custom-icons/icons/itch_io.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="235.452" width="261.728"
|
||||
viewBox="0 0 245.371 220.736">
|
||||
<path
|
||||
d="M31.99 1.365C21.287 7.72.2 31.945 0 38.298v10.516C0 62.144 12.46 73.86 23.773 73.86c13.584 0 24.902-11.258 24.903-24.62 0 13.362 10.93 24.62 24.515 24.62 13.586 0 24.165-11.258 24.165-24.62 0 13.362 11.622 24.62 25.207 24.62h.246c13.586 0 25.208-11.258 25.208-24.62 0 13.362 10.58 24.62 24.164 24.62 13.585 0 24.515-11.258 24.515-24.62 0 13.362 11.32 24.62 24.903 24.62 11.313 0 23.773-11.714 23.773-25.046V38.298c-.2-6.354-21.287-30.58-31.988-36.933C180.118.197 157.056-.005 122.685 0c-34.37.003-81.228.54-90.697 1.365zm65.194 66.217a28.025 28.025 0 0 1-4.78 6.155c-5.128 5.014-12.157 8.122-19.906 8.122a28.482 28.482 0 0 1-19.948-8.126c-1.858-1.82-3.27-3.766-4.563-6.032l-.006.004c-1.292 2.27-3.092 4.215-4.954 6.037a28.5 28.5 0 0 1-19.948 8.12c-.934 0-1.906-.258-2.692-.528-1.092 11.372-1.553 22.24-1.716 30.164l-.002.045c-.02 4.024-.04 7.333-.06 11.93.21 23.86-2.363 77.334 10.52 90.473 19.964 4.655 56.7 6.775 93.555 6.788h.006c36.854-.013 73.59-2.133 93.554-6.788 12.883-13.14 10.31-66.614 10.52-90.474-.022-4.596-.04-7.905-.06-11.93l-.003-.045c-.162-7.926-.623-18.793-1.715-30.165-.786.27-1.757.528-2.692.528a28.5 28.5 0 0 1-19.948-8.12c-1.862-1.822-3.662-3.766-4.955-6.037l-.006-.004c-1.294 2.266-2.705 4.213-4.563 6.032a28.48 28.48 0 0 1-19.947 8.125c-7.748 0-14.778-3.11-19.906-8.123a28.025 28.025 0 0 1-4.78-6.155 27.99 27.99 0 0 1-4.736 6.155 28.49 28.49 0 0 1-19.95 8.124c-.27 0-.54-.012-.81-.02h-.007c-.27.008-.54.02-.813.02a28.49 28.49 0 0 1-19.95-8.123 27.992 27.992 0 0 1-4.736-6.155zm-20.486 26.49l-.002.01h.015c8.113.017 15.32 0 24.25 9.746 7.028-.737 14.372-1.105 21.722-1.094h.006c7.35-.01 14.694.357 21.723 1.094 8.93-9.747 16.137-9.73 24.25-9.746h.014l-.002-.01c3.833 0 19.166 0 29.85 30.007L210 165.244c8.504 30.624-2.723 31.373-16.727 31.4-20.768-.773-32.267-15.855-32.267-30.935-11.496 1.884-24.907 2.826-38.318 2.827h-.006c-13.412 0-26.823-.943-38.318-2.827 0 15.08-11.5 30.162-32.267 30.935-14.004-.027-25.23-.775-16.726-31.4L46.85 124.08C57.534 94.073 72.867 94.073 76.7 94.073zm45.985 23.582v.006c-.02.02-21.863 20.08-25.79 27.215l14.304-.573v12.474c0 .584 5.74.346 11.486.08h.006c5.744.266 11.485.504 11.485-.08v-12.474l14.304.573c-3.928-7.135-25.79-27.215-25.79-27.215v-.006l-.003.002z"
|
||||
color="#000" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
24
auth/assets/custom-icons/icons/local_wp.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="320px" height="320px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g><path style="opacity:0.992" fill="#52bb7b" d="M 146.5,-0.5 C 155.167,-0.5 163.833,-0.5 172.5,-0.5C 183.052,2.2756 192.719,6.94227 201.5,13.5C 234.5,46.5 267.5,79.5 300.5,112.5C 318.79,135.86 322.456,161.527 311.5,189.5C 308.11,195.357 304.443,201.023 300.5,206.5C 268.052,239.07 235.385,271.404 202.5,303.5C 201.614,304.325 201.281,305.325 201.5,306.5C 197.68,307.84 194.347,310.006 191.5,313C 185.322,315.892 178.989,318.059 172.5,319.5C 163.833,319.5 155.167,319.5 146.5,319.5C 139.355,317.751 132.355,315.418 125.5,312.5C 125.5,311.5 125.5,310.5 125.5,309.5C 122.643,308.667 119.977,307.334 117.5,305.5C 84.5,272.5 51.5,239.5 18.5,206.5C 0.210219,183.14 -3.45645,157.473 7.5,129.5C 10.89,123.643 14.5567,117.977 18.5,112.5C 51.5,79.5 84.5,46.5 117.5,13.5C 126.281,6.94227 135.948,2.2756 146.5,-0.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#fafdfb" d="M 151.5,41.5 C 152.47,57.4524 152.803,73.4524 152.5,89.5C 129.661,112.506 106.994,135.672 84.5,159C 105.661,180.994 126.994,202.828 148.5,224.5C 149.031,226.544 150.198,228.211 152,229.5C 152.5,244.496 152.667,259.496 152.5,274.5C 152.141,276.371 151.141,277.871 149.5,279C 146.833,279.667 144.167,279.667 141.5,279C 111.333,248.833 81.1667,218.667 51,188.5C 47.074,183.63 43.4073,178.63 40,173.5C 34.8493,157.438 38.1826,143.438 50,131.5C 80.1667,101.333 110.333,71.1667 140.5,41C 143.702,39.5167 147.036,39.1834 150.5,40C 151.056,40.3826 151.389,40.8826 151.5,41.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#fbfdfc" d="M 279.5,148.5 C 280.903,153.387 281.569,158.387 281.5,163.5C 279.693,171.198 276.193,178.198 271,184.5C 239.5,216 208,247.5 176.5,279C 173.833,279.667 171.167,279.667 168.5,279C 167.177,278.184 166.511,277.017 166.5,275.5C 166.197,259.786 166.531,244.119 167.5,228.5C 189.951,205.881 212.284,183.048 234.5,160C 212.374,136.874 189.874,114.04 167,91.5C 166.536,90.9056 166.369,90.2389 166.5,89.5C 166.212,73.4649 166.545,57.4649 167.5,41.5C 167.611,40.8826 167.944,40.3826 168.5,40C 171.964,39.1834 175.298,39.5167 178.5,41C 208.667,71.1667 238.833,101.333 269,131.5C 271.667,134.833 274.333,138.167 277,141.5C 278.411,143.65 279.245,145.984 279.5,148.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#cfecdb" d="M 151.5,41.5 C 152.117,41.6107 152.617,41.944 153,42.5C 153.828,58.3388 153.661,74.0054 152.5,89.5C 152.803,73.4524 152.47,57.4524 151.5,41.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#cfecda" d="M 167.5,41.5 C 166.545,57.4649 166.212,73.4649 166.5,89.5C 165.339,74.0054 165.172,58.3388 166,42.5C 166.383,41.944 166.883,41.6107 167.5,41.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#57bd7e" d="M 138.5,63.5 C 139.654,69.987 139.821,76.6536 139,83.5C 114.597,107.948 90.0967,132.281 65.5,156.5C 62.1667,161.167 58.8333,165.833 55.5,170.5C 50.2141,162.481 50.3807,154.481 56,146.5C 83.2852,118.477 110.785,90.8102 138.5,63.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#59be80" d="M 179.5,63.5 C 180.473,63.9867 181.473,64.4867 182.5,65C 203.99,87.4562 225.823,109.623 248,131.5C 250.67,138.156 249.67,144.156 245,149.5C 223.333,127.833 201.667,106.167 180,84.5C 179.5,77.5079 179.334,70.5079 179.5,63.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#fafdfb" d="M 144.5,113.5 C 153.839,113.334 163.173,113.5 172.5,114C 173.416,114.374 174.25,114.874 175,115.5C 175.667,118.167 175.667,120.833 175,123.5C 164.243,124.653 153.41,124.82 142.5,124C 140.522,121.503 140.022,118.669 141,115.5C 142.302,114.915 143.469,114.249 144.5,113.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#f2faf4" d="M 122.5,142.5 C 122.287,139.549 122.954,136.882 124.5,134.5C 147.094,133.345 169.761,133.178 192.5,134C 193.416,134.374 194.25,134.874 195,135.5C 195.667,137.833 195.667,140.167 195,142.5C 194.5,143.667 193.667,144.5 192.5,145C 170.167,145.667 147.833,145.667 125.5,145C 124.309,144.302 123.309,143.469 122.5,142.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#addfc0" d="M 124.5,134.5 C 122.954,136.882 122.287,139.549 122.5,142.5C 120.816,139.282 121.483,136.615 124.5,134.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#57bd7f" d="M 265.5,151.5 C 267.083,157.318 266.75,162.985 264.5,168.5C 262.887,171.286 261.054,173.953 259,176.5C 232.986,202.68 206.82,228.68 180.5,254.5C 179.167,247.833 179.167,241.167 180.5,234.5C 206.181,209.652 231.348,184.319 256,158.5C 258.478,155.71 260.312,152.544 261.5,149C 263.615,148.464 264.948,149.297 265.5,151.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#f1f9f4" d="M 105.5,153.5 C 141.168,153.333 176.835,153.5 212.5,154C 215.57,156.569 216.237,159.736 214.5,163.5C 213.975,164.192 213.308,164.692 212.5,165C 176.833,165.667 141.167,165.667 105.5,165C 100.193,161.036 100.193,157.202 105.5,153.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#94d5ad" d="M 279.5,148.5 C 281.13,150.026 281.963,152.026 282,154.5C 282.805,157.696 282.638,160.696 281.5,163.5C 281.569,158.387 280.903,153.387 279.5,148.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#a5dcba" d="M 265.5,151.5 C 266.117,151.611 266.617,151.944 267,152.5C 269.288,158.528 268.454,163.861 264.5,168.5C 266.75,162.985 267.083,157.318 265.5,151.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#5abe80" d="M 73.5,169.5 C 95.4114,190.911 117.245,212.577 139,234.5C 139.667,241.5 139.667,248.5 139,255.5C 115.895,233.306 93.2279,210.64 71,187.5C 69.4661,183.289 69.1327,178.956 70,174.5C 70.6972,172.416 71.8639,170.749 73.5,169.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#fefefe" d="M 122.5,182.5 C 122.448,180.097 122.781,177.764 123.5,175.5C 146.761,174.345 170.094,174.178 193.5,175C 196.167,178.333 196.167,181.667 193.5,185C 170.5,185.667 147.5,185.667 124.5,185C 123.619,184.292 122.953,183.458 122.5,182.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#a0dab7" d="M 123.5,175.5 C 122.781,177.764 122.448,180.097 122.5,182.5C 121.853,181.726 121.52,180.726 121.5,179.5C 121.34,177.645 122.007,176.312 123.5,175.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#fbfdfc" d="M 143.5,194.5 C 153.506,194.334 163.506,194.5 173.5,195C 176.936,198.06 177.269,201.393 174.5,205C 164.167,205.667 153.833,205.667 143.5,205C 141.09,204.242 140.09,202.575 140.5,200C 140.12,197.297 141.12,195.463 143.5,194.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#d2eddd" d="M 148.5,224.5 C 150.129,225.625 151.629,226.959 153,228.5C 153.828,244.006 153.661,259.339 152.5,274.5C 152.667,259.496 152.5,244.496 152,229.5C 150.198,228.211 149.031,226.544 148.5,224.5 Z"/></g>
|
||||
<g><path style="opacity:1" fill="#d1eddc" d="M 167.5,228.5 C 166.531,244.119 166.197,259.786 166.5,275.5C 165.339,260.339 165.172,245.006 166,229.5C 166.383,228.944 166.883,228.611 167.5,228.5 Z"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.8 KiB |
3
auth/assets/custom-icons/icons/marketplacedottf.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 5.0 KiB |
19
auth/assets/custom-icons/icons/migros.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.0"
|
||||
width="602.36218"
|
||||
height="139.53543"
|
||||
id="svg3058">
|
||||
<defs
|
||||
id="defs3060" />
|
||||
<g
|
||||
id="layer1">
|
||||
<path
|
||||
d="M 106.369,119.88512 L 106.369,62.018665 L 81.544594,119.88512 L 67.772114,119.88512 L 43.359087,62.018665 L 43.359087,119.88512 L 17.716529,119.88512 L 17.716529,19.650275 L 52.045504,19.650275 L 75.627274,76.245395 L 100.30782,19.650275 L 132.00731,19.650275 L 132.00731,119.88512 L 106.369,119.88512 z M 151.74424,119.88514 L 151.74424,19.650295 L 173.67129,19.650295 C 175.59247,19.650295 177.51259,21.571475 177.51259,23.661675 L 177.51259,119.88514 L 151.74424,119.88514 z M 248.65971,62.160065 L 281.25389,62.160065 C 283.82526,62.160065 285.27873,64.264785 285.27873,66.736595 L 285.27873,118.51459 C 276.11148,120.56404 261.78448,121.82085 251.13365,121.82085 C 213.76593,121.82085 194.05842,104.00581 194.05842,69.633955 C 194.05948,38.962025 213.76593,17.714585 246.61239,17.714585 C 261.08007,17.714585 273.76688,21.571475 281.93349,27.080965 L 271.83223,44.330845 C 264.76546,41.165965 255.25983,38.962025 248.53357,38.962025 C 229.64739,38.962025 220.81534,51.492935 220.81534,69.633955 C 220.81534,89.002025 231.04275,100.96814 249.90412,100.96814 C 253.35105,100.96814 257.64767,100.84093 261.08007,100.30377 L 261.08007,82.644625 L 248.65971,82.644625 L 248.65971,62.160065 z M 342.46983,38.962025 L 329.85459,38.962025 L 329.85459,64.094705 L 342.46983,64.094705 C 349.99971,64.094705 355.91916,60.082975 355.91916,50.546515 C 355.92022,40.883215 349.99865,38.962025 342.46983,38.962025 z M 361.45735,119.88514 L 349.56211,92.294115 C 347.1314,86.671595 345.43451,83.888325 340.27794,83.888325 L 329.85459,83.888325 L 329.85459,119.88514 L 304.66452,119.88514 L 304.66452,23.661675 C 304.66452,21.571475 306.95349,19.650295 308.59192,19.650295 L 344.15113,19.650295 C 363.47597,19.650295 380.04625,23.661675 380.04625,48.611165 C 380.04625,59.785695 373.86247,71.230215 362.26026,73.547185 C 368.0401,75.510535 373.86247,82.913205 377.01176,90.951915 L 388.47046,119.88514 L 361.45735,119.88514 z M 444.16061,38.962025 C 430.64148,38.962025 421.01998,48.611165 421.01998,69.633955 C 421.02105,90.951915 430.64042,100.57341 444.15991,100.57341 C 455.75892,100.57341 465.25215,90.951915 465.25215,69.633955 C 465.25321,48.611165 455.75892,38.962025 444.16061,38.962025 z M 444.16061,121.82085 C 411.34321,121.82085 393.97817,98.638055 393.97817,69.633955 C 393.97817,40.883215 411.34215,17.714585 444.15991,17.714585 C 474.90235,17.714585 492.29396,40.883215 492.29396,69.633955 C 492.29502,98.636985 474.90128,121.82085 444.16061,121.82085 z M 541.64053,121.82085 C 524.689,121.82085 508.94892,115.74656 501.92857,110.91455 L 513.3575,90.655685 C 519.73014,94.512575 532.13207,100.4455 543.56101,100.4455 C 550.03179,100.4455 558.21187,99.202855 558.21187,92.012065 C 558.21187,85.258875 549.07227,83.196315 537.08986,79.762855 C 522.62431,75.623205 505.78439,69.859315 505.78439,50.405135 C 505.7851,29.439745 524.41723,17.714585 548.66337,17.714585 C 564.66778,17.714585 577.07254,23.378915 583.4023,29.439745 L 569.48526,45.277265 C 562.60593,41.165965 555.57104,37.973445 547.68719,37.973445 C 538.19396,37.973445 532.82585,41.576285 532.82585,46.816835 C 532.82691,52.015925 539.70518,54.671985 548.37813,57.285175 C 563.71002,62.018685 584.64565,66.850335 584.64565,86.926005 C 584.64671,107.60829 568.11435,121.82085 541.64053,121.82085 z "
|
||||
style="fill:#f60;fill-opacity:1;fill-rule:evenodd"
|
||||
id="polygon3036" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
25
auth/assets/custom-icons/icons/name_com.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<svg enable-background="new 0 0 1510.1 240.3" viewBox="0 0 1510.1 240.3"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m873.5 203.7c0 16.2-11.9 29.1-28.9 29.1-16.4 0-28.6-12.9-28.6-29.1s12.2-30 28.6-30c17 0 28.9 13.7 28.9 30z"
|
||||
fill="#6eda78" />
|
||||
<g fill="#282828">
|
||||
<path
|
||||
d="m9.7 229v-135.4l38.7-9.4-5.9 43.6h4.2c2.4-10.1 6.2-18.6 11.3-25.7 5.2-7 11.8-12.4 19.8-16 8.2-3.8 17.6-5.7 28.4-5.7 14 0 26.1 3.2 36.3 9.7 10.1 6.3 17.9 15.5 23.3 27.7 5.6 12 8.3 26.3 8.3 43.1v68.1h-38.5v-57.9c0-11.2-1.7-20.7-5.1-28.5-3.4-8-8.4-14-14.9-18-6.5-4.2-14.4-6.3-23.5-6.3-13.7 0-24.4 4.6-32.1 13.7s-11.5 22.1-11.5 39.1v57.9z" />
|
||||
<path clip-rule="evenodd"
|
||||
d="m252.4 232.7c-19.6 0-36.4-3.9-45.7-11.7-9.3-8-14-18.7-14-32.2 0-13.1 4.7-23.6 14-31.4 25.1-21.6 103.6-13.3 108.6-11.6 0-3.3-.2-8.9-3.5-14.4-7.9-13.8-24.3-19.7-39-19.7-12.3 0-25.3 6.1-32.9 15.4-3 3.7-5.5 9.1-5.5 9.1h-36.8c.6-7 4.6-18.4 10.7-27 6-8.7 15.4-16.1 27-21.2 11.8-5.3 20.7-7.6 38-7.6 18 0 31.8 3 43.9 9.1s21.1 14.6 26.9 25.7c5.9 11 8.8 24 8.8 38.8v23.3 52h-37.7l6-30.9h-4.1c-1.9 8.5-5.4 14.9-9.6 19.6-4.3 4.7-9.8 7.6-19.5 10.5-9.5 2.8-21.4 4.2-35.6 4.2zm-23.2-46.4c-2-32.9 77-23.3 86.1-22.2 0 4.8-.3 9.5-1.4 14-5.8 23.3-38.1 28.4-58 26.6-14.5-1.3-26-6.6-26.7-18.4z"
|
||||
fill-rule="evenodd" />
|
||||
<path
|
||||
d="m375.3 94.7v134.3h38.7v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.6-6.8 13.1-10.3 22.5-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.6 5.7 3.9 12.6 3.9 20.8v71.9h38.5v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.7-6.8 13.3-10.3 22.8-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.4 5.7 3.7 12.6 3.7 20.8v71.9h38.7v-82.1c0-14.1-2.2-26-6.6-35.9-4.2-10.1-10.3-17.7-18.1-22.8s-17.1-7.7-27.9-7.7c-13.1 0-23.8 3.5-32.1 10.6-8.2 6.8-14 17.1-17.4 30.8h-3.4c-1.1-7.8-3.8-14.7-7.8-20.8-4.1-6.3-9.6-11.2-16.4-14.8-6.7-3.8-14.7-5.7-24-5.7-12.7 0-23.1 3.4-31.1 10.3-8 6.7-13.7 16.5-17.1 29.7h-4.2l5.1-36.2z" />
|
||||
<path clip-rule="evenodd"
|
||||
d="m718.3 232.7c-18 0-33.4-3.3-46.3-10-12.7-6.8-22.4-16-28.9-27.4-6.5-11.6-9.8-24.5-9.8-38.8s3.3-27.1 9.8-38.5c6.5-11.6 16.2-20.7 29.1-27.4 12.9-6.8 28.4-10.3 46.5-10.3s33.6 3.4 46.3 10.3c12.9 6.7 22.6 15.8 29.2 27.4 6.5 11.6 9.8 24.6 9.8 39.1 0 4-.7 10.2-.7 10.2h-133.4c.9 4.3 2.4 8.3 4.5 12.1 3.8 6.5 9.3 11.6 16.7 15.4 7.5 3.6 16.8 5.4 27.9 5.4 12.6 0 22.2-1.7 28.9-5.1 5.2-2.7 9.5-5.9 13-9.5h39.1c-2.6 6.7-6.7 13.4-12.2 20-6.4 7.6-15.4 14.1-27.2 19.4-11.5 5.2-25.6 7.7-42.3 7.7zm-43.8-98.3c-1.4 2.4-2.9 6.1-3.4 8.8h47.6 47.6c-.6-2.7-2-6.4-3.4-8.8-3.8-6.7-9.3-11.8-16.7-15.4-7.3-3.8-16.5-5.7-27.4-5.7-11.1 0-20.3 1.9-27.7 5.7-7.3 3.6-12.9 8.7-16.6 15.4z"
|
||||
fill-rule="evenodd" />
|
||||
<path
|
||||
d="m896.2 195.4c6.5 11.4 16.1 20.5 28.7 27.4 12.7 6.7 28.1 10 46.1 10 16 0 30.1-2.8 42.4-8.3 12.2-5.5 22-13.2 29.2-23.1s11.4-21.1 12.7-33.6h-38.7c-1.5 8.4-6.1 15.4-14 21.1-7.8 5.7-18.4 8.6-31.6 8.6-9.8 0-18.1-1.8-25-5.4-6.9-3.8-12.1-8.7-15.7-14.8s-5.4-12.9-5.4-20.5c0-7.4 1.8-14.2 5.4-20.2 3.6-6.3 8.8-11.2 15.7-14.8s15.2-5.4 25-5.4c8.8 0 16.5 1.4 23 4.3 6.5 2.7 11.7 6.2 15.4 10.6 3.8 4.4 6.1 9.3 7.1 14.8h38.7c-1.3-12.7-5.6-24-12.7-33.6-7.2-9.9-16.9-17.6-29.2-23.1-12.2-5.7-26.4-8.6-42.4-8.6-18 0-33.3 3.4-46.1 10.3-12.6 6.7-22.1 15.8-28.7 27.4-6.5 11.6-9.8 24.4-9.8 38.5.1 13.9 3.4 26.8 9.9 38.4z" />
|
||||
<path clip-rule="evenodd"
|
||||
d="m1159.2 232.7c-18.6 0-34.5-3.3-47.5-10-13.1-6.8-22.9-16-29.6-27.4-6.5-11.6-9.8-24.5-9.8-38.8s3.3-27.1 9.8-38.5c6.7-11.6 16.6-20.7 29.6-27.4 13.1-6.8 28.9-10.3 47.5-10.3 18.5 0 34.2 3.4 47.3 10.3 13.1 6.7 22.9 15.8 29.4 27.4 6.7 11.4 10 24.2 10 38.5s-3.3 27.2-10 38.8c-6.5 11.4-16.3 20.5-29.4 27.4-13 6.7-28.8 10-47.3 10zm0-35.3c10.3 0 19-1.8 26.2-5.4 7.3-3.6 12.8-8.5 16.4-14.5 3.8-6.1 5.6-13 5.6-20.8 0-7.4-1.9-14.2-5.6-20.2-3.6-6.3-9.1-11.2-16.4-14.8-7.2-3.6-15.9-5.4-26.2-5.4-10.5 0-19.4 1.8-26.7 5.4-7.2 3.6-12.7 8.6-16.4 14.8-3.6 6.1-5.4 12.8-5.4 20.2 0 7.8 1.8 14.7 5.4 20.8 3.8 6.1 9.2 10.9 16.4 14.5 7.4 3.6 16.3 5.4 26.7 5.4z"
|
||||
fill-rule="evenodd" />
|
||||
<path
|
||||
d="m1265.3 93.6v135.4h38.7v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.6-6.8 13.1-10.3 22.5-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.6 5.7 3.9 12.6 3.9 20.8v71.9h38.5v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.7-6.8 13.3-10.3 22.8-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.4 5.7 3.7 12.6 3.7 20.8v71.9h38.7v-82.1c0-14.1-2.2-26-6.6-35.9-4.2-10.1-10.3-17.7-18.1-22.8s-17.1-7.7-27.9-7.7c-13.1 0-23.8 3.5-32.1 10.6-8.2 6.8-14 17.1-17.4 30.8h-3.4c-1.1-7.8-3.8-14.7-7.8-20.8-4.1-6.3-9.6-11.2-16.4-14.8-6.7-3.8-14.7-5.7-24-5.7-12.7 0-23.1 3.4-31.1 10.3-8 6.7-13.7 16.5-17.1 29.7h-4.2l5.1-36.2z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
12
auth/assets/custom-icons/icons/notesnook.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_24_33)">
|
||||
<path d="M1024 0H0V1024H1024V0Z" fill="black"/>
|
||||
<path d="M724.985 682.919C707.73 733.33 673.15 775.984 627.397 803.291C581.645 830.598 527.687 840.787 475.128 832.044C422.568 823.301 374.814 796.194 340.365 755.546C305.916 714.898 287.006 663.347 287 610.064V499.814L366.121 532.867V610.019C366.114 630.798 370.555 651.337 379.145 670.256C387.735 689.176 400.276 706.037 415.925 719.707C418.895 722.294 421.978 724.814 425.161 727.166C448.518 744.554 476.563 754.518 505.655 755.763C506.645 755.763 507.601 755.842 508.58 755.864C509.559 755.887 510.83 755.864 511.955 755.864C513.08 755.864 514.205 755.864 515.33 755.864C516.455 755.864 517.265 755.864 518.255 755.763C547.336 754.515 575.371 744.56 598.726 727.188C601.899 724.837 604.981 722.328 607.963 719.741C628.519 701.761 643.619 678.375 651.545 652.241L724.985 682.919Z" fill="white"/>
|
||||
<path d="M737 414V610.065C737 612.596 737 615.139 736.842 617.67L657.879 584.651V414C657.866 376.316 643.272 340.099 617.154 312.934C591.035 285.77 555.419 269.766 517.765 268.274C480.11 266.782 443.339 279.918 415.154 304.931C386.968 329.944 369.554 364.893 366.56 402.457C366.279 406.26 366.121 410.119 366.121 414V462.712L287 429.637V189H512C571.674 189 628.903 212.705 671.099 254.901C713.295 297.097 737 354.326 737 414Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_24_33">
|
||||
<rect width="1024" height="1024" rx="200" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
1
auth/assets/custom-icons/icons/real_debrid.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="M45.155.025c-.033.034-1.094.1-2.34.167-1.245.05-2.49.134-2.776.168-.27.05-1.077.167-1.767.267-3.282.468-7.49 1.656-10.738 3.043A45.529 45.529 0 0 0 3.787 27.014C1.867 31.28.52 36.462.117 41.027-.1 43.57 0 48.97.304 50.56c.033.167.117.736.168 1.237.084.753.522 2.793 1.027 4.766.05.184.134.585.185.87.05.3.151.552.219.552.067 0 .134.1.134.234 0 .518.943 3.093 1.111 2.993.1-.05.118-.017.067.067-.151.25.286 1.254.472 1.103.067-.083.084-.033.016.084-.084.134.085.72.421 1.421.572 1.238 2.541 4.816 2.844 5.184.101.117.489.686.859 1.271.64 1.003 2.827 3.78 3.787 4.833 6.547 7.04 14.39 11.655 23.293 13.729 1.161.267 2.474.535 2.911.602.455.05.993.133 1.178.184 2.188.418 11.075.418 12.74-.017.136-.05.523-.117.842-.167 2.794-.435 7.204-1.64 9.257-2.525.32-.15.74-.318.926-.385.185-.067 1.094-.485 2.02-.92 7.304-3.444 13.598-8.88 18.193-15.735 1.8-2.659 2.912-4.816 4.207-8.16.556-1.422 1.549-4.633 1.7-5.469.034-.234.135-.685.22-1.003.083-.318.201-.853.252-1.17.05-.318.117-.77.168-1.004.505-2.642.64-8.31.27-11.12-.203-1.555-.809-4.348-1.01-4.732-.068-.117-.455.953-.876 2.458-.404 1.455-.757 2.642-.774 2.625-.017-.016-.084-.485-.135-1.02-.185-1.923-.269-2.525-.673-4.515-.437-2.19-1.313-5.05-2.053-6.772-.572-1.304-1.767-3.512-1.902-3.512-.067 0-.118 1.305-.118 2.876-.05 8.78-1.144 16.455-3.231 22.558-1.094 3.228-3.333 8.01-4.965 10.652-3.905 6.271-9.863 11.187-16.763 13.846-1.464.552-4.746 1.472-5.975 1.656-4.948.769-8.87.685-13.33-.268-12.942-2.76-23.377-13.36-25.868-26.32-.387-1.99-.42-2.174-.555-3.997-.168-2.408-.084-5.802.202-7.124.034-.217.118-.685.168-1.02.05-.334.286-1.354.522-2.257.236-.92.438-1.773.471-1.906.354-1.505 2.44-5.987 3.67-7.943 2.558-4.014 6.479-7.927 10.586-10.552 3.786-2.408 9.054-4.33 13.784-5.017 1.211-.167 6.361-.217 7.657-.05 3.3.385 3.753.452 5.89.836 7.71 1.405 15.4 4.716 24.455 10.569 1.212.802 2.222 1.354 2.222 1.237 0-.334-1.633-3.06-2.66-4.448-1.834-2.508-4.291-5.033-6.832-7.023-.808-.652-1.448-1.187-1.38-1.187.05 0 .387.1.723.234 1.515.568 4.46 1.455 4.612 1.404.1-.033-.522-.769-1.397-1.622-4.208-4.197-9.678-7.441-15.905-9.43C56.465 1.63 53.587.91 52.325.726c-.37-.066-1.28-.2-2.02-.317-.757-.117-2.154-.234-3.113-.268-.976-.017-1.801-.067-1.868-.117-.05-.033-.135-.033-.169 0Z" fill="#B8D995"/><path d="m44.845 89.975.048-.012.296-.031.676-.048 1.32-.076 1.47-.073 1.167-.08.14-.015.195-.033.803-.122.768-.112c3.282-.468 7.49-1.656 10.738-3.043a45.525 45.525 0 0 0 23.747-23.344c1.92-4.265 3.266-9.448 3.67-14.013.023-.276.043-.585.06-.92l.027-.699.019-.751.01-.788c-.01-1.452-.079-2.806-.21-3.8l-.056-.396-.068-.432-.08-.456-.133-.708-.192-.926-.143-.634-.09-.372-.084-.319-.075-.254a1.629 1.629 0 0 0-.089-.236c-.012-.022-.035-.004-.066.05l-.054.104-.066.153-.119.314-.138.404-.154.483-.164.55-.606 2.13-.222.731-.056.16c-.002.003-.003.005-.004.004l-.014-.051-.021-.128-.041-.302-.045-.395-.116-1.16-.065-.567-.069-.521-.079-.516a28.33 28.33 0 0 0-.045-.267l-.106-.579-.207-1.049c-.437-2.19-1.313-5.05-2.053-6.772l-.142-.316-.245-.515-.178-.358-.368-.716-.27-.502-.248-.44-.144-.246-.124-.196c-.092-.141-.157-.223-.183-.223-.01 0-.018.024-.026.07l-.017.12-.015.173-.026.486-.023.822-.01.993v.212c-.051 8.78-1.145 16.455-3.232 22.558a44.95 44.95 0 0 1-1.008 2.655l-.403.954c-1.108 2.57-2.466 5.282-3.554 7.043-3.905 6.271-9.863 11.187-16.763 13.846l-.233.086-.536.184-.297.097-.638.2-.678.201-.346.1-.694.193-.34.091-.657.17-.603.144c-.38.087-.707.153-.953.19-4.767.74-8.58.69-12.841-.167l-.862-.122-.822-.132-.938-.164-.365-.065c-7.708-1.405-15.4-4.716-24.454-10.569l-.505-.327-.466-.29-.412-.244-.346-.191-.186-.095a3.307 3.307 0 0 0-.078-.036l-.125-.051c-.067-.023-.104-.025-.104-.003 0 .048.033.144.094.279l.109.229.145.277.175.318.309.536.35.58.374.6.382.59.25.373.243.35.228.316c1.72 2.351 3.987 4.718 6.358 6.644l.616.493.734.603.336.289.107.098c.055.054.078.083.062.083l-.072-.014-.14-.04-.185-.06-.214-.076-.274-.104-.536-.19-.59-.2-.823-.265-.993-.305-.833-.238-.369-.095-.174-.038-.106-.015a.08.08 0 0 0-.026.002c-.028.009 0 .072.074.178l.11.145.149.18.185.211.218.237.247.257.27.273.144.14c4.067 4.058 9.314 7.225 15.285 9.229l.62.203c.198.065.408.131.625.198l.673.2.702.198.714.191.356.092.696.173.662.155.61.133.538.106c.165.03.316.056.449.076l.584.095 1.436.222.245.035.58.068c.209.022.43.043.656.062l.68.052c.337.023.664.04.952.05l.53.014.745.033.327.025.153.018.092.019.021.009c.05.033.135.033.169 0Z" fill="#9FD3EE"/></g></svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
83
auth/assets/custom-icons/icons/registro_br.svg
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 1.5 KiB |
3
auth/assets/custom-icons/icons/skinport.svg
Normal file
|
After Width: | Height: | Size: 34 KiB |
5
auth/assets/custom-icons/icons/surfshark.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="512" cy="512" r="512" style="fill:#178a9e"/>
|
||||
<path d="M706 356.3v-.3c-.3-4.3-.6-9.3-.9-14.6-.6-10-1.3-20.8-1.9-29-1-5.7-2.4-10.8-4-15.4-10.2-22.6-30.1-33.5-51.1-38.7-9.6-1.7-21.3-2-33.8-2.3H493.7c-77.7 4.2-110.3 49.2-119.1 73.1-34 101.7-55.2 233.5-70.5 328.6-.3 1.9-.6 3.7-.9 5.5l-5 45.2c-.3 7.1.4 14.9 2.3 22.4 9.5 27.6 38.3 50.8 101.7 27.7 59.9-26 130.6-58.4 203.7-94.7 41.6-24 102.6-79.2 105.8-148.9-.5-51.6-2.2-105.8-5.7-158.6zm-96.3 38.2c0 6-4.9 10.9-10.9 10.9-36.3 0-65.6 29.4-65.6 65.6v40.2c0 67.5-54.7 122.1-122.1 122.1-5.9 0-10.6-4.8-10.6-10.6v-33.3c0-6 4.9-10.9 10.9-10.9 36.3 0 65.6-29.4 65.6-65.6v-40.2c0-67.4 54.7-122.1 122.1-122.1 5.9 0 10.6 4.8 10.6 10.6v33.3z" style="fill:#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 934 B |
113
auth/assets/custom-icons/icons/ubuntu_one.svg
Normal file
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
id="svg3039"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
width="240.20215"
|
||||
height="98.041267"
|
||||
sodipodi:docname="U1_logo.svg">
|
||||
<metadata
|
||||
id="metadata3045">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs3043" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1022"
|
||||
inkscape:window-height="529"
|
||||
id="namedview3041"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="3.5580214"
|
||||
inkscape:cx="188.39168"
|
||||
inkscape:cy="46.745142"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg3039" />
|
||||
<path
|
||||
style="fill:#dd4713;fill-opacity:1;stroke:none"
|
||||
d="m 0,13.135439 0.31287126,55.797305 c 0,0 -0.29397798,23.453759 25.17115774,28.396822 14.646306,2.843004 42.347094,-3.749492 42.347094,-3.749492 l -0.220563,-80.503585 -22.276334,0 0,62.638417 -20.95299,0 0,-41.464863 -9.04287,0 10.586775,-21.394113 z"
|
||||
id="path3049"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccsccccccccc" />
|
||||
<g
|
||||
id="g3898"
|
||||
transform="scale(2.2196062,2.2196062)">
|
||||
<path
|
||||
d="m 47.937238,17.527712 c -0.49137,0.12284 -1.143956,0.253358 -1.95776,0.391552 -0.798468,0.138195 -1.727443,0.207292 -2.786929,0.207293 -0.921305,-10e-7 -1.696731,-0.130518 -2.32628,-0.391552 -0.629558,-0.27639 -1.136272,-0.660264 -1.520143,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253358,-2.23415 l 0,-6.7254823 2.14202,0 0,6.2648323 c -3e-6,1.458728 0.230321,2.502865 0.690975,3.132417 0.460644,0.629556 1.23607,0.944333 2.326279,0.944331 0.230318,2e-6 0.46832,-0.0077 0.714007,-0.02303 0.245672,-0.01535 0.475996,-0.03071 0.690974,-0.04606 0.214961,-0.03071 0.406898,-0.05374 0.575812,-0.0691 0.184251,-0.03071 0.314768,-0.06142 0.391552,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3871"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 53.207382,6.4260606 c 0.26103,-0.1688932 0.652582,-0.3454753 1.174656,-0.5297469 0.537419,-0.1842476 1.151617,-0.2763774 1.842598,-0.2763897 0.859871,1.23e-5 1.619942,0.153562 2.280214,0.4606495 0.67561,0.3071111 1.243743,0.7370502 1.704403,1.2898185 0.460638,0.5527892 0.806125,1.2130528 1.036462,1.9807926 0.245667,0.7677564 0.368507,1.6122804 0.368519,2.5335724 -1.2e-5,0.967368 -0.145884,1.842602 -0.437617,2.625701 -0.276401,0.767752 -0.67563,1.420338 -1.197688,1.957761 -0.52208,0.537425 -1.151634,0.952009 -1.888663,1.243753 -0.737047,0.291745 -1.566215,0.437617 -2.487507,0.437617 -0.998079,0 -1.88099,-0.0691 -2.648734,-0.207292 -0.767752,-0.138195 -1.397306,-0.27639 -1.888663,-0.414585 l 0,-17.15919172 2.14202,-0.36851956283681 0,6.42605988283681 m 0,9.5815084 c 0.214965,0.06142 0.514387,0.122842 0.898266,0.18426 0.399224,0.04607 0.890583,0.0691 1.474078,0.0691 1.151617,2e-6 2.072915,-0.376195 2.763897,-1.128591 0.690965,-0.767745 1.036451,-1.85027 1.036461,-3.247578 -10e-6,-0.614193 -0.06143,-1.190004 -0.184259,-1.727436 C 59.072975,9.619905 58.87336,9.159256 58.59698,8.7753728 58.320582,8.3761528 57.95974,8.0690534 57.514454,7.8540739 57.084507,7.6237594 56.562438,7.5085972 55.948246,7.5085868 c -0.583495,1.04e-5 -1.120919,0.099818 -1.612273,0.2994221 -0.491364,0.1996247 -0.867561,0.4069167 -1.128591,0.6218768 l 0,7.5776833"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3873"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 73.905311,17.527712 c -0.49137,0.12284 -1.143957,0.253358 -1.95776,0.391552 -0.798468,0.138195 -1.727443,0.207292 -2.78693,0.207293 -0.921304,-10e-7 -1.69673,-0.130518 -2.326279,-0.391552 -0.629558,-0.27639 -1.136272,-0.660264 -1.520143,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253358,-2.23415 l 0,-6.7254823 2.14202,0 0,6.2648323 c -4e-6,1.458728 0.230321,2.502865 0.690974,3.132417 0.460645,0.629556 1.236071,0.944333 2.32628,0.944331 0.230318,2e-6 0.46832,-0.0077 0.714007,-0.02303 0.245672,-0.01535 0.475996,-0.03071 0.690974,-0.04606 0.214961,-0.03071 0.406898,-0.05374 0.575812,-0.0691 0.184251,-0.03071 0.314768,-0.06142 0.391552,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3875"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 77.314487,6.2418008 c 0.491357,-0.1228281 1.143943,-0.2533453 1.95776,-0.391552 0.81381,-0.1381827 1.750463,-0.2072801 2.809962,-0.2072923 0.952001,1.22e-5 1.742782,0.1382069 2.372345,0.4145845 0.629544,0.2610463 1.128581,0.6372429 1.497111,1.1285912 0.383863,0.4760146 0.652575,1.0518259 0.806136,1.7274354 0.153538,0.6756275 0.230313,1.4203434 0.230325,2.2341494 l 0,6.725482 -2.14202,0 0,-6.264832 c -1e-5,-0.737032 -0.05375,-1.366586 -0.161227,-1.8886628 C 84.59274,9.1976435 84.431512,8.7753819 84.201197,8.4529182 83.970863,8.1304733 83.663764,7.9001488 83.279898,7.761944 82.896016,7.6084044 82.420012,7.5316296 81.851884,7.5316193 c -0.23033,1.03e-5 -0.468332,0.00769 -0.714006,0.023032 -0.245685,0.015365 -0.483687,0.038398 -0.714007,0.069097 -0.214974,0.015365 -0.414589,0.038398 -0.598844,0.069097 -0.168909,0.03072 -0.291749,0.053752 -0.36852,0.069097 l 0,10.1112547 -2.14202,0 0,-11.6313979"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3877"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 91.700827,5.8963137 4.537397,0 0,1.7965329 -4.537397,0 0,5.5277934 c -3e-6,0.598848 0.04606,1.097885 0.138195,1.497111 0.09213,0.383877 0.230321,0.690976 0.414585,0.921299 0.184255,0.214971 0.414579,0.368521 0.690974,0.460649 0.276384,0.09213 0.598838,0.138197 0.967364,0.138195 0.644902,2e-6 1.159294,-0.0691 1.543175,-0.207292 0.399222,-0.153548 0.675611,-0.261033 0.829169,-0.322455 l 0.414585,1.7735 c -0.214978,0.107486 -0.591175,0.238003 -1.128591,0.391552 -0.537432,0.168905 -1.15163,0.253357 -1.842598,0.253358 -0.813819,-10e-7 -1.489438,-0.09981 -2.026858,-0.299422 -0.522072,-0.21497 -0.944334,-0.529747 -1.266786,-0.944332 -0.322456,-0.414583 -0.552781,-0.921297 -0.690974,-1.520143 -0.122841,-0.614196 -0.184261,-1.320525 -0.18426,-2.118988 l 0,-10.6870668 2.14202,-0.3685196 0,3.7082281"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3879"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 108.21836,17.527712 c -0.49137,0.12284 -1.14395,0.253358 -1.95776,0.391552 -0.79847,0.138195 -1.72744,0.207292 -2.78693,0.207293 -0.9213,-10e-7 -1.69673,-0.130518 -2.32628,-0.391552 -0.62955,-0.27639 -1.13627,-0.660264 -1.52014,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253357,-2.23415 l 0,-6.7254823 2.142016,0 0,6.2648323 c 0,1.458728 0.23032,2.502865 0.69098,3.132417 0.46064,0.629556 1.23607,0.944333 2.32628,0.944331 0.23032,2e-6 0.46832,-0.0077 0.714,-0.02303 0.24568,-0.01535 0.476,-0.03071 0.69098,-0.04606 0.21496,-0.03071 0.4069,-0.05374 0.57581,-0.0691 0.18425,-0.03071 0.31477,-0.06142 0.39155,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3881"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 48.692644,28.027864 c -1.2e-5,0.952013 -0.138207,1.811892 -0.414584,2.579636 -0.276402,0.767752 -0.667953,1.428016 -1.174656,1.980793 -0.49137,0.55278 -1.082536,0.982719 -1.773501,1.289819 -0.690982,0.291744 -1.443376,0.437616 -2.257182,0.437617 -0.81382,-10e-7 -1.566214,-0.145873 -2.257183,-0.437617 -0.690978,-0.3071 -1.289821,-0.737039 -1.796532,-1.289819 -0.491362,-0.552777 -0.875236,-1.213041 -1.151624,-1.980793 -0.276391,-0.767744 -0.414586,-1.627623 -0.414585,-2.579636 -10e-7,-0.936647 0.138194,-1.788848 0.414585,-2.556605 0.276388,-0.783095 0.660262,-1.451036 1.151624,-2.003825 0.506711,-0.552768 1.105554,-0.97503 1.796532,-1.266786 0.690969,-0.307088 1.443363,-0.460637 2.257183,-0.46065 0.813806,1.3e-5 1.5662,0.153562 2.257182,0.46065 0.690965,0.291756 1.282131,0.714018 1.773501,1.266786 0.506703,0.552789 0.898254,1.22073 1.174656,2.003825 0.276377,0.767757 0.414572,1.619958 0.414584,2.556605 m -2.23415,0 c -1e-5,-1.351232 -0.307109,-2.418402 -0.921299,-3.201514 -0.598853,-0.798449 -1.420343,-1.197678 -2.464474,-1.197689 -1.044145,1.1e-5 -1.873313,0.39924 -2.487507,1.197689 -0.598848,0.783112 -0.89827,1.850282 -0.898267,3.201514 -3e-6,1.351243 0.299419,2.42609 0.898267,3.224546 0.614194,0.783106 1.443362,1.174657 2.487507,1.174656 1.044131,10e-7 1.865621,-0.39155 2.464474,-1.174656 0.61419,-0.798456 0.921289,-1.873303 0.921299,-3.224546"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3883"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 51.144189,22.384908 c 0.491357,-0.122828 1.143943,-0.253346 1.95776,-0.391552 0.813809,-0.138183 1.750462,-0.20728 2.809962,-0.207293 0.952001,1.3e-5 1.742782,0.138207 2.372344,0.414585 0.629545,0.261046 1.128581,0.637243 1.497111,1.128591 0.383864,0.476015 0.652576,1.051826 0.806136,1.727436 0.153539,0.675627 0.230314,1.420343 0.230325,2.234149 l 0,6.725482 -2.14202,0 0,-6.264832 c -9e-6,-0.737032 -0.05375,-1.366586 -0.161227,-1.888663 -0.09214,-0.522061 -0.253366,-0.944322 -0.483682,-1.266786 -0.230333,-0.322445 -0.537433,-0.552769 -0.921299,-0.690974 -0.383882,-0.15354 -0.859886,-0.230314 -1.428013,-0.230325 -0.230331,1.1e-5 -0.468333,0.0077 -0.714007,0.02303 -0.245685,0.01536 -0.483687,0.0384 -0.714006,0.0691 -0.214975,0.01536 -0.41459,0.0384 -0.598845,0.0691 -0.168909,0.03072 -0.291748,0.05375 -0.368519,0.0691 l 0,10.111255 -2.14202,0 0,-11.631398"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3885"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 63.139815,28.050896 c -2e-6,-1.059487 0.153548,-1.980785 0.460649,-2.763897 0.307098,-0.798449 0.714004,-1.458713 1.220721,-1.980792 0.506711,-0.522059 1.0902,-0.91361 1.750468,-1.174656 0.660259,-0.261023 1.335877,-0.39154 2.026858,-0.391553 1.612264,1.3e-5 2.848339,0.506727 3.708228,1.520144 0.859867,0.998083 1.289806,2.525902 1.289818,4.583462 -1.2e-5,0.09214 -1.2e-5,0.214975 0,0.368519 -1.2e-5,0.138201 -0.0077,0.268718 -0.02303,0.391552 l -8.199561,0 c 0.09213,1.243758 0.452969,2.188088 1.082527,2.832994 0.629549,0.644912 1.612267,0.967366 2.948156,0.967364 0.752386,2e-6 1.38194,-0.06142 1.888663,-0.184259 0.522059,-0.138193 0.913611,-0.268711 1.174656,-0.391552 l 0.299422,1.796532 c -0.261045,0.138195 -0.721694,0.284068 -1.381948,0.437617 -0.644918,0.15355 -1.381957,0.230325 -2.211118,0.230325 -1.044145,0 -1.950088,-0.15355 -2.717831,-0.460649 -0.752398,-0.322454 -1.374274,-0.760071 -1.865631,-1.312851 -0.491361,-0.552778 -0.85988,-1.205364 -1.105558,-1.95776 -0.230326,-0.767745 -0.345489,-1.604591 -0.345487,-2.51054 m 8.222592,-1.174656 c 0.01535,-0.967356 -0.230334,-1.758137 -0.737039,-2.372345 -0.491367,-0.629544 -1.174663,-0.944321 -2.04989,-0.944331 -0.491365,10e-6 -0.928982,0.09982 -1.312851,0.299422 -0.368524,0.18427 -0.683301,0.429949 -0.944331,0.737039 -0.261039,0.307109 -0.468331,0.660273 -0.621877,1.059494 -0.138198,0.399237 -0.230328,0.806144 -0.27639,1.220721 l 5.942378,0"
|
||||
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
id="path3887"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
6
auth/assets/custom-icons/icons/workos.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300px" height="260px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g><path style="opacity:0.989" fill="#6262f1" d="M 81.5,-0.5 C 112.5,-0.5 143.5,-0.5 174.5,-0.5C 169.154,3.68235 164.654,8.68235 161,14.5C 138.96,52.7486 116.793,90.9152 94.5,129C 111.174,158.016 127.84,187.016 144.5,216C 139.386,225.729 133.886,235.229 128,244.5C 121.475,251.672 113.642,256.672 104.5,259.5C 97.5,259.5 90.5,259.5 83.5,259.5C 73.8126,256.222 65.6459,250.556 59,242.5C 38.6208,208.399 18.7875,174.065 -0.5,139.5C -0.5,132.833 -0.5,126.167 -0.5,119.5C 19.3711,84.4302 39.5378,49.4302 60,14.5C 65.987,7.65895 73.1537,2.65895 81.5,-0.5 Z"/></g>
|
||||
<g><path style="opacity:0.989" fill="#6262f1" d="M 193.5,-0.5 C 200.833,-0.5 208.167,-0.5 215.5,-0.5C 225.781,2.8978 234.281,8.8978 241,17.5C 260.794,51.4318 280.294,85.4318 299.5,119.5C 299.5,125.833 299.5,132.167 299.5,138.5C 279.641,173.869 259.475,209.203 239,244.5C 232.912,251.778 225.412,256.778 216.5,259.5C 185.833,259.5 155.167,259.5 124.5,259.5C 129.821,254.339 134.654,248.672 139,242.5C 160.081,205.337 181.414,168.337 203,131.5C 203.635,129.365 203.301,127.365 202,125.5C 185.781,98.2288 169.947,70.7288 154.5,43C 159.614,33.2707 165.114,23.7707 171,14.5C 177.343,7.59119 184.843,2.59119 193.5,-0.5 Z"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -6,7 +6,7 @@ FEATURES
|
||||
|
||||
- Secure Backups
|
||||
ente provides end-to-end encrypted cloud backups so that you don't have to worry
|
||||
about losing your tokens. We use the same protocols ente Photos uses to encrypt
|
||||
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
|
||||
and preserve your data.
|
||||
|
||||
- Multi Device Synchronization
|
||||
|
||||
@@ -81,12 +81,12 @@ PODS:
|
||||
- qr_code_scanner (0.2.0):
|
||||
- Flutter
|
||||
- MTBBarcodeScanner
|
||||
- ReachabilitySwift (5.2.2)
|
||||
- ReachabilitySwift (5.2.3)
|
||||
- SDWebImage (5.19.2):
|
||||
- SDWebImage/Core (= 5.19.2)
|
||||
- SDWebImage/Core (5.19.2)
|
||||
- Sentry/HybridSDK (8.25.0)
|
||||
- sentry_flutter (7.20.1):
|
||||
- sentry_flutter (7.20.2):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (= 8.25.0)
|
||||
@@ -100,18 +100,21 @@ PODS:
|
||||
- sqflite (0.0.3):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- "sqlite3 (3.45.3+1)":
|
||||
- "sqlite3/common (= 3.45.3+1)"
|
||||
- "sqlite3/common (3.45.3+1)"
|
||||
- "sqlite3/fts5 (3.45.3+1)":
|
||||
- "sqlite3 (3.46.0+1)":
|
||||
- "sqlite3/common (= 3.46.0+1)"
|
||||
- "sqlite3/common (3.46.0+1)"
|
||||
- "sqlite3/dbstatvtab (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/perf-threadsafe (3.45.3+1)":
|
||||
- "sqlite3/fts5 (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/rtree (3.45.3+1)":
|
||||
- "sqlite3/perf-threadsafe (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/rtree (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- sqlite3_flutter_libs (0.0.1):
|
||||
- Flutter
|
||||
- "sqlite3 (~> 3.45.3+1)"
|
||||
- "sqlite3 (~> 3.46.0+1)"
|
||||
- sqlite3/dbstatvtab
|
||||
- sqlite3/fts5
|
||||
- sqlite3/perf-threadsafe
|
||||
- sqlite3/rtree
|
||||
@@ -233,29 +236,29 @@ SPEC CHECKSUMS:
|
||||
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
|
||||
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
||||
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
|
||||
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
|
||||
local_auth_darwin: c7e464000a6a89e952235699e32b329457608d98
|
||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
||||
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
|
||||
local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab
|
||||
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
|
||||
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
|
||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
|
||||
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
|
||||
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
|
||||
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
|
||||
ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979
|
||||
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
|
||||
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
|
||||
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
|
||||
sentry_flutter: 0cf2507eb90ff7a6aa3304e900dd7f08edbbefdf
|
||||
share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5
|
||||
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
|
||||
sqlite3_flutter_libs: 9bfe005308998aeca155330bbc2ea6dddf834a3b
|
||||
sqlite3: 292c3e1bfe89f64e51ea7fc7dab9182a017c8630
|
||||
sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b
|
||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||
url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
|
||||
PODFILE CHECKSUM: b4e3a7eabb03395b66e81fc061789f61526ee6bb
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:ente_auth/events/signed_out_event.dart';
|
||||
import "package:ente_auth/l10n/l10n.dart";
|
||||
import 'package:ente_auth/locale.dart';
|
||||
import "package:ente_auth/onboarding/view/onboarding_page.dart";
|
||||
import 'package:ente_auth/services/authenticator_service.dart';
|
||||
import 'package:ente_auth/services/update_service.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/services/window_listener_service.dart';
|
||||
@@ -34,7 +35,8 @@ class App extends StatefulWidget {
|
||||
State<App> createState() => _AppState();
|
||||
}
|
||||
|
||||
class _AppState extends State<App> with WindowListener, TrayListener {
|
||||
class _AppState extends State<App>
|
||||
with WindowListener, TrayListener, WidgetsBindingObserver {
|
||||
late StreamSubscription<SignedOutEvent> _signedOutEvent;
|
||||
late StreamSubscription<SignedInEvent> _signedInEvent;
|
||||
Locale? locale;
|
||||
@@ -56,6 +58,7 @@ class _AppState extends State<App> with WindowListener, TrayListener {
|
||||
void initState() {
|
||||
initWindowManager();
|
||||
initTrayManager();
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
|
||||
_signedOutEvent = Bus.instance.on<SignedOutEvent>().listen((event) {
|
||||
if (mounted) {
|
||||
@@ -98,6 +101,15 @@ class _AppState extends State<App> with WindowListener, TrayListener {
|
||||
_signedInEvent.cancel();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||
if (state == AppLifecycleState.resumed) {
|
||||
if (Configuration.instance.hasConfiguredAccount()) {
|
||||
AuthenticatorService.instance.onlineSync().ignore();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (Platform.isAndroid || kDebugMode) {
|
||||
|
||||
@@ -42,3 +42,7 @@ class InvalidStateError extends AssertionError {
|
||||
class SrpSetupNotCompleteError extends Error {}
|
||||
|
||||
class AuthenticatorKeyNotFound extends Error {}
|
||||
|
||||
class PassKeySessionNotVerifiedError extends Error {}
|
||||
|
||||
class PassKeySessionExpiredError extends Error {}
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Aussteller",
|
||||
"codeSecretKeyHint": "Geheimer Schlüssel",
|
||||
"codeAccountHint": "Konto (you@domain.com)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Art des Keys",
|
||||
"sessionExpired": "Sitzung abgelaufen",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -156,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Ungültiger QR-Code",
|
||||
"noRecoveryKeyTitle": "Kein Wiederherstellungsschlüssel?",
|
||||
"enterEmailHint": "Geben Sie Ihre E-Mail Adresse ein",
|
||||
"invalidEmailTitle": "Ungültige E-Mail Adresse",
|
||||
@@ -266,6 +269,7 @@
|
||||
"privacy": "Datenschutz",
|
||||
"terms": "Bestimmungen",
|
||||
"checkForUpdates": "Auf Updates prüfen",
|
||||
"checkStatus": "Status überprüfen",
|
||||
"downloadUpdate": "Herunterladen",
|
||||
"criticalUpdateAvailable": "Kritische neue Aktualisierung ist verfügbar",
|
||||
"updateAvailable": "Aktualisierung verfügbar",
|
||||
@@ -414,11 +418,27 @@
|
||||
"waitingForBrowserRequest": "Warten auf Browseranfrage...",
|
||||
"waitingForVerification": "Warte auf Bestätigung...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "Verifizierung steht noch aus",
|
||||
"loginSessionExpired": "Sitzung abgelaufen",
|
||||
"loginSessionExpiredDetails": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
|
||||
"developerSettingsWarning": "Sind Sie sicher, dass Sie die Entwicklereinstellungen ändern möchten?",
|
||||
"developerSettings": "Entwicklereinstellungen",
|
||||
"serverEndpoint": "Server Endpunkt",
|
||||
"invalidEndpoint": "Ungültiger Endpunkt",
|
||||
"invalidEndpointMessage": "Der eingegebene Endpunkt ist ungültig. Bitte geben Sie einen gültigen Endpunkt ein und versuchen Sie es erneut.",
|
||||
"endpointUpdatedMessage": "Endpunkt erfolgreich aktualisiert",
|
||||
"customEndpoint": "Mit {endpoint} verbunden"
|
||||
"customEndpoint": "Mit {endpoint} verbunden",
|
||||
"pinText": "Anpinnen",
|
||||
"unpinText": "Lösen",
|
||||
"pinnedCodeMessage": "{code} wurde angepinnt",
|
||||
"unpinnedCodeMessage": "{code} wurde Losgelöst",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Neuen Tag erstellen",
|
||||
"tag": "Tag",
|
||||
"create": "Erstellen",
|
||||
"editTag": "Tag bearbeiten",
|
||||
"deleteTagTitle": "Tag löschen?",
|
||||
"deleteTagMessage": "Sind Sie sicher, dass Sie diesen Code löschen wollen? Diese Aktion ist unumkehrbar.",
|
||||
"somethingWentWrongParsingCode": "Wir konnten {x} Codes nicht parsen.",
|
||||
"updateNotAvailable": "Update ist nicht verfügbar"
|
||||
}
|
||||
@@ -269,6 +269,7 @@
|
||||
"privacy": "Privacy",
|
||||
"terms": "Terms",
|
||||
"checkForUpdates": "Check for updates",
|
||||
"checkStatus": "Check status",
|
||||
"downloadUpdate": "Download",
|
||||
"criticalUpdateAvailable": "Critical update available",
|
||||
"updateAvailable": "Update available",
|
||||
@@ -417,6 +418,9 @@
|
||||
"waitingForBrowserRequest": "Waiting for browser request...",
|
||||
"waitingForVerification": "Waiting for verification...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "Verification is still pending",
|
||||
"loginSessionExpired" : "Session expired",
|
||||
"loginSessionExpiredDetails": "Your session has expired. Please login again.",
|
||||
"developerSettingsWarning":"Are you sure that you want to modify Developer settings?",
|
||||
"developerSettings": "Developer settings",
|
||||
"serverEndpoint": "Server endpoint",
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Émetteur",
|
||||
"codeSecretKeyHint": "Clé secrète",
|
||||
"codeAccountHint": "Compte (vous@exemple.com)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Type de clé",
|
||||
"sessionExpired": "Session expirée",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -77,12 +79,14 @@
|
||||
"data": "Données",
|
||||
"importCodes": "Importer les codes",
|
||||
"importTypePlainText": "Texte brut",
|
||||
"importTypeEnteEncrypted": "Export chiffré Ente",
|
||||
"passwordForDecryptingExport": "Mot de passe pour déchiffrer l'exportation",
|
||||
"passwordEmptyError": "Le mot de passe ne peut pas être vide",
|
||||
"importFromApp": "Importer des codes depuis {appName}",
|
||||
"importGoogleAuthGuide": "Exportez vos comptes depuis Google Authenticator vers un code QR en utilisant l'option \"Transférer des comptes\". Ensuite, en utilisant un autre appareil, scannez le code QR.\n\nAstuce : Vous pouvez utiliser la webcam de votre ordinateur portable pour prendre une photo du code QR.",
|
||||
"importSelectJsonFile": "Sélectionnez un fichier JSON",
|
||||
"importSelectAppExport": "Sélectionnez le fichier d'exportation {appName}",
|
||||
"importEnteEncGuide": "Sélectionnez le fichier chiffré JSON exporté depuis Ente",
|
||||
"importRaivoGuide": "Utilisez l'option \"Exporter les OTPs vers l'archive Zip\" dans les paramètres de Raivo.\n\nExtrayez le fichier zip et importez le fichier JSON.",
|
||||
"importBitwardenGuide": "Utilisez l'option « Exporter le coffre » dans les outils Bitwarden et importez le fichier JSON non chiffré.",
|
||||
"importAegisGuide": "Utilisez l'option \"Exporter le coffre-fort\" dans les paramètres d'Aegis.\n\nSi votre coffre-fort est crypté, vous devrez saisir le mot de passe du coffre-fort pour déchiffrer le coffre-fort.",
|
||||
@@ -112,18 +116,22 @@
|
||||
"copied": "Copié",
|
||||
"pleaseTryAgain": "Veuillez réessayer",
|
||||
"existingUser": "Utilisateur existant",
|
||||
"newUser": "Nouveau dans Ente",
|
||||
"delete": "Supprimer",
|
||||
"enterYourPasswordHint": "Saisir votre mot de passe",
|
||||
"forgotPassword": "Mot de passe oublié",
|
||||
"oops": "Oups",
|
||||
"suggestFeatures": "Suggérer des fonctionnalités",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Quelle est la sécurité de Auth?",
|
||||
"faq_a_1": "Tous les codes que vous sauvegardez via ente sont chiffrés de bout en bout. Cela signifie que vous seul pouvez accéder à vos codes. Nos applications sont open source et notre cryptographie ont fait l'objet d'un audit externe.",
|
||||
"faq_q_2": "Puis-je accéder à mes codes sur mon ordinateur ?",
|
||||
"faq_a_2": "Vous pouvez accéder à vos codes sur le web via auth.ente.io.",
|
||||
"faq_q_3": "Comment puis-je supprimer des codes ?",
|
||||
"faq_a_3": "Vous pouvez supprimer un code en glissant vers la gauche.",
|
||||
"faq_q_4": "Comment puis-je soutenir le projet ?",
|
||||
"faq_a_4": "Vous pouvez soutenir le développement de ce projet en vous abonnant à notre application Photos, ente.io.",
|
||||
"faq_q_5": "Comment puis-je activer le verrouillage FaceID dans Auth",
|
||||
"faq_a_5": "Vous pouvez activer le verrouillage FaceID dans Paramètres → Sécurité → Écran de verrouillage.",
|
||||
"somethingWentWrongMessage": "Quelque chose s'est mal passé, veuillez recommencer",
|
||||
"leaveFamily": "Quitter le plan familial",
|
||||
@@ -150,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "QR code non valide",
|
||||
"noRecoveryKeyTitle": "Pas de clé de récupération ?",
|
||||
"enterEmailHint": "Entrez votre adresse e-mail",
|
||||
"invalidEmailTitle": "Adresse e-mail invalide",
|
||||
@@ -343,6 +352,7 @@
|
||||
"deleteCodeAuthMessage": "Authentification requise pour supprimer le code",
|
||||
"showQRAuthMessage": "Authentification requise pour afficher le code QR",
|
||||
"confirmAccountDeleteTitle": "Confirmer la suppression du compte",
|
||||
"confirmAccountDeleteMessage": "Ce compte est lié à d'autres applications ente, si vous en utilisez une.\n\nVos données téléchargées, dans toutes les applications ente, seront planifiées pour suppression, et votre compte sera définitivement supprimé.",
|
||||
"androidBiometricHint": "Vérifier l’identité",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
@@ -413,5 +423,18 @@
|
||||
"invalidEndpoint": "Point de terminaison non valide",
|
||||
"invalidEndpointMessage": "Désolé, le point de terminaison que vous avez entré n'est pas valide. Veuillez en entrer un valide puis réessayez.",
|
||||
"endpointUpdatedMessage": "Point de terminaison mis à jour avec succès",
|
||||
"customEndpoint": "Connecté à {endpoint}"
|
||||
"customEndpoint": "Connecté à {endpoint}",
|
||||
"pinText": "Épingler",
|
||||
"unpinText": "Désépingler",
|
||||
"pinnedCodeMessage": "{code} a été épinglé",
|
||||
"unpinnedCodeMessage": "{code} a été désépinglé",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Créer un nouveau tag",
|
||||
"tag": "Tag",
|
||||
"create": "Créer",
|
||||
"editTag": "Modifier le tag",
|
||||
"deleteTagTitle": "Supprimer le tag ?",
|
||||
"deleteTagMessage": "Êtes-vous sûr de vouloir supprimer ce tag ? Cette action est irréversible.",
|
||||
"somethingWentWrongParsingCode": "Impossible d'analyser les codes {x}.",
|
||||
"updateNotAvailable": "Mise à jour non disponible"
|
||||
}
|
||||
39
auth/lib/l10n/arb/app_id.arb
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"setupFirstAccount": "Siapkan akun pertama kamu",
|
||||
"importScanQrCode": "Pindai Kode QR",
|
||||
"reportABug": "Laporkan bug",
|
||||
"rateUsOnStore": "Nilai kami di {storeName}",
|
||||
"blog": "Blog",
|
||||
"welcomeBack": "Selamat datang kembali!",
|
||||
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan potongan 10% pada tahun pertamamu",
|
||||
"data": "Data",
|
||||
"ok": "Oke",
|
||||
"cancel": "Batal",
|
||||
"email": "Email",
|
||||
"support": "Dukungan",
|
||||
"general": "Umum",
|
||||
"settings": "Pengaturan",
|
||||
"suggestFeatures": "Sarankan fitur",
|
||||
"faq": "Tanya Jawab Umum",
|
||||
"scan": "Pindai",
|
||||
"scanACode": "Pindai kode",
|
||||
"createNewAccount": "Buat akun baru",
|
||||
"confirmPassword": "Konfirmasi sandi",
|
||||
"selectLanguage": "Pilih bahasa",
|
||||
"language": "Bahasa",
|
||||
"social": "Sosial",
|
||||
"security": "Keamanan",
|
||||
"searchHint": "Cari...",
|
||||
"scanAQrCode": "Pindai kode QR",
|
||||
"createAccount": "Buat akun",
|
||||
"password": "Sandi",
|
||||
"signUpTerms": "Saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente",
|
||||
"ackPasswordLostWarning": "Saya mengerti bahwa jika saya lupa sandi saya, data saya bisa hilang karena <underline>dienkripsi secara end-to-end</underline>.",
|
||||
"loginTerms": "Dengan mengklik masuk akun, saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente",
|
||||
"warning": "Peringatan",
|
||||
"androidCancelButton": "Batal",
|
||||
"@androidCancelButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on Android side. Maximum 30 characters."
|
||||
},
|
||||
"hearUsWhereTitle": "Dari mana Anda menemukan Ente? (opsional)"
|
||||
}
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Emittente",
|
||||
"codeSecretKeyHint": "Codice segreto",
|
||||
"codeAccountHint": "Account (username@dominio.it)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Tipo di chiave",
|
||||
"sessionExpired": "Sessione scaduta",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -77,16 +79,19 @@
|
||||
"data": "Dati",
|
||||
"importCodes": "Importa codici",
|
||||
"importTypePlainText": "Testo in chiaro",
|
||||
"importTypeEnteEncrypted": "Esportazione Ente criptata",
|
||||
"passwordForDecryptingExport": "Password per decriptare il file esportato",
|
||||
"passwordEmptyError": "La password è obbligatoria",
|
||||
"importFromApp": "Importa codici da {appName}",
|
||||
"importGoogleAuthGuide": "Esporta i tuoi account da Google Authenticator in un codice QR utilizzando l'opzione \"Trasferisci Account\". Quindi, usando un altro dispositivo, scansiona il codice QR.\n\nSuggerimento: Puoi usare la webcam del tuo computer portatile per scattare una foto del codice QR.",
|
||||
"importSelectJsonFile": "Seleziona file JSON",
|
||||
"importSelectAppExport": "Seleziona il file di esportazione {appName}",
|
||||
"importEnteEncGuide": "Seleziona il file JSON criptato esportato da Ente",
|
||||
"importRaivoGuide": "Utilizza l'opzione \"Esporta i codici OTP in archivio Zip\" nelle impostazioni di Raivo.\n\nEstrai il file zip e importa il file JSON.",
|
||||
"importBitwardenGuide": "Utilizzare l'opzione \"Esporta vault\" all'interno di Bitwarden Tools e importa il file JSON non crittografato.",
|
||||
"importAegisGuide": "Usa l'opzione \"Esporta la cassaforte\" nelle impostazioni di Aegis.\n\nSe la tua cassaforte è criptata, dovrai inserire la password della cassaforte per decriptarla.",
|
||||
"import2FasGuide": "Utilizza l'opzione \"Impostazioni->Backup -Export\" in 2FAS.\n\nSe il backup è crittografato, è necessario inserire la password per decriptare il backup",
|
||||
"importLastpassGuide": "Usa l'opzione \"Trasferisci account\" all'interno delle impostazioni di Lastpass Authenticator e premi \"Esporta account su file\". Importa il JSON scaricato.",
|
||||
"exportCodes": "Esporta codici",
|
||||
"importLabel": "Importa",
|
||||
"importInstruction": "Per favore seleziona un file contenente una lista dei tuoi codici nel seguente formato",
|
||||
@@ -111,18 +116,22 @@
|
||||
"copied": "Copiato",
|
||||
"pleaseTryAgain": "Per favore riprova",
|
||||
"existingUser": "Accedi",
|
||||
"newUser": "Nuovo utente",
|
||||
"delete": "Cancella",
|
||||
"enterYourPasswordHint": "Inserisci la tua password",
|
||||
"forgotPassword": "Password dimenticata",
|
||||
"oops": "Oops",
|
||||
"suggestFeatures": "Suggerisci funzionalità",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Quanto è sicuro Auth?",
|
||||
"faq_a_1": "Tutti i codici di cui fai il backup tramite Auth sono memorizzati con crittografia end-to-end. Ciò significa che solo tu puoi accedere ai tuoi codici. Le nostre app sono open source e la nostra crittografia è stata verificata esternamente.",
|
||||
"faq_q_2": "Posso accedere ai miei codici sul desktop?",
|
||||
"faq_a_2": "Puoi accedere ai tuoi codici sul web @ auth.ente.io.",
|
||||
"faq_q_3": "Come posso cancellare i codici?",
|
||||
"faq_a_3": "Puoi eliminare un codice scorrendo il dito a sinistra sul codice in questione.",
|
||||
"faq_q_4": "Come posso supportare questo progetto?",
|
||||
"faq_a_4": "Puoi supportare lo sviluppo di questo progetto abbonandoti alla nostra app Photos @ ente.io.",
|
||||
"faq_q_5": "Come posso abilitare il blocco FaceID in Auth",
|
||||
"faq_a_5": "Puoi abilitare il blocco FaceID in Impostazioni → Sicurezza → Schermata di blocco.",
|
||||
"somethingWentWrongMessage": "Qualcosa è andato storto, per favore riprova",
|
||||
"leaveFamily": "Abbandona il piano famiglia",
|
||||
@@ -136,6 +145,8 @@
|
||||
"enterCodeHint": "Inserisci il codice di 6 cifre dalla tua app di autenticazione",
|
||||
"lostDeviceTitle": "Dispositivo perso?",
|
||||
"twoFactorAuthTitle": "Autenticazione a due fattori",
|
||||
"passkeyAuthTitle": "Verifica della passkey",
|
||||
"verifyPasskey": "Verifica passkey",
|
||||
"recoverAccount": "Recupera account",
|
||||
"enterRecoveryKeyHint": "Inserisci la tua chiave di recupero",
|
||||
"recover": "Recupera",
|
||||
@@ -147,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Codice QR non valido",
|
||||
"noRecoveryKeyTitle": "Nessuna chiave di recupero?",
|
||||
"enterEmailHint": "Inserisci il tuo indirizzo email",
|
||||
"invalidEmailTitle": "Indirizzo email non valido",
|
||||
@@ -190,6 +202,9 @@
|
||||
"doThisLater": "Fallo più tardi",
|
||||
"saveKey": "Salva chiave",
|
||||
"save": "Salva",
|
||||
"send": "Invia",
|
||||
"saveOrSendDescription": "Vuoi salvarlo nel tuo spazio di archiviazione (cartella Download per impostazione predefinita) o inviarlo ad altre applicazioni?",
|
||||
"saveOnlyDescription": "Vuoi salvarlo nel tuo spazio di archiviazione (cartella Download per impostazione predefinita)?",
|
||||
"back": "Indietro",
|
||||
"createAccount": "Crea account",
|
||||
"passwordStrength": "Forza password: {passwordStrengthValue}",
|
||||
@@ -254,6 +269,7 @@
|
||||
"privacy": "Privacy",
|
||||
"terms": "Termini",
|
||||
"checkForUpdates": "Controlla aggiornamenti",
|
||||
"checkStatus": "Verifica stato",
|
||||
"downloadUpdate": "Scarica",
|
||||
"criticalUpdateAvailable": "Un aggiornamento importante è disponibile",
|
||||
"updateAvailable": "Aggiornamento disponibile",
|
||||
@@ -337,6 +353,7 @@
|
||||
"deleteCodeAuthMessage": "Autenticarsi per cancellare il codice",
|
||||
"showQRAuthMessage": "Autenticarsi per mostrare il codice QR",
|
||||
"confirmAccountDeleteTitle": "Conferma l'eliminazione dell'account",
|
||||
"confirmAccountDeleteMessage": "Questo account è collegato ad altre app di Ente, se ne utilizzi.\n\nI tuoi dati caricati, su tutte le app di Ente, saranno pianificati per la cancellazione e il tuo account verrà eliminato definitivamente.",
|
||||
"androidBiometricHint": "Verifica l'identità",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
@@ -397,5 +414,31 @@
|
||||
"doNotSignOut": "Non uscire",
|
||||
"hearUsWhereTitle": "Dove hai sentito parlare di Ente? (opzionale)",
|
||||
"hearUsExplanation": "Non teniamo traccia delle installazioni dell'app. Sarebbe utile se ci dicessi dove ci hai trovato!",
|
||||
"passkey": "Passkey"
|
||||
"recoveryKeySaved": "Chiave di recupero salvata nella cartella Download!",
|
||||
"waitingForBrowserRequest": "In attesa della richiesta del browser...",
|
||||
"waitingForVerification": "In attesa di verifica...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "La verifica è ancora in corso",
|
||||
"loginSessionExpired": "Sessione scaduta",
|
||||
"loginSessionExpiredDetails": "La sessione è scaduta. Si prega di accedere nuovamente.",
|
||||
"developerSettingsWarning": "Siete sicuri di voler modificare le impostazioni sviluppatore?",
|
||||
"developerSettings": "Impostazioni sviluppatore",
|
||||
"serverEndpoint": "Endpoint del server",
|
||||
"invalidEndpoint": "Endpoint invalido",
|
||||
"invalidEndpointMessage": "Spiacenti, l'endpoint inserito non è valido. Inserisci un endpoint valido e riprova.",
|
||||
"endpointUpdatedMessage": "Endpoint aggiornato con successo",
|
||||
"customEndpoint": "Connesso a {endpoint}",
|
||||
"pinText": "Fissa",
|
||||
"unpinText": "Sgancia",
|
||||
"pinnedCodeMessage": "{code} è stato fissato",
|
||||
"unpinnedCodeMessage": "{code} è stato sganciato",
|
||||
"tags": "Tag",
|
||||
"createNewTag": "Crea un nuovo tag",
|
||||
"tag": "Tag",
|
||||
"create": "Crea",
|
||||
"editTag": "Modifica tag",
|
||||
"deleteTagTitle": "Eliminare il tag?",
|
||||
"deleteTagMessage": "Sei sicuro di voler eliminare questo tag? Questa azione è irreversibile.",
|
||||
"somethingWentWrongParsingCode": "Non siamo riusciti ad analizzare i codici {x}.",
|
||||
"updateNotAvailable": "Aggiornamento non disponibile"
|
||||
}
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Uitgever",
|
||||
"codeSecretKeyHint": "Geheime sleutel",
|
||||
"codeAccountHint": "Account (jij@domein.nl)",
|
||||
"codeTagHint": "Label",
|
||||
"accountKeyType": "Type sleutel",
|
||||
"sessionExpired": "Sessie verlopen",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -156,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Ongeldige QR-code",
|
||||
"noRecoveryKeyTitle": "Geen herstelsleutel?",
|
||||
"enterEmailHint": "Voer je e-mailadres in",
|
||||
"invalidEmailTitle": "Ongeldig e-mailadres",
|
||||
@@ -420,5 +423,18 @@
|
||||
"invalidEndpoint": "Ongeldig eindpunt",
|
||||
"invalidEndpointMessage": "Sorry, het eindpunt dat u hebt ingevoerd is ongeldig. Voer een geldig eindpunt in en probeer het opnieuw.",
|
||||
"endpointUpdatedMessage": "Eindpunt met succes bijgewerkt",
|
||||
"customEndpoint": "Verbonden met {endpoint}"
|
||||
"customEndpoint": "Verbonden met {endpoint}",
|
||||
"pinText": "Vastzetten",
|
||||
"unpinText": "Losmaken",
|
||||
"pinnedCodeMessage": "{code} is vastgezet",
|
||||
"unpinnedCodeMessage": "{code} is losgemaakt",
|
||||
"tags": "Labels",
|
||||
"createNewTag": "Nieuw label maken",
|
||||
"tag": "Label",
|
||||
"create": "Creëren",
|
||||
"editTag": "Bewerk label",
|
||||
"deleteTagTitle": "Label verwijderen?",
|
||||
"deleteTagMessage": "Weet je zeker dat je deze label wilt verwijderen? Deze actie is onomkeerbaar.",
|
||||
"somethingWentWrongParsingCode": "We konden {x} codes niet verwerken.",
|
||||
"updateNotAvailable": "Update niet beschikbaar"
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Proteja seus códigos 2FA",
|
||||
"onBoardingGetStarted": "Vamos Começar",
|
||||
"onBoardingGetStarted": "Introdução",
|
||||
"setupFirstAccount": "Configure sua primeira conta",
|
||||
"importScanQrCode": "Escanear QR code",
|
||||
"qrCode": "QR Code",
|
||||
@@ -19,7 +19,7 @@
|
||||
"pleaseVerifyDetails": "Por favor, verifique os detalhes e tente novamente",
|
||||
"codeIssuerHint": "Emissor",
|
||||
"codeSecretKeyHint": "Chave secreta",
|
||||
"codeAccountHint": "Conta (voce@dominio.com)",
|
||||
"codeAccountHint": "Conta (você@domínio.com)",
|
||||
"codeTagHint": "Etiqueta",
|
||||
"accountKeyType": "Tipo de chave",
|
||||
"sessionExpired": "Sessão expirada",
|
||||
@@ -27,17 +27,17 @@
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Por favor, faça login novamente",
|
||||
"loggingOut": "Desconectando...",
|
||||
"loggingOut": "Saindo...",
|
||||
"timeBasedKeyType": "Baseado no horário (TOTP)",
|
||||
"counterBasedKeyType": "Baseado em um contador (HOTP)",
|
||||
"saveAction": "Salvar",
|
||||
"nextTotpTitle": "próximo",
|
||||
"deleteCodeTitle": "Excluir código?",
|
||||
"nextTotpTitle": "avançar",
|
||||
"deleteCodeTitle": "Apagar código?",
|
||||
"deleteCodeMessage": "Tem certeza de que deseja excluir este código? Esta ação é irreversível.",
|
||||
"viewLogsAction": "Ver logs",
|
||||
"sendLogsDescription": "Isto irá compartilhar seus logs para nos ajudar a depurar seu problema. Embora tomemos precauções para garantir que informações sensíveis não sejam enviadas, encorajamos você a ver esses logs antes de compartilhá-los.",
|
||||
"preparingLogsTitle": "Preparando logs...",
|
||||
"emailLogsTitle": "Logs por e-mail",
|
||||
"emailLogsTitle": "Logs (e-mail)",
|
||||
"emailLogsMessage": "Por favor, envie os logs para {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
@@ -48,10 +48,10 @@
|
||||
},
|
||||
"copyEmailAction": "Copiar e-mail",
|
||||
"exportLogsAction": "Exportar logs",
|
||||
"reportABug": "Reportar um problema",
|
||||
"reportABug": "Informar um problema",
|
||||
"crashAndErrorReporting": "Reporte de erros e falhas",
|
||||
"reportBug": "Reportar problema",
|
||||
"emailUsMessage": "Por favor, envie um e-mail para {email}",
|
||||
"reportBug": "Informar problema",
|
||||
"emailUsMessage": "Envie um e-mail para {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -59,12 +59,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Falar com o suporte",
|
||||
"contactSupport": "Falar com o Suporte",
|
||||
"rateUsOnStore": "Avalie-nos na {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Produtos",
|
||||
"verifyPassword": "Verificar senha",
|
||||
"pleaseWait": "Por favor, aguarde...",
|
||||
"pleaseWait": "Aguarde...",
|
||||
"generatingEncryptionKeysTitle": "Gerando chaves de criptografia...",
|
||||
"recreatePassword": "Recriar senha",
|
||||
"recreatePasswordMessage": "O dispositivo atual não é poderoso o suficiente para verificar sua senha, mas podemos regenerar de uma forma que funcione com todos os dispositivos.\n\nPor favor, faça o login usando sua chave de recuperação e recrie sua senha (você pode usar o mesmo novamente se desejar).",
|
||||
@@ -81,10 +81,10 @@
|
||||
"importTypePlainText": "Texto simples",
|
||||
"importTypeEnteEncrypted": "Exportação Ente criptografada",
|
||||
"passwordForDecryptingExport": "Senha para descriptografar a exportação",
|
||||
"passwordEmptyError": "O campo senha não pode estar vazio",
|
||||
"passwordEmptyError": "A senha não pode estar vazia",
|
||||
"importFromApp": "Importar códigos do {appName}",
|
||||
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir contas\". Então, usando outro dispositivo, escaneie o QR code.\n\nDica: Você pode usar a câmera do seu notebook para fotografar o QR code.",
|
||||
"importSelectJsonFile": "Selecione o arquivo JSON",
|
||||
"importSelectJsonFile": "Selecionar arquivo JSON",
|
||||
"importSelectAppExport": "Selecione o arquivo de exportação do aplicativo {appName}",
|
||||
"importEnteEncGuide": "Selecione o arquivo JSON criptografado exportado do Ente",
|
||||
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo Zip\" nas configurações do Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
|
||||
@@ -92,7 +92,7 @@
|
||||
"importAegisGuide": "Use a opção \"Exportar cofre\" nas Configurações do Aegis.\n\nSe o seu cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
|
||||
"import2FasGuide": "Use a opção \"Configurações->Exportar cópia de segurança\" no aplicativo 2FAS.\n\nSe a cópia de segurança estiver criptografada, será necessário inserir a senha para descriptografá-la",
|
||||
"importLastpassGuide": "Use a opção \"Transferir contas\" nas configurações do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
|
||||
"exportCodes": "Exportar Códigos",
|
||||
"exportCodes": "Exportar códigos",
|
||||
"importLabel": "Importar",
|
||||
"importInstruction": "Por favor, selecione um arquivo que contenha uma lista de códigos no seguinte formato",
|
||||
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
|
||||
@@ -105,23 +105,23 @@
|
||||
"authToChangeYourPassword": "Por favor, autentique-se para alterar sua senha",
|
||||
"authToViewSecrets": "Por favor, autentique-se para ver as suas chaves secretas",
|
||||
"authToInitiateSignIn": "Por favor, autentique-se para iniciar o login para um backup.",
|
||||
"ok": "Ok",
|
||||
"ok": "OK",
|
||||
"cancel": "Cancelar",
|
||||
"yes": "Sim",
|
||||
"no": "Não",
|
||||
"email": "E-mail",
|
||||
"support": "Suporte",
|
||||
"general": "Geral",
|
||||
"settings": "Configurações",
|
||||
"settings": "Ajustes",
|
||||
"copied": "Copiado",
|
||||
"pleaseTryAgain": "Por favor, tente novamente",
|
||||
"existingUser": "Usuário Existente",
|
||||
"pleaseTryAgain": "Tente de novo",
|
||||
"existingUser": "Usuário existente",
|
||||
"newUser": "Novo no Ente",
|
||||
"delete": "Excluir",
|
||||
"enterYourPasswordHint": "Insira sua senha",
|
||||
"forgotPassword": "Esqueci a senha",
|
||||
"oops": "Oops",
|
||||
"suggestFeatures": "Sugerir funcionalidades",
|
||||
"oops": "Opa",
|
||||
"suggestFeatures": "Sugerir recursos",
|
||||
"faq": "Perguntas frequentes",
|
||||
"faq_q_1": "Quão seguro é o Auth?",
|
||||
"faq_a_1": "Todos os códigos que você faz backup via Auth são armazenados criptografados de ponta a ponta. Isso significa que somente você pode acessar seus códigos. Nossos aplicativos são de código aberto e nossa criptografia foi auditada externamente.",
|
||||
@@ -139,16 +139,16 @@
|
||||
"inFamilyPlanMessage": "Você está em um plano familiar!",
|
||||
"swipeHint": "Deslize para a esquerda para editar ou remover os códigos",
|
||||
"scan": "Escanear",
|
||||
"scanACode": "Escanear um código",
|
||||
"scanACode": "Escanear código",
|
||||
"verify": "Verificar",
|
||||
"verifyEmail": "Verificar e-mail",
|
||||
"enterCodeHint": "Digite o código de 6 dígitos de\nseu aplicativo autenticador",
|
||||
"lostDeviceTitle": "Perdeu seu dispositivo?",
|
||||
"lostDeviceTitle": "Perdeu um dispositivo?",
|
||||
"twoFactorAuthTitle": "Autenticação de dois fatores",
|
||||
"passkeyAuthTitle": "Autenticação via Chave de acesso",
|
||||
"verifyPasskey": "Verificar chave de acesso",
|
||||
"verifyPasskey": "Verificar senha-mestra",
|
||||
"recoverAccount": "Recuperar conta",
|
||||
"enterRecoveryKeyHint": "Digite sua chave de recuperação",
|
||||
"enterRecoveryKeyHint": "Digite a chave de recuperação",
|
||||
"recover": "Recuperar",
|
||||
"contactSupportViaEmailMessage": "Por favor, envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
@@ -160,7 +160,7 @@
|
||||
},
|
||||
"invalidQRCode": "QR Code inválido",
|
||||
"noRecoveryKeyTitle": "Sem chave de recuperação?",
|
||||
"enterEmailHint": "Insira o seu endereço de e-mail",
|
||||
"enterEmailHint": "Insira o endereço de e-mail",
|
||||
"invalidEmailTitle": "Endereço de e-mail inválido",
|
||||
"invalidEmailMessage": "Por favor, insira um endereço de e-mail válido.",
|
||||
"deleteAccount": "Excluir conta",
|
||||
@@ -175,8 +175,8 @@
|
||||
"moderateStrength": "Moderada",
|
||||
"confirmPassword": "Confirme sua senha",
|
||||
"close": "Fechar",
|
||||
"oopsSomethingWentWrong": "Oops, Algo deu errado.",
|
||||
"selectLanguage": "Selecionar idioma",
|
||||
"oopsSomethingWentWrong": "Opa. Algo deu errado.",
|
||||
"selectLanguage": "Trocar idioma",
|
||||
"language": "Idioma",
|
||||
"social": "Redes sociais",
|
||||
"security": "Segurança",
|
||||
@@ -185,7 +185,7 @@
|
||||
"lockScreenEnablePreSteps": "Para ativar o bloqueio de tela, por favor ative um método de autenticação nas configurações do sistema do seu dispositivo.",
|
||||
"viewActiveSessions": "Ver sessões ativas",
|
||||
"authToViewYourActiveSessions": "Por favor, autentique-se para ver as sessões ativas",
|
||||
"searchHint": "Pesquisar...",
|
||||
"searchHint": "Buscar...",
|
||||
"search": "Pesquisar",
|
||||
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
|
||||
"noResult": "Nenhum resultado",
|
||||
@@ -199,14 +199,14 @@
|
||||
"recoveryKeyCopiedToClipboard": "A chave de recuperação foi copiada para a área de transferência",
|
||||
"recoveryKeyOnForgotPassword": "Caso você esqueça sua senha, a única maneira de recuperar seus dados é com essa chave.",
|
||||
"recoveryKeySaveDescription": "Não armazenamos essa chave, por favor, salve essa chave de 24 palavras em um lugar seguro.",
|
||||
"doThisLater": "Fazer isso mais tarde",
|
||||
"doThisLater": "Fazer isso depois",
|
||||
"saveKey": "Salvar chave",
|
||||
"save": "Salvar",
|
||||
"send": "Enviar",
|
||||
"saveOrSendDescription": "Você deseja salvar isso no seu armazenamento (pasta de downloads por padrão) ou enviá-lo para outros aplicativos?",
|
||||
"saveOnlyDescription": "Você deseja salvar isto no seu armazenamento (pasta de downloads por padrão)?",
|
||||
"back": "Voltar",
|
||||
"createAccount": "Criar uma conta",
|
||||
"createAccount": "Criar conta",
|
||||
"passwordStrength": "Força da senha: {passwordStrengthValue}",
|
||||
"@passwordStrength": {
|
||||
"description": "Text to indicate the password strength",
|
||||
@@ -234,15 +234,15 @@
|
||||
"passwordChangedSuccessfully": "Senha alterada com sucesso",
|
||||
"generatingEncryptionKeys": "Gerando chaves de criptografia...",
|
||||
"continueLabel": "Continuar",
|
||||
"insecureDevice": "Dispositivo não seguro",
|
||||
"insecureDevice": "Dispositivo inseguro",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves seguras neste dispositivo.\n\npor favor, faça o login com um dispositivo diferente.",
|
||||
"howItWorks": "Como funciona",
|
||||
"ackPasswordLostWarning": "Eu entendo que se eu perder minha senha, posso perder meus dados, já que meus dados são <underline>criptografados de ponta a ponta</underline>.",
|
||||
"loginTerms": "Ao clicar em login, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
|
||||
"logInLabel": "Login",
|
||||
"logout": "Encerrar sessão",
|
||||
"logInLabel": "Entrar",
|
||||
"logout": "Sair",
|
||||
"areYouSureYouWantToLogout": "Você tem certeza que deseja encerrar a sessão?",
|
||||
"yesLogout": "Sim, encerrar sessão",
|
||||
"yesLogout": "Sim, sair",
|
||||
"exit": "Sair",
|
||||
"verifyingRecoveryKey": "Verificando chave de recuperação...",
|
||||
"recoveryKeyVerified": "Chave de recuperação verificada",
|
||||
@@ -257,11 +257,11 @@
|
||||
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esquecer sua senha. Você pode encontrar sua chave de recuperação em Configurações > Conta.\n\nDigite sua chave de recuperação aqui para verificar se você a salvou corretamente.",
|
||||
"confirmYourRecoveryKey": "Confirme sua chave de recuperação",
|
||||
"confirm": "Confirmar",
|
||||
"emailYourLogs": "Enviar por email seus logs",
|
||||
"emailYourLogs": "Enviar logs por e-mail",
|
||||
"pleaseSendTheLogsTo": "Por favor, envie os logs para \n{toEmail}",
|
||||
"copyEmailAddress": "Copiar endereço de e-mail",
|
||||
"exportLogs": "Exportar logs",
|
||||
"enterYourRecoveryKey": "Digite sua chave de recuperação",
|
||||
"enterYourRecoveryKey": "Digite a chave de recuperação",
|
||||
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
|
||||
"about": "Sobre",
|
||||
@@ -269,6 +269,7 @@
|
||||
"privacy": "Privacidade",
|
||||
"terms": "Termos",
|
||||
"checkForUpdates": "Verificar por atualizações",
|
||||
"checkStatus": "Verificar status",
|
||||
"downloadUpdate": "Baixar",
|
||||
"criticalUpdateAvailable": "Atualização crítica disponível",
|
||||
"updateAvailable": "Atualização disponível",
|
||||
@@ -277,12 +278,12 @@
|
||||
"youAreOnTheLatestVersion": "Você está na versão mais recente",
|
||||
"warning": "Atenção",
|
||||
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Por favor, armazene-o com segurança.",
|
||||
"iUnderStand": "Eu entendo",
|
||||
"iUnderStand": "Entendo",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Por favor, autentique-se para exportar seus códigos",
|
||||
"importSuccessTitle": "Yay!",
|
||||
"importSuccessTitle": "Oba!",
|
||||
"importSuccessDesc": "Você importou {count} códigos!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
@@ -317,7 +318,7 @@
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
|
||||
"terminateSession": "Encerrar sessão?",
|
||||
"terminate": "Encerrar",
|
||||
"thisDevice": "Este dispositivo",
|
||||
"thisDevice": "Esse dispositivo",
|
||||
"toResetVerifyEmail": "Para redefinir a sua senha, por favor verifique o seu email primeiro.",
|
||||
"thisEmailIsAlreadyInUse": "Este e-mail já está em uso",
|
||||
"verificationFailedPleaseTryAgain": "Falha na verificação. Por favor, tente novamente",
|
||||
@@ -326,11 +327,11 @@
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Desculpe, o código que você inseriu está incorreto",
|
||||
"emailChangedTo": "E-mail alterado para {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Falha na autenticação. Por favor, tente novamente",
|
||||
"authenticationSuccessful": "Autenticação bem-sucedida!",
|
||||
"authenticationSuccessful": "Autenticado!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Autenticação de dois fatores redefinida com sucesso",
|
||||
"incorrectRecoveryKey": "Chave de recuperação incorreta",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "A chave de recuperação inserida está incorreta",
|
||||
"enterPassword": "Insira a senha",
|
||||
"enterPassword": "Inserir senha",
|
||||
"selectExportFormat": "Selecione o formato para exportação",
|
||||
"exportDialogDesc": "As exportações criptografadas ficarão protegidas por uma senha de sua escolha.",
|
||||
"encrypted": "Criptografado",
|
||||
@@ -339,13 +340,13 @@
|
||||
"export": "Exportar",
|
||||
"useOffline": "Usar sem backups",
|
||||
"signInToBackup": "Entre para fazer backup de seus códigos",
|
||||
"singIn": "Iniciar sessão",
|
||||
"singIn": "Entrar",
|
||||
"sigInBackupReminder": "Por favor, exporte seus códigos para garantir que você tenha um backup do qual você possa restaurar.",
|
||||
"offlineModeWarning": "Você escolheu prosseguir sem backups. Por favor, faça backups manuais para ter certeza de que seus códigos estão seguros.",
|
||||
"showLargeIcons": "Mostrar ícones grandes",
|
||||
"shouldHideCode": "Ocultar códigos",
|
||||
"doubleTapToViewHiddenCode": "Você pode tocar duas vezes em uma entrada para ver o código",
|
||||
"focusOnSearchBar": "Foco na pesquisa ao iniciar o aplicativo",
|
||||
"focusOnSearchBar": "Foco na busca ao iniciar o app",
|
||||
"confirmUpdatingkey": "Você tem certeza que deseja atualizar a chave secreta?",
|
||||
"minimizeAppOnCopy": "Minimizar aplicativo ao copiar",
|
||||
"editCodeAuthMessage": "Autenticar para editar o código",
|
||||
@@ -357,11 +358,11 @@
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Não reconhecido. Tente novamente.",
|
||||
"androidBiometricNotRecognized": "Não reconhecido. Tente de novo.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Bem-sucedido",
|
||||
"androidBiometricSuccess": "Êxito",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
@@ -385,7 +386,7 @@
|
||||
"@androidDeviceCredentialsSetupDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"goToSettings": "Ir para Configurações",
|
||||
"goToSettings": "Ir para Ajustes",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
@@ -401,7 +402,7 @@
|
||||
"@iOSGoToSettingsDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSOkButton": "Ok",
|
||||
"iOSOkButton": "OK",
|
||||
"@iOSOkButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
@@ -410,13 +411,16 @@
|
||||
"signOutFromOtherDevices": "Terminar sessão em outros dispositivos",
|
||||
"signOutOtherBody": "Se você acha que alguém pode saber sua senha, você pode forçar todos os outros dispositivos que estão com sua conta a desconectar.",
|
||||
"signOutOtherDevices": "Terminar sessão em outros dispositivos",
|
||||
"doNotSignOut": "Não encerrar sessão",
|
||||
"doNotSignOut": "Não sair",
|
||||
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
|
||||
"hearUsExplanation": "Não rastreamos instalações do aplicativo. Seria útil se você nos contasse onde nos encontrou!",
|
||||
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
|
||||
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
|
||||
"waitingForVerification": "Esperando por verificação...",
|
||||
"passkey": "Chave de acesso",
|
||||
"passkey": "Senha-mestra",
|
||||
"passKeyPendingVerification": "A verificação ainda está pendente",
|
||||
"loginSessionExpired": "Sessão expirada",
|
||||
"loginSessionExpiredDetails": "Sua sessão expirou. Por favor, entre novamente.",
|
||||
"developerSettingsWarning": "Tem certeza de que deseja modificar as configurações de Desenvolvedor?",
|
||||
"developerSettings": "Configurações de desenvolvedor",
|
||||
"serverEndpoint": "Endpoint do servidor",
|
||||
@@ -425,13 +429,15 @@
|
||||
"endpointUpdatedMessage": "Endpoint atualizado com sucesso",
|
||||
"customEndpoint": "Conectado a {endpoint}",
|
||||
"pinText": "Fixar",
|
||||
"unpinText": "Desafixar",
|
||||
"pinnedCodeMessage": "{code} foi fixado",
|
||||
"unpinnedCodeMessage": "{code} foi desafixado",
|
||||
"tags": "Etiquetas",
|
||||
"createNewTag": "Criar etiqueta",
|
||||
"createNewTag": "Criar nova etiqueta",
|
||||
"tag": "Etiqueta",
|
||||
"create": "Criar",
|
||||
"editTag": "Editar etiqueta",
|
||||
"deleteTagTitle": "Excluir etiqueta?",
|
||||
"deleteTagTitle": "Apagar etiqueta?",
|
||||
"deleteTagMessage": "Tem certeza de que deseja excluir esta etiqueta? Essa ação é irreversível.",
|
||||
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
|
||||
"updateNotAvailable": "Atualização não está disponível"
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Эмитент",
|
||||
"codeSecretKeyHint": "Секретный ключ",
|
||||
"codeAccountHint": "Аккаунт (you@domain.com)",
|
||||
"codeTagHint": "Метка",
|
||||
"accountKeyType": "Тип ключа",
|
||||
"sessionExpired": "Сеанс истек",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -77,16 +79,19 @@
|
||||
"data": "Данные",
|
||||
"importCodes": "Импортировать коды",
|
||||
"importTypePlainText": "Обычный текст",
|
||||
"importTypeEnteEncrypted": "Ente Зашифрованный экспорт",
|
||||
"passwordForDecryptingExport": "Пароль для расшифровки экспорта",
|
||||
"passwordEmptyError": "Пароль не может быть пустым",
|
||||
"importFromApp": "Импорт кодов из {appName}",
|
||||
"importGoogleAuthGuide": "Экспортируйте учетные записи из Google Authenticator в QR-код, используя опцию «Перенести учетные записи». Затем с помощью другого устройства отсканируйте QR-код.\n\nСовет: Чтобы сфотографировать QR-код, можно воспользоваться веб-камерой ноутбука.",
|
||||
"importSelectJsonFile": "Выбрать JSON-файл",
|
||||
"importSelectAppExport": "Выбрать файл экспорта {appName}",
|
||||
"importEnteEncGuide": "Выберите зашифрованный JSON файл, экспортированный из Ente",
|
||||
"importRaivoGuide": "Используйте опцию «Export OTPs to Zip archive» в настройках Raivo.\n\nРаспакуйте zip-архив и импортируйте JSON-файл.",
|
||||
"importBitwardenGuide": "Используйте опцию \"Экспортировать хранилище\" в Bitwarden Tools и импортируйте незашифрованный JSON файл.",
|
||||
"importAegisGuide": "Используйте опцию «Экспортировать хранилище» в настройках Aegis.\n\nЕсли ваше хранилище зашифровано, то для его расшифровки потребуется ввести пароль хранилища.",
|
||||
"import2FasGuide": "Используйте опцию \"Settings->Backup -Export\" в 2FAS.\n\nЕсли ваша резервная копия зашифрована, то для расшифровки резервной копии необходимо ввести пароль",
|
||||
"importLastpassGuide": "Используйте опцию \"Перенести аккаунты\" в настройках Lastpass Authenticator и нажмите на \"Экспортировать учетные записи в файл\". Импортируйте загружённый JSON файл.",
|
||||
"exportCodes": "Экспортировать коды",
|
||||
"importLabel": "Импорт",
|
||||
"importInstruction": "Пожалуйста, выберите файл, содержащий список ваших кодов в следующем формате",
|
||||
@@ -99,6 +104,7 @@
|
||||
"authToChangeYourEmail": "Пожалуйста, авторизуйтесь, чтобы изменить адрес электронной почты",
|
||||
"authToChangeYourPassword": "Пожалуйста, авторизуйтесь, чтобы изменить пароль",
|
||||
"authToViewSecrets": "Пожалуйста, авторизуйтесь для просмотра ваших секретов",
|
||||
"authToInitiateSignIn": "Пожалуйста, авторизуйтесь, чтобы начать вход для резервного копирования.",
|
||||
"ok": "Ок",
|
||||
"cancel": "Отменить",
|
||||
"yes": "Да",
|
||||
@@ -110,18 +116,22 @@
|
||||
"copied": "Скопировано",
|
||||
"pleaseTryAgain": "Пожалуйста, попробуйте ещё раз",
|
||||
"existingUser": "Существующий пользователь",
|
||||
"newUser": "Впервые здесь, в Ente",
|
||||
"delete": "Удалить",
|
||||
"enterYourPasswordHint": "Введите пароль",
|
||||
"forgotPassword": "Забыл пароль",
|
||||
"oops": "Ой",
|
||||
"suggestFeatures": "Предложить идеи",
|
||||
"faq": "FAQ",
|
||||
"faq_q_1": "Насколько безопасен Auth?",
|
||||
"faq_a_1": "Все коды, которые вы резервируете с помощью Auth, хранятся в зашифрованном виде. Это означает, что только вы можете получить доступ к своим кодам. Наши приложения имеют открытый исходный код, а наша криптография прошла внешний аудит.",
|
||||
"faq_q_2": "Могу ли я получить доступ к моим кодам на компьютере?",
|
||||
"faq_a_2": "Вы можете получить доступ к своим кодам на сайте @ auth.ente.io.",
|
||||
"faq_q_3": "Как я могу удалить коды?",
|
||||
"faq_a_3": "Вы можете удалить код, проведя пальцем влево по этому элементу.",
|
||||
"faq_q_4": "Как я могу поддержать этот проект?",
|
||||
"faq_a_4": "Вы можете поддержать развитие этого проекта, подписавшись на наше приложение Photos @ ente.io.",
|
||||
"faq_q_5": "Как мне включить FaceID в Auth",
|
||||
"faq_a_5": "Вы можете включить блокировку FaceID в Настройки → Безопасность → Экран блокировки.",
|
||||
"somethingWentWrongMessage": "Что-то пошло не так. Попробуйте еще раз",
|
||||
"leaveFamily": "Покинуть семью",
|
||||
@@ -135,6 +145,8 @@
|
||||
"enterCodeHint": "Введите 6-значный код из\nвашего приложения-аутентификатора",
|
||||
"lostDeviceTitle": "Потеряно устройство?",
|
||||
"twoFactorAuthTitle": "Двухфакторная аутентификация",
|
||||
"passkeyAuthTitle": "Проверка с помощью пароля",
|
||||
"verifyPasskey": "Подтвердить пароль",
|
||||
"recoverAccount": "Восстановить аккаунт",
|
||||
"enterRecoveryKeyHint": "Введите свой ключ восстановления",
|
||||
"recover": "Восстановить",
|
||||
@@ -146,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Неверный QR-код",
|
||||
"noRecoveryKeyTitle": "Нет ключа восстановления?",
|
||||
"enterEmailHint": "Введите свою почту",
|
||||
"invalidEmailTitle": "Неверный адрес электронной почты",
|
||||
@@ -190,6 +203,8 @@
|
||||
"saveKey": "Сохранить ключ",
|
||||
"save": "Сохранить",
|
||||
"send": "Отправить",
|
||||
"saveOrSendDescription": "Вы хотите сохранить это в хранилище (папку загрузок по умолчанию) или отправить в другие приложения?",
|
||||
"saveOnlyDescription": "Вы хотите сохранить это в хранилище (по умолчанию папка загрузок)?",
|
||||
"back": "Вернуться",
|
||||
"createAccount": "Создать аккаунт",
|
||||
"passwordStrength": "Мощность пароля: {passwordStrengthValue}",
|
||||
@@ -254,6 +269,7 @@
|
||||
"privacy": "Конфиденциальность",
|
||||
"terms": "Условия использования",
|
||||
"checkForUpdates": "Проверить наличие обновлений",
|
||||
"checkStatus": "Проверить статус",
|
||||
"downloadUpdate": "Скачать",
|
||||
"criticalUpdateAvailable": "Доступно критическое обновление",
|
||||
"updateAvailable": "Доступно обновление",
|
||||
@@ -337,6 +353,7 @@
|
||||
"deleteCodeAuthMessage": "Аутентификация для удаления кода",
|
||||
"showQRAuthMessage": "Аутентификация для отображения QR-кода",
|
||||
"confirmAccountDeleteTitle": "Подтвердить удаление аккаунта",
|
||||
"confirmAccountDeleteMessage": "Эта учетная запись связана с другими приложениями Ente, если вы ими пользуетесь.\n\nЗагруженные вами данные во всех приложениях ente будут запланированы к удалению, а ваша учетная запись будет удалена без возможности восстановления.",
|
||||
"androidBiometricHint": "Подтвердите личность",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
@@ -397,12 +414,31 @@
|
||||
"doNotSignOut": "Не выходить",
|
||||
"hearUsWhereTitle": "Как вы узнали о Ente? (необязательно)",
|
||||
"hearUsExplanation": "Будет полезно, если вы укажете, где нашли нас, так как мы не отслеживаем установки приложения",
|
||||
"recoveryKeySaved": "Ключ восстановления сохранён в папке Загрузки!",
|
||||
"waitingForBrowserRequest": "Ожидание запроса браузера...",
|
||||
"waitingForVerification": "Ожидание подтверждения...",
|
||||
"passkey": "Ключ",
|
||||
"passKeyPendingVerification": "Верификация еще не завершена",
|
||||
"loginSessionExpired": "Сессия недействительна",
|
||||
"loginSessionExpiredDetails": "Сессия истекла. Войдите снова.",
|
||||
"developerSettingsWarning": "Вы уверены, что хотите изменить настройки разработчика?",
|
||||
"developerSettings": "Настройки разработчика",
|
||||
"serverEndpoint": "Конечная точка сервера",
|
||||
"invalidEndpoint": "Неверная конечная точка",
|
||||
"invalidEndpointMessage": "Извините, введенная вами конечная точка неверна. Пожалуйста, введите корректную конечную точку и повторите попытку.",
|
||||
"endpointUpdatedMessage": "Конечная точка успешно обновлена",
|
||||
"customEndpoint": "Подключено к {endpoint}"
|
||||
"customEndpoint": "Подключено к {endpoint}",
|
||||
"pinText": "Прикрепить",
|
||||
"unpinText": "Открепить",
|
||||
"pinnedCodeMessage": "{code} прикреплен",
|
||||
"unpinnedCodeMessage": "{code} откреплен",
|
||||
"tags": "Метки",
|
||||
"createNewTag": "Создать новую метку",
|
||||
"tag": "Метка",
|
||||
"create": "Создать",
|
||||
"editTag": "Изменить метку",
|
||||
"deleteTagTitle": "Удалить метку?",
|
||||
"deleteTagMessage": "Вы уверены, что хотите удалить эту метку? Это действие необратимо.",
|
||||
"somethingWentWrongParsingCode": "Мы не смогли разобрать коды {x}.",
|
||||
"updateNotAvailable": "Обновление недоступно"
|
||||
}
|
||||
@@ -61,6 +61,7 @@
|
||||
"welcomeBack": "Välkommen tillbaka!",
|
||||
"changePassword": "Ändra lösenord",
|
||||
"importCodes": "Importera koder",
|
||||
"exportCodes": "Exportera koder",
|
||||
"cancel": "Avbryt",
|
||||
"yes": "Ja",
|
||||
"no": "Nej",
|
||||
@@ -76,6 +77,7 @@
|
||||
"scan": "Skanna",
|
||||
"twoFactorAuthTitle": "Tvåfaktorsautentisering",
|
||||
"enterRecoveryKeyHint": "Ange din återställningsnyckel",
|
||||
"invalidQRCode": "Ogiltig QR-kod",
|
||||
"noRecoveryKeyTitle": "Ingen återställningsnyckel?",
|
||||
"enterEmailHint": "Ange din e-postadress",
|
||||
"invalidEmailTitle": "Ogiltig e-postadress",
|
||||
@@ -143,6 +145,8 @@
|
||||
},
|
||||
"pendingSyncs": "Varning",
|
||||
"activeSessions": "Aktiva sessioner",
|
||||
"incorrectCode": "Felaktig kod",
|
||||
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
|
||||
"enterPassword": "Ange lösenord",
|
||||
"export": "Exportera",
|
||||
"singIn": "Logga in",
|
||||
@@ -155,5 +159,6 @@
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
"noInternetConnection": "Ingen internetanslutning",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen."
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen.",
|
||||
"loginSessionExpiredDetails": "Din session har upphört. Logga in igen."
|
||||
}
|
||||
1
auth/lib/l10n/arb/app_te.arb
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -20,6 +20,8 @@
|
||||
"codeIssuerHint": "Yayınlayan",
|
||||
"codeSecretKeyHint": "Gizli Anahtar",
|
||||
"codeAccountHint": "Hesap (ornek@domain.com)",
|
||||
"codeTagHint": "Etiket",
|
||||
"accountKeyType": "Anahtar türü",
|
||||
"sessionExpired": "Oturum süresi doldu",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
@@ -46,7 +48,7 @@
|
||||
},
|
||||
"copyEmailAction": "E-postayı Kopyala",
|
||||
"exportLogsAction": "Günlüğü dışa aktar",
|
||||
"reportABug": "Bir hata bildir",
|
||||
"reportABug": "Hata bildirin",
|
||||
"crashAndErrorReporting": "Çökme ve hata bildirimi",
|
||||
"reportBug": "Hata bildir",
|
||||
"emailUsMessage": "Lütfen bize {email} adresinden ulaşın",
|
||||
@@ -77,12 +79,14 @@
|
||||
"data": "Veri",
|
||||
"importCodes": "Kodu içe aktar",
|
||||
"importTypePlainText": "Salt metin",
|
||||
"importTypeEnteEncrypted": "Ente Şifreli dışa aktarma",
|
||||
"passwordForDecryptingExport": "Dışa aktarımın şifresini çözmek için parola",
|
||||
"passwordEmptyError": "Şifre boş olamaz",
|
||||
"importFromApp": "Kodları {appName} uygulamasından içe aktarın",
|
||||
"importGoogleAuthGuide": "\"Hesapları Aktar\" seçeneğini kullanarak hesaplarınızı Google Authenticator'dan bir QR koduna aktarın. Ardından başka bir cihaz kullanarak QR kodunu tarayın.\n\nİpucu: QR kodunun fotoğrafını çekmek için dizüstü bilgisayarınızın kamerasını kullanabilirsiniz.",
|
||||
"importSelectJsonFile": "JSON dosyasını seçin",
|
||||
"importSelectAppExport": "{appName} dışarı aktarma dosyasını seçin",
|
||||
"importEnteEncGuide": "Ente'den dışa aktarılan şifrelenmiş JSON dosyasını seçin",
|
||||
"importRaivoGuide": "Raivo'nun ayarlarında \"OTP'leri Zip arşivine aktar\" seçeneğini kullanın.\n\nZip dosyasını çıkarın ve JSON dosyasını içe aktarın.",
|
||||
"importBitwardenGuide": "Bitwarden Tools içindeki \"Kasayı dışa aktar\" seçeneğini kullanın ve şifrelenmemiş JSON dosyasını içe aktarın.",
|
||||
"importAegisGuide": "Aegis'in Ayarlarında \"Kasayı dışa aktar\" seçeneğini kullanın.\n\nKasanız şifrelenmişse, kasanın şifresini çözmek için kasa parolasını girmeniz gerekecektir.",
|
||||
@@ -112,18 +116,22 @@
|
||||
"copied": "Kopyalandı",
|
||||
"pleaseTryAgain": "Lütfen tekrar deneyin",
|
||||
"existingUser": "Mevcut kullanıcı",
|
||||
"newUser": "Ente'de Yeni",
|
||||
"delete": "Sil",
|
||||
"enterYourPasswordHint": "Parolanızı girin",
|
||||
"forgotPassword": "Şifremi unuttum",
|
||||
"oops": "Hay aksi",
|
||||
"suggestFeatures": "Özellik önerin",
|
||||
"faq": "SSS",
|
||||
"faq_q_1": "Kimlik doğrulayıcı ne kadar güvenli?",
|
||||
"faq_a_1": "Auth aracılığıyla yedeklediğiniz tüm kodlar uçtan uca şifrelenmiş olarak saklanır. Böylece kodlarınıza yalnızca siz erişebilirsiniz. Uygulamalarımız açık kaynaklıdır ve şifrelememiz dış denetimden geçmiştir.",
|
||||
"faq_q_2": "Kodlarıma masaüstünden erişebilir miyim?",
|
||||
"faq_a_2": "Kodlarınıza internet üzerinden @ auth.ente.io adresinden erişebilirsiniz.",
|
||||
"faq_q_3": "Kodları nasıl silebilirim?",
|
||||
"faq_a_3": "Bir kodu, o öğenin üzerinde sola kaydırarak silebilirsiniz.",
|
||||
"faq_q_4": "Bu projeye nasıl destek olabilirim?",
|
||||
"faq_a_4": "Fotoğraflar uygulamamıza @ ente.io abone olarak bu projenin geliştirilmesine destek olabilirsiniz.",
|
||||
"faq_q_5": "Auth'ta FaceID kilidini nasıl etkinleştirebilirim",
|
||||
"faq_a_5": "FaceID kilidini Ayarlar → Güvenlik → Kilit Ekranı altında etkinleştirebilirsiniz.",
|
||||
"somethingWentWrongMessage": "Bir şeyler ters gitti, lütfen tekrar deneyin",
|
||||
"leaveFamily": "Aile planından ayrıl",
|
||||
@@ -137,6 +145,8 @@
|
||||
"enterCodeHint": "Kimlik doğrulayıcı uygulamanızdaki 6 haneli doğrulama kodunu girin",
|
||||
"lostDeviceTitle": "Cihazınızı mı kaybettiniz?",
|
||||
"twoFactorAuthTitle": "İki faktörlü kimlik doğrulama",
|
||||
"passkeyAuthTitle": "Geçiş anahtarı doğrulaması",
|
||||
"verifyPasskey": "Geçiş anahtarını doğrula",
|
||||
"recoverAccount": "Hesap kurtarma",
|
||||
"enterRecoveryKeyHint": "Kurtarma anahtarınızı girin",
|
||||
"recover": "Kurtar",
|
||||
@@ -148,6 +158,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Geçersiz QR kodu",
|
||||
"noRecoveryKeyTitle": "Kurtarma anahtarınız yok mu?",
|
||||
"enterEmailHint": "E-posta adresinizi girin",
|
||||
"invalidEmailTitle": "Geçersiz e-posta adresi",
|
||||
@@ -190,6 +201,10 @@
|
||||
"recoveryKeySaveDescription": "Biz bu anahtarı saklamıyoruz, lütfen. bu 24 kelimelik anahtarı güvenli bir yerde saklayın.",
|
||||
"doThisLater": "Bunu daha sonra yap",
|
||||
"saveKey": "Anahtarı kaydet",
|
||||
"save": "Kaydet",
|
||||
"send": "Gönder",
|
||||
"saveOrSendDescription": "Bunu belleğinize mi kaydedeceksiniz (İndirilenler klasörü varsayılandır) yoksa diğer uygulamalara mı göndereceksiniz?",
|
||||
"saveOnlyDescription": "Bunu belleğinize kaydetmek ister misiniz? (İndirilenler klasörü varsayılandır)",
|
||||
"back": "Geri",
|
||||
"createAccount": "Hesap oluştur",
|
||||
"passwordStrength": "Şifre gücü: {passwordStrengthValue}",
|
||||
@@ -337,6 +352,7 @@
|
||||
"deleteCodeAuthMessage": "Kodu silmek için doğrulama yapın",
|
||||
"showQRAuthMessage": "QR kodunu göstermek için doğrulama yapın",
|
||||
"confirmAccountDeleteTitle": "Hesap silme işlemini onayla",
|
||||
"confirmAccountDeleteMessage": "Kullandığınız Ente uygulamaları varsa bu hesap diğer Ente uygulamalarıyla bağlantılıdır.\n\nTüm Ente uygulamalarına yüklediğiniz veriler ve hesabınız kalıcı olarak silinecektir.",
|
||||
"androidBiometricHint": "Kimliği doğrula",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
@@ -396,5 +412,29 @@
|
||||
"signOutOtherDevices": "Diğer cihazlardan çıkış yap",
|
||||
"doNotSignOut": "Çıkış yapma",
|
||||
"hearUsWhereTitle": "Ente'yi nereden duydunuz? (opsiyonel)",
|
||||
"hearUsExplanation": "Biz uygulama kurulumlarını takip etmiyoruz. Bizi nereden duyduğunuzdan bahsetmeniz bize çok yardımcı olacak!"
|
||||
"hearUsExplanation": "Biz uygulama kurulumlarını takip etmiyoruz. Bizi nereden duyduğunuzdan bahsetmeniz bize çok yardımcı olacak!",
|
||||
"recoveryKeySaved": "Kurtarma anahtarı İndirilenler klasörüne kaydedildi!",
|
||||
"waitingForBrowserRequest": "Tarayıcı isteği bekleniyor...",
|
||||
"waitingForVerification": "Doğrulama bekleniyor...",
|
||||
"passkey": "Geçiş anahtarı",
|
||||
"developerSettingsWarning": "Geliştirici ayarlarını değiştirmekten emin misiniz?",
|
||||
"developerSettings": "Geliştirici ayarları",
|
||||
"serverEndpoint": "Sunucu uç noktası",
|
||||
"invalidEndpoint": "Geçersiz uç nokta",
|
||||
"invalidEndpointMessage": "Üzgünüz, girdiğiniz uç nokta geçersiz. Lütfen geçerli bir uç nokta girin ve tekrar deneyin.",
|
||||
"endpointUpdatedMessage": "Uç nokta başarıyla güncellendi",
|
||||
"customEndpoint": "Bağlandı: {endpoint}",
|
||||
"pinText": "Sabitle",
|
||||
"unpinText": "Sabitlemeyi kaldır",
|
||||
"pinnedCodeMessage": "{code} sabitlendi",
|
||||
"unpinnedCodeMessage": "{code} sabitlemesi kaldırıldı",
|
||||
"tags": "Etiketler",
|
||||
"createNewTag": "Yeni etiket oluştur",
|
||||
"tag": "Etiket",
|
||||
"create": "Oluştur",
|
||||
"editTag": "Etiketi düzenle",
|
||||
"deleteTagTitle": "Etiket silinsin mi?",
|
||||
"deleteTagMessage": "Bu etiketi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
|
||||
"somethingWentWrongParsingCode": "{x} kodu ayrıştıramadık.",
|
||||
"updateNotAvailable": "Güncelleme mevcut değil"
|
||||
}
|
||||
@@ -269,6 +269,7 @@
|
||||
"privacy": "隐私",
|
||||
"terms": "使用条款",
|
||||
"checkForUpdates": "检查更新",
|
||||
"checkStatus": "检查状态",
|
||||
"downloadUpdate": "下载",
|
||||
"criticalUpdateAvailable": "有重要更新可用",
|
||||
"updateAvailable": "有可用的更新",
|
||||
@@ -417,6 +418,9 @@
|
||||
"waitingForBrowserRequest": "正在等待浏览器请求...",
|
||||
"waitingForVerification": "等待验证...",
|
||||
"passkey": "通行密钥",
|
||||
"passKeyPendingVerification": "仍需进行验证",
|
||||
"loginSessionExpired": "会话已过期",
|
||||
"loginSessionExpiredDetails": "您的会话已过期。请重新登录。",
|
||||
"developerSettingsWarning": "您确定要修改开发者设置吗?",
|
||||
"developerSettings": "开发者设置",
|
||||
"serverEndpoint": "服务器端点",
|
||||
|
||||
@@ -66,8 +66,6 @@ Future<void> initSystemTray() async {
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
initSystemTray().ignore();
|
||||
|
||||
if (PlatformUtil.isDesktop()) {
|
||||
await windowManager.ensureInitialized();
|
||||
await WindowListenerService.instance.init();
|
||||
@@ -77,8 +75,10 @@ void main() async {
|
||||
await windowManager.waitUntilReadyToShow(windowOptions, () async {
|
||||
await windowManager.show();
|
||||
await windowManager.focus();
|
||||
initSystemTray().ignore();
|
||||
});
|
||||
}
|
||||
|
||||
await _runInForeground();
|
||||
await _setupPrivacyScreen();
|
||||
if (Platform.isAndroid) {
|
||||
@@ -132,7 +132,7 @@ Future _runWithLogs(Function() function, {String prefix = ""}) async {
|
||||
}
|
||||
|
||||
void _registerWindowsProtocol() {
|
||||
const kWindowsScheme = 'ente';
|
||||
const kWindowsScheme = 'enteauth';
|
||||
// Register our protocol only on Windows platform
|
||||
if (!kIsWeb && Platform.isWindows) {
|
||||
WindowsProtocolHandler()
|
||||
|
||||
@@ -42,7 +42,7 @@ class PasskeyService {
|
||||
Future<void> openPasskeyPage(BuildContext context) async {
|
||||
try {
|
||||
final jwtToken = await getJwtToken();
|
||||
final url = "https://accounts.ente.io/account-handoff?token=$jwtToken";
|
||||
final url = "https://accounts.ente.io/passkeys?token=$jwtToken";
|
||||
await launchUrlString(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
|
||||
@@ -165,7 +165,11 @@ class UserService {
|
||||
return userDetails;
|
||||
} catch (e) {
|
||||
_logger.warning("Failed to fetch", e);
|
||||
rethrow;
|
||||
if (e is DioException && e.response?.statusCode == 401) {
|
||||
throw UnauthorizedError();
|
||||
} else {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,6 +217,12 @@ class UserService {
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.severe(e);
|
||||
// check if token is already invalid
|
||||
if (e is DioException && e.response?.statusCode == 401) {
|
||||
await Configuration.instance.logout();
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
return;
|
||||
}
|
||||
//This future is for waiting for the dialog from which logout() is called
|
||||
//to close and only then to show the error dialog.
|
||||
Future.delayed(
|
||||
@@ -266,32 +276,77 @@ class UserService {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
|
||||
final userPassword = Configuration.instance.getVolatilePassword();
|
||||
if (userPassword == null) throw Exception("volatile password is null");
|
||||
|
||||
await _saveConfiguration(response);
|
||||
|
||||
Widget page;
|
||||
if (Configuration.instance.getEncryptedToken() != null) {
|
||||
await Configuration.instance.decryptSecretsAndGetKeyEncKey(
|
||||
userPassword,
|
||||
Configuration.instance.getKeyAttributes()!,
|
||||
);
|
||||
page = const HomePage();
|
||||
} else {
|
||||
throw Exception("unexpected response during passkey verification");
|
||||
}
|
||||
|
||||
// ignore: unawaited_futures
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return page;
|
||||
Future<dynamic> getTokenForPasskeySession(String sessionID) async {
|
||||
try {
|
||||
final response = await _dio.get(
|
||||
"${_config.getHttpEndpoint()}/users/two-factor/passkeys/get-token",
|
||||
queryParameters: {
|
||||
"sessionID": sessionID,
|
||||
},
|
||||
),
|
||||
(route) => route.isFirst,
|
||||
);
|
||||
);
|
||||
return response.data;
|
||||
} on DioException catch (e) {
|
||||
if (e.response != null) {
|
||||
if (e.response!.statusCode == 404 || e.response!.statusCode == 410) {
|
||||
throw PassKeySessionExpiredError();
|
||||
}
|
||||
if (e.response!.statusCode == 400) {
|
||||
throw PassKeySessionNotVerifiedError();
|
||||
}
|
||||
}
|
||||
rethrow;
|
||||
} catch (e, s) {
|
||||
_logger.severe("unexpected error", e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
|
||||
final ProgressDialog dialog =
|
||||
createProgressDialog(context, context.l10n.pleaseWait);
|
||||
await dialog.show();
|
||||
try {
|
||||
final userPassword = _config.getVolatilePassword();
|
||||
await _saveConfiguration(response);
|
||||
if (userPassword == null) {
|
||||
await dialog.hide();
|
||||
// ignore: unawaited_futures
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return const PasswordReentryPage();
|
||||
},
|
||||
),
|
||||
(route) => route.isFirst,
|
||||
);
|
||||
} else {
|
||||
Widget page;
|
||||
if (_config.getEncryptedToken() != null) {
|
||||
await _config.decryptSecretsAndGetKeyEncKey(
|
||||
userPassword,
|
||||
_config.getKeyAttributes()!,
|
||||
);
|
||||
page = const HomePage();
|
||||
} else {
|
||||
throw Exception("unexpected response during passkey verification");
|
||||
}
|
||||
await dialog.hide();
|
||||
|
||||
// ignore: unawaited_futures
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return page;
|
||||
},
|
||||
),
|
||||
(route) => route.isFirst,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.severe(e);
|
||||
await dialog.hide();
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> verifyEmail(
|
||||
@@ -316,9 +371,12 @@ class UserService {
|
||||
await dialog.hide();
|
||||
if (response.statusCode == 200) {
|
||||
Widget page;
|
||||
final String passkeySessionID = response.data["passkeySessionID"];
|
||||
final String twoFASessionID = response.data["twoFactorSessionID"];
|
||||
if (twoFASessionID.isNotEmpty) {
|
||||
page = TwoFactorAuthenticationPage(twoFASessionID);
|
||||
} else if (passkeySessionID.isNotEmpty) {
|
||||
page = PasskeyPage(passkeySessionID);
|
||||
} else {
|
||||
await _saveConfiguration(response);
|
||||
if (Configuration.instance.getEncryptedToken() != null) {
|
||||
|
||||
@@ -32,7 +32,7 @@ class CodeDisplayStore {
|
||||
if (code.hasError) continue;
|
||||
tags.addAll(code.display.tags);
|
||||
}
|
||||
return tags.toList();
|
||||
return tags.toList()..sort();
|
||||
}
|
||||
|
||||
Future<void> showDeleteTagDialog(BuildContext context, String tag) async {
|
||||
|
||||
@@ -3,51 +3,64 @@ import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/store/authenticator_db.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
bool showingLogoutDialog = false;
|
||||
Future<void> autoLogoutAlert(BuildContext context) async {
|
||||
final l10n = context.l10n;
|
||||
final AlertDialog alert = AlertDialog(
|
||||
title: Text(l10n.sessionExpired),
|
||||
content: Text(l10n.pleaseLoginAgain),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
l10n.ok,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
if (showingLogoutDialog) {
|
||||
debugPrint("Ignore event as already logging out");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
showingLogoutDialog = true;
|
||||
final l10n = context.l10n;
|
||||
final AlertDialog alert = AlertDialog(
|
||||
title: Text(l10n.sessionExpired),
|
||||
content: Text(l10n.pleaseLoginAgain),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(
|
||||
l10n.ok,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
onPressed: () async {
|
||||
Navigator.of(context, rootNavigator: true).pop('dialog');
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
int pendingSyncCount =
|
||||
await AuthenticatorDB.instance.getNeedSyncCount();
|
||||
if (pendingSyncCount > 0) {
|
||||
// ignore: unawaited_futures
|
||||
showChoiceActionSheet(
|
||||
context,
|
||||
title: l10n.pendingSyncs,
|
||||
body: l10n.pendingSyncsWarningBody,
|
||||
firstButtonLabel: context.l10n.yesLogout,
|
||||
isCritical: true,
|
||||
firstButtonOnTap: () async {
|
||||
await _logout(context, l10n);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
await _logout(context, l10n);
|
||||
}
|
||||
},
|
||||
),
|
||||
onPressed: () async {
|
||||
Navigator.of(context, rootNavigator: true).pop('dialog');
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
int pendingSyncCount =
|
||||
await AuthenticatorDB.instance.getNeedSyncCount();
|
||||
if (pendingSyncCount > 0) {
|
||||
// ignore: unawaited_futures
|
||||
showChoiceActionSheet(
|
||||
context,
|
||||
title: l10n.pendingSyncs,
|
||||
body: l10n.pendingSyncsWarningBody,
|
||||
firstButtonLabel: context.l10n.yesLogout,
|
||||
isCritical: true,
|
||||
firstButtonOnTap: () async {
|
||||
await _logout(context, l10n);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
await _logout(context, l10n);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
await showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (BuildContext context) {
|
||||
return alert;
|
||||
},
|
||||
);
|
||||
],
|
||||
);
|
||||
await showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (BuildContext context) {
|
||||
return alert;
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
Logger("LogoutDialog").severe('failed to process sign out action', e);
|
||||
} finally {
|
||||
showingLogoutDialog = false;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _logout(BuildContext context, AppLocalizations l10n) async {
|
||||
|
||||
@@ -33,7 +33,7 @@ enum ButtonType {
|
||||
|
||||
Color defaultButtonColor(EnteColorScheme colorScheme) {
|
||||
if (isPrimary) {
|
||||
return colorScheme.primary500;
|
||||
return colorScheme.primary400;
|
||||
}
|
||||
if (isSecondary) {
|
||||
return colorScheme.fillFaint;
|
||||
|
||||
@@ -238,6 +238,8 @@ class _HomePageState extends State<HomePage> {
|
||||
title: !_showSearchBox
|
||||
? const Text('Ente Auth')
|
||||
: TextField(
|
||||
autocorrect: false,
|
||||
enableSuggestions: false,
|
||||
focusNode: searchInputFocusNode,
|
||||
autofocus: _searchText.isEmpty,
|
||||
controller: _textController,
|
||||
|
||||
@@ -2,12 +2,14 @@ import 'dart:convert';
|
||||
|
||||
import 'package:app_links/app_links.dart';
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/core/errors.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/account/two_factor.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/ui/components/models/button_type.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/toast_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
@@ -41,13 +43,38 @@ class _PasskeyPageState extends State<PasskeyPage> {
|
||||
|
||||
Future<void> launchPasskey() async {
|
||||
await launchUrlString(
|
||||
"https://accounts.ente.io/passkeys/flow?"
|
||||
"https://accounts.ente.io/passkeys/verify?"
|
||||
"passkeySessionID=${widget.sessionID}"
|
||||
"&redirect=enteauth://passkey",
|
||||
"&redirect=enteauth://passkey"
|
||||
"&clientPackage=io.ente.auth",
|
||||
mode: LaunchMode.externalApplication,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> checkStatus() async {
|
||||
late dynamic response;
|
||||
try {
|
||||
response = await UserService.instance
|
||||
.getTokenForPasskeySession(widget.sessionID);
|
||||
} on PassKeySessionNotVerifiedError {
|
||||
showToast(context, context.l10n.passKeyPendingVerification);
|
||||
return;
|
||||
} on PassKeySessionExpiredError {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.loginSessionExpired,
|
||||
context.l10n.loginSessionExpiredDetails,
|
||||
);
|
||||
Navigator.of(context).pop();
|
||||
return;
|
||||
} catch (e, s) {
|
||||
_logger.severe("failed to check status", e, s);
|
||||
showGenericErrorDialog(context: context).ignore();
|
||||
return;
|
||||
}
|
||||
await UserService.instance.onPassKeyVerified(context, response);
|
||||
}
|
||||
|
||||
Future<void> _handleDeeplink(String? link) async {
|
||||
if (!context.mounted ||
|
||||
Configuration.instance.hasConfiguredAccount() ||
|
||||
@@ -59,8 +86,20 @@ class _PasskeyPageState extends State<PasskeyPage> {
|
||||
}
|
||||
try {
|
||||
if (mounted && link.toLowerCase().startsWith("enteauth://passkey")) {
|
||||
final String? uri = Uri.parse(link).queryParameters['response'];
|
||||
String base64String = uri!.toString();
|
||||
if (Configuration.instance.isLoggedIn()) {
|
||||
_logger.info('ignored deeplink: already configured');
|
||||
showToast(context, 'Account is already configured.');
|
||||
return;
|
||||
}
|
||||
final parsedUri = Uri.parse(link);
|
||||
final sessionID = parsedUri.queryParameters['passkeySessionID'];
|
||||
if (sessionID != widget.sessionID) {
|
||||
showToast(context, "Session ID mismatch");
|
||||
_logger.warning('ignored deeplink: sessionID mismatch');
|
||||
return;
|
||||
}
|
||||
final String? authResponse = parsedUri.queryParameters['response'];
|
||||
String base64String = authResponse!.toString();
|
||||
while (base64String.length % 4 != 0) {
|
||||
base64String += '=';
|
||||
}
|
||||
@@ -118,9 +157,23 @@ class _PasskeyPageState extends State<PasskeyPage> {
|
||||
const SizedBox(height: 16),
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.primary,
|
||||
labelText: context.l10n.verifyPasskey,
|
||||
labelText: context.l10n.tryAgain,
|
||||
onTap: () => launchPasskey(),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
ButtonWidget(
|
||||
buttonType: ButtonType.secondary,
|
||||
labelText: context.l10n.checkStatus,
|
||||
onTap: () async {
|
||||
try {
|
||||
await checkStatus();
|
||||
} catch (e) {
|
||||
debugPrint('failed to check status %e');
|
||||
showGenericErrorDialog(context: context).ignore();
|
||||
}
|
||||
},
|
||||
shouldSurfaceExecutionStates: true,
|
||||
),
|
||||
const Padding(padding: EdgeInsets.all(30)),
|
||||
GestureDetector(
|
||||
behavior: HitTestBehavior.opaque,
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'dart:typed_data';
|
||||
import 'package:convert/convert.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/models/code_display.dart';
|
||||
import 'package:ente_auth/services/authenticator_service.dart';
|
||||
import 'package:ente_auth/store/code_store.dart';
|
||||
import 'package:ente_auth/ui/common/progress_dialog.dart';
|
||||
@@ -76,7 +77,7 @@ Future<void> _pickAegisJsonFile(BuildContext context) async {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.sorry,
|
||||
context.l10n.importFailureDesc,
|
||||
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -126,8 +127,19 @@ Future<int?> _processAegisExportFile(
|
||||
} else {
|
||||
aegisDB = decodedJson['db'];
|
||||
}
|
||||
final Map<String, String> groupIDToName = {};
|
||||
try {
|
||||
for (var item in aegisDB?['groups']) {
|
||||
groupIDToName[item['uuid']] = item['name'];
|
||||
}
|
||||
} catch (e) {
|
||||
Logger("AegisImport").warning("Failed to parse groups", e);
|
||||
}
|
||||
|
||||
final parsedCodes = [];
|
||||
for (var item in aegisDB?['entries']) {
|
||||
bool isFavorite = item['favorite'] ?? false;
|
||||
List<String> tags = [];
|
||||
var kind = item['type'];
|
||||
var account = item['name'];
|
||||
var issuer = item['issuer'];
|
||||
@@ -137,20 +149,27 @@ Future<int?> _processAegisExportFile(
|
||||
var digits = item['info']['digits'];
|
||||
|
||||
var counter = item['info']['counter'];
|
||||
|
||||
for (var group in item['groups']) {
|
||||
if (groupIDToName.containsKey(group)) {
|
||||
tags.add(groupIDToName[group]!);
|
||||
}
|
||||
}
|
||||
// Build the OTP URL
|
||||
String otpUrl;
|
||||
|
||||
if (kind.toLowerCase() == 'totp') {
|
||||
if (kind.toLowerCase() == 'totp' || kind.toLowerCase() == 'steam') {
|
||||
otpUrl =
|
||||
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&period=$timer';
|
||||
} else if (kind.toLowerCase() == 'hotp') {
|
||||
otpUrl =
|
||||
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
|
||||
} else {
|
||||
throw Exception('Invalid OTP type');
|
||||
throw Exception('Invalid OTP type: $kind');
|
||||
}
|
||||
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
|
||||
|
||||
Code code = Code.fromOTPAuthUrl(otpUrl);
|
||||
code = code.copyWith(display: CodeDisplay(pinned: isFavorite, tags: tags));
|
||||
parsedCodes.add(code);
|
||||
}
|
||||
|
||||
for (final code in parsedCodes) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/models/code_display.dart';
|
||||
import 'package:ente_auth/services/authenticator_service.dart';
|
||||
import 'package:ente_auth/store/code_store.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
@@ -14,6 +15,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
Future<void> showBitwardenImportInstruction(BuildContext context) async {
|
||||
final l10n = context.l10n;
|
||||
@@ -60,12 +62,13 @@ Future<void> _pickBitwardenJsonFile(BuildContext context) async {
|
||||
if (count != null) {
|
||||
await importSuccessDialog(context, count);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch (e, s) {
|
||||
Logger("BitwardenImport").severe('Failed to import', e, s);
|
||||
await progressDialog.hide();
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.sorry,
|
||||
context.l10n.importFailureDesc,
|
||||
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -78,19 +81,36 @@ Future<int?> _processBitwardenExportFile(
|
||||
final jsonString = await file.readAsString();
|
||||
final data = jsonDecode(jsonString);
|
||||
List<dynamic> jsonArray = data['items'];
|
||||
final Map<String, String> folderIdToName = {};
|
||||
try {
|
||||
for (var item in data['folders']) {
|
||||
folderIdToName[item['id']] = item['name'];
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint("Failed to get folder details $e");
|
||||
}
|
||||
final parsedCodes = [];
|
||||
for (var item in jsonArray) {
|
||||
if (item['login'] != null && item['login']['totp'] != null) {
|
||||
var totp = item['login']['totp'];
|
||||
String? folderID = item['folderId'];
|
||||
|
||||
Code code;
|
||||
|
||||
if (totp.contains("otpauth://")) {
|
||||
code = Code.fromOTPAuthUrl(totp);
|
||||
} else if (totp.contains("steam://")) {
|
||||
var secret = totp.split("steam://")[1];
|
||||
code = Code.fromAccountAndSecret(
|
||||
Type.steam,
|
||||
item['login']['username'],
|
||||
item['name'],
|
||||
secret,
|
||||
null,
|
||||
Code.steamDigits,
|
||||
);
|
||||
} else {
|
||||
var issuer = item['name'];
|
||||
var account = item['login']['username'];
|
||||
|
||||
var issuer = item['name'] ?? '';
|
||||
var account = item['login']['username'] ?? '';
|
||||
code = Code.fromAccountAndSecret(
|
||||
Type.totp,
|
||||
account,
|
||||
@@ -100,6 +120,11 @@ Future<int?> _processBitwardenExportFile(
|
||||
Code.defaultDigits,
|
||||
);
|
||||
}
|
||||
if (folderID != null && folderIdToName.containsKey(folderID)) {
|
||||
code = code.copyWith(
|
||||
display: CodeDisplay(tags: [folderIdToName[folderID]!]),
|
||||
);
|
||||
}
|
||||
|
||||
parsedCodes.add(code);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
Future<void> showLastpassImportInstruction(BuildContext context) async {
|
||||
final l10n = context.l10n;
|
||||
@@ -60,12 +61,13 @@ Future<void> _pickLastpassJsonFile(BuildContext context) async {
|
||||
if (count != null) {
|
||||
await importSuccessDialog(context, count);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch (e, s) {
|
||||
Logger('LastPassImport').severe('exception while processing import', e, s);
|
||||
await progressDialog.hide();
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.sorry,
|
||||
context.l10n.importFailureDesc,
|
||||
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
Future<void> showRaivoImportInstruction(BuildContext context) async {
|
||||
final l10n = context.l10n;
|
||||
@@ -60,12 +61,13 @@ Future<void> _pickRaivoJsonFile(BuildContext context) async {
|
||||
if (count != null) {
|
||||
await importSuccessDialog(context, count);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch (e, s) {
|
||||
Logger("RaivoImport").severe('Failed to import', e, s);
|
||||
await progressDialog.hide();
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.sorry,
|
||||
context.l10n.importFailureDesc,
|
||||
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -103,7 +105,7 @@ Future<int?> _processRaivoExportFile(BuildContext context, String path) async {
|
||||
otpUrl =
|
||||
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
|
||||
} else {
|
||||
throw Exception('Invalid OTP type');
|
||||
throw Exception('Invalid OTP type $kind');
|
||||
}
|
||||
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ Future<void> _pick2FasFile(BuildContext context) async {
|
||||
await showErrorDialog(
|
||||
context,
|
||||
context.l10n.sorry,
|
||||
context.l10n.importFailureDesc,
|
||||
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -139,7 +139,10 @@ Future<int?> _process2FasExportFile(
|
||||
for (var item in decodedServices) {
|
||||
var kind = item['otp']['tokenType'];
|
||||
var account = item['otp']['account'] ?? '';
|
||||
var issuer = item['otp']['issuer'] ?? item['name'] ?? '';
|
||||
var issuer = item['otp']['issuer'];
|
||||
if (issuer == null || (issuer as String).isEmpty) {
|
||||
issuer = item['name'] ?? '';
|
||||
}
|
||||
var algorithm = item['otp']['algorithm'];
|
||||
var secret = item['secret'];
|
||||
var timer = item['otp']['period'];
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'dart:typed_data';
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/user_details.dart';
|
||||
import 'package:ente_auth/services/auth_feature_flag.dart';
|
||||
import 'package:ente_auth/services/local_authentication_service.dart';
|
||||
import 'package:ente_auth/services/passkey_service.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
@@ -66,20 +65,17 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
|
||||
// We don't know if the user can disable MFA yet, so we fetch the info
|
||||
UserService.instance.getUserDetailsV2().ignore();
|
||||
}
|
||||
final bool isInternalUser =
|
||||
FeatureFlagService.instance.isInternalUserOrDebugBuild();
|
||||
children.addAll([
|
||||
if (isInternalUser) sectionOptionSpacing,
|
||||
if (isInternalUser)
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: l10n.passkey,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async => await onPasskeyClick(context),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: l10n.passkey,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async => await onPasskeyClick(context),
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:otp/otp.dart' as otp;
|
||||
import 'package:steam_totp/steam_totp.dart';
|
||||
|
||||
String getOTP(Code code) {
|
||||
if (code.type == Type.steam) {
|
||||
if (code.type == Type.steam || code.issuer.toLowerCase() == 'steam') {
|
||||
return _getSteamCode(code);
|
||||
}
|
||||
if (code.type == Type.hotp) {
|
||||
@@ -39,7 +39,7 @@ String _getSteamCode(Code code, [bool isNext = false]) {
|
||||
}
|
||||
|
||||
String getNextTotp(Code code) {
|
||||
if (code.type == Type.steam) {
|
||||
if (code.type == Type.steam || code.issuer.toLowerCase() == 'steam') {
|
||||
return _getSteamCode(code, true);
|
||||
}
|
||||
return otp.OTP.generateTOTPCodeString(
|
||||
|
||||
@@ -34,7 +34,7 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
"Debug" "Profile" "Release")
|
||||
endif()
|
||||
|
||||
# Compilation ui.settings that should be applied to most targets.
|
||||
# Compilation settings that should be applied to most targets.
|
||||
#
|
||||
# Be cautious about adding new options here, as plugins use this function by
|
||||
# default. In most cases, you should add new options to specific targets instead
|
||||
@@ -66,8 +66,8 @@ add_executable(${BINARY_NAME}
|
||||
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
|
||||
)
|
||||
|
||||
# Apply the standard set of build ui.settings. This can be removed for applications
|
||||
# that need different build ui.settings.
|
||||
# Apply the standard set of build settings. This can be removed for applications
|
||||
# that need different build settings.
|
||||
apply_standard_settings(${BINARY_NAME})
|
||||
|
||||
# Add dependency libraries. Add any application-specific dependencies here.
|
||||
@@ -86,6 +86,7 @@ set_target_properties(${BINARY_NAME}
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
|
||||
)
|
||||
|
||||
|
||||
# Generated plugin build rules, which manage building the plugins and adding
|
||||
# them to the application.
|
||||
include(flutter/generated_plugins.cmake)
|
||||
@@ -122,6 +123,12 @@ foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
|
||||
COMPONENT Runtime)
|
||||
endforeach(bundled_library)
|
||||
|
||||
# Copy the native assets provided by the build.dart from all packages.
|
||||
set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
|
||||
install(DIRECTORY "${NATIVE_ASSETS_DIR}"
|
||||
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
|
||||
COMPONENT Runtime)
|
||||
|
||||
# Fully re-copy the assets directory on each build to avoid having stale files
|
||||
# from a previous install.
|
||||
set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
|
||||
|
||||
@@ -63,7 +63,7 @@ static void my_application_activate(GApplication *application)
|
||||
}
|
||||
|
||||
gtk_window_set_default_size(window, 1280, 720);
|
||||
gtk_widget_realize(GTK_WIDGET(window));
|
||||
gtk_widget_show(GTK_WIDGET(window));
|
||||
|
||||
g_autoptr(FlDartProject) project = fl_dart_project_new();
|
||||
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
|
||||
@@ -73,6 +73,7 @@ static void my_application_activate(GApplication *application)
|
||||
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
|
||||
|
||||
fl_register_plugins(FL_PLUGIN_REGISTRY(view));
|
||||
gtk_widget_hide(GTK_WIDGET(window));
|
||||
|
||||
gtk_widget_grab_focus(GTK_WIDGET(view));
|
||||
}
|
||||
@@ -98,6 +99,26 @@ static gboolean my_application_local_command_line(GApplication *application, gch
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Implements GApplication::startup.
|
||||
static void my_application_startup(GApplication *application)
|
||||
{
|
||||
// MyApplication* self = MY_APPLICATION(object);
|
||||
|
||||
// Perform any actions required at application startup.
|
||||
|
||||
G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
|
||||
}
|
||||
|
||||
// Implements GApplication::shutdown.
|
||||
static void my_application_shutdown(GApplication *application)
|
||||
{
|
||||
// MyApplication* self = MY_APPLICATION(object);
|
||||
|
||||
// Perform any actions required at application shutdown.
|
||||
|
||||
G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
|
||||
}
|
||||
|
||||
// Implements GObject::dispose.
|
||||
static void my_application_dispose(GObject *object)
|
||||
{
|
||||
@@ -110,6 +131,8 @@ static void my_application_class_init(MyApplicationClass *klass)
|
||||
{
|
||||
G_APPLICATION_CLASS(klass)->activate = my_application_activate;
|
||||
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
|
||||
G_APPLICATION_CLASS(klass)->startup = my_application_startup;
|
||||
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
|
||||
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,3 +27,6 @@ include:
|
||||
- libffi.so.8
|
||||
- libtiff.so.5
|
||||
- libjpeg.so.8
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/enteauth
|
||||
@@ -31,4 +31,4 @@ categories:
|
||||
startup_notify: false
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/ente
|
||||
- x-scheme-handler/enteauth
|
||||
|
||||
@@ -28,4 +28,4 @@ categories:
|
||||
startup_notify: false
|
||||
|
||||
supported_mime_type:
|
||||
- x-scheme-handler/ente
|
||||
- x-scheme-handler/enteauth
|
||||
|
||||
@@ -26,11 +26,11 @@ PODS:
|
||||
- path_provider_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- ReachabilitySwift (5.2.2)
|
||||
- ReachabilitySwift (5.2.3)
|
||||
- screen_retriever (0.0.1):
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (8.25.0)
|
||||
- sentry_flutter (7.20.1):
|
||||
- sentry_flutter (7.20.2):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- Sentry/HybridSDK (= 8.25.0)
|
||||
@@ -44,18 +44,21 @@ PODS:
|
||||
- sqflite (0.0.3):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- "sqlite3 (3.45.3+1)":
|
||||
- "sqlite3/common (= 3.45.3+1)"
|
||||
- "sqlite3/common (3.45.3+1)"
|
||||
- "sqlite3/fts5 (3.45.3+1)":
|
||||
- "sqlite3 (3.46.0+1)":
|
||||
- "sqlite3/common (= 3.46.0+1)"
|
||||
- "sqlite3/common (3.46.0+1)"
|
||||
- "sqlite3/dbstatvtab (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/perf-threadsafe (3.45.3+1)":
|
||||
- "sqlite3/fts5 (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/rtree (3.45.3+1)":
|
||||
- "sqlite3/perf-threadsafe (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- "sqlite3/rtree (3.46.0+1)":
|
||||
- sqlite3/common
|
||||
- sqlite3_flutter_libs (0.0.1):
|
||||
- FlutterMacOS
|
||||
- "sqlite3 (~> 3.45.3+1)"
|
||||
- "sqlite3 (~> 3.46.0+1)"
|
||||
- sqlite3/dbstatvtab
|
||||
- sqlite3/fts5
|
||||
- sqlite3/perf-threadsafe
|
||||
- sqlite3/rtree
|
||||
@@ -152,23 +155,23 @@ SPEC CHECKSUMS:
|
||||
flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d
|
||||
flutter_local_authentication: 85674893931e1c9cfa7c9e4f5973cb8c56b018b0
|
||||
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
||||
flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea
|
||||
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
|
||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
||||
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
||||
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979
|
||||
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
|
||||
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
|
||||
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
|
||||
sentry_flutter: 0cf2507eb90ff7a6aa3304e900dd7f08edbbefdf
|
||||
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
|
||||
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sodium_libs: d39bd76697736cb11ce4a0be73b9b4bc64466d6f
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
|
||||
sqlite3_flutter_libs: 8d204ef443cf0d5c1c8b058044eab53f3943a9c5
|
||||
sqlite3: 292c3e1bfe89f64e51ea7fc7dab9182a017c8630
|
||||
sqlite3_flutter_libs: 5ca46c1a04eddfbeeb5b16566164aa7ad1616e7b
|
||||
tray_manager: 9064e219c56d75c476e46b9a21182087930baf90
|
||||
url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95
|
||||
url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399
|
||||
window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8
|
||||
|
||||
PODFILE CHECKSUM: f401c31c8f7c5571f6f565c78915d54338812dab
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>otpauth</string>
|
||||
<string>enteauth</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
@@ -45,10 +45,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: archive
|
||||
sha256: "0763b45fa9294197a2885c8567927e2830ade852e5c896fd4ab7e0e348d0f373"
|
||||
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.5.0"
|
||||
version: "3.6.1"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -117,10 +117,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1"
|
||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.1"
|
||||
version: "4.0.2"
|
||||
build_resolvers:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -133,18 +133,18 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner
|
||||
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.9"
|
||||
version: "2.4.11"
|
||||
build_runner_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_runner_core
|
||||
sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799"
|
||||
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.0"
|
||||
version: "7.3.1"
|
||||
built_collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -293,9 +293,9 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "packages/desktop_webview_window"
|
||||
ref: fix-webkit-version
|
||||
resolved-ref: fe2223e4edfecdbb3a97bb9e3ced73db4ae9d979
|
||||
url: "https://github.com/ente-io/flutter-desktopwebview-fork"
|
||||
ref: main
|
||||
resolved-ref: "726d8281a244d56ab36e843f0427c48de6d9cc56"
|
||||
url: "https://github.com/MixinNetwork/flutter-plugins"
|
||||
source: git
|
||||
version: "0.2.4"
|
||||
device_info_plus:
|
||||
@@ -415,10 +415,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_saver
|
||||
sha256: bdebc720e17b3e01aba59da69b6d47020a7e5ba7d5c75bd9194f9618d5f16ef4
|
||||
sha256: d375b351e3331663abbaf99747abd72f159260c58fbbdbca9f926f02c01bdc48
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.12"
|
||||
version: "0.2.13"
|
||||
fixnum:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -444,10 +444,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_bloc
|
||||
sha256: f0ecf6e6eb955193ca60af2d5ca39565a86b8a142452c5b24d96fb477428f4d2
|
||||
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.5"
|
||||
version: "8.1.6"
|
||||
flutter_context_menu:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -586,59 +586,59 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
|
||||
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.19"
|
||||
version: "2.0.20"
|
||||
flutter_secure_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_secure_storage
|
||||
sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685
|
||||
sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.0"
|
||||
version: "9.2.2"
|
||||
flutter_secure_storage_linux:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
path: flutter_secure_storage_linux
|
||||
ref: patch-1
|
||||
resolved-ref: da8ab43bc51c8c3249a261c33b27aa6f018f819b
|
||||
url: "https://github.com/prateekmedia/flutter_secure_storage.git"
|
||||
ref: develop
|
||||
resolved-ref: cb30953edc029dc4059b72700270b4cd3a3afade
|
||||
url: "https://github.com/mogol/flutter_secure_storage.git"
|
||||
source: git
|
||||
version: "1.2.0"
|
||||
version: "1.2.1"
|
||||
flutter_secure_storage_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_macos
|
||||
sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c
|
||||
sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.1.2"
|
||||
flutter_secure_storage_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_platform_interface
|
||||
sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e"
|
||||
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "1.1.2"
|
||||
flutter_secure_storage_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_web
|
||||
sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20"
|
||||
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
version: "1.2.1"
|
||||
flutter_secure_storage_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_secure_storage_windows
|
||||
sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108"
|
||||
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.1.2"
|
||||
flutter_slidable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -685,10 +685,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: fluttertoast
|
||||
sha256: "81b68579e23fcbcada2db3d50302813d2371664afe6165bc78148050ab94bf66"
|
||||
sha256: "7eae679e596a44fdf761853a706f74979f8dd3cd92cf4e23cae161fda091b847"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.2.5"
|
||||
version: "8.2.6"
|
||||
freezed_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -725,10 +725,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: gradient_borders
|
||||
sha256: "69eeaff519d145a4c6c213ada1abae386bcc8981a4970d923e478ce7ba19e309"
|
||||
sha256: b1cd969552c83f458ff755aa68e13a0327d09f06c3f42f471b423b01427f21f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -757,10 +757,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: hashlib_codecs
|
||||
sha256: "49e2a471f74b15f1854263e58c2ac11f2b631b5b12c836f9708a35397d36d626"
|
||||
sha256: a1c7b5d89ff29e81fd8e8c0b35966db4c935e149fc4ebe1ebf71e358c15863ab
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.4.0"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -805,18 +805,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image
|
||||
sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e"
|
||||
sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.7"
|
||||
version: "4.2.0"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.18.1"
|
||||
version: "0.19.0"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -853,26 +853,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.0"
|
||||
version: "10.0.4"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.3"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.1"
|
||||
lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -893,18 +893,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: local_auth_android
|
||||
sha256: e0e5b1ea247c5a0951c13a7ee13dc1beae69750e6a2e1910d1ed6a3cd4d56943
|
||||
sha256: "48dfb2d954da8ef6a77adfc93a29998f7729e9308eaa817e91dea4500317b2c8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.38"
|
||||
version: "1.0.39"
|
||||
local_auth_darwin:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: local_auth_darwin
|
||||
sha256: "33381a15b0de2279523eca694089393bb146baebdce72a404555d03174ebc1e9"
|
||||
sha256: e424ebf90d5233452be146d4a7da4bcd7a70278b67791592f3fde1bda8eef9e2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.3.1"
|
||||
local_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -957,10 +957,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.0"
|
||||
version: "1.12.0"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -973,10 +973,10 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: mocktail
|
||||
sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6
|
||||
sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
version: "1.0.4"
|
||||
modal_bottom_sheet:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1085,18 +1085,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
|
||||
sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.4"
|
||||
version: "2.2.5"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
|
||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.2"
|
||||
version: "2.4.0"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1141,10 +1141,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: platform
|
||||
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
|
||||
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.4"
|
||||
version: "3.1.5"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1157,10 +1157,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: pointycastle
|
||||
sha256: "79fbafed02cfdbe85ef3fd06c7f4bc2cbcba0177e61b765264853d4253b21744"
|
||||
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.9.0"
|
||||
version: "3.9.1"
|
||||
pool:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1205,10 +1205,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pubspec_parse
|
||||
sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
|
||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.3"
|
||||
version: "1.3.0"
|
||||
qr:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1245,18 +1245,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry
|
||||
sha256: e572d33a3ff1d69549f33ee828a8ff514047d43ca8eea4ab093d72461205aa3e
|
||||
sha256: "57514bc72d441ffdc463f498d6886aa586a2494fa467a1eb9d649c28010d7ee3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.20.1"
|
||||
version: "7.20.2"
|
||||
sentry_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry_flutter
|
||||
sha256: ac8cf6bb849f3560353ae33672e17b2713809a4e8de0d3cf372e9e9c42013757
|
||||
sha256: "9723d58470ca43a360681ddd26abb71ca7b815f706bc8d3747afd054cf639ded"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.20.1"
|
||||
version: "7.20.2"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1285,18 +1285,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
|
||||
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
version: "2.2.3"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
|
||||
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.5"
|
||||
version: "2.4.0"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1341,10 +1341,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shelf_web_socket
|
||||
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
|
||||
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "2.0.0"
|
||||
shortid:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1370,10 +1370,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sodium_libs
|
||||
sha256: f7f6719b7ab3e8512ce7a5ecd7bc8d865482431cdd5a07a46b55b13c152b54e1
|
||||
sha256: "441444f6f433032bae3444c2ef5ed2cf5bc0def77f104abdff20aedcf79a7c7a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1+1"
|
||||
version: "2.2.1+5"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1411,10 +1411,10 @@ packages:
|
||||
description:
|
||||
path: sqflite
|
||||
ref: HEAD
|
||||
resolved-ref: f281785e12e8b1abf2f9d41a587fc83d810724cf
|
||||
resolved-ref: "3309d399dd7d695bbfa7c05f643bb16765cef4ee"
|
||||
url: "https://github.com/tekartik/sqflite"
|
||||
source: git
|
||||
version: "2.3.3"
|
||||
version: "2.3.3+1"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1435,18 +1435,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sqlite3
|
||||
sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202"
|
||||
sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
sqlite3_flutter_libs:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sqlite3_flutter_libs
|
||||
sha256: fb2a106a2ea6042fe57de2c47074cc31539a941819c91e105b864744605da3f5
|
||||
sha256: "62bbb4073edbcdf53f40c80775f33eea01d301b7b81417e5b3fb7395416258c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.21"
|
||||
version: "0.5.24"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1523,10 +1523,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.1"
|
||||
version: "0.7.0"
|
||||
timezone:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1547,10 +1547,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: tray_manager
|
||||
sha256: e0ac9a88b2700f366b8629b97e8663b6ef450a2f169560a685dc167bfe9c9c29
|
||||
sha256: c9a63fd88bd3546287a7eb8ccc978d707eef82c775397af17dda3a4f4c039e64
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.2"
|
||||
version: "0.2.3"
|
||||
tuple:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1579,26 +1579,26 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
|
||||
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.6"
|
||||
version: "6.3.0"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775"
|
||||
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.1"
|
||||
version: "6.3.3"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5"
|
||||
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.5"
|
||||
version: "6.3.0"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1611,10 +1611,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234
|
||||
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
version: "3.2.0"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1683,10 +1683,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "13.0.0"
|
||||
version: "14.2.1"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1703,22 +1703,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.1"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.5"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
|
||||
sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.5"
|
||||
version: "3.0.0"
|
||||
win32:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: win32
|
||||
sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb"
|
||||
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1731,10 +1739,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: window_manager
|
||||
sha256: b3c895bdf936c77b83c5254bec2e6b3f066710c1f89c38b20b8acc382b525494
|
||||
sha256: "8699323b30da4cdbe2aa2e7c9de567a6abd8a97d9a5c850a3c86dcd0b34bbfbf"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.8"
|
||||
version: "0.3.9"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1768,5 +1776,5 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=3.3.0 <4.0.0"
|
||||
flutter: ">=3.19.0"
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.22.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: ente_auth
|
||||
description: ente two-factor authenticator
|
||||
version: 3.0.4+304
|
||||
version: 3.0.13+313
|
||||
publish_to: none
|
||||
|
||||
environment:
|
||||
@@ -20,8 +20,8 @@ dependencies:
|
||||
convert: ^3.1.1
|
||||
desktop_webview_window:
|
||||
git:
|
||||
url: https://github.com/ente-io/flutter-desktopwebview-fork
|
||||
ref: fix-webkit-version
|
||||
url: https://github.com/MixinNetwork/flutter-plugins
|
||||
ref: main
|
||||
path: packages/desktop_webview_window
|
||||
device_info_plus: ^9.1.1
|
||||
dio: ^5.4.0
|
||||
@@ -64,7 +64,7 @@ dependencies:
|
||||
google_nav_bar: ^5.0.5 #supported
|
||||
gradient_borders: ^1.0.0
|
||||
http: ^1.1.0
|
||||
intl: ^0.18.0
|
||||
intl: ^0.19.0
|
||||
json_annotation: ^4.5.0
|
||||
local_auth: ^2.2.0
|
||||
local_auth_android: ^1.0.37
|
||||
@@ -92,8 +92,8 @@ dependencies:
|
||||
url: https://github.com/tekartik/sqflite
|
||||
path: sqflite
|
||||
sqflite_common_ffi: ^2.3.0+4
|
||||
sqlite3: ^2.1.0
|
||||
sqlite3_flutter_libs: ^0.5.19+1
|
||||
sqlite3: ^2.4.3
|
||||
sqlite3_flutter_libs: ^0.5.24
|
||||
steam_totp: ^0.0.1
|
||||
step_progress_indicator: ^1.0.2
|
||||
styled_text: ^8.1.0
|
||||
@@ -102,13 +102,13 @@ dependencies:
|
||||
url_launcher: ^6.1.5
|
||||
uuid: ^4.2.2
|
||||
win32: ^5.1.1
|
||||
window_manager: ^0.3.8
|
||||
window_manager: ^0.3.9
|
||||
|
||||
dependency_overrides:
|
||||
flutter_secure_storage_linux:
|
||||
git:
|
||||
url: https://github.com/prateekmedia/flutter_secure_storage.git
|
||||
ref: patch-1
|
||||
url: https://github.com/mogol/flutter_secure_storage.git
|
||||
ref: develop
|
||||
path: flutter_secure_storage_linux
|
||||
dev_dependencies:
|
||||
build_runner: ^2.1.11
|
||||
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 133 KiB |
@@ -107,11 +107,7 @@ docker-compose up -d
|
||||
|
||||
`exec` into the container
|
||||
```shell
|
||||
docker-compose exec ente /bin/sh
|
||||
docker-compose exec ente-cli /bin/sh -c "./ente-cli version"
|
||||
docker-compose exec ente-cli /bin/sh -c "./ente-cli account add"
|
||||
```
|
||||
|
||||
#### Directly executing commands
|
||||
|
||||
```shell
|
||||
docker run -it --rm ente:latest ls
|
||||
```
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
endpoint:
|
||||
api: "http://localhost:8080"
|
||||
# Endpoint for the account service for passkey
|
||||
accounts: "http://localhost:3001"
|
||||
|
||||
log:
|
||||
http: false # log status code & time taken by requests
|
||||
|
||||
@@ -4,8 +4,11 @@ services:
|
||||
image: ente-cli:latest
|
||||
command: /bin/sh
|
||||
volumes:
|
||||
# Replace /Volumes/Data/ with a folder path on your system, typically $HOME/.ente-cli/
|
||||
- ~/.ente-cli/:/cli-data:rw
|
||||
# - ~/Downloads/export-data:/data:rw
|
||||
# This is mandatory to mount the local directory to the container at /cli-data
|
||||
# CLI will use this directory to store the data required for syncing export
|
||||
- /path/to/local/directory/cli/:/cli-data:rw
|
||||
# You can add additional volumes to mount the export directory to the container
|
||||
# While adding account for export, you can use /data as the export directory.
|
||||
- /path/to/local/directory/export:/data:rw
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
@@ -71,12 +71,15 @@ func NewClient(p Params) *Client {
|
||||
restClient: enteAPI,
|
||||
downloadClient: resty.New().
|
||||
SetRetryCount(3).
|
||||
SetRetryWaitTime(5 * time.Second).
|
||||
SetRetryMaxWaitTime(10 * time.Second).
|
||||
SetRetryWaitTime(10 * time.Second).
|
||||
SetRetryMaxWaitTime(20 * time.Second).
|
||||
AddRetryCondition(func(r *resty.Response, err error) bool {
|
||||
shouldRetry := r.StatusCode() == 429 || r.StatusCode() > 500
|
||||
shouldRetry := r.StatusCode() == 429 || r.StatusCode() >= 500
|
||||
if shouldRetry {
|
||||
log.Printf("retrying download due to %d code", r.StatusCode())
|
||||
amxRequestID := r.Header().Get("X-Amz-Request-Id")
|
||||
cfRayID := r.Header().Get("CF-Ray")
|
||||
wasabiRefID := r.Header().Get("X-Wasabi-Cm-Reference-Id")
|
||||
log.Printf("Retry scheduled. error statusCode: %d, X-Amz-Request-Id: %s, CF-Ray: %s, X-Wasabi-Cm-Reference-Id: %s", r.StatusCode(), amxRequestID, cfRayID, wasabiRefID)
|
||||
}
|
||||
return shouldRetry
|
||||
}),
|
||||
|
||||
@@ -161,3 +161,22 @@ func (c *Client) VerifyTotp(
|
||||
}
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
func (c *Client) CheckPasskeyStatus(ctx context.Context,
|
||||
sessionID string) (*AuthorizationResponse, error) {
|
||||
var res AuthorizationResponse
|
||||
r, err := c.restClient.R().
|
||||
SetContext(ctx).
|
||||
SetResult(&res).
|
||||
Get("/users/two-factor/passkeys/get-token?sessionID=" + sessionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if r.IsError() {
|
||||
return nil, &ApiError{
|
||||
StatusCode: r.StatusCode(),
|
||||
Message: r.String(),
|
||||
}
|
||||
}
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ type AuthorizationResponse struct {
|
||||
EncryptedToken string `json:"encryptedToken,omitempty"`
|
||||
Token string `json:"token,omitempty"`
|
||||
TwoFactorSessionID string `json:"twoFactorSessionID"`
|
||||
PassKeySessionID string `json:"passkeySessionID"`
|
||||
// SrpM2 is sent only if the user is logging via SRP
|
||||
// SrpM2 is the SRP M2 value aka the proof that the server has the verifier
|
||||
SrpM2 *string `json:"srpM2,omitempty"`
|
||||
@@ -45,3 +46,7 @@ type AuthorizationResponse struct {
|
||||
func (a *AuthorizationResponse) IsMFARequired() bool {
|
||||
return a.TwoFactorSessionID != ""
|
||||
}
|
||||
|
||||
func (a *AuthorizationResponse) IsPasskeyRequired() bool {
|
||||
return a.PassKeySessionID != ""
|
||||
}
|
||||
|
||||
@@ -113,3 +113,23 @@ func DecryptChaChaBase64(data string, key []byte, nonce string) (string, []byte,
|
||||
}
|
||||
return base64.StdEncoding.EncodeToString(decryptedData), decryptedData, nil
|
||||
}
|
||||
|
||||
func DecryptChaChaBase64Auth(data string, key []byte, nonce string) (string, []byte, error) {
|
||||
// Decode data from base64
|
||||
dataBytes, err := base64.StdEncoding.DecodeString(data)
|
||||
if err != nil {
|
||||
// safe to log the encrypted data
|
||||
return "", nil, fmt.Errorf("invalid base64 data %s: %v", data, err)
|
||||
}
|
||||
// Decode nonce from base64
|
||||
nonceBytes, err := base64.StdEncoding.DecodeString(nonce)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("invalid nonce: %v", err)
|
||||
}
|
||||
// Decrypt data
|
||||
decryptedData, err := decryptChaCha20poly1305V2(dataBytes, key, nonceBytes)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("failed to decrypt data: %v", err)
|
||||
}
|
||||
return base64.StdEncoding.EncodeToString(decryptedData), decryptedData, nil
|
||||
}
|
||||
|
||||
@@ -88,6 +88,23 @@ func decryptChaCha20poly1305(data []byte, key []byte, nonce []byte) ([]byte, err
|
||||
return decoded, nil
|
||||
}
|
||||
|
||||
// decryptChaCha20poly1305V2 is used only to decrypt Ente Auth data. Ente Auth use new version of LibSodium.
|
||||
// In that version, the final tag value is 0x0 instead of TagFinal.
|
||||
func decryptChaCha20poly1305V2(data []byte, key []byte, nonce []byte) ([]byte, error) {
|
||||
decryptor, err := NewDecryptor(key, nonce)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
decoded, tag, err := decryptor.Pull(data)
|
||||
if tag != TagFinal && tag != TagMessage {
|
||||
return nil, errors.New("invalid tag")
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return decoded, nil
|
||||
}
|
||||
|
||||
//func SecretBoxOpenLibSodium(c []byte, n []byte, k []byte) ([]byte, error) {
|
||||
// var cp sodium.Bytes = c
|
||||
// res, err := cp.SecretBoxOpen(sodium.SecretBoxNonce{Bytes: n}, sodium.SecretBoxKey{Bytes: k})
|
||||
|
||||
@@ -38,6 +38,17 @@ func GetUserInput(label string) (string, error) {
|
||||
return input, nil
|
||||
}
|
||||
|
||||
func WaitForEnter(prompt string) error {
|
||||
fmt.Println(prompt)
|
||||
// Create a new reader from standard input.
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
_, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetAppType() api.App {
|
||||
for {
|
||||
app, err := GetUserInput("Enter app type (default: photos)")
|
||||
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
var AppVersion = "0.1.13"
|
||||
var AppVersion = "0.1.16"
|
||||
|
||||
func main() {
|
||||
cliDBPath, err := GetCLIConfigPath()
|
||||
@@ -23,7 +23,7 @@ func main() {
|
||||
cliDBPath = constants.CliDataPath
|
||||
_, err := internal.ValidateDirForWrite(cliDBPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Please mount a volume to %s to persist cli data\n%v\n", cliDBPath, err)
|
||||
log.Fatalf("Please mount a volume to %s\n%v\n", cliDBPath, err)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
@@ -75,6 +75,10 @@ func main() {
|
||||
}
|
||||
return
|
||||
}
|
||||
if len(os.Args) == 1 {
|
||||
// If no arguments are passed, show help
|
||||
os.Args = append(os.Args, "help")
|
||||
}
|
||||
cmd.Execute(&ctrl, AppVersion)
|
||||
}
|
||||
|
||||
@@ -85,6 +89,7 @@ func initConfig(cliConfigPath string) {
|
||||
viper.AddConfigPath(".") // optionally look for config in the working directory
|
||||
|
||||
viper.SetDefault("endpoint.api", constants.EnteApiUrl)
|
||||
viper.SetDefault("endpoint.accounts", constants.EnteAccountUrl)
|
||||
viper.SetDefault("log.http", false)
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
||||
|
||||
@@ -58,6 +58,10 @@ func (c *ClICtrl) AddAccount(cxt context.Context) {
|
||||
if authResponse.IsMFARequired() {
|
||||
authResponse, flowErr = c.validateTOTP(cxt, authResponse)
|
||||
}
|
||||
|
||||
if authResponse.IsPasskeyRequired() {
|
||||
authResponse, flowErr = c.verifyPassKey(cxt, authResponse)
|
||||
}
|
||||
if authResponse.EncryptedToken == "" || authResponse.KeyAttributes == nil {
|
||||
log.Fatalf("missing key attributes or token.\nNote: Please use the mobile,web or desktop app to create a new account.\nIf you are trying to login to an existing account, report a bug.")
|
||||
}
|
||||
|
||||