You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-07 09:52:18 +02:00
Compare commits
2013 Commits
release-4.
...
v4_6_x
Author | SHA1 | Date | |
---|---|---|---|
![]() |
91943e4815 | ||
![]() |
2388ad0aab | ||
![]() |
a65eb6c604 | ||
![]() |
a869e4151c | ||
![]() |
839bc696d0 | ||
![]() |
e6845d6960 | ||
![]() |
413b2e14fa | ||
![]() |
b0fbe7bfdb | ||
![]() |
bb0fcc5841 | ||
![]() |
94d98e78db | ||
![]() |
c01265c4cf | ||
![]() |
f1466871ee | ||
![]() |
cfe15c2455 | ||
![]() |
742bc410f4 | ||
![]() |
64029e0493 | ||
![]() |
58ba6f41f3 | ||
![]() |
d9023c647a | ||
![]() |
827f9d1345 | ||
![]() |
2f8044bd26 | ||
![]() |
92db0170d5 | ||
![]() |
efa517ea90 | ||
![]() |
47723115f6 | ||
![]() |
95e431a296 | ||
![]() |
5e81347933 | ||
![]() |
ef1d3bcf0b | ||
![]() |
ea28d5213b | ||
![]() |
21143a9764 | ||
![]() |
f86a574b9d | ||
![]() |
769de08463 | ||
![]() |
0bbfeeb987 | ||
![]() |
9c3382f0d7 | ||
![]() |
2aa7a7f453 | ||
![]() |
c1b62e0e61 | ||
![]() |
40833ca510 | ||
![]() |
749746e812 | ||
![]() |
db384896b8 | ||
![]() |
a7dfefc2a5 | ||
![]() |
684a561974 | ||
![]() |
73cedb6ea1 | ||
![]() |
020b49add1 | ||
![]() |
694661d751 | ||
![]() |
79ba577a25 | ||
![]() |
785320e7f6 | ||
![]() |
954d6ff5c6 | ||
![]() |
1f6a817020 | ||
![]() |
4e30e6cb8e | ||
![]() |
753cdfdb1a | ||
![]() |
daaaa11f93 | ||
![]() |
c0e0e36d10 | ||
![]() |
188469a42c | ||
![]() |
18296b2f75 | ||
![]() |
cce1290c0c | ||
![]() |
64acc64c58 | ||
![]() |
d5a3f724ab | ||
![]() |
7567f71c55 | ||
![]() |
6805922521 | ||
![]() |
a3812c0831 | ||
![]() |
361741d677 | ||
![]() |
acd9102dc2 | ||
![]() |
e74b587420 | ||
![]() |
2589363622 | ||
![]() |
cfa7a6db46 | ||
![]() |
5609fa49a6 | ||
![]() |
d0ad08e495 | ||
![]() |
33b51249dc | ||
![]() |
17b6dcfbef | ||
![]() |
c894d84ed3 | ||
![]() |
8c52b53300 | ||
![]() |
4c3af5d923 | ||
![]() |
77d907c2aa | ||
![]() |
a56b3edc58 | ||
![]() |
a83424a7a7 | ||
![]() |
cdf66e069d | ||
![]() |
1773b1ea05 | ||
![]() |
9ebbafed95 | ||
![]() |
8a5ffd68df | ||
![]() |
cf6e4ce933 | ||
![]() |
c54f8bf219 | ||
![]() |
3f6ca64d9e | ||
![]() |
0990c2632b | ||
![]() |
ba5229a069 | ||
![]() |
1aff030317 | ||
![]() |
c1b63372f1 | ||
![]() |
081eace057 | ||
![]() |
61fae3a3ee | ||
![]() |
18ad861444 | ||
![]() |
a57b80c7e0 | ||
![]() |
bfa8dc7f67 | ||
![]() |
92f810873a | ||
![]() |
6739f59e5f | ||
![]() |
d6e888a877 | ||
![]() |
1fb329c0ef | ||
![]() |
ffe085dc8a | ||
![]() |
267d504ec0 | ||
![]() |
b824889d07 | ||
![]() |
59d968e116 | ||
![]() |
43300d97e2 | ||
![]() |
3007762864 | ||
![]() |
786c09e981 | ||
![]() |
2c2252d7d9 | ||
![]() |
c7dfc1ded2 | ||
![]() |
c2dd53cee6 | ||
![]() |
903173b8f1 | ||
![]() |
837d39dac7 | ||
![]() |
54dffa1051 | ||
![]() |
a14b50e48c | ||
![]() |
b284d40430 | ||
![]() |
ee853d8751 | ||
![]() |
d5c0c094f2 | ||
![]() |
3c0747fb87 | ||
![]() |
31e0ab2c70 | ||
![]() |
bb6d69f8b7 | ||
![]() |
a396e0df26 | ||
![]() |
a1317e24f9 | ||
![]() |
42d7465cba | ||
![]() |
4b56bdd36f | ||
![]() |
dc31e82d00 | ||
![]() |
7b73d3fb5c | ||
![]() |
6b3da26af8 | ||
![]() |
488c022d89 | ||
![]() |
d512d6dead | ||
![]() |
a1ff1c8227 | ||
![]() |
7bc49423c7 | ||
![]() |
3d3ce1c5d7 | ||
![]() |
832d68d5cb | ||
![]() |
ec8802203d | ||
![]() |
4beee27701 | ||
![]() |
716aca17f8 | ||
![]() |
d85ed84e83 | ||
![]() |
20985f9960 | ||
![]() |
e6cde0b4b4 | ||
![]() |
a84259dd1a | ||
![]() |
4f3dbf7f59 | ||
![]() |
d877215018 | ||
![]() |
7512b92a36 | ||
![]() |
81a3479fd7 | ||
![]() |
edeb62c25d | ||
![]() |
45f0b27ed1 | ||
![]() |
ffb3f60a22 | ||
![]() |
c14b08bd1d | ||
![]() |
91560e6e60 | ||
![]() |
7df54ad534 | ||
![]() |
1e88650bae | ||
![]() |
604986e90f | ||
![]() |
c77466abb0 | ||
![]() |
a9d8cf2ea9 | ||
![]() |
22420339a5 | ||
![]() |
9076ff8876 | ||
![]() |
af20233dfc | ||
![]() |
dfd735f2dc | ||
![]() |
2a04a4d077 | ||
![]() |
67d340ad63 | ||
![]() |
2b69cabc2c | ||
![]() |
062e35e6b0 | ||
![]() |
3088b38d7e | ||
![]() |
f5b5570a3b | ||
![]() |
80bb19701c | ||
![]() |
8376707379 | ||
![]() |
483ccb39bf | ||
![]() |
41e44d22ea | ||
![]() |
766fce82b1 | ||
![]() |
938adca47d | ||
![]() |
5bb02cbd90 | ||
![]() |
66777f3304 | ||
![]() |
508896c4f2 | ||
![]() |
c1d64cc3ea | ||
![]() |
57085ca126 | ||
![]() |
7b4b7c2b81 | ||
![]() |
6a3a5fac83 | ||
![]() |
35e18498d9 | ||
![]() |
f99a98306d | ||
![]() |
b0cfe53329 | ||
![]() |
060466e326 | ||
![]() |
392949b313 | ||
![]() |
b17307f283 | ||
![]() |
e739d38061 | ||
![]() |
20f4d0c4e3 | ||
![]() |
4f6038c350 | ||
![]() |
f08556be30 | ||
![]() |
543745b3f2 | ||
![]() |
cb0c09769f | ||
![]() |
e8f5a3b44e | ||
![]() |
5a660fc8a9 | ||
![]() |
488464731d | ||
![]() |
fb68604ee7 | ||
![]() |
4ef9a6444a | ||
![]() |
66dfe8545d | ||
![]() |
fff7b1dcbd | ||
![]() |
b5b1f51cee | ||
![]() |
33875aa70a | ||
![]() |
9d7dad4a61 | ||
![]() |
213b6e316c | ||
![]() |
ffc3d8d345 | ||
![]() |
7ec80263e1 | ||
![]() |
66e533f505 | ||
![]() |
045b4f0a06 | ||
![]() |
80c637bf99 | ||
![]() |
48d5e3326b | ||
![]() |
80791e328d | ||
![]() |
08a771468d | ||
![]() |
c3fc96dfe6 | ||
![]() |
715a4f3eb6 | ||
![]() |
8655e48336 | ||
![]() |
3c139ca333 | ||
![]() |
f4deb1050f | ||
![]() |
889ed5bce9 | ||
![]() |
6680fdda18 | ||
![]() |
88bd4f270f | ||
![]() |
86a5ad3241 | ||
![]() |
1c654d8f47 | ||
![]() |
c90863f217 | ||
![]() |
deec2ae1b1 | ||
![]() |
f37fff31ae | ||
![]() |
dffb93a6aa | ||
![]() |
3b948b0130 | ||
![]() |
b3d2ba7d07 | ||
![]() |
03d3552ee0 | ||
![]() |
379b0dbe40 | ||
![]() |
f213f81727 | ||
![]() |
1f2a6455b6 | ||
![]() |
fc8c74989b | ||
![]() |
b01a48879a | ||
![]() |
e780b3a9b7 | ||
![]() |
2bbfd317ce | ||
![]() |
e6d85a468b | ||
![]() |
f6b58f36e2 | ||
![]() |
79ca2e145f | ||
![]() |
81bc910d68 | ||
![]() |
ff5d02bcf2 | ||
![]() |
2e87e6e0df | ||
![]() |
a5e8af5070 | ||
![]() |
cf415dd7fe | ||
![]() |
83e6afcb71 | ||
![]() |
62d96c068a | ||
![]() |
040c3c7ef8 | ||
![]() |
3ef8726083 | ||
![]() |
dad9157d84 | ||
![]() |
5cea69472f | ||
![]() |
b1492bcd7d | ||
![]() |
d571ab2be1 | ||
![]() |
4550469bb9 | ||
![]() |
160af4feef | ||
![]() |
b27e839405 | ||
![]() |
ecc08dee09 | ||
![]() |
11ac4e7620 | ||
![]() |
fbe93f0c47 | ||
![]() |
11945eef3f | ||
![]() |
a35dbc6df7 | ||
![]() |
3fb4e4d293 | ||
![]() |
f5a4065101 | ||
![]() |
ba93d55a6d | ||
![]() |
a59301712e | ||
![]() |
b406d669b3 | ||
![]() |
4ef8f39f23 | ||
![]() |
34802362ad | ||
![]() |
c10f1f0ad2 | ||
![]() |
58ae98026b | ||
![]() |
32a55551fe | ||
![]() |
7880fe8440 | ||
![]() |
bb959bda8c | ||
![]() |
d629c77184 | ||
![]() |
b953d223e4 | ||
![]() |
6fa53b5ed8 | ||
![]() |
c777ed3299 | ||
![]() |
341b2f345a | ||
![]() |
905f141657 | ||
![]() |
0a87bb368f | ||
![]() |
93a1e58554 | ||
![]() |
0cc29f1851 | ||
![]() |
81daad92ec | ||
![]() |
41be7e9bbe | ||
![]() |
179a61d75e | ||
![]() |
73134d5f4d | ||
![]() |
29c05ed3e8 | ||
![]() |
e375f3ee0b | ||
![]() |
b185153254 | ||
![]() |
e7e5c38384 | ||
![]() |
9a00839a75 | ||
![]() |
79e85d01fa | ||
![]() |
e408973ee6 | ||
![]() |
8c9b6e2f2d | ||
![]() |
5b43782f58 | ||
![]() |
2059825597 | ||
![]() |
e1be46820b | ||
![]() |
8219b1f695 | ||
![]() |
3fbe380582 | ||
![]() |
5f00d42a49 | ||
![]() |
15de7aed9a | ||
![]() |
5c38cc00d9 | ||
![]() |
5a1dcbae9c | ||
![]() |
7c6a852f85 | ||
![]() |
147b22ddd3 | ||
![]() |
d83b2a6131 | ||
![]() |
821e946bbe | ||
![]() |
634eb4a183 | ||
![]() |
758ea7edca | ||
![]() |
1bd499565e | ||
![]() |
be9ec5a329 | ||
![]() |
df895cb2a7 | ||
![]() |
3b72859980 | ||
![]() |
69df85f564 | ||
![]() |
1f1da32371 | ||
![]() |
cddf8c199c | ||
![]() |
bbd5ed1142 | ||
![]() |
0f033ec9c8 | ||
![]() |
7397c80837 | ||
![]() |
51132c817b | ||
![]() |
1fe006d16f | ||
![]() |
bd31eddb94 | ||
![]() |
0defb7d79d | ||
![]() |
1e400df324 | ||
![]() |
9ea48539b4 | ||
![]() |
d63e0ad78f | ||
![]() |
eaee38a19e | ||
![]() |
b3e9c46eff | ||
![]() |
5dcc14153f | ||
![]() |
4a66d705b8 | ||
![]() |
9d7fcea5d6 | ||
![]() |
b8cd614775 | ||
![]() |
a9ab2d9b9e | ||
![]() |
cecf2d28e6 | ||
![]() |
a01f1014b9 | ||
![]() |
77411760a0 | ||
![]() |
0dcb65bb7c | ||
![]() |
d40be79c69 | ||
![]() |
b55d4b1733 | ||
![]() |
40e28930a4 | ||
![]() |
5a3579a3f9 | ||
![]() |
9de8abadb6 | ||
![]() |
05c5cdab96 | ||
![]() |
1e1c1725ab | ||
![]() |
b5c57af869 | ||
![]() |
eb875ac8c1 | ||
![]() |
a36358d7d0 | ||
![]() |
679e592a5c | ||
![]() |
b922441a7c | ||
![]() |
941c587c68 | ||
![]() |
77bd09bb8b | ||
![]() |
8bcac1bed2 | ||
![]() |
cdded6cef7 | ||
![]() |
8cbe4a571c | ||
![]() |
ee9d2173e0 | ||
![]() |
a450a7c6e1 | ||
![]() |
d41a77841d | ||
![]() |
ae06daba6a | ||
![]() |
77aa85fbd3 | ||
![]() |
989b1e6c2c | ||
![]() |
9ef23d524d | ||
![]() |
f16e903623 | ||
![]() |
0bb0829a9a | ||
![]() |
fa30b70453 | ||
![]() |
e4f90730b2 | ||
![]() |
6fd522472c | ||
![]() |
0f32de9d8c | ||
![]() |
f630d84858 | ||
![]() |
ee6f699b48 | ||
![]() |
ce9bdaef5c | ||
![]() |
37c04fdeed | ||
![]() |
c51aa2d573 | ||
![]() |
b922e1ae73 | ||
![]() |
dd48f62d66 | ||
![]() |
f5b5312cf0 | ||
![]() |
58a654a70f | ||
![]() |
ff0f3b4975 | ||
![]() |
8df68ac878 | ||
![]() |
2f9b313287 | ||
![]() |
cbf591a8b5 | ||
![]() |
96da685e5d | ||
![]() |
6ac14d0c57 | ||
![]() |
4745a40f0b | ||
![]() |
8993d87b32 | ||
![]() |
8df80b67f9 | ||
![]() |
466314675c | ||
![]() |
d75fd3fcde | ||
![]() |
7ae83df5a5 | ||
![]() |
19f55512c1 | ||
![]() |
6e25db444e | ||
![]() |
d2c4b69f47 | ||
![]() |
4170b4e21b | ||
![]() |
9fb9ca47f6 | ||
![]() |
917190d936 | ||
![]() |
1e913f46f0 | ||
![]() |
4c0ebc0e0f | ||
![]() |
1b0f5b8567 | ||
![]() |
6a4bb5c1b7 | ||
![]() |
3fea9f5a33 | ||
![]() |
7600f59f3a | ||
![]() |
915121a0dd | ||
![]() |
1be5b3abd8 | ||
![]() |
e37661d53a | ||
![]() |
d06f78dbbd | ||
![]() |
5d4766edbe | ||
![]() |
72ac92ec68 | ||
![]() |
22ea508ff6 | ||
![]() |
b2213ded6d | ||
![]() |
1ea2fe5b8d | ||
![]() |
7227d2b2b2 | ||
![]() |
0dcbf9f698 | ||
![]() |
09e58df03f | ||
![]() |
d256db5072 | ||
![]() |
10153f0063 | ||
![]() |
c6a1b977b3 | ||
![]() |
870bb42e4f | ||
![]() |
b61c7b7220 | ||
![]() |
c58fb92365 | ||
![]() |
5e952a561b | ||
![]() |
ca72360b6f | ||
![]() |
630b4ed3b9 | ||
![]() |
cba9680ef9 | ||
![]() |
2310dcd136 | ||
![]() |
ee00a80796 | ||
![]() |
051bac5e59 | ||
![]() |
771c58d000 | ||
![]() |
53cec6db09 | ||
![]() |
43e059801e | ||
![]() |
ce35a06ec3 | ||
![]() |
32e4371208 | ||
![]() |
0d376e7fd6 | ||
![]() |
2b20d5b260 | ||
![]() |
719e4afd8c | ||
![]() |
9cdf660ddb | ||
![]() |
5dbccf3473 | ||
![]() |
8db2d04dbb | ||
![]() |
209850064a | ||
![]() |
e628b7d527 | ||
![]() |
61dbb211c0 | ||
![]() |
71f4a5667c | ||
![]() |
b33dc7d831 | ||
![]() |
c5a4a0db2c | ||
![]() |
b9e045e80b | ||
![]() |
cfd0c5433e | ||
![]() |
ebad387c1a | ||
![]() |
3f39bd9f35 | ||
![]() |
f8236eb397 | ||
![]() |
23a56c95e3 | ||
![]() |
6f8aa07a10 | ||
![]() |
594f9e8632 | ||
![]() |
aeae065007 | ||
![]() |
b12fdcf018 | ||
![]() |
84fabf14c8 | ||
![]() |
0ec47db9cd | ||
![]() |
3cf0004665 | ||
![]() |
40258f6a2f | ||
![]() |
b335114219 | ||
![]() |
998b08f5d8 | ||
![]() |
991c30943a | ||
![]() |
ad2be39c33 | ||
![]() |
c3936cd4b6 | ||
![]() |
d2e595aac3 | ||
![]() |
b8aa9e5609 | ||
![]() |
2109c4e1ae | ||
![]() |
ac3ad17a9e | ||
![]() |
31c7306bd2 | ||
![]() |
4741aab7a3 | ||
![]() |
679e3b8bea | ||
![]() |
25ea0d274b | ||
![]() |
12b58be8c2 | ||
![]() |
e4f1485c82 | ||
![]() |
1b2ff0f6f8 | ||
![]() |
a31755bbc8 | ||
![]() |
311e0f21eb | ||
![]() |
b86366f243 | ||
![]() |
58d1c80b12 | ||
![]() |
182915f801 | ||
![]() |
50c08e55cd | ||
![]() |
4307a09621 | ||
![]() |
d531d6d221 | ||
![]() |
4cf94a6fa0 | ||
![]() |
4cb60f4870 | ||
![]() |
d82edb2838 | ||
![]() |
c91eefe469 | ||
![]() |
327affa340 | ||
![]() |
4e7c2589e4 | ||
![]() |
17ce07230d | ||
![]() |
fda6c9a3d9 | ||
![]() |
92af2922c7 | ||
![]() |
1cee69da6c | ||
![]() |
f54b66eb75 | ||
![]() |
3563bad5fc | ||
![]() |
1f3f96f7aa | ||
![]() |
7022adb89b | ||
![]() |
bac57de5f5 | ||
![]() |
bdd56a52d3 | ||
![]() |
dcdbd02102 | ||
![]() |
b68c4e2106 | ||
![]() |
67cb75e9d3 | ||
![]() |
f9eefe866c | ||
![]() |
c636618cf3 | ||
![]() |
0f82c16936 | ||
![]() |
d328eeb5be | ||
![]() |
d90ea0d3be | ||
![]() |
e7ece66717 | ||
![]() |
6c9c40fd7c | ||
![]() |
529c1ec9f4 | ||
![]() |
93429840c8 | ||
![]() |
6aee7f95b7 | ||
![]() |
0b70ccf9e9 | ||
![]() |
da586828be | ||
![]() |
2e4431f0b8 | ||
![]() |
162273da47 | ||
![]() |
22fb9797c4 | ||
![]() |
f6735401f4 | ||
![]() |
06c4c58613 | ||
![]() |
c80238d66f | ||
![]() |
6a560016dd | ||
![]() |
99b7663fa9 | ||
![]() |
be0f34a69e | ||
![]() |
3a2e73cc94 | ||
![]() |
3ee0457cfa | ||
![]() |
e19173c1f3 | ||
![]() |
4a5d2e2558 | ||
![]() |
027d6be48f | ||
![]() |
0f2cc92ba2 | ||
![]() |
07bb1df74f | ||
![]() |
c29a6079bf | ||
![]() |
dfb56ce31c | ||
![]() |
5a8027ae1f | ||
![]() |
bb2caabd61 | ||
![]() |
14e4bc7eea | ||
![]() |
9fb8f765e8 | ||
![]() |
fe0be98fde | ||
![]() |
fdba525e62 | ||
![]() |
dfdaa706bd | ||
![]() |
1a782a9362 | ||
![]() |
5f2d807861 | ||
![]() |
f2dd1e6456 | ||
![]() |
155e73df16 | ||
![]() |
05b7194bf7 | ||
![]() |
597444c527 | ||
![]() |
1c2dc79f51 | ||
![]() |
106adf135c | ||
![]() |
dcfd367ff8 | ||
![]() |
67ee43fac1 | ||
![]() |
a325ab8d6e | ||
![]() |
c94152c47c | ||
![]() |
a44bca3f07 | ||
![]() |
698284f00e | ||
![]() |
3b9d68f344 | ||
![]() |
e028d8085b | ||
![]() |
af1c97e2ea | ||
![]() |
b95d97d07b | ||
![]() |
17a5bd03c5 | ||
![]() |
ada594faf3 | ||
![]() |
4f0990dc29 | ||
![]() |
f66ec4430d | ||
![]() |
67357e9964 | ||
![]() |
7eb97348de | ||
![]() |
0279b80b46 | ||
![]() |
d3936c07c7 | ||
![]() |
aa022400f7 | ||
![]() |
66795d533a | ||
![]() |
ce7d8dee28 | ||
![]() |
1f799689ed | ||
![]() |
3463442631 | ||
![]() |
c35ca52b00 | ||
![]() |
6d501c2e6e | ||
![]() |
a71d7e6557 | ||
![]() |
30c2f9d9f3 | ||
![]() |
544f9675c6 | ||
![]() |
0c76321a6a | ||
![]() |
10349b84d6 | ||
![]() |
6fa4305aba | ||
![]() |
d9af207a11 | ||
![]() |
ad59eb4dfc | ||
![]() |
874b015b20 | ||
![]() |
21aabfdcb5 | ||
![]() |
e7370d1a0f | ||
![]() |
855f727451 | ||
![]() |
3b0ac0962e | ||
![]() |
617dedc464 | ||
![]() |
8b4a0da235 | ||
![]() |
dcc5206e3d | ||
![]() |
9a81cbf4c0 | ||
![]() |
d96ed5f4a4 | ||
![]() |
102b6c32eb | ||
![]() |
2af1e1874e | ||
![]() |
680455a21b | ||
![]() |
b568cdb1aa | ||
![]() |
bc0d906adc | ||
![]() |
2b385e5f92 | ||
![]() |
616057a433 | ||
![]() |
9a20aa51de | ||
![]() |
6c8b31420c | ||
![]() |
0514cb304d | ||
![]() |
0a4ee60ea0 | ||
![]() |
caa30e41d8 | ||
![]() |
dc76a175ad | ||
![]() |
92768c36aa | ||
![]() |
2a3a4bff70 | ||
![]() |
cacfe4f3ca | ||
![]() |
37150520e1 | ||
![]() |
3aadb63d80 | ||
![]() |
0e0b8d1027 | ||
![]() |
5e4a94e6b6 | ||
![]() |
db7850e218 | ||
![]() |
1dcfd7bb59 | ||
![]() |
b28704a6ec | ||
![]() |
0c6e56a150 | ||
![]() |
d71ff734a9 | ||
![]() |
90652d3555 | ||
![]() |
f8a2fbc4c5 | ||
![]() |
80759f9e69 | ||
![]() |
e692a191ed | ||
![]() |
4e06a9629a | ||
![]() |
b3334e5fac | ||
![]() |
4e326229da | ||
![]() |
021222b407 | ||
![]() |
6c60fa5161 | ||
![]() |
cd405ffc32 | ||
![]() |
537b1c1ea9 | ||
![]() |
257914b0d5 | ||
![]() |
5cfaaa5d1a | ||
![]() |
109c45bb95 | ||
![]() |
851374e517 | ||
![]() |
4094a4c448 | ||
![]() |
987e1b544a | ||
![]() |
5cf6b1cbde | ||
![]() |
4318de6dc5 | ||
![]() |
459d1cf82c | ||
![]() |
48d52d9ab7 | ||
![]() |
16a99e687f | ||
![]() |
fb37b0c147 | ||
![]() |
9877ff330e | ||
![]() |
6f88609d60 | ||
![]() |
6263c4786b | ||
![]() |
3061f6cf5b | ||
![]() |
cc8c1a5748 | ||
![]() |
ca897a8a35 | ||
![]() |
77dd8bd27b | ||
![]() |
fe34749cfe | ||
![]() |
646322b2a2 | ||
![]() |
670b381df7 | ||
![]() |
ddf4b94bc6 | ||
![]() |
794a92f911 | ||
![]() |
f6e2715f4a | ||
![]() |
082e6f8830 | ||
![]() |
ee38124db7 | ||
![]() |
e06e1d9911 | ||
![]() |
3851e76179 | ||
![]() |
d693f97a46 | ||
![]() |
ca274635d5 | ||
![]() |
525692759d | ||
![]() |
e5491645e4 | ||
![]() |
9f511a47e8 | ||
![]() |
7b0644cdcd | ||
![]() |
7527343629 | ||
![]() |
d173216941 | ||
![]() |
d28b5f7834 | ||
![]() |
04f6ee79c3 | ||
![]() |
b046b40668 | ||
![]() |
0a289e15b4 | ||
![]() |
ce8b51e7ef | ||
![]() |
df5ea9b675 | ||
![]() |
ff7fe7c107 | ||
![]() |
ac6af55335 | ||
![]() |
001c3906b5 | ||
![]() |
0d5d6db0ee | ||
![]() |
72941b10bb | ||
![]() |
d6c92704a1 | ||
![]() |
ba511e07b4 | ||
![]() |
aa6b29fe7e | ||
![]() |
f5836c9fc9 | ||
![]() |
d7d1a90de6 | ||
![]() |
16482c507b | ||
![]() |
5abd72d42a | ||
![]() |
2fa5ad982d | ||
![]() |
43df7d0cd4 | ||
![]() |
17d40855d2 | ||
![]() |
c924fe7950 | ||
![]() |
908f345e22 | ||
![]() |
858eea1e9e | ||
![]() |
06c704c740 | ||
![]() |
916e53c260 | ||
![]() |
3f94a68e62 | ||
![]() |
5c96f16e3d | ||
![]() |
8e33d99901 | ||
![]() |
d27dd85dfd | ||
![]() |
15515200ee | ||
![]() |
7f40602da9 | ||
![]() |
33e6ca6778 | ||
![]() |
54b50c3a8a | ||
![]() |
fa3d98aa37 | ||
![]() |
e24aaa4ce1 | ||
![]() |
aed492b881 | ||
![]() |
a4c2363f43 | ||
![]() |
0056a61db3 | ||
![]() |
6d1573f901 | ||
![]() |
ef297dd8e6 | ||
![]() |
958929aa77 | ||
![]() |
1c0479a795 | ||
![]() |
748226be29 | ||
![]() |
27e1a8ad80 | ||
![]() |
0802b6d506 | ||
![]() |
29f8b4b786 | ||
![]() |
2ebdf6060d | ||
![]() |
b98e7cb69f | ||
![]() |
2071ec0c96 | ||
![]() |
36bc77e2e2 | ||
![]() |
88556078be | ||
![]() |
27a07e20f5 | ||
![]() |
5d1115f591 | ||
![]() |
88d9e82fc9 | ||
![]() |
50b01ed45d | ||
![]() |
243d130667 | ||
![]() |
e33f73d08e | ||
![]() |
f505d742d8 | ||
![]() |
727d20cc92 | ||
![]() |
3567ae3529 | ||
![]() |
a9906e5d2a | ||
![]() |
6ab35512da | ||
![]() |
cfcbe3d6e1 | ||
![]() |
39c0c1a088 | ||
![]() |
f7ae010274 | ||
![]() |
4fd5037c10 | ||
![]() |
3fe09aa673 | ||
![]() |
3a6858a277 | ||
![]() |
c287c7bb01 | ||
![]() |
99061d92c1 | ||
![]() |
5b269a782a | ||
![]() |
71e53a4628 | ||
![]() |
275387a972 | ||
![]() |
e68e3b516e | ||
![]() |
3f7376f26b | ||
![]() |
0e3ce019e4 | ||
![]() |
f20f479a4b | ||
![]() |
e95066a37c | ||
![]() |
e281b667c6 | ||
![]() |
ce0e92e12a | ||
![]() |
56bb379024 | ||
![]() |
bafe4e909c | ||
![]() |
b6b0b54cdb | ||
![]() |
a9a45b9569 | ||
![]() |
864d806ee8 | ||
![]() |
4cda5d89fb | ||
![]() |
5b730ffb72 | ||
![]() |
e2b140b8dd | ||
![]() |
d2a29c2f87 | ||
![]() |
60e62dc5ab | ||
![]() |
4f1684c714 | ||
![]() |
d3e7e8a630 | ||
![]() |
437ddd3f76 | ||
![]() |
0d715d879d | ||
![]() |
cfdf5cffac | ||
![]() |
d6314b30a2 | ||
![]() |
03da68b1cf | ||
![]() |
890630944d | ||
![]() |
8d73ab65b2 | ||
![]() |
e54124fdb8 | ||
![]() |
e4fafb911a | ||
![]() |
2ef059807a | ||
![]() |
dba711d099 | ||
![]() |
ec13bba4da | ||
![]() |
8736c9ec4c | ||
![]() |
286df8f560 | ||
![]() |
92afbd45e8 | ||
![]() |
d293c22a52 | ||
![]() |
c660c9df8e | ||
![]() |
ed2eadaf56 | ||
![]() |
fa26333a5b | ||
![]() |
be7cfb78de | ||
![]() |
ec1d2cba40 | ||
![]() |
a93cd20e4d | ||
![]() |
25b3f2d1a6 | ||
![]() |
b44bdd21cb | ||
![]() |
53ea1843ab | ||
![]() |
34091176d5 | ||
![]() |
ac8a6887b6 | ||
![]() |
cc0a0b56ed | ||
![]() |
0e989185ce | ||
![]() |
aadf961184 | ||
![]() |
1abeac8811 | ||
![]() |
f8a304abdc | ||
![]() |
41a38428fc | ||
![]() |
d3850cf98f | ||
![]() |
02d906d3ae | ||
![]() |
6de72ecc77 | ||
![]() |
2a5dbe840c | ||
![]() |
86b6bcc1d9 | ||
![]() |
3023cff2b5 | ||
![]() |
f3a4764a1d | ||
![]() |
0d46a108b8 | ||
![]() |
8114c11d58 | ||
![]() |
e3425cfa9e | ||
![]() |
af78344e5d | ||
![]() |
a2121f2483 | ||
![]() |
7d97905716 | ||
![]() |
61adfea196 | ||
![]() |
3dd616f6ff | ||
![]() |
d5e6d161f2 | ||
![]() |
d1515456bc | ||
![]() |
7faa8b7a02 | ||
![]() |
5b0cbf9eb1 | ||
![]() |
74db0576af | ||
![]() |
d0b13f0eb0 | ||
![]() |
29a964d5b7 | ||
![]() |
5e6174c087 | ||
![]() |
199d770e15 | ||
![]() |
c47e29c7c8 | ||
![]() |
fed969ed64 | ||
![]() |
9cb686a6b7 | ||
![]() |
eddeda7bab | ||
![]() |
ca07540675 | ||
![]() |
fb5f563537 | ||
![]() |
2f9c5cdb22 | ||
![]() |
fcf50820e8 | ||
![]() |
3fd0241abb | ||
![]() |
ab0c82965c | ||
![]() |
5173a56ebd | ||
![]() |
9cd993d1da | ||
![]() |
73faf67084 | ||
![]() |
fd51362545 | ||
![]() |
56b99f4e19 | ||
![]() |
63cdfa2d85 | ||
![]() |
242874e705 | ||
![]() |
a5caa807f5 | ||
![]() |
c2c17fd053 | ||
![]() |
f54cc5796e | ||
![]() |
a9f99aed48 | ||
![]() |
7eaaa8f92a | ||
![]() |
ca9f5a18d4 | ||
![]() |
4f62900cd3 | ||
![]() |
2c9e1d942b | ||
![]() |
4032393c0e | ||
![]() |
8e854062e8 | ||
![]() |
cbf9c8ec1a | ||
![]() |
494593c745 | ||
![]() |
3af832ec18 | ||
![]() |
7e0cd223fd | ||
![]() |
8c0cd09823 | ||
![]() |
f931fc5a85 | ||
![]() |
c8b4611d8d | ||
![]() |
7764169aa3 | ||
![]() |
567dd3fabb | ||
![]() |
8d3c19c599 | ||
![]() |
b84333f8a1 | ||
![]() |
acdd08e9a2 | ||
![]() |
dbfd6a2368 | ||
![]() |
5af96943e3 | ||
![]() |
05325b135d | ||
![]() |
9d858d5cd7 | ||
![]() |
e82c50ed73 | ||
![]() |
4ce98d57dd | ||
![]() |
114c6d36d1 | ||
![]() |
538c88ced4 | ||
![]() |
7c35904062 | ||
![]() |
5c3c6b63ba | ||
![]() |
e698c09298 | ||
![]() |
a048ea668f | ||
![]() |
5af78ad2cd | ||
![]() |
338e89176d | ||
![]() |
a266599118 | ||
![]() |
80f624e4cc | ||
![]() |
002d56d8b3 | ||
![]() |
be4a1e7fd7 | ||
![]() |
a0a45333f1 | ||
![]() |
dba998fea0 | ||
![]() |
fe2b49cf81 | ||
![]() |
c90f1511dc | ||
![]() |
763d17281f | ||
![]() |
1ae5339c33 | ||
![]() |
7562e0e870 | ||
![]() |
0e456f33c1 | ||
![]() |
6778d36454 | ||
![]() |
bc54860ad6 | ||
![]() |
4894578b72 | ||
![]() |
fb7f7d0c75 | ||
![]() |
48fa4e116c | ||
![]() |
e9d3928fe0 | ||
![]() |
2a6f02fa29 | ||
![]() |
ce0e5be7ce | ||
![]() |
a8b6a40f13 | ||
![]() |
88a91e0769 | ||
![]() |
21f4676b16 | ||
![]() |
bb2a874fd5 | ||
![]() |
56667e717b | ||
![]() |
caaaa05710 | ||
![]() |
d69e6bb7aa | ||
![]() |
a1903e5d67 | ||
![]() |
64d8db0c93 | ||
![]() |
7b608fd0c9 | ||
![]() |
19cbffb5e2 | ||
![]() |
c5ea6b0502 | ||
![]() |
639ed40314 | ||
![]() |
c5cbda0bbe | ||
![]() |
59e37210f3 | ||
![]() |
9351f66c26 | ||
![]() |
7432c4dbfe | ||
![]() |
1069bea273 | ||
![]() |
c740d105c9 | ||
![]() |
66a5a9863f | ||
![]() |
7ca47b8916 | ||
![]() |
bcfa4866fe | ||
![]() |
de8377ab53 | ||
![]() |
b85b1e8834 | ||
![]() |
eba5a48abd | ||
![]() |
a90ade0446 | ||
![]() |
0b86eb9b4c | ||
![]() |
359c4fef9d | ||
![]() |
71b1cb3b9c | ||
![]() |
b740cc23d3 | ||
![]() |
613e9866aa | ||
![]() |
bc937d38a2 | ||
![]() |
35fcf39fc8 | ||
![]() |
bd45dc5d0f | ||
![]() |
7377974731 | ||
![]() |
669b67e666 | ||
![]() |
a2b85ba1fd | ||
![]() |
dc22109fa7 | ||
![]() |
4471a6377e | ||
![]() |
3f762a416d | ||
![]() |
a59a6ce8e4 | ||
![]() |
189514c6de | ||
![]() |
dded874350 | ||
![]() |
e42fa0e027 | ||
![]() |
33ffe95294 | ||
![]() |
0657238ad1 | ||
![]() |
4efece4ab8 | ||
![]() |
b9b2ed64f9 | ||
![]() |
16bc0531f4 | ||
![]() |
39c34078d6 | ||
![]() |
9318f05e2b | ||
![]() |
95f3073e6f | ||
![]() |
6f4a9390ba | ||
![]() |
0eb6967bb2 | ||
![]() |
2854630b1c | ||
![]() |
bbd781c420 | ||
![]() |
f7cfdfcf63 | ||
![]() |
af7c32d3aa | ||
![]() |
0d334369f0 | ||
![]() |
08f3630f01 | ||
![]() |
2b17838820 | ||
![]() |
0b0338a9cb | ||
![]() |
a24f2ae884 | ||
![]() |
ec5b0b5403 | ||
![]() |
df2d449f9b | ||
![]() |
eecd221d40 | ||
![]() |
3951b891c1 | ||
![]() |
eab455422f | ||
![]() |
75c93d72be | ||
![]() |
6842e8263d | ||
![]() |
f35d94d98e | ||
![]() |
01206a0e2e | ||
![]() |
cf9e3193bc | ||
![]() |
f5239ffb0b | ||
![]() |
746fe7ba09 | ||
![]() |
7c1a986e61 | ||
![]() |
c6b772da11 | ||
![]() |
11cfe38d1c | ||
![]() |
4ca6de2b54 | ||
![]() |
e1abcc684a | ||
![]() |
bbd936fdfa | ||
![]() |
f58eed13d0 | ||
![]() |
8a708fd97e | ||
![]() |
bf8d993743 | ||
![]() |
c029122a8e | ||
![]() |
54327d579b | ||
![]() |
6c10aa33e1 | ||
![]() |
b7c098c5e6 | ||
![]() |
c18c42e866 | ||
![]() |
386f99cb1d | ||
![]() |
a4b606c6e9 | ||
![]() |
baa8d2c326 | ||
![]() |
e1ca0f3ff9 | ||
![]() |
ca2be2f499 | ||
![]() |
5960e7dda6 | ||
![]() |
efc04645b7 | ||
![]() |
f888fb4ac7 | ||
![]() |
e71e97cb68 | ||
![]() |
1b4c5fd34d | ||
![]() |
802ec5a14e | ||
![]() |
5341478036 | ||
![]() |
7694b21dff | ||
![]() |
cf061b7d30 | ||
![]() |
7fffb6526c | ||
![]() |
dd5b16831c | ||
![]() |
b3ca2ea179 | ||
![]() |
b5d67f90e4 | ||
![]() |
ce42f7c9f1 | ||
![]() |
02869d7428 | ||
![]() |
67b35b76ac | ||
![]() |
baebabbfd8 | ||
![]() |
154ee1a73e | ||
![]() |
b3fb6bd990 | ||
![]() |
926d51839f | ||
![]() |
8de966ea88 | ||
![]() |
85b0a40a0e | ||
![]() |
88fe94bd6a | ||
![]() |
1b53c590f2 | ||
![]() |
2ee5b35f48 | ||
![]() |
f0dd7b7dae | ||
![]() |
f08c0afbea | ||
![]() |
5a417c6a29 | ||
![]() |
9f32e6e50d | ||
![]() |
801cfdbc24 | ||
![]() |
889d994dbc | ||
![]() |
97c28e1e51 | ||
![]() |
ad6e2b4b94 | ||
![]() |
da12daffee | ||
![]() |
30319e51e5 | ||
![]() |
294ea17222 | ||
![]() |
fad954df18 | ||
![]() |
25be00931a | ||
![]() |
cd9ed1706d | ||
![]() |
b034b86be8 | ||
![]() |
aa189a7fc6 | ||
![]() |
074cbdad28 | ||
![]() |
cbc0ef860b | ||
![]() |
ab64ee872b | ||
![]() |
a63515b8f4 | ||
![]() |
4dcd6df136 | ||
![]() |
cea1bbde23 | ||
![]() |
2c8447853b | ||
![]() |
116664285d | ||
![]() |
213b18e33b | ||
![]() |
299f981441 | ||
![]() |
7ea827f8d3 | ||
![]() |
c2af5c6a3f | ||
![]() |
63812ca951 | ||
![]() |
98bdfcef65 | ||
![]() |
ac97ed685f | ||
![]() |
c5ff9b353c | ||
![]() |
04c1988665 | ||
![]() |
36c14ca587 | ||
![]() |
0c118bed61 | ||
![]() |
6c6474291e | ||
![]() |
7fa89c9ba4 | ||
![]() |
d2aad3a3ca | ||
![]() |
ca09b0491e | ||
![]() |
2e08ae82b1 | ||
![]() |
2652c73a4f | ||
![]() |
a21bff1dbd | ||
![]() |
14fc3dc9b3 | ||
![]() |
5cb295341c | ||
![]() |
b854c3b00e | ||
![]() |
2d3ff6a97c | ||
![]() |
c627ed4b6f | ||
![]() |
70ec183fca | ||
![]() |
1e45b7f50b | ||
![]() |
293479a1f2 | ||
![]() |
7b8962a796 | ||
![]() |
852a14992c | ||
![]() |
37e6a9ebc2 | ||
![]() |
b3f5bf1583 | ||
![]() |
a3a8c19dc2 | ||
![]() |
bc94de5626 | ||
![]() |
c3a64b3d6c | ||
![]() |
70eed10a34 | ||
![]() |
56c3983885 | ||
![]() |
78eaa49cd6 | ||
![]() |
2668a42f0c | ||
![]() |
4a7f1116ac | ||
![]() |
f12ce78b5c | ||
![]() |
610009fb7f | ||
![]() |
4cb075b168 | ||
![]() |
cf96e6c642 | ||
![]() |
dd1bd8ad10 | ||
![]() |
facfa26eed | ||
![]() |
0012a3ede7 | ||
![]() |
b61a818a3f | ||
![]() |
a2c44dedce | ||
![]() |
a8ad4f784a | ||
![]() |
78d69bcbf0 | ||
![]() |
414361a3db | ||
![]() |
1d4071d6d8 | ||
![]() |
47daf1b358 | ||
![]() |
7a910a8cc1 | ||
![]() |
9818c7b6a4 | ||
![]() |
ca9e5e8531 | ||
![]() |
aafee60033 | ||
![]() |
adf7c4ffb6 | ||
![]() |
96965ae347 | ||
![]() |
bc2ef5d726 | ||
![]() |
7a539d9890 | ||
![]() |
c40408b337 | ||
![]() |
4e2daf117b | ||
![]() |
9553afc3c2 | ||
![]() |
26352c9eb4 | ||
![]() |
62c167fc77 | ||
![]() |
03c774eae7 | ||
![]() |
53992bf0d5 | ||
![]() |
ff99e5ac9a | ||
![]() |
0cc318664d | ||
![]() |
43c427b253 | ||
![]() |
44c8d60a70 | ||
![]() |
54252184ab | ||
![]() |
7ae68b20e7 | ||
![]() |
208234b934 | ||
![]() |
1729b9f29c | ||
![]() |
5d69334287 | ||
![]() |
4d54fb675f | ||
![]() |
e93de54eb5 | ||
![]() |
43441d8291 | ||
![]() |
d6dce1efe9 | ||
![]() |
dca69f053a | ||
![]() |
5ebbed8160 | ||
![]() |
3fdb330bd9 | ||
![]() |
c05dbc451a | ||
![]() |
5f623e32c4 | ||
![]() |
7c37c5c06f | ||
![]() |
4d541ca969 | ||
![]() |
e4a67183bd | ||
![]() |
d25be686ee | ||
![]() |
a3be239a60 | ||
![]() |
709a053c7c | ||
![]() |
d39c6bef4b | ||
![]() |
84a8158aa2 | ||
![]() |
a7c5826e05 | ||
![]() |
2da39e2fbb | ||
![]() |
d6e0164766 | ||
![]() |
fbc85bed64 | ||
![]() |
52b54fe154 | ||
![]() |
f44341a8e2 | ||
![]() |
9f6130cbaa | ||
![]() |
24d73f5822 | ||
![]() |
d3bdeaab3f | ||
![]() |
b66f4b9322 | ||
![]() |
9dfe5f5f07 | ||
![]() |
d6fc020ba7 | ||
![]() |
8397b118b7 | ||
![]() |
74dc000ac1 | ||
![]() |
9b61991523 | ||
![]() |
702c79a92f | ||
![]() |
a27822b557 | ||
![]() |
bdcb00a3b2 | ||
![]() |
ac5a485651 | ||
![]() |
e8c65388eb | ||
![]() |
f2cbb61d49 | ||
![]() |
0a1c61d9d3 | ||
![]() |
01a0fff4c2 | ||
![]() |
bf9516d164 | ||
![]() |
fdbf8cb0ee | ||
![]() |
7e8a176751 | ||
![]() |
61504ae3b1 | ||
![]() |
dd76525372 | ||
![]() |
1c0f8b4289 | ||
![]() |
63043b4927 | ||
![]() |
3ea4c66d41 | ||
![]() |
781d7fbf1a | ||
![]() |
e7ebbffbfd | ||
![]() |
39f054eef6 | ||
![]() |
7a620c794d | ||
![]() |
cc13f3e10d | ||
![]() |
b0e41abf5a | ||
![]() |
5347897b7d | ||
![]() |
6f8fae9a7b | ||
![]() |
62b50d1475 | ||
![]() |
2fb0c86f1e | ||
![]() |
aedd997604 | ||
![]() |
aa3da942cb | ||
![]() |
87e1a14a4b | ||
![]() |
00f6bb7c82 | ||
![]() |
cca93c2be2 | ||
![]() |
ad9d0608d4 | ||
![]() |
3c5688c6f6 | ||
![]() |
ece92a886a | ||
![]() |
85777ea491 | ||
![]() |
b8a84dbd83 | ||
![]() |
35c31906b7 | ||
![]() |
1fa940876f | ||
![]() |
c652123145 | ||
![]() |
1c52fff1cc | ||
![]() |
261f08b90e | ||
![]() |
2d48581570 | ||
![]() |
b8a7ecfe69 | ||
![]() |
cbc2de6b85 | ||
![]() |
9d2bb67834 | ||
![]() |
3d7ff9765a | ||
![]() |
28f2def21f | ||
![]() |
0ee303789a | ||
![]() |
6ccc92020c | ||
![]() |
e3fe66d3ec | ||
![]() |
ab5605d54b | ||
![]() |
a7a90613c2 | ||
![]() |
19d95ebd10 | ||
![]() |
0e1849346b | ||
![]() |
0f34e3bed9 | ||
![]() |
c8b66b25e8 | ||
![]() |
e6f07a6fe4 | ||
![]() |
51469f8fa2 | ||
![]() |
d78b2a569f | ||
![]() |
ec6c970775 | ||
![]() |
67c45efff7 | ||
![]() |
a54772bf35 | ||
![]() |
166be2a94d | ||
![]() |
7150d05399 | ||
![]() |
36a6e22f27 | ||
![]() |
dc13eaed1f | ||
![]() |
001bd60d36 | ||
![]() |
b063042988 | ||
![]() |
fa1d49add5 | ||
![]() |
b45248bf99 | ||
![]() |
dfe862dcd5 | ||
![]() |
d4ddeaa917 | ||
![]() |
13a49866a7 | ||
![]() |
7e2aea92b0 | ||
![]() |
7db51b2f8d | ||
![]() |
ae1b963e0f | ||
![]() |
b29b7e0185 | ||
![]() |
71270260bf | ||
![]() |
22abbc1d41 | ||
![]() |
32698fe0be | ||
![]() |
16f8d6a936 | ||
![]() |
046d6f3bc1 | ||
![]() |
e33c4086b9 | ||
![]() |
51d754a53e | ||
![]() |
49976bcd83 | ||
![]() |
f991d2bdb4 | ||
![]() |
e6ff23885e | ||
![]() |
7aa859a442 | ||
![]() |
180deb867a | ||
![]() |
a5c531f0a4 | ||
![]() |
5dd70b88d3 | ||
![]() |
40f2718265 | ||
![]() |
ddd106655d | ||
![]() |
cc61ad01b6 | ||
![]() |
8a44c1f6d5 | ||
![]() |
e370cbb06b | ||
![]() |
cb0c2e3b9c | ||
![]() |
80360cc79a | ||
![]() |
559a979536 | ||
![]() |
5e88537809 | ||
![]() |
8b60baea99 | ||
![]() |
ac61c33d1c | ||
![]() |
3088f04e6f | ||
![]() |
864dca1b67 | ||
![]() |
15320018f0 | ||
![]() |
6226dd5b80 | ||
![]() |
aafc1064d9 | ||
![]() |
fb2fbc875d | ||
![]() |
8085db6ba9 | ||
![]() |
4f20769a6c | ||
![]() |
090199f9de | ||
![]() |
cd3635985e | ||
![]() |
8a7179195f | ||
![]() |
e45e29b431 | ||
![]() |
ca28fc27dc | ||
![]() |
08b2cde8e8 | ||
![]() |
489d88e02a | ||
![]() |
dff39ffd20 | ||
![]() |
3c948ef063 | ||
![]() |
7087565d92 | ||
![]() |
3467358663 | ||
![]() |
45a1c25a29 | ||
![]() |
70a11a12b3 | ||
![]() |
5d5b0d572e | ||
![]() |
7c8eadfddf | ||
![]() |
89ca0c537d | ||
![]() |
a92a6404cb | ||
![]() |
78459fcb31 | ||
![]() |
41fc0fd084 | ||
![]() |
5c9655abc3 | ||
![]() |
3301797491 | ||
![]() |
eb5e1d34df | ||
![]() |
9e92e5995f | ||
![]() |
e96f2d7be0 | ||
![]() |
03cb51844b | ||
![]() |
6b06cc9216 | ||
![]() |
6b49323f05 | ||
![]() |
4a11fab2b1 | ||
![]() |
c382191e75 | ||
![]() |
4d480b8761 | ||
![]() |
cd25562fd2 | ||
![]() |
9a3d560d9e | ||
![]() |
4924fb95f8 | ||
![]() |
6de67fe81f | ||
![]() |
bc71827c01 | ||
![]() |
a8ade3a04b | ||
![]() |
eca04e2e92 | ||
![]() |
763b9fc1da | ||
![]() |
add75fbc77 | ||
![]() |
86b1ac5d7c | ||
![]() |
b51197936b | ||
![]() |
64609ce5cf | ||
![]() |
b81cbf9062 | ||
![]() |
e7e881e5d7 | ||
![]() |
e236a76d5a | ||
![]() |
ad8a827c1f | ||
![]() |
08ac33bc5c | ||
![]() |
5cf39a2970 | ||
![]() |
1c9321d5a1 | ||
![]() |
97a8d865dc | ||
![]() |
982133d9b6 | ||
![]() |
d23935a269 | ||
![]() |
1c343a444b | ||
![]() |
1c9696b68e | ||
![]() |
ecd23d0abd | ||
![]() |
010d1b5ff8 | ||
![]() |
46394a7c0f | ||
![]() |
fc86034fab | ||
![]() |
03012cc175 | ||
![]() |
8518333406 | ||
![]() |
b2e0e25f1c | ||
![]() |
9673be17cb | ||
![]() |
fa8786e230 | ||
![]() |
21f72baae2 | ||
![]() |
4b78af268f | ||
![]() |
a734199383 | ||
![]() |
046b741700 | ||
![]() |
ce0b6f0d56 | ||
![]() |
6de0622c1a | ||
![]() |
6229b81730 | ||
![]() |
c701379a2e | ||
![]() |
0783968121 | ||
![]() |
307f5e6e56 | ||
![]() |
cb29685a24 | ||
![]() |
dabba89682 | ||
![]() |
2efd4f2a77 | ||
![]() |
90296b3ef0 | ||
![]() |
8f02fe0cc6 | ||
![]() |
7a6edcdddb | ||
![]() |
81139c0098 | ||
![]() |
6a6268c068 | ||
![]() |
68133ec8e3 | ||
![]() |
314f92f2d8 | ||
![]() |
8b5db328ec | ||
![]() |
615b76f78c | ||
![]() |
f2912c14ea | ||
![]() |
08f33d7e9e | ||
![]() |
c034cb5985 | ||
![]() |
e3cd15dced | ||
![]() |
8439d4e827 | ||
![]() |
2b501904cf | ||
![]() |
ea986a1f1b | ||
![]() |
b924357ea9 | ||
![]() |
b823d74ac3 | ||
![]() |
d1e2019cd7 | ||
![]() |
70573eba2c | ||
![]() |
cf46653333 | ||
![]() |
8d3fcbd897 | ||
![]() |
1900538315 | ||
![]() |
a9feae6110 | ||
![]() |
8d822f2cb4 | ||
![]() |
c12e486f59 | ||
![]() |
d0d0bed333 | ||
![]() |
8799321312 | ||
![]() |
00d2997971 | ||
![]() |
69f7f233fd | ||
![]() |
793e8643bf | ||
![]() |
521ef8e28f | ||
![]() |
7433d85418 | ||
![]() |
ba1cf12817 | ||
![]() |
7dc7b95bfd | ||
![]() |
59352e4ca7 | ||
![]() |
011d026d76 | ||
![]() |
89a8184ad2 | ||
![]() |
a23e10dff5 | ||
![]() |
535603fac4 | ||
![]() |
fb6282da57 | ||
![]() |
23766cd01d | ||
![]() |
44b2afb218 | ||
![]() |
9e82e59fc8 | ||
![]() |
e006538514 | ||
![]() |
fad5dfa4f4 | ||
![]() |
b737ee0240 | ||
![]() |
9d9f774dad | ||
![]() |
526ee9c9db | ||
![]() |
671eff324d | ||
![]() |
a93cf04aca | ||
![]() |
e93a67e644 | ||
![]() |
b29a52dfa8 | ||
![]() |
4ed99ba851 | ||
![]() |
3e92e716b2 | ||
![]() |
c6c8f6563d | ||
![]() |
138c911ef4 | ||
![]() |
e5fe6401a0 | ||
![]() |
bed643e627 | ||
![]() |
4ac25a50ed | ||
![]() |
d9cf189ef6 | ||
![]() |
6e19878973 | ||
![]() |
9f9c4d6ed0 | ||
![]() |
567848e94f | ||
![]() |
221cbcc1ac | ||
![]() |
dc2086dab4 | ||
![]() |
7be2a03c86 | ||
![]() |
e87f8f5b93 | ||
![]() |
11a063ea66 | ||
![]() |
1d26f4c5f7 | ||
![]() |
8a09558ed8 | ||
![]() |
60b1e692b9 | ||
![]() |
0a1865d0dd | ||
![]() |
3d94c70c48 | ||
![]() |
7d7f967d5e | ||
![]() |
ce554e6c77 | ||
![]() |
5d151cca9d | ||
![]() |
e47d90b5a6 | ||
![]() |
e4730191db | ||
![]() |
49aab492e0 | ||
![]() |
2d4d246268 | ||
![]() |
09e558ae0b | ||
![]() |
a3fd6633c4 | ||
![]() |
1eb246c98b | ||
![]() |
96e0c0df20 | ||
![]() |
aa8f420681 | ||
![]() |
7974b5a95c | ||
![]() |
ed4570cb4d | ||
![]() |
01d851440b | ||
![]() |
e5943b64c1 | ||
![]() |
933e56494c | ||
![]() |
140e73be4e | ||
![]() |
960b9b855f | ||
![]() |
1e1d55b26d | ||
![]() |
925bf7715c | ||
![]() |
399d3ad85a | ||
![]() |
d923c03d52 | ||
![]() |
699b91ab8d | ||
![]() |
abd6eb2ff3 | ||
![]() |
32f29e72c6 | ||
![]() |
e76bac4131 | ||
![]() |
8b94642ab1 | ||
![]() |
d3497148c5 | ||
![]() |
27baa55443 | ||
![]() |
fd3d4d479a | ||
![]() |
4b0a2d050a | ||
![]() |
d85c14864b | ||
![]() |
ee696e6f36 | ||
![]() |
6ccbd8472c | ||
![]() |
8ec26e9ea9 | ||
![]() |
45e31a153c | ||
![]() |
7c23d800e6 | ||
![]() |
4dbf6af733 | ||
![]() |
bdc03b1c75 | ||
![]() |
9bfc74a1bc | ||
![]() |
5d03917877 | ||
![]() |
d2f975a0f3 | ||
![]() |
eedd47860a | ||
![]() |
6e59248ea6 | ||
![]() |
365554d064 | ||
![]() |
70d1cb86fd | ||
![]() |
ccb7c0d579 | ||
![]() |
fd9941e2d8 | ||
![]() |
2f89563fca | ||
![]() |
261f601bd5 | ||
![]() |
5157e4965a | ||
![]() |
3ffd25f9e1 | ||
![]() |
665ab34f25 | ||
![]() |
37f227ae74 | ||
![]() |
f6eb29d800 | ||
![]() |
f5315d9ba7 | ||
![]() |
124cc9621d | ||
![]() |
3faa7226e7 | ||
![]() |
6070b41c9b | ||
![]() |
50ddfea617 | ||
![]() |
e74ad86f14 | ||
![]() |
2bd2490539 | ||
![]() |
5c0378a684 | ||
![]() |
2bd5aca3a4 | ||
![]() |
ccb59fbad3 | ||
![]() |
6c66d02aff | ||
![]() |
9f03598259 | ||
![]() |
8191246c19 | ||
![]() |
437769ac0b | ||
![]() |
f97a1103b1 | ||
![]() |
9b0c9be7dd | ||
![]() |
97c7f3bc67 | ||
![]() |
2503271a45 | ||
![]() |
d335f263f3 | ||
![]() |
1c34635016 | ||
![]() |
b6a35e9477 | ||
![]() |
6aa8251b98 | ||
![]() |
3b4bf90a13 | ||
![]() |
0c71756009 | ||
![]() |
2f6abb8aa1 | ||
![]() |
42582e21f7 | ||
![]() |
af49a4dd5a | ||
![]() |
b2081faf87 | ||
![]() |
f960934eb9 | ||
![]() |
5522725f5d | ||
![]() |
9f3d36bab0 | ||
![]() |
87e7085c22 | ||
![]() |
d8eac56f5e | ||
![]() |
c20557f690 | ||
![]() |
65bdc4cf43 | ||
![]() |
ee79c196df | ||
![]() |
41682bfcbb | ||
![]() |
34be8c9213 | ||
![]() |
aebb9f89d1 | ||
![]() |
40f6201509 | ||
![]() |
2e8e2b04a1 | ||
![]() |
015780fc72 | ||
![]() |
c64e433a69 | ||
![]() |
e21f46d824 | ||
![]() |
ef79546508 | ||
![]() |
2993fdb169 | ||
![]() |
365b1c6299 | ||
![]() |
9565b695ef | ||
![]() |
89cedd411e | ||
![]() |
a51742b47c | ||
![]() |
ea3b897d5d | ||
![]() |
e432d67b3b | ||
![]() |
bd7dc8b5e7 | ||
![]() |
a7ac700fe1 | ||
![]() |
ff87958188 | ||
![]() |
f308cd392b | ||
![]() |
e4bea17fb8 | ||
![]() |
2c47cfbe25 | ||
![]() |
b0685541d9 | ||
![]() |
f097c15c61 | ||
![]() |
511fa37c84 | ||
![]() |
a82ca6adb2 | ||
![]() |
05e3e46f5a | ||
![]() |
6d399f0303 | ||
![]() |
ecebfc34fa | ||
![]() |
59b53f3db4 | ||
![]() |
e86916a7f9 | ||
![]() |
11ae073c12 | ||
![]() |
aec53b2849 | ||
![]() |
0f42ab230e | ||
![]() |
211c92c387 | ||
![]() |
2f1ec09aef | ||
![]() |
4561d844e4 | ||
![]() |
3caa57358f | ||
![]() |
94195d5339 | ||
![]() |
c9a552c89c | ||
![]() |
6b123921a4 | ||
![]() |
383eaf44ac | ||
![]() |
223d15802e | ||
![]() |
bdf2f6c3e1 | ||
![]() |
fdc186c92f | ||
![]() |
ab6141edb7 | ||
![]() |
d0dcf53575 | ||
![]() |
ab906f17de | ||
![]() |
28ef33b0a0 | ||
![]() |
376dedebb1 | ||
![]() |
137c6458f7 | ||
![]() |
75e0990eb3 | ||
![]() |
62a6c725d6 | ||
![]() |
d4554c2e5c | ||
![]() |
d6a398cf2c | ||
![]() |
68e3bcbcda | ||
![]() |
6864e13e6f | ||
![]() |
942fad1d6f | ||
![]() |
29e6b229ac | ||
![]() |
a4ce5d1687 | ||
![]() |
cb8d6a0939 | ||
![]() |
e38128119c | ||
![]() |
c7c7924d37 | ||
![]() |
b5a24fd877 | ||
![]() |
e1ed5b73d0 | ||
![]() |
3e47d26e44 | ||
![]() |
e0d17e496a | ||
![]() |
6cf99cd0f2 | ||
![]() |
31d84100cd | ||
![]() |
0eb39aa9e3 | ||
![]() |
f457069881 | ||
![]() |
47eef78365 | ||
![]() |
eaaadf40c9 | ||
![]() |
c9e2da5f53 | ||
![]() |
53b7956968 | ||
![]() |
d13be829c3 | ||
![]() |
e18b2ab437 | ||
![]() |
6777a615d4 | ||
![]() |
41f2375053 | ||
![]() |
f385bd2236 | ||
![]() |
35032d7eed | ||
![]() |
bfd48f187a | ||
![]() |
7662da52e6 | ||
![]() |
7722916fad | ||
![]() |
d82a1d7198 | ||
![]() |
45925efe32 | ||
![]() |
a64bb1a990 | ||
![]() |
650bf15db8 | ||
![]() |
2b8e50b296 | ||
![]() |
2731eb1c05 | ||
![]() |
f97aa05bdb | ||
![]() |
4a68df084e | ||
![]() |
83530b7adb | ||
![]() |
a2ef09466f | ||
![]() |
7c9488105e | ||
![]() |
3f32b040dc | ||
![]() |
21b3c61162 | ||
![]() |
5045fa6dcd | ||
![]() |
c4a3d70500 | ||
![]() |
435bb34435 | ||
![]() |
bb9ca7f418 | ||
![]() |
2e30ed17bd | ||
![]() |
0b3d088782 | ||
![]() |
6514eaf565 | ||
![]() |
f8e7602d96 | ||
![]() |
565aef9637 | ||
![]() |
82efb83c43 | ||
![]() |
f29ff67585 | ||
![]() |
825bf8d61e | ||
![]() |
1344b31535 | ||
![]() |
9b8bddf7b2 | ||
![]() |
8a087a876e | ||
![]() |
f8067aa592 | ||
![]() |
2b837381f3 | ||
![]() |
cd6959b712 | ||
![]() |
3e5f8c64d4 | ||
![]() |
2d1c34d8e0 | ||
![]() |
48d532777a | ||
![]() |
f6336a6056 | ||
![]() |
cd7bdc8998 | ||
![]() |
2b7b3c65cc | ||
![]() |
98e02a8fed | ||
![]() |
a93391e247 | ||
![]() |
102cc684dd | ||
![]() |
a230228441 | ||
![]() |
135cad576c | ||
![]() |
561fbf2cca | ||
![]() |
a8127d6102 | ||
![]() |
2f28d3c7b6 | ||
![]() |
e59c735331 | ||
![]() |
221014a2e3 | ||
![]() |
e2dbfa9ace | ||
![]() |
121ff2b7be | ||
![]() |
45465e994e | ||
![]() |
af85a8a340 | ||
![]() |
5fe0e9395f | ||
![]() |
1f1cabd144 | ||
![]() |
c3bab70434 | ||
![]() |
1d6af22813 | ||
![]() |
a50798c78f | ||
![]() |
379d41b6fb | ||
![]() |
09da6828b8 | ||
![]() |
9f386afe9c | ||
![]() |
35dedd3d83 | ||
![]() |
45c0d5a823 | ||
![]() |
7bc5bfa140 | ||
![]() |
fda6def384 | ||
![]() |
4bf4d45389 | ||
![]() |
4e8eb2c996 | ||
![]() |
e43a9de2f3 | ||
![]() |
1a9e97ee3b | ||
![]() |
901fca2d12 | ||
![]() |
c23f8542b2 | ||
![]() |
0189606445 | ||
![]() |
9b31496b22 | ||
![]() |
b9676ac3eb | ||
![]() |
764aabc459 | ||
![]() |
61d2ff359b | ||
![]() |
87ad8a1495 | ||
![]() |
5d889e4a8f | ||
![]() |
b65a714d17 | ||
![]() |
ea1c4a8fc8 | ||
![]() |
5beb1b2cd0 | ||
![]() |
f55e0b6775 | ||
![]() |
d124041726 | ||
![]() |
7a26a92edd | ||
![]() |
43c8ac0aa1 | ||
![]() |
46e6ed480a | ||
![]() |
9f30aba2b3 | ||
![]() |
560ecbc6c3 | ||
![]() |
8d9b6cca63 | ||
![]() |
3972597163 | ||
![]() |
b0d17221f2 | ||
![]() |
be2cdca1e9 | ||
![]() |
f6ab1d63e8 | ||
![]() |
cf5e833898 | ||
![]() |
6ed2e2694f | ||
![]() |
04827188f2 | ||
![]() |
560239c918 | ||
![]() |
a78929dadf | ||
![]() |
349cc54c69 | ||
![]() |
a8ae97ba91 | ||
![]() |
aad6b69f00 | ||
![]() |
d74df935f4 | ||
![]() |
5c8806b307 | ||
![]() |
a078633a32 | ||
![]() |
f022458383 | ||
![]() |
6139d0d65a | ||
![]() |
86a283b4ae | ||
![]() |
bb39a41e9e | ||
![]() |
1568e98d43 | ||
![]() |
0c9ecd1d76 | ||
![]() |
799e67bbca | ||
![]() |
561b597031 | ||
![]() |
6d6908e625 | ||
![]() |
4da4fb0676 | ||
![]() |
7a8c05dc7c | ||
![]() |
d7bacdcbff | ||
![]() |
73e927ff19 | ||
![]() |
e2c785b2d5 | ||
![]() |
20e9952d98 | ||
![]() |
0bf36ad031 | ||
![]() |
f3435c5e35 | ||
![]() |
166ec74ff9 | ||
![]() |
6b3c6c12ff | ||
![]() |
5161758193 | ||
![]() |
bea32cfe38 | ||
![]() |
8cfd803222 | ||
![]() |
9a567721a8 | ||
![]() |
3a49c8f2da | ||
![]() |
12938799a6 | ||
![]() |
89807fb55f | ||
![]() |
891a24c6ba | ||
![]() |
752b45083c | ||
![]() |
f00f552369 | ||
![]() |
5c2b81d78f | ||
![]() |
a2b0531d5f | ||
![]() |
752eb58ec0 | ||
![]() |
7373b60522 | ||
![]() |
59f0961594 | ||
![]() |
b776f98df8 | ||
![]() |
7400284cff | ||
![]() |
da87eb7b4c | ||
![]() |
e1f9083c81 | ||
![]() |
614376ed64 | ||
![]() |
529dd6e3a8 | ||
![]() |
acb1bc0c0e | ||
![]() |
8233f60569 | ||
![]() |
4ae2160372 | ||
![]() |
1df2dd9593 | ||
![]() |
d53a1d1412 | ||
![]() |
de9b43984a | ||
![]() |
4a0b36a50b | ||
![]() |
fffe5e7003 | ||
![]() |
0bac639a04 | ||
![]() |
0d0d0a7c23 | ||
![]() |
c8e8a44747 | ||
![]() |
173f8b093f | ||
![]() |
e46c88580a | ||
![]() |
e6033c952e | ||
![]() |
3dfd0ff3b3 | ||
![]() |
dd65f35e5a | ||
![]() |
0d550c9bce | ||
![]() |
2aeb8b9390 | ||
![]() |
afa2fc0ba9 | ||
![]() |
6a45919b25 | ||
![]() |
e4f7d607e1 | ||
![]() |
0690ef31d1 | ||
![]() |
c3f02d833c | ||
![]() |
e273ac3a0d | ||
![]() |
459d02abc8 | ||
![]() |
f5e8b26a55 | ||
![]() |
2d27083509 | ||
![]() |
ce482c20cb | ||
![]() |
c2f149cca3 | ||
![]() |
ab0e1ec6e8 | ||
![]() |
5e4f548321 | ||
![]() |
e53634ecef | ||
![]() |
03e7019182 | ||
![]() |
82b0bc63a3 | ||
![]() |
04275e7d5d | ||
![]() |
7a471ea6b2 | ||
![]() |
45874fa333 | ||
![]() |
74a5c6e745 | ||
![]() |
cfafe90fe0 | ||
![]() |
12d396ffc5 | ||
![]() |
dc39b9e643 | ||
![]() |
e6a8c02745 | ||
![]() |
88d695f7af | ||
![]() |
b673e0c219 | ||
![]() |
5c819f7242 | ||
![]() |
40bd2039d4 | ||
![]() |
53f29613c2 | ||
![]() |
3371709472 | ||
![]() |
50c009265e | ||
![]() |
e169c0ce5e | ||
![]() |
f04d4b10e4 | ||
![]() |
f3e4338efc | ||
![]() |
c8979a6a49 | ||
![]() |
5b495e2f51 | ||
![]() |
42637a642b | ||
![]() |
2375e7c100 | ||
![]() |
ae1b852821 | ||
![]() |
44e4dd3700 | ||
![]() |
24d7d599f1 | ||
![]() |
d85a41ad75 | ||
![]() |
478ddfe102 | ||
![]() |
198f832c3d | ||
![]() |
f0b78ffc04 | ||
![]() |
a445311705 | ||
![]() |
1fe1fa9eac | ||
![]() |
6258652c7b | ||
![]() |
28d31b9d5b | ||
![]() |
75426cc498 | ||
![]() |
ae29e8bbab | ||
![]() |
2b9c7e04a4 | ||
![]() |
d1aba56096 | ||
![]() |
3985d58d3c | ||
![]() |
1479b61214 | ||
![]() |
15a249eb54 | ||
![]() |
08b3d6bbb0 | ||
![]() |
710c5e2c31 | ||
![]() |
17fa615bd3 | ||
![]() |
6bfed97710 | ||
![]() |
f9e286123f | ||
![]() |
613fd1bcf0 | ||
![]() |
52ce52d466 | ||
![]() |
cede5ac9d2 | ||
![]() |
89559eae2b | ||
![]() |
d7fb2e6403 | ||
![]() |
e3119b457c | ||
![]() |
ae27a5b7b7 | ||
![]() |
302cb27e98 | ||
![]() |
2d3481b9a9 | ||
![]() |
9b67e988db | ||
![]() |
15f1fdddd9 | ||
![]() |
24fa9e32b0 | ||
![]() |
0b4fef19f6 | ||
![]() |
35731b96dc | ||
![]() |
b79a1b5755 | ||
![]() |
1561f6f09f | ||
![]() |
36d7fce909 | ||
![]() |
b8d6058b28 | ||
![]() |
8771e1a339 | ||
![]() |
7b657c942d | ||
![]() |
531ae501ad | ||
![]() |
d0cac421bb | ||
![]() |
4429a16ca8 | ||
![]() |
c669401767 | ||
![]() |
4d349f5f81 | ||
![]() |
08e0349ca3 | ||
![]() |
ee5fe424e8 | ||
![]() |
552ff0489d | ||
![]() |
04a9ce6e81 | ||
![]() |
586bdc0567 | ||
![]() |
4bb3d13921 | ||
![]() |
7c02630186 | ||
![]() |
ff63ad8b97 | ||
![]() |
bdf1fb6db8 | ||
![]() |
d21fdb7546 | ||
![]() |
be5af2796d | ||
![]() |
b1020c599f | ||
![]() |
b2199202ab | ||
![]() |
06105072f9 | ||
![]() |
b676ca7d96 | ||
![]() |
90f355cfaf | ||
![]() |
757ab3dc92 | ||
![]() |
e022c371ff | ||
![]() |
50a2cc9917 | ||
![]() |
5209b0172b | ||
![]() |
cfb55d9d77 | ||
![]() |
df2bbe129d | ||
![]() |
f7cae610a4 | ||
![]() |
bb698d682c | ||
![]() |
5bd6ff2285 | ||
![]() |
e6cf186c23 | ||
![]() |
e8b5508463 | ||
![]() |
d70b893852 | ||
![]() |
a579b4a519 | ||
![]() |
fffa2f097e | ||
![]() |
cabb2198b0 | ||
![]() |
3af2168b02 | ||
![]() |
f1337524f6 | ||
![]() |
348109a1f9 | ||
![]() |
0b0597be0c | ||
![]() |
690dbc4725 | ||
![]() |
cc9b1ea8a1 | ||
![]() |
ffebe82586 | ||
![]() |
4453e7fcdd | ||
![]() |
60d65d8137 | ||
![]() |
c8eefe749f | ||
![]() |
162421a59a | ||
![]() |
79048812e9 | ||
![]() |
70b242f190 | ||
![]() |
8db4bde15d | ||
![]() |
fbb8f0cbf5 | ||
![]() |
aafa12eb6e | ||
![]() |
76f285f19c | ||
![]() |
e1073de36f | ||
![]() |
ae48e49cba | ||
![]() |
4180db601d | ||
![]() |
423983e023 | ||
![]() |
90a1ea4281 | ||
![]() |
0ebd864db9 | ||
![]() |
02e85913da | ||
![]() |
1d5dc283fe | ||
![]() |
769f0a78d4 | ||
![]() |
4029f86c60 | ||
![]() |
f6d1fea9b7 | ||
![]() |
fa6524d377 | ||
![]() |
c56cb8adb6 | ||
![]() |
78638a15be | ||
![]() |
d4a51979bb | ||
![]() |
77555cd5c2 | ||
![]() |
7c48ba2f19 | ||
![]() |
4dbe0a0d0e | ||
![]() |
ca92a74a39 | ||
![]() |
c01d28a471 | ||
![]() |
98ff09931d | ||
![]() |
20ae89c2a1 | ||
![]() |
0baa23f553 | ||
![]() |
10fbb6a2a8 | ||
![]() |
6152b83405 | ||
![]() |
aed25ff87c | ||
![]() |
5f94238d23 | ||
![]() |
4d1d5d6b20 | ||
![]() |
5ba6a5fca1 | ||
![]() |
cba8d83b21 | ||
![]() |
aaeffe3846 | ||
![]() |
6881e8fbe3 | ||
![]() |
137e455f03 | ||
![]() |
ff3d0346eb | ||
![]() |
498da509db | ||
![]() |
d484c0e7ce | ||
![]() |
5c1c561d7d | ||
![]() |
9f0429ca6f | ||
![]() |
3485ad39d9 | ||
![]() |
d899923876 | ||
![]() |
4e04cd27c9 | ||
![]() |
7e4b428a3e | ||
![]() |
9f65a318da | ||
![]() |
2f6ed86c78 | ||
![]() |
6590915b15 | ||
![]() |
0c3fe54b0b | ||
![]() |
a93b675cb8 | ||
![]() |
0f2df23800 | ||
![]() |
e4e0a24416 | ||
![]() |
6aa5abf298 | ||
![]() |
bd672c4c4e | ||
![]() |
8d768bda31 | ||
![]() |
5110994f81 | ||
![]() |
83d17b5c0e | ||
![]() |
e6c174c33b | ||
![]() |
9497300a4a | ||
![]() |
acab62e345 | ||
![]() |
0e8feed2f2 | ||
![]() |
82716d8014 | ||
![]() |
af262e9a14 | ||
![]() |
d0d5af8c66 | ||
![]() |
86f9b1f6db | ||
![]() |
c4485d0af7 | ||
![]() |
7c5d0a0e00 | ||
![]() |
5f014a2056 | ||
![]() |
eaaacd71a8 | ||
![]() |
75cead9266 | ||
![]() |
d79c5824b8 | ||
![]() |
4381739b6d | ||
![]() |
8f2cdcef0e | ||
![]() |
990cc41e80 | ||
![]() |
9721acbf63 | ||
![]() |
be5cb1683b | ||
![]() |
a4e7e546ff | ||
![]() |
4259b4571c | ||
![]() |
2414a79578 | ||
![]() |
84623ac1f6 | ||
![]() |
d46343fb9c | ||
![]() |
5c788a6130 | ||
![]() |
281cf584ec | ||
![]() |
13c4581c86 | ||
![]() |
9c938b91b7 | ||
![]() |
f71f7a0b63 | ||
![]() |
b8c03a1905 | ||
![]() |
9515b40ca5 | ||
![]() |
df3d3db776 | ||
![]() |
e15df81351 | ||
![]() |
77ec423510 | ||
![]() |
c41df9ffbd | ||
![]() |
acad35c5bc | ||
![]() |
6b3fe68a17 | ||
![]() |
6ec07d744e | ||
![]() |
989fdb5895 | ||
![]() |
e60b91b5e2 | ||
![]() |
0be2567d97 | ||
![]() |
61770ad69e | ||
![]() |
85bd0feee0 | ||
![]() |
b249216db6 | ||
![]() |
2a2a80b0bf | ||
![]() |
7ddd5e9bc3 | ||
![]() |
6b4a4517ec | ||
![]() |
7c1c91ac43 | ||
![]() |
6b56768e9c | ||
![]() |
b2b7d02c01 | ||
![]() |
8bb097fd10 | ||
![]() |
a5f8f1f0f5 | ||
![]() |
424e2c76fa | ||
![]() |
41ae2bfb84 | ||
![]() |
4bdf9eda41 | ||
![]() |
ef1c7eec74 | ||
![]() |
87527fccc6 | ||
![]() |
f23234d0df | ||
![]() |
fdbc3a692f | ||
![]() |
571aaea3e0 | ||
![]() |
d0986297ca | ||
![]() |
188e679ea3 | ||
![]() |
4209a5699a | ||
![]() |
80ca7796ca | ||
![]() |
02f19bfbee | ||
![]() |
49d5591f48 | ||
![]() |
816bc45707 | ||
![]() |
73e9dce143 | ||
![]() |
9f0edde12b | ||
![]() |
cf55b67cee | ||
![]() |
9ca415c665 | ||
![]() |
af029e6c3f | ||
![]() |
6d514c97f8 | ||
![]() |
e812ac2c0b | ||
![]() |
480832318c | ||
![]() |
7a3e397949 | ||
![]() |
c95e450b8d | ||
![]() |
b63a34110e | ||
![]() |
0a2a71e83b | ||
![]() |
831bf71ce6 | ||
![]() |
172eda5471 | ||
![]() |
aa899f0693 | ||
![]() |
82602b51bf | ||
![]() |
3971a12f0e | ||
![]() |
70c4eb44fd | ||
![]() |
9ce54162c2 | ||
![]() |
92c6fc04a8 | ||
![]() |
46ebf9b7e5 | ||
![]() |
799ad0feff | ||
![]() |
1a56385cf9 | ||
![]() |
71827fe4e6 | ||
![]() |
8568f7a0fb | ||
![]() |
39c61327b5 | ||
![]() |
81d2130b06 | ||
![]() |
536f5ff091 | ||
![]() |
7e258bfe38 | ||
![]() |
66f0e6a8f2 | ||
![]() |
04306a544f | ||
![]() |
e4fe3bfe35 | ||
![]() |
b636bf4b2a | ||
![]() |
05c7796909 | ||
![]() |
e2b3463c05 | ||
![]() |
6c016cf443 | ||
![]() |
fc48168153 | ||
![]() |
096e6f2f80 | ||
![]() |
4a00bfcc55 | ||
![]() |
6ebc19fccb | ||
![]() |
0fa40c9ac3 |
@@ -3,7 +3,7 @@ version: '{branch}-{build}'
|
||||
# Do not build on tags (GitHub only)
|
||||
skip_tags: true
|
||||
|
||||
image: Visual Studio 2017
|
||||
image: Visual Studio 2022
|
||||
|
||||
branches:
|
||||
except: # blacklist
|
||||
@@ -13,8 +13,8 @@ environment:
|
||||
REPO_DIR: &REPO_DIR c:\qbittorrent
|
||||
CACHE_DIR: &CACHE_DIR c:\qbt_cache
|
||||
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries.7z
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version_64
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries_64.7z
|
||||
|
||||
# project directory
|
||||
clone_folder: *REPO_DIR
|
||||
@@ -37,23 +37,65 @@ install:
|
||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||
# Qt stay compressed in cache
|
||||
- 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul
|
||||
|
||||
before_build:
|
||||
# setup env
|
||||
- CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
|
||||
- SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom;
|
||||
- CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
- SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom
|
||||
# setup project
|
||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||
# workarounds
|
||||
- MKDIR "c:\qbt"
|
||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||
|
||||
build_script:
|
||||
- cd "%REPO_DIR%"
|
||||
# scan only as lupdate is prone to hang
|
||||
- lupdate -extensions c,cpp,h,hpp,ui .
|
||||
# lupdate chokes when it parses headers from system includes, especially Boost
|
||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
||||
- RENAME conf.pri conf.pri.temp
|
||||
- RENAME src\app\qtlocalpeer qtlocalpeer.temp
|
||||
- lupdate qbittorrent.pro
|
||||
- RENAME conf.pri.temp conf.pri
|
||||
- RENAME src\app\qtlocalpeer.temp qtlocalpeer
|
||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||
- jom -j2 -f Makefile.Release
|
||||
|
||||
after_build:
|
||||
- cd "%REPO_DIR%"
|
||||
- MKDIR upload
|
||||
- COPY dist\windows\qt.conf upload
|
||||
- COPY src\release\qbittorrent.exe upload
|
||||
- COPY src\release\qbittorrent.pdb upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Core.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Network.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Sql.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Svg.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Widgets.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5WinExtras.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Xml.dll upload
|
||||
- MKDIR upload\plugins\iconengines
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\iconengines\qsvgicon.dll upload\plugins\iconengines
|
||||
- MKDIR upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qico.dll upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qsvg.dll upload\plugins\imageformats
|
||||
- MKDIR upload\plugins\platforms
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\platforms\qwindows.dll upload\plugins\platforms
|
||||
- MKDIR upload\plugins\sqldrivers
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers\qsqlite.dll upload\plugins\sqldrivers
|
||||
- MKDIR upload\plugins\styles
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\styles\qwindowsvistastyle.dll upload\plugins\styles
|
||||
|
||||
test: off
|
||||
|
||||
artifacts:
|
||||
- path: upload
|
||||
name: qBittorrent-Appveyor_Windows-x64
|
||||
|
82
.clang-tidy
Normal file
82
.clang-tidy
Normal file
@@ -0,0 +1,82 @@
|
||||
Checks: >
|
||||
bugprone-*,
|
||||
cert-*,
|
||||
concurrency-*,
|
||||
cppcoreguidelines-*,
|
||||
misc-*,
|
||||
modernize-*,
|
||||
performance-*,
|
||||
portability-*,
|
||||
readability-*,
|
||||
-# not applicable at all,
|
||||
-bugprone-easily-swappable-parameters,
|
||||
-bugprone-implicit-widening-of-multiplication-result,
|
||||
-bugprone-macro-parentheses,
|
||||
-cppcoreguidelines-avoid-c-arrays,
|
||||
-cppcoreguidelines-avoid-magic-numbers,
|
||||
-cppcoreguidelines-avoid-non-const-global-variables,
|
||||
-cppcoreguidelines-macro-usage,
|
||||
-cppcoreguidelines-non-private-member-variables-in-classes,
|
||||
-cppcoreguidelines-owning-memory,
|
||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
||||
-cppcoreguidelines-pro-type-const-cast,
|
||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||
-cppcoreguidelines-pro-type-union-access,
|
||||
-cppcoreguidelines-pro-type-vararg,
|
||||
-cppcoreguidelines-special-member-functions,
|
||||
-cppcoreguidelines-virtual-class-destructor,
|
||||
-misc-no-recursion,
|
||||
-misc-non-private-member-variables-in-classes,
|
||||
-misc-unused-parameters,
|
||||
-modernize-avoid-c-arrays,
|
||||
-modernize-pass-by-value,
|
||||
-modernize-use-auto,
|
||||
-modernize-use-nodiscard,
|
||||
-modernize-use-trailing-return-type,
|
||||
-modernize-use-using,
|
||||
-readability-function-cognitive-complexity,
|
||||
-readability-function-size,
|
||||
-readability-identifier-length,
|
||||
-readability-implicit-bool-conversion,
|
||||
-readability-isolate-declaration,
|
||||
-readability-magic-numbers,
|
||||
-readability-named-parameter,
|
||||
-readability-redundant-access-specifiers,
|
||||
-readability-simplify-boolean-expr,
|
||||
-readability-uppercase-literal-suffix,
|
||||
-# only sometimes useful,
|
||||
-bugprone-narrowing-conversions,
|
||||
-cert-dcl58-cpp,
|
||||
-cert-err33-c,
|
||||
-cert-err58-cpp,
|
||||
-clang-analyzer-core.CallAndMessage,
|
||||
-clang-analyzer-cplusplus.NewDelete,
|
||||
-clang-analyzer-cplusplus.NewDeleteLeaks,
|
||||
-concurrency-mt-unsafe,
|
||||
-cppcoreguidelines-init-variables,
|
||||
-cppcoreguidelines-narrowing-conversions,
|
||||
-cppcoreguidelines-prefer-member-initializer,
|
||||
-cppcoreguidelines-pro-type-static-cast-downcast,
|
||||
-misc-definitions-in-headers,
|
||||
-modernize-concat-nested-namespaces,
|
||||
-modernize-loop-convert,
|
||||
-modernize-raw-string-literal,
|
||||
-modernize-unary-static-assert,
|
||||
-performance-no-automatic-move,
|
||||
-readability-convert-member-functions-to-static,
|
||||
-readability-else-after-return,
|
||||
-readability-redundant-declaration,
|
||||
-# obsoleted,
|
||||
-cert-dcl21-cpp
|
||||
|
||||
CheckOptions:
|
||||
- { key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors, value: true }
|
||||
- { key: modernize-use-override.IgnoreDestructors, value: true }
|
||||
- { key: performance-for-range-copy.AllowedTypes, value: "QJsonValue" }
|
||||
- { key: performance-for-range-copy.WarnOnAllAutoCopies, value: true }
|
||||
- { key: readability-braces-around-statements.ShortStatementLines, value: 3 }
|
||||
|
||||
HeaderFilterRegex: ".+/src/.*\\.h"
|
||||
WarningsAsErrors: "*"
|
10
.gitattributes
vendored
10
.gitattributes
vendored
@@ -1,7 +1,9 @@
|
||||
core.eol=lf
|
||||
* text eol=lf
|
||||
*.zip binary
|
||||
*.png binary
|
||||
*.ico binary
|
||||
*.qm binary
|
||||
*.icns binary
|
||||
*.ico binary
|
||||
*.png binary
|
||||
*.qm binary
|
||||
*.zip binary
|
||||
|
||||
test/testdata/crlf.txt text eol=crlf
|
||||
|
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
custom: "https://www.qbittorrent.org/donate.php"
|
20
.github/ISSUE_TEMPLATE.md
vendored
20
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,20 +0,0 @@
|
||||
**Please provide the following information**
|
||||
|
||||
### qBittorrent version and Operating System
|
||||
(type here)
|
||||
|
||||
### If on linux, libtorrent-rasterbar and Qt version
|
||||
(type here)
|
||||
|
||||
### What is the problem
|
||||
(type here)
|
||||
|
||||
### What is the expected behavior
|
||||
(type here)
|
||||
|
||||
### Steps to reproduce
|
||||
(type here)
|
||||
|
||||
### Extra info(if any)
|
||||
(type here)
|
||||
|
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
name: Bug Report
|
||||
description: File a bug report to help improve qBittorrent user experience.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
#### ADVISORY
|
||||
"We do not support any versions older than the current release series"
|
||||
|
||||
"We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc."
|
||||
|
||||
"Please post all details in **English**."
|
||||
|
||||
#### Prerequisites before submitting an issue!
|
||||
- Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information.
|
||||
- Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
||||
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
||||
- Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate.
|
||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
||||
- If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided.
|
||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: qBittorrent & operating system versions
|
||||
description: |
|
||||
Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website.
|
||||
|
||||
Example of preferred formatting:
|
||||
qBittorrent: 4.3.7 x64
|
||||
Operating system: Windows 10 Pro 21H1/2009 x64
|
||||
Qt: 5.15.2
|
||||
libtorrent-rasterbar: 1.2.14
|
||||
placeholder: |
|
||||
qBittorrent:
|
||||
Operating system:
|
||||
Qt:
|
||||
libtorrent-rasterbar:
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What is the problem?
|
||||
description: Please add the "crash report" (if encountered) or give a clear and concise description of problem.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Please provide reliable steps to reproduce the problem.
|
||||
placeholder: |
|
||||
1. First step
|
||||
2. Second step
|
||||
3. and so on...
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add screenshots etc. (Anything that will provide more context about the problem)
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Log(s) & preferences file(s)
|
||||
description: |
|
||||
Add these files: qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature).
|
||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
||||
#### Note: It's the user's responsibility to redact any sensitive information
|
||||
validations:
|
||||
required: false
|
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Wiki
|
||||
url: "https://github.com/qbittorrent/qBittorrent/wiki/"
|
||||
about: "Consult the wiki first (especially the FAQ), it might already contain the information you are looking for"
|
||||
|
||||
- name: Question
|
||||
url: "https://github.com/qbittorrent/qBittorrent/discussions"
|
||||
about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section"
|
||||
|
||||
- name: Question
|
||||
url: "http://forum.qbittorrent.org/"
|
||||
about: "Alternatively, ask on the official forum"
|
||||
|
||||
- name: Question
|
||||
url: "https://www.reddit.com/r/qBittorrent/"
|
||||
about: "Alternatively, use the subreddit"
|
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature or enhancement for qBittorrent.
|
||||
labels: ["Feature request"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
#### ADVISORY
|
||||
|
||||
"Please post all details in **English**."
|
||||
|
||||
#### Prerequisites before submitting a feature request!
|
||||
- Read the feature request section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good feature request with the required information.
|
||||
- Verify that the feature being requested is not available in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
||||
- (Optional but recommended) Verify that the feature being requested is not available in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
||||
- Search the issue tracker with the **[feature request filter](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+request%22)** for similar feature requests (including closed ones) to avoid posting a duplicate.
|
||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Suggestion
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Use case
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Extra info/examples/attachments
|
||||
description: Add screenshots etc. (Anything that will give us more context about what is being requested!)
|
||||
validations:
|
||||
required: false
|
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<!--
|
||||
MANDATORY Before submitting your work, make sure you have:
|
||||
1. Read https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md#opening-a-pull-request
|
||||
2. Delete this comment block
|
||||
-->
|
18
.github/SUPPORT.md
vendored
Normal file
18
.github/SUPPORT.md
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Support Resources
|
||||
|
||||
The issue tracker is only for bug reports/feature requests related to the project itself.
|
||||
|
||||
Please do not use the issue tracker for questions about general program usage,
|
||||
how BitTorrent (the protocol) works in general, etc.
|
||||
|
||||
For such questions, use one of the following community support resources:
|
||||
|
||||
* The [discussions section][discussions-url]
|
||||
|
||||
* The official forum [official forum][forum-url]
|
||||
|
||||
* The [qBittorrent subreddit][subreddit-url]
|
||||
|
||||
[discussions-url]: https://github.com/qbittorrent/qBittorrent/discussions
|
||||
[forum-url]: http://forum.qbittorrent.org/
|
||||
[subreddit-url]: https://www.reddit.com/r/qBittorrent/
|
244
.github/workflows/ci.yaml
vendored
244
.github/workflows/ci.yaml
vendored
@@ -1,244 +0,0 @@
|
||||
name: GitHub Actions CI
|
||||
|
||||
# Cache is used for all Windows and macOS dependencies (size approx. 1230 * 2 + 1850 = 4310 MiB)
|
||||
# Cache is not used for Ubuntu builds, because it already has all dependencies except
|
||||
# the appropriate libtorrent version, which only takes 3-5 minutes to build from source anyway
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
types: [edited, opened, reopened, synchronize]
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
# Qt: 5.15.0
|
||||
# libtorrent: RC_1_2 HEAD, 1.2.10
|
||||
VCPKG_COMMIT: 32eccc18191fbb57b159784a1724d2d00613ae82
|
||||
VCPKG_DEST_MACOS: /Users/runner/qbt_tools/vcpkg
|
||||
VCPKG_DEST_WIN: C:\qbt_tools\vcpkg
|
||||
UBUNTU_LIBTORRENT_VERSION: libtorrent-1.2.10
|
||||
|
||||
jobs:
|
||||
|
||||
ci_ubuntu:
|
||||
name: Ubuntu
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-20.04, ubuntu-18.04]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
- name: install all build dependencies except libtorrent from Ubuntu repos
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake git ninja-build pkg-config \
|
||||
libssl-dev libgeoip-dev zlib1g-dev \
|
||||
libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev \
|
||||
libqt5svg5-dev qtbase5-dev qttools5-dev
|
||||
|
||||
- name: install libtorrent from source
|
||||
run: |
|
||||
git clone https://github.com/arvidn/libtorrent && cd libtorrent
|
||||
git checkout ${{ env.UBUNTU_LIBTORRENT_VERSION }}
|
||||
cmake -B cmake-build-dir -G "Ninja" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-Ddeprecated-functions=OFF \
|
||||
--graphviz=cmake-build-dir/target_graph.dot
|
||||
cmake --build cmake-build-dir
|
||||
sudo cmake --install cmake-build-dir --prefix /usr/local
|
||||
|
||||
- name: build qBittorrent
|
||||
run: |
|
||||
cmake -B build -G "Ninja" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-Ubuntu_${{ matrix.os }}-${{ matrix.qbt_gui }}
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent
|
||||
build/qbittorrent-nox
|
||||
libtorrent/cmake-build-dir/compile_commands.json
|
||||
libtorrent/cmake-build-dir/target_graph.dot
|
||||
|
||||
ci_windows:
|
||||
name: Windows + vcpkg
|
||||
|
||||
runs-on: windows-2019
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement)
|
||||
- name: install additional required packages with chocolatey
|
||||
run: |
|
||||
choco install ninja
|
||||
|
||||
- name: setup vcpkg (cached, if possible)
|
||||
uses: lukka/run-vcpkg@v3.3
|
||||
with:
|
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_WIN }}
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
||||
setupOnly: true
|
||||
|
||||
# Tell vcpkg to only build Release variants of the dependencies
|
||||
- name: configure vcpkg triplet overlay for release builds only
|
||||
run: |
|
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory
|
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake `
|
||||
${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake
|
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
- name: install dependencies via vcpkg
|
||||
run: |
|
||||
$packages = `
|
||||
"boost-circular-buffer:x64-windows-static-release",
|
||||
"libtorrent:x64-windows-static-release",
|
||||
"qt5-base:x64-windows-static-release",
|
||||
"qt5-svg:x64-windows-static-release",
|
||||
"qt5-tools:x64-windows-static-release",
|
||||
"qt5-winextras:x64-windows-static-release"
|
||||
foreach($package in $packages)
|
||||
{
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install $package `
|
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
||||
--clean-after-build
|
||||
}
|
||||
|
||||
# NOTE: this is necessary to correctly find and use cl.exe with the Ninja generator for now
|
||||
- name: setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1.3.0
|
||||
|
||||
- name: build qBittorrent
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake -B build -G "Ninja" ^
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_WIN }}\scripts\buildsystems\vcpkg.cmake ^
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release ^
|
||||
-DVERBOSE_CONFIGURE=ON ^
|
||||
-DMSVC_RUNTIME_DYNAMIC=OFF ^
|
||||
--graphviz=build\target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-Windows_x64-static-release
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent.exe
|
||||
build/qbittorrent.pdb
|
||||
dist/windows/qt.conf
|
||||
|
||||
ci_macos:
|
||||
name: macOS + vcpkg
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
|
||||
runs-on: macos-10.15
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v2.3.2
|
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement)
|
||||
# - pkg-config is needed for some vcpkg installations
|
||||
- name: install additional required packages with homebrew
|
||||
shell: bash
|
||||
run: |
|
||||
brew install ninja pkg-config
|
||||
|
||||
- name: setup vcpkg (cached, if possible)
|
||||
uses: lukka/run-vcpkg@v3.3
|
||||
with:
|
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_MACOS }}
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
||||
setupOnly: true
|
||||
|
||||
- name: configure vcpkg triplet overlay for release builds only
|
||||
run: |
|
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory
|
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-osx.cmake `
|
||||
${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake
|
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
|
||||
# NOTE: Avoids a libtorrent ABI issue. See https://github.com/arvidn/libtorrent/issues/4965
|
||||
- name: force AppleClang to compile libtorrent with C++14
|
||||
run: |
|
||||
(Get-Content -path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake).Replace( `
|
||||
'${FEATURE_OPTIONS}', '${FEATURE_OPTIONS} -DCMAKE_CXX_STANDARD=14') `
|
||||
| Set-Content -Path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake
|
||||
|
||||
- name: install dependencies via vcpkg
|
||||
run: |
|
||||
$packages = `
|
||||
"boost-circular-buffer:x64-osx-release",
|
||||
"libtorrent:x64-osx-release",
|
||||
"qt5-base:x64-osx-release",
|
||||
"qt5-svg:x64-osx-release",
|
||||
"qt5-tools:x64-osx-release",
|
||||
"qt5-macextras:x64-osx-release"
|
||||
foreach($package in $packages)
|
||||
{
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg install $package `
|
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
||||
--clean-after-build
|
||||
}
|
||||
|
||||
- name: build qBittorrent
|
||||
shell: bash
|
||||
run: |
|
||||
cmake -B build -G "Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_MACOS }}/scripts/buildsystems/vcpkg.cmake \
|
||||
-DVCPKG_TARGET_TRIPLET=x64-osx-release \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build
|
||||
|
||||
- name: upload artifact as zip
|
||||
uses: actions/upload-artifact@v2.1.3
|
||||
with:
|
||||
name: qBittorrent-CI-macOS_x64-static-release_${{ matrix.qbt_gui }}
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/target_graph.dot
|
||||
build/qbittorrent.app
|
||||
build/qbittorrent-nox.app
|
25
.github/workflows/ci_file_health.yaml
vendored
Normal file
25
.github/workflows/ci_file_health.yaml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: CI - File health
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install tools
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "*"
|
||||
|
||||
- name: Check files
|
||||
uses: pre-commit/action@v3.0.0
|
166
.github/workflows/ci_macos.yaml
vendored
Normal file
166
.github/workflows/ci_macos.yaml
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
name: CI - macOS
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: macos-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.5.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.5.0"
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
openssl_root: /usr/local/opt/openssl@1.1
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
uses: Wandalen/wretry.action@v1
|
||||
env:
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
with:
|
||||
attempt_delay: 20000
|
||||
attempt_limit: 6
|
||||
command: |
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
openssl@1.1 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install boost
|
||||
run: |
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.bz2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: qtbase qtdeclarative qtsvg qttools
|
||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
# create .dmg
|
||||
appName="qbittorrent"
|
||||
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
||||
appName="qbittorrent-nox"
|
||||
fi
|
||||
# package
|
||||
pushd build
|
||||
PACKAGE_RETRY=0
|
||||
while [ "$PACKAGE_RETRY" -lt "3" ]; do
|
||||
macdeployqt "$appName.app" -dmg -no-strip
|
||||
if [ -f "$appName.dmg" ]; then
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
|
||||
echo "Retry $PACKAGE_RETRY..."
|
||||
done
|
||||
popd
|
||||
# prepare upload folder
|
||||
mkdir upload
|
||||
cp "build/$appName.dmg" upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
164
.github/workflows/ci_ubuntu.yaml
vendored
Normal file
164
.github/workflows/ci_ubuntu.yaml
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
name: CI - Ubuntu
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
security-events: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.2.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.2.0"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
||||
languages: cpp
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
with:
|
||||
category: ${{ github.base_ref || github.ref_name }}
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: 'AppImage: Prepare env'
|
||||
run: |
|
||||
sudo apt install libfuse2
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
|
||||
- name: 'AppImage: Prepare nox'
|
||||
if: matrix.qbt_gui == 'GUI=OFF'
|
||||
run: |
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/
|
||||
mkdir -p qbittorrent/usr/share/applications/
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
||||
|
||||
- name: 'AppImage: Package'
|
||||
run: |
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt
|
||||
rm qbittorrent/apprun-hooks/*
|
||||
cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh
|
||||
NO_APPSTREAM=1 \
|
||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
48
.github/workflows/ci_webui.yaml
vendored
Normal file
48
.github/workflows/ci_webui.yaml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: CI - WebUI
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
security-events: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src/webui/www
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
- name: Install tools
|
||||
run: npm install
|
||||
|
||||
- name: Lint code
|
||||
run: npm run lint
|
||||
|
||||
- name: Format code
|
||||
run: |
|
||||
npm run format
|
||||
git diff --exit-code
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/js.yaml
|
||||
languages: javascript
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
172
.github/workflows/ci_windows.yaml
vendored
Normal file
172
.github/workflows/ci_windows.yaml
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
name: CI - Windows
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||
vpkg_triplet_path: "${{ github.workspace }}/../triplets_overlay"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
choco install ninja
|
||||
|
||||
# use the preinstalled vcpkg from image
|
||||
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
||||
- name: Setup vcpkg
|
||||
uses: lukka/run-vcpkg@v10
|
||||
with:
|
||||
vcpkgDirectory: C:/vcpkg
|
||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake"
|
||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||
Add-Content `
|
||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vpkg_triplet_path }}"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vpkg_triplet_path }}" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
run: |
|
||||
aria2c `
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" `
|
||||
-d "${{ runner.temp }}" `
|
||||
-o "boost.7z"
|
||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.0"
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone `
|
||||
--branch v${{ matrix.libt_version }} `
|
||||
--depth 1 `
|
||||
--recurse-submodules `
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
$env:CXXFLAGS+=" /guard:cf"
|
||||
$env:LDFLAGS+=" /guard:cf"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
$env:CXXFLAGS+=" /WX"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DQT6=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
copy build/qbittorrent.exe upload
|
||||
copy build/qbittorrent.pdb upload
|
||||
copy dist/windows/qt.conf upload
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload
|
||||
mkdir upload/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
||||
mkdir upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
||||
mkdir upload/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
||||
mkdir upload/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||
mkdir upload/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
||||
mkdir upload/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/plugins/tls
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
79
.github/workflows/coverity-scan.yaml
vendored
Normal file
79
.github/workflows/coverity-scan.yaml
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
name: Coverity Scan
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
||||
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
coverity_scan:
|
||||
name: Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.0"
|
||||
archives: icu qtbase qtsvg qttools
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch "v2.0.9" \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
wget \
|
||||
-q \
|
||||
https://scan.coverity.com/download/linux64 \
|
||||
--post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir coverity_tool
|
||||
tar xzf coverity_tool.tgz --strip 1 -C coverity_tool
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DGUI=ON \
|
||||
-DQT6=ON \
|
||||
-DVERBOSE_CONFIGURE=ON
|
||||
export PATH="$(pwd)/coverity_tool/bin:$PATH"
|
||||
cov-build --dir cov-int cmake --build build
|
||||
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
tar -caf qbittorrent.xz cov-int
|
||||
curl \
|
||||
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
||||
--form email=sledgehammer999@qbittorrent.org \
|
||||
--form file=@qbittorrent.xz \
|
||||
--form version="$(git rev-parse --short HEAD)" \
|
||||
--form description="master" \
|
||||
https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent
|
13
.github/workflows/helper/appimage/export_vars.sh
vendored
Executable file
13
.github/workflows/helper/appimage/export_vars.sh
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
# this file is called from AppRun so 'root_dir' will point to where AppRun is
|
||||
root_dir="$(readlink -f "$(dirname "$0")")"
|
||||
|
||||
# Insert the default values because after the test we prepend our path
|
||||
# and it will create problems with DEs (eg KDE) that don't set the variable
|
||||
# and rely on the default paths
|
||||
if [ -z "${XDG_DATA_DIRS}" ]; then
|
||||
XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
||||
fi
|
||||
|
||||
export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}"
|
6
.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
vendored
Normal file
6
.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Name=qBittorrent
|
||||
Exec=qbittorrent-nox %U
|
||||
Icon=qbittorrent
|
||||
Type=Application
|
||||
Categories=Network
|
14
.github/workflows/helper/codeql/cpp.yaml
vendored
Normal file
14
.github/workflows/helper/codeql/cpp.yaml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
name: "CodeQL config for C++"
|
||||
|
||||
queries:
|
||||
- uses: security-and-quality
|
||||
|
||||
query-filters:
|
||||
- exclude:
|
||||
id: cpp/commented-out-code
|
||||
- exclude:
|
||||
id: cpp/include-non-header
|
||||
- exclude:
|
||||
id: cpp/loop-variable-changed
|
||||
- exclude:
|
||||
id: cpp/useless-expression
|
11
.github/workflows/helper/codeql/js.yaml
vendored
Normal file
11
.github/workflows/helper/codeql/js.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
name: "CodeQL config for Javascript"
|
||||
|
||||
paths-ignore:
|
||||
- "**/lib/*"
|
||||
|
||||
queries:
|
||||
- uses: security-and-quality
|
||||
|
||||
query-filters:
|
||||
- exclude:
|
||||
id: js/superfluous-trailing-arguments
|
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
Normal file
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# https://github.com/crate-ci/typos/blob/master/docs/reference.md
|
||||
# https://github.com/crate-ci/typos/blob/master/docs/design.md#identifiers-and-words
|
||||
|
||||
# try adding to `identifiers` list first, if doesn't work then `words` list
|
||||
|
||||
[default.extend-identifiers]
|
||||
additionals = "additionals"
|
||||
caf = "caf"
|
||||
curren = "curren"
|
||||
FO = "FO"
|
||||
ket = "ket"
|
||||
Q_INVOKABLE = "Q_INVOKABLE"
|
||||
switchs = "switchs"
|
||||
ths = "ths"
|
||||
|
||||
[default.extend-words]
|
||||
BA = "BA"
|
||||
helo = "helo"
|
68
.github/workflows/helper/pre-commit/check_translation_tag.py
vendored
Executable file
68
.github/workflows/helper/pre-commit/check_translation_tag.py
vendored
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# A pre-commit hook for detecting problematic <translation> tags
|
||||
# Copyright (C) 2021 Mike Tzou (Chocobo1)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# In addition, as a special exception, the copyright holders give permission to
|
||||
# link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
# modified versions of it that use the same license as the "OpenSSL" library),
|
||||
# and distribute the linked executables. You must obey the GNU General Public
|
||||
# License in all respects for all of the code used other than "OpenSSL". If you
|
||||
# modify file(s), you may extend this exception to your version of the file(s),
|
||||
# but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
from typing import Optional, Sequence
|
||||
import argparse
|
||||
import re
|
||||
|
||||
def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('filenames', nargs='*', help='Filenames to check')
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
error_msg = ""
|
||||
regex = re.compile(r"\s*</translation>")
|
||||
|
||||
for filename in args.filenames:
|
||||
line_counter = 1
|
||||
error_buffer = ""
|
||||
|
||||
with open(filename) as file:
|
||||
try:
|
||||
for line in file:
|
||||
if (match := regex.match(line)) is not None:
|
||||
error_buffer += str(f"Defect file: \"{filename}\"\n"
|
||||
f"Line: {line_counter}\n"
|
||||
f"Column span: {match.span()}\n"
|
||||
f"Part: \"{match.group()}\"\n\n")
|
||||
line_counter += 1
|
||||
|
||||
except UnicodeDecodeError as error:
|
||||
# not a text file, skip
|
||||
continue
|
||||
|
||||
error_msg += error_buffer
|
||||
|
||||
if len(error_msg) > 0:
|
||||
print(error_msg)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
25
.github/workflows/stale_bot.yaml
vendored
Normal file
25
.github/workflows/stale_bot.yaml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Stale bot
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark and close stale PRs
|
||||
uses: actions/stale@v8
|
||||
with:
|
||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||
days-before-stale: -1 # avoid marking issues
|
||||
days-before-pr-stale: 60
|
||||
days-before-close: -1 # avoid closing issues
|
||||
days-before-pr-close: 7
|
||||
exempt-all-pr-assignees: true # avoid stale for all PR with assignees
|
||||
exempt-all-pr-milestones: true # avoid stale for all PR with milestones
|
||||
operations-per-run: 200
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,9 +1,11 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
src/qbittorrent-nox
|
||||
src/release
|
||||
src/debug
|
||||
src/base/version.h
|
||||
CMakeLists.txt.user*
|
||||
qbittorrent.pro.user*
|
||||
conf.pri
|
||||
|
108
.pre-commit-config.yaml
Normal file
108
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,108 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-translation-tag
|
||||
name: Check newline characters in <translation> tag
|
||||
entry: .github/workflows/helper/pre-commit/check_translation_tag.py
|
||||
language: script
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/lang/.*
|
||||
)$
|
||||
types_or:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||
rev: v4.4.0
|
||||
hooks:
|
||||
- id: check-json
|
||||
name: Check JSON files
|
||||
|
||||
- id: check-yaml
|
||||
name: Check YAML files
|
||||
|
||||
- id: fix-byte-order-marker
|
||||
name: Check file encoding (UTF-8 without BOM)
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/base/unicodestrings.h
|
||||
)$
|
||||
|
||||
- id: mixed-line-ending
|
||||
name: Check line ending character (LF)
|
||||
args: ["--fix=lf"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
|
||||
- id: end-of-file-fixer
|
||||
name: Check trailing newlines
|
||||
exclude: |
|
||||
(?x)^(
|
||||
configure |
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
||||
|
||||
- id: trailing-whitespace
|
||||
name: Check trailing whitespaces
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.2.5
|
||||
hooks:
|
||||
- id: codespell
|
||||
name: Check spelling (codespell)
|
||||
args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.*\.desktop |
|
||||
.*\.qrc |
|
||||
build-aux/.* |
|
||||
Changelog |
|
||||
dist/windows/installer-translations/.* |
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/crate-ci/typos
|
||||
rev: v1.15.5
|
||||
hooks:
|
||||
- id: typos
|
||||
name: Check spelling (typos)
|
||||
args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.*\.asc |
|
||||
.*\.desktop |
|
||||
.*\.qrc |
|
||||
\.pre-commit-config\.yaml |
|
||||
build-aux/.* |
|
||||
Changelog |
|
||||
configure.* |
|
||||
dist/windows/installer-translations/.* |
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
177
.travis.yml
177
.travis.yml
@@ -1,177 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
dist: bionic
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- libt_branch=RC_1_2 gui=true build_system=qmake
|
||||
- libt_branch=RC_1_2 gui=false build_system=qmake
|
||||
- libt_branch=RC_1_2 gui=true build_system=cmake
|
||||
- libt_branch=RC_1_2 gui=false build_system=cmake
|
||||
global:
|
||||
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
||||
- coverity_branch: coverity_scan
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- env: libt_branch=RC_1_2 gui=true build_system=cmake
|
||||
- env: libt_branch=RC_1_2 gui=false build_system=cmake
|
||||
|
||||
branches:
|
||||
except:
|
||||
- search_encoding_windows
|
||||
- v2_9_x
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: change
|
||||
on_failure: change
|
||||
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
- $HOME/travis/deb
|
||||
- $HOME/travis/brew
|
||||
|
||||
addons:
|
||||
coverity_scan:
|
||||
project:
|
||||
name: "qbittorrent/qBittorrent"
|
||||
description: "Build submitted via Travis CI"
|
||||
build_command_prepend: "./bootstrap.sh && ./configure $qmake_conf"
|
||||
build_command: "make -j2"
|
||||
branch_pattern: $coverity_branch
|
||||
notification_email: sledgehammer999@qbittorrent.org
|
||||
apt:
|
||||
sources:
|
||||
# sources list: https://github.com/travis-ci/apt-source-safelist/blob/master/ubuntu.json
|
||||
- sourceline: 'ppa:qbittorrent-team/qbt-libtorrent-travisci'
|
||||
- sourceline: 'deb https://apt.kitware.com/ubuntu/ bionic main'
|
||||
key_url: 'https://apt.kitware.com/keys/kitware-archive-latest.asc'
|
||||
packages:
|
||||
# packages list: https://github.com/travis-ci/apt-package-safelist/blob/master/ubuntu-trusty
|
||||
- [autoconf, automake, cmake, colormake]
|
||||
- [libboost-dev, libboost-system-dev]
|
||||
- libssl-dev
|
||||
- [qtbase5-dev, libqt5svg5-dev, qttools5-dev]
|
||||
- zlib1g-dev
|
||||
|
||||
before_install:
|
||||
# only allow specific build for coverity scan, others will stop
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$libt_branch" = "RC_1_2" -a "$gui" = "true" -a "$build_system" = "qmake" ]; then exit ; fi
|
||||
|
||||
- shopt -s expand_aliases
|
||||
- alias make="colormake -j2" # Using nprocs/2 sometimes may fail (gcc is killed by system)
|
||||
- qbt_path="$HOME/qbt_install"
|
||||
- qmake_conf="$qmake_conf --prefix=$qbt_path"
|
||||
- cmake_conf="$cmake_conf -DCMAKE_INSTALL_PREFIX=$qbt_path"
|
||||
|
||||
# options for specific branches
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# setup virtual display for after_success target
|
||||
if [ "$gui" = "true" ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
|
||||
# CMake from Kitware is installed in /usr/bin
|
||||
# TravisCI installs its own cmake to another location which ovverides other installations
|
||||
# if they don't call the new binary directly
|
||||
alias cmake="/usr/bin/cmake"
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedefs"
|
||||
|
||||
openssl_root_path="/usr/local/opt/openssl"
|
||||
qmake_conf="$qmake_conf PKG_CONFIG_PATH=$openssl_root_path/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
cmake_conf="$cmake_conf -DOPENSSL_ROOT_DIR=$openssl_root_path"
|
||||
fi
|
||||
- |
|
||||
if [ "$gui" = "false" ]; then
|
||||
qmake_conf="$qmake_conf --disable-gui"
|
||||
cmake_conf="$cmake_conf -DGUI=OFF"
|
||||
fi
|
||||
|
||||
# print settings
|
||||
- echo $libt_branch
|
||||
- echo $gui
|
||||
- echo $build_system
|
||||
- echo $qmake_conf
|
||||
- echo $cmake_conf
|
||||
|
||||
install:
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
# dependencies
|
||||
PATH="/usr/local/opt/ccache/libexec:$PATH"
|
||||
|
||||
brew update > /dev/null
|
||||
brew upgrade cmake
|
||||
brew install ccache colormake boost openssl qt zlib
|
||||
brew link --force qt zlib
|
||||
|
||||
if [ "$build_system" = "cmake" ]; then
|
||||
sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs
|
||||
sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins
|
||||
fi
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||
export use_ccache=true
|
||||
ccache -M 512M
|
||||
ccache -V && ccache --show-stats && ccache --zero-stats
|
||||
fi
|
||||
- |
|
||||
if [ "$libt_branch" = "RC_1_2" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# Will install latest 1.2.x daily build from the PPA
|
||||
sudo apt-get -y install libtorrent-rasterbar-dev
|
||||
fi
|
||||
- |
|
||||
if [ "$libt_branch" = "RC_1_2" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
# building libtorrent manually should be faster than using the official bottle
|
||||
# because the bottle will also pull in a lot of updated dependencies and prolong the overall time
|
||||
pushd "$HOME"
|
||||
git clone --single-branch --branch RC_1_2 https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
git checkout tags/v1.2.10
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -Ddeprecated-functions=OFF -DOPENSSL_ROOT_DIR="$openssl_root_path" ./
|
||||
make
|
||||
sudo make install
|
||||
popd
|
||||
fi
|
||||
|
||||
script:
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan
|
||||
- |
|
||||
cd "$TRAVIS_BUILD_DIR"
|
||||
if [ "$build_system" = "qmake" ]; then
|
||||
# scan only as lupdate is prone to hang
|
||||
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||
./bootstrap.sh
|
||||
./configure $qmake_conf CXXFLAGS="$CXXFLAGS"
|
||||
else
|
||||
mkdir build && cd build
|
||||
cmake $cmake_conf ../
|
||||
fi
|
||||
- make
|
||||
- make install
|
||||
|
||||
after_success:
|
||||
- if [ "$gui" = "true" ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
if [ "$build_system" = "qmake" ]; then
|
||||
macdeployqt "$TRAVIS_BUILD_DIR/src/$qbt_exe.app"
|
||||
cd "$TRAVIS_BUILD_DIR/src/$qbt_exe.app/Contents/MacOS"
|
||||
else
|
||||
cd "$qbt_path/$qbt_exe.app/Contents/MacOS"
|
||||
fi
|
||||
fi
|
||||
- ./$qbt_exe --version
|
||||
|
||||
after_script:
|
||||
- if [ "$use_ccache" = true ]; then ccache --show-stats ; fi
|
35
.tx/config
35
.tx/config
@@ -1,27 +1,24 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[qbittorrent.qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
lang_map = pt: pt_PT
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_v46x]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[qbittorrent.qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_v46x]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
source_file = src/webui/www/translations/webui_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[qbittorrent.qbittorrent_webui]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
lang_map = pt: pt_PT
|
||||
source_file = src/webui/www/translations/webui_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
|
95
AUTHORS
95
AUTHORS
@@ -17,81 +17,78 @@ Contributors:
|
||||
* Nick Tiskov <daymansmail@gmail.com>
|
||||
|
||||
Code from other projects:
|
||||
* files src/qtsingleapplication/* src/lineedit/*
|
||||
* files src/app/qtlocalpeer/*
|
||||
copyright: Nokia Corporation
|
||||
license: LGPL
|
||||
license: mixed
|
||||
|
||||
* files src/ico.cpp src/ico.h
|
||||
copyright: Malte Starostik <malte@kde.org>
|
||||
license: LGPL
|
||||
* files src/gui/lineedit.*
|
||||
copyright: Trolltech ASA <info@trolltech.com>
|
||||
license: custom
|
||||
|
||||
* files src/search_engine/socks.py
|
||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||
license: BSD
|
||||
|
||||
* file src/stacktrace_win.h
|
||||
copyright: Quassel Project
|
||||
license: GPLv2/3
|
||||
* files src/webui/www/private/css/lib/vanillaSelectBox.css src/webui/www/private/scripts/lib/vanillaSelectBox.js
|
||||
copyright: Philippe Meyer <pmg.meyer@gmail.com>
|
||||
license: MIT
|
||||
|
||||
Images Authors:
|
||||
* files: src/icons/skin/qbittorrent-tray.svg (and related pngs)
|
||||
* files: src/icons/qbittorrent-tray.svg
|
||||
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
||||
license: GPLv2+
|
||||
|
||||
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
||||
copyright: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it.
|
||||
copyright: 'unknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlaid above it.
|
||||
license: GPLv3+
|
||||
|
||||
* files: src/icons/*.png
|
||||
copyright: Gnome Icon Theme
|
||||
license: GPLv2
|
||||
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||
|
||||
* files: src/oxygen/*.png
|
||||
copyright: Oxygen Icon Theme (KDE)
|
||||
license: LGPL
|
||||
url: http://www.oxygen-icons.org
|
||||
|
||||
* files: src/icons/flags/*.svg
|
||||
copyright: lipis/flag-icon-css
|
||||
copyright: lipis/flag-icons
|
||||
license: MIT
|
||||
url: https://github.com/lipis/flag-icon-css/
|
||||
url: https://github.com/lipis/flag-icons/
|
||||
|
||||
* files: src/icons/skin/*.png
|
||||
files: src/menuicons/YYxYY/*.png
|
||||
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||
license: GPLv2
|
||||
|
||||
* file: src/icons/tabs.gif
|
||||
* file: src/webui/www/private/images/tabs.gif
|
||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||
license: MIT
|
||||
|
||||
* file: src/icons/skin/qbittorrent_mono*
|
||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
modified by: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
license: LGPL
|
||||
|
||||
* file: src/search_engine/engines/btjunkie.png
|
||||
copyright: Downloaded from btjunkie.org
|
||||
* folder: src/icons/
|
||||
files: application-rss+xml.svg, application-x-mswinurl.svg, connected.svg, disconnected.svg, checked-completed.svg, configure.svg,
|
||||
edit-copy.svg, edit-rename.svg, folder-documents.svg, folder-new.svg, folder-remote.svg, go-bottom.svg, go-down.svg, go-top.svg,
|
||||
go-up.svg, hash.svg, inode-directory.svg, insert-link.svg, kt-magnet.svg, media-playback-pause.svg, media-playback-start.svg,
|
||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
||||
trackerless.svg, trackers.svg, view-categories.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
license: GPLv3+
|
||||
|
||||
* file: src/search_engine/engines/isohunt.png
|
||||
copyright: Downloaded from isohunt.com
|
||||
* folder: src/icons/
|
||||
files: application-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, filter-all.svg, firewalled.svg,
|
||||
help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, name.svg, network-server.svg,
|
||||
office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, preferences-system-network.svg, security-high.svg,
|
||||
security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, user-group-new.svg, view-preview.svg, view-refresh.svg,
|
||||
view-statistics.svg, wallet-open.svg, webuiapplication-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg,
|
||||
filter-all.svg, firewalled.svg, help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg,
|
||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
license: MIT
|
||||
|
||||
* file: src/search_engine/engines/mininova.png
|
||||
copyright: Downloaded from mininova.org
|
||||
* folder: src/icons/
|
||||
files: force-recheck.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
license: CC BY 4.0 License
|
||||
|
||||
* file: src/search_engine/engines/piratebay.png
|
||||
copyright: Downloaded from thepiratebay.org
|
||||
|
||||
* file: src/search_engine/engines/torrentreactor.png
|
||||
copyright: Downloaded from torrentreactor.net
|
||||
|
||||
* file: src/icons/oxygen/checked.png
|
||||
copyright: Victor Buinsky <allok.victor@gmail.com>
|
||||
|
||||
* file: src/icons/skin/ratio.png
|
||||
copyright: Fatcow Web Hosting
|
||||
license: Creative Commons Attribution 3.0 License
|
||||
url: http://www.fatcow.com/free-icons
|
||||
* folder: src/icons/
|
||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
license: BSD 2-Clause License
|
||||
|
||||
Translations authors:
|
||||
* files: src/lang/*.ts
|
||||
@@ -119,7 +116,7 @@ Translations authors:
|
||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||
- Hungarian: Majoros Péter
|
||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||
|
@@ -1,51 +1,70 @@
|
||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
project(qBittorrent
|
||||
VERSION 4.3.0.0
|
||||
DESCRIPTION "The qBittorrent BitTorrent client"
|
||||
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
# use CONFIG mode first in find_package
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
# version requirements
|
||||
set(requiredBoostVersion 1.40)
|
||||
set(requiredQtVersion 5.9.0)
|
||||
set(requiredOpenSSLVersion 1.0)
|
||||
set(requiredLibtorrentVersion 1.2.0)
|
||||
set(requiredZlibVersion 1.2.5.2)
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.71)
|
||||
set(minQt5Version 5.15.2)
|
||||
set(minQt6Version 6.2)
|
||||
set(minOpenSSLVersion 1.1.1)
|
||||
set(minLibtorrent1Version 1.2.19)
|
||||
set(minLibtorrentVersion 2.0.9)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
# features (some are platform-specific)
|
||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||
include(GNUInstallDirs)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
include(FeatureSummary)
|
||||
include(FeatureOptionsSetup)
|
||||
feature_option(STACKTRACE "Enable stacktraces" ON)
|
||||
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enables built-in HTTP server for headless use" ON)
|
||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
||||
feature_option(QT6 "Build with Qt 6 instead of Qt 5" OFF)
|
||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
||||
feature_option(TESTING "Build internal testing suite" OFF)
|
||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
feature_option_dependent(DBUS
|
||||
"Enables support for notifications and power-management features on Linux via D-Bus"
|
||||
"Enable support for notifications and power-management features via D-Bus"
|
||||
ON "GUI" OFF
|
||||
)
|
||||
feature_option_dependent(SYSTEMD
|
||||
"Install systemd service file to a directory manually overridable with Systemd_SERVICES_INSTALL_DIR"
|
||||
OFF "NOT GUI" OFF
|
||||
)
|
||||
elseif (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
set(QBT_VER_STATUS "alpha1" CACHE STRING "Project status version. Should be empty for release builds.")
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
feature_option_dependent(SYSTEMD
|
||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
||||
OFF "NOT GUI" OFF
|
||||
)
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
if (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
if (VERBOSE_CONFIGURE)
|
||||
feature_summary(WHAT ALL)
|
||||
else()
|
||||
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
||||
endif()
|
||||
|
||||
# go check the packages
|
||||
include(CheckPackages)
|
||||
# configure for specific platform
|
||||
include(CommonConfig)
|
||||
|
||||
# Generate version header
|
||||
configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
|
||||
if (TESTING)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,22 +6,14 @@ Read the respective section to find out more.
|
||||
### Table Of Contents
|
||||
|
||||
* **[Bug reporting etiquette](#bug-reporting-etiquette)**
|
||||
|
||||
|
||||
* **[Submitting an issue/bug report](#submitting-an-issuebug-report)**
|
||||
* [What is an actual bug report?](#what-is-an-actual-bug-report)
|
||||
* [Before submitting a bug report](#before-submitting-a-bug-report)
|
||||
* [Steps to ensure a good bug report](#steps-to-ensure-a-good-bug-report)
|
||||
|
||||
|
||||
* **[Suggesting enhancements/feature requests](#suggesting-enhancementsfeature-requests)**
|
||||
* [Before submitting an enhancement/feature request](#before-submitting-an-enhancementfeature-request)
|
||||
* [Steps to ensure a good enhancement/feature suggestion](#steps-to-ensure-a-good-enhancementfeature-suggestion)
|
||||
|
||||
|
||||
* **[Opening a pull request](#opening-a-pull-request)**
|
||||
* [Must read](#must-read)
|
||||
* [Good to know](#good-to-know)
|
||||
|
||||
# Bug reporting etiquette
|
||||
|
||||
@@ -31,7 +23,7 @@ Read the respective section to find out more.
|
||||
|
||||
* **Be patient.** The development team is small and resource limited. Developers and contributors take from their free time to analyze the problem and fix the issue. :clock3:
|
||||
|
||||
* Harsh words or threats won't help your situation. What's worse, your complain will (very likely) be **ignored.** :fearful:
|
||||
* Harsh words or threats won't help your situation. Your complaint will (very likely) be **ignored.** :fearful:
|
||||
|
||||
# Submitting an issue/bug report
|
||||
|
||||
@@ -47,7 +39,7 @@ Developers and contributors are not supposed to deal with issues for which littl
|
||||
|
||||
Positive contributions are those which are reported with efforts to find the actual cause of an issue, or at the very least efforts were made to narrow it as much as possible.
|
||||
|
||||
Requiring people to investigate as much as possible before opening an issue will more than likely avoid burdening the project with invalid issues or issues unrelated to qBittorrent.
|
||||
Requiring people to investigate as much as possible before opening an issue avoids burdening the project with invalid issues or issues unrelated to qBittorrent.
|
||||
|
||||
The following are _not_ bug reports. **Check the [wiki][wiki-url], [forum][forum-url] or other places for help and support for issues like these**:
|
||||
|
||||
@@ -194,28 +186,26 @@ Following these guidelines helps maintainers and the community understand your s
|
||||
|
||||
# Opening a pull request
|
||||
|
||||
### Must read
|
||||
* Read our [**coding guidelines**][coding-guidelines-url]. There are some scripts to help you: [uncrustify script][uncrustify-script-url], [astyle script][astyle-script-url], [(related thread)][coding-guidelines-thread-url].
|
||||
* Keep the title **short** and provide a **clear** description about what your pull request does.
|
||||
* Provide **screenshots** for UI related changes.
|
||||
* Keep your git commit history **clean** and **precise.** Refer to the section about "Git commit messages" in the [**coding guidelines**][coding-guidelines-url].
|
||||
* If your commit fixes a reported issue (for example #4134), add the following message to the commit `Closes #4134.`. Example [here][commit-message-fix-issue-example-url].
|
||||
* Consult [coding guidelines][coding-guidelines-url] first. If you are working on translation/i18n, read ["How to translate qBittorrent"][how-to-translate-url].
|
||||
* Keep your git commit history clean.
|
||||
* Refer to the section about ["Git commit messages"][coding-guidelines-git-commit-message-url] in the coding guidelines.
|
||||
* When merge conflicts arise, do `git rebase <target_branch_name>` and fix the conflicts, don't do `git pull`. Here is a good explanation: [merging-vs-rebasing][merging-vs-rebasing-url].
|
||||
* Keep pull request title concise and provide motivation and "what it does" in the pull request description area. Make it easy to read and understand.
|
||||
* Provide screenshots for UI related changes.
|
||||
* If your commit addresses a reported issue (for example issue #8454), append the following text to the commit body `Closes #8454.`. Example [commit][commit-message-fix-issue-example-url].
|
||||
* Search [pull request list][pull-request-list-url] first. Others might have already implemented your idea (or got rejected already).
|
||||
|
||||
### Good to know
|
||||
* **Search** pull request history! Others might have already implemented your idea and it is waiting to be merged (or got rejected already). Save your precious time by doing a search first.
|
||||
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. Here is a good explanation: [link][merging-vs-rebasing-url].
|
||||
|
||||
[astyle-script-url]: https://gist.github.com/Chocobo1/539cee860d1eef0acfa6
|
||||
[attachments-howto-url]: https://help.github.com/articles/file-attachments-on-issues-and-pull-requests
|
||||
[builds-url]: https://sourceforge.net/projects/qbittorrent/files/
|
||||
[coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md
|
||||
[coding-guidelines-thread-url]: https://github.com/qbittorrent/qBittorrent/issues/2192
|
||||
[coding-guidelines-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message
|
||||
[commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50
|
||||
[forum-url]: http://forum.qbittorrent.org/
|
||||
[forum-url]: https://forum.qbittorrent.org/
|
||||
[howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
||||
[how-to-translate-url]: https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent
|
||||
[merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
|
||||
[pull-request-list-url]: https://github.com/qbittorrent/qBittorrent/pulls
|
||||
[python-url]: https://www.python.org/
|
||||
[releases-url]: https://github.com/qbittorrent/qBittorrent/releases
|
||||
[search-plugins-url]: https://github.com/qbittorrent/search-plugins
|
||||
[uncrustify-script-url]: https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/uncrustify.cfg
|
||||
[wiki-url]: https://github.com/qbittorrent/qBittorrent/wiki
|
||||
[builds-url]: https://sourceforge.net/projects/qbittorrent/files/
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user