Compare commits

..

2276 Commits

Author SHA1 Message Date
9644e6a53f 2025-11-18 nightly release (39f5e0e52c2879c7c1a474b1880681eb65e41d0e) 2025-11-18 07:36:11 +00:00
6cd70428f1 2025-11-17 nightly release (43223547705be04e5e4478463cc6c70f5d4f118d) 2025-11-17 07:36:02 +00:00
8284ef4a10 2025-11-16 nightly release (0ec53beaeb5d6a40d57b47a753f86a0a3961c696) 2025-11-16 07:34:23 +00:00
a7734e6eaa 2025-11-15 nightly release (de0d69b2c4e33ddbe2bd4f162dd7e3d0e10e75b6) 2025-11-15 07:34:21 +00:00
f678a34183 2025-11-14 nightly release (45b2c3d312f38a3be5230e1ad370da39b754aaf6) 2025-11-14 07:35:28 +00:00
43d0e44e24 2025-11-13 nightly release (9b68682df2a553bebd1cc53fa35ba68027ce0597) 2025-11-13 07:35:55 +00:00
7bb0466bb4 2025-11-12 nightly release (bc882f8284bd8c68bcebcc0e2ab31c886bfb0daa) 2025-11-12 07:35:58 +00:00
33d3cfe63c 2025-11-11 nightly release (3e4faca13034f8468e42dda7000289c840a62ded) 2025-11-11 07:36:15 +00:00
834fe2fc02 2025-11-10 nightly release (fe6615e3977c395f12ebd139da0969fd73c659ec) 2025-11-10 07:35:49 +00:00
bf06d4befb 2025-11-09 nightly release (06aa3ef3d3cbd6bc680c357d09f4b4a6afaa2bed) 2025-11-09 07:34:34 +00:00
e2468fb515 2025-11-08 nightly release (29d6bb79e1b7d08f1a6988f4f8f94c8059978d8b) 2025-11-08 07:34:09 +00:00
4ed8845f65 2025-11-07 nightly release (0e512ee9f05347de25e8d359c3d69f2f5d371398) 2025-11-07 07:35:12 +00:00
48ffba6406 2025-11-06 nightly release (943227f57bcd638ab288331442748769f907d8c1) 2025-11-06 07:35:29 +00:00
4f3f6d69f5 2025-11-05 nightly release (397d9fe2aea0dc60ea19ffddf6ac750420362867) 2025-11-05 07:35:38 +00:00
72df1db744 2025-11-04 nightly release (a0a8eca01a88b01f517559fd3cf565a58c134805) 2025-11-04 07:35:52 +00:00
95ab09cb54 2025-11-03 nightly release (fee1ac927d66fce67f862311292dcc325b8def44) 2025-11-03 07:35:48 +00:00
5338df3f42 2025-11-02 nightly release (a663eb9c80e92190832b3dd616f138f938f51525) 2025-11-02 07:34:12 +00:00
f291f529fd 2025-11-01 nightly release (60333de85dec845d6a0e651764c16a730a27828d) 2025-11-01 07:34:06 +00:00
ba6c0966be 2025-10-31 nightly release (47f00243106918eec3ef9119272977fdf2864ad8) 2025-10-31 07:34:54 +00:00
2de961f36c 2025-10-30 nightly release (0918bf321c2cfaebb91c5f9e5f0ebe462962328e) 2025-10-30 07:34:55 +00:00
7b622c7d84 2025-10-29 nightly release (bea89d60603ca33f1903e57db5c734a67535c26d) 2025-10-29 07:35:54 +00:00
14475f1f3a 2025-10-28 nightly release (2ce894bb1d3e9698306b87091c900a72acac75ea) 2025-10-28 07:35:39 +00:00
af55f68d25 2025-10-27 nightly release (000f49551bfda0683d395e1fe67f53cfb785868f) 2025-10-27 07:36:03 +00:00
fc9dd3487d 2025-10-26 nightly release (cdb60e44eb528bf02c6bb2d7e384298283e755ca) 2025-10-26 07:34:09 +00:00
af360b15da 2025-10-25 nightly release (b31bad1b8f1331bf43d47f46602cf6141db56844) 2025-10-25 07:34:15 +00:00
e5cabbf5f8 2025-10-24 nightly release (c12293dcbea3d9e9c5fade8e4c838f8a57c300e7) 2025-10-24 07:34:52 +00:00
958cc1742e 2025-10-23 nightly release (fb277a59167031883cc42249ed8fe869f39bd5ed) 2025-10-23 07:35:16 +00:00
72d577ba18 2025-10-22 nightly release (5211f4c1088f564cb15146e41bc592b7cf1824af) 2025-10-22 07:35:41 +00:00
94549de0a5 2025-10-21 nightly release (0e083942ccd98c5a2d9386f0b2c4bbc901be40ef) 2025-10-21 07:35:38 +00:00
427bf59f34 2025-10-20 nightly release (61d9a5180e44e43c2fe0394916688d756ea99da2) 2025-10-20 07:35:28 +00:00
f2b29280ef 2025-10-19 nightly release (c4f6619330bdac5bf4addb9070ecb42994202e1f) 2025-10-19 07:34:02 +00:00
92ae61a1ed 2025-10-18 nightly release (f510d0dbc0108a90c4b0275eb761bf189ff7a7d2) 2025-10-18 18:52:37 +00:00
411066f7cf 2025-10-18 nightly release (fe80f03726a7a50439be063327b67c7fba6279b2) 2025-10-18 07:34:05 +00:00
79a37055e7 2025-10-17 nightly release (556fc09a9f67f24ca5591ec049c5d0c347c5f62a) 2025-10-17 07:34:42 +00:00
0dfcb1a118 2025-10-16 nightly release (003dd130730993eedc302f769b7b653016ab6450) 2025-10-16 07:35:10 +00:00
0fec8d0539 2025-10-15 nightly release (e6f766c7d750d40603eee3f66c5915bac606b3ea) 2025-10-15 07:35:42 +00:00
89cf1adaf0 2025-10-14 nightly release (3a110c9bb209ccd690986d1593b44d261c1174a5) 2025-10-14 07:35:19 +00:00
40c3219a9e 2025-10-13 nightly release (3a110c9bb209ccd690986d1593b44d261c1174a5) 2025-10-13 07:35:26 +00:00
8d7cc00898 2025-10-12 nightly release (4f8a986b8feb4a171b8a68a2a3664275ec54a75f) 2025-10-12 07:33:57 +00:00
41aa60b096 2025-10-11 nightly release (12d7cc5cd3da00094c5801aff4c77550e2a59528) 2025-10-11 07:34:06 +00:00
a96cef0b4d 2025-10-10 nightly release (a57a14868dcfd9dabf9bd19b6b11f31967c80c87) 2025-10-10 07:34:21 +00:00
7d06d03434 2025-10-09 nightly release (7a1ead755f2e2abe8be49a7a0fb88b6b13973147) 2025-10-09 07:34:26 +00:00
f1efb72466 2025-10-08 nightly release (608792153f42254d2d2b5a87d524807a0c2724f1) 2025-10-08 07:34:27 +00:00
8fab07c5ca 2025-10-07 nightly release (bcd96cc6ff798281e66aabef6ce72542fdc97c7a) 2025-10-07 07:34:18 +00:00
39cdb9bef4 2025-10-06 nightly release (9fff8155c362da777e7ce31b85fb2dc7cfced2d5) 2025-10-06 07:34:40 +00:00
b8d25c1f42 2025-10-05 nightly release (cf0a00d4f38775e5a82a166e367f40383c606963) 2025-10-05 07:34:00 +00:00
cf9d09490c 2025-10-04 nightly release (9d1ab4f4bb508a72c7f549f0b5219c4601944ba1) 2025-10-04 07:33:56 +00:00
d1da98fe75 2025-10-03 nightly release (d1cbb74fb16406488a174832e1b58b7c242f418d) 2025-10-03 07:34:23 +00:00
d3d23546a3 2025-10-02 nightly release (144378615a5a2b347e39c6376cba7d75f7a82926) 2025-10-02 07:34:04 +00:00
8d091f3460 2025-10-01 nightly release (e30f01b5b569c0a6043774ee096d9d0bca231c93) 2025-10-01 07:35:14 +00:00
23acabb207 2025-09-30 nightly release (0b0ed6fd335dddccaf1b7212a785808c38cf98a1) 2025-09-30 07:35:13 +00:00
e86844ce4c 2025-09-29 nightly release (352197c50886c5a3b5b5e7ab86eba52548354d5c) 2025-09-29 07:35:06 +00:00
a5b10a3c27 2025-09-28 nightly release (3059b080128a0d13760f5e3ed9bf226c8c1a3ba5) 2025-09-28 07:33:49 +00:00
48f35f8940 2025-09-27 nightly release (9dac6437da12ef636139b7ae515c10617ffed528) 2025-09-27 07:33:53 +00:00
f64285495c 2025-09-26 nightly release (67cc0e0ac9fa009cbe6bd4d7852b39a579e92282) 2025-09-26 07:34:55 +00:00
337ce5ab49 2025-09-25 nightly release (ad2f7315ca66b42497047bb7951f696b50f1e81b) 2025-09-25 07:34:40 +00:00
5e8f2b0e21 2025-09-24 nightly release (d746b987d8239595438b9dbd0f96ec6a4fed4653) 2025-09-24 07:34:48 +00:00
6ba37938af 2025-09-23 nightly release (8f30a8dc47d61b0110f5797cad97040b1a58e6a0) 2025-09-23 07:35:01 +00:00
3ac0051187 2025-09-22 nightly release (0b59492853b7347ead6b71f52c76e7ac2836ea27) 2025-09-22 07:35:17 +00:00
e77b99230a 2025-09-21 nightly release (97eb7a281dab3d0454d72da1c72d4993a0b59a43) 2025-09-21 07:33:53 +00:00
d60c6e4a06 2025-09-20 nightly release (a31acf32bd18e115df910002aef42baf7a9b4a33) 2025-09-20 07:34:03 +00:00
2f25275aa3 2025-09-19 nightly release (04842ac2b013daf3029145d785b3805dfd3129a3) 2025-09-19 07:34:05 +00:00
a701395da4 2025-09-18 nightly release (13304401dfaab91a5f6311a09e77ed71914d6639) 2025-09-18 07:34:29 +00:00
5281945d57 2025-09-17 nightly release (65845d72917fc27cd89a88b067e7c8f44bc0c987) 2025-09-17 07:34:37 +00:00
f08d26d177 2025-09-16 nightly release (e900a274e5c7fd7f0c76a991ad182c635f807c83) 2025-09-16 07:34:24 +00:00
53a2908a10 2025-09-15 nightly release (76e5df3866f11712a3e6306bb0e5055c223c78f3) 2025-09-15 07:34:47 +00:00
8b8cd78b2b 2025-09-14 nightly release (f01bf0f64b2fb9a761d7a147f17a862561bc5baf) 2025-09-14 07:33:56 +00:00
27a4e36cf2 2025-09-13 nightly release (595e13feb71c10621271c30cb402906b6cc83e13) 2025-09-13 07:33:51 +00:00
616c50a126 2025-09-12 nightly release (ccb450b190a9c24fc53ca8f120bd1cdf36c312c2) 2025-09-12 07:33:59 +00:00
79440d8bcc 2025-09-11 nightly release (f654cff5663c1972172f150f529a587fc3c0d2c1) 2025-09-11 07:34:23 +00:00
75e7f49f9c 2025-09-10 nightly release (484c4093a87a3e6767e55ed553f95db8fc137442) 2025-09-10 07:34:16 +00:00
1ff17af8ec 2025-09-09 nightly release (a965f0979307d2d3894f00420e6d901c50f89d7a) 2025-09-09 07:34:30 +00:00
6d74d91e42 2025-09-08 nightly release (5babb4d5c04b1ff7ed5f96f7aea1898cd4faef5a) 2025-09-08 07:34:34 +00:00
d110794e53 2025-09-07 nightly release (4d4abec80f03cd8fdefe1d9cb3a60d3690cd777e) 2025-09-07 07:33:56 +00:00
b35c908b70 2025-09-06 nightly release (4d4abec80f03cd8fdefe1d9cb3a60d3690cd777e) 2025-09-06 07:34:07 +00:00
e018da741d 2025-09-05 nightly release (b67c41039835bd9b20b83cd6233e86baaa5f5dde) 2025-09-05 07:34:20 +00:00
6f6ce1a7ab 2025-09-04 nightly release (d636c181f9140a7b59be10b36eae23039fc2bb72) 2025-09-04 07:33:59 +00:00
aa0545ff8e 2025-09-03 nightly release (6737e2c996990024187ba620d2764f3b6f6add2c) 2025-09-03 07:34:25 +00:00
a0e3ca21ab 2025-09-02 nightly release (6737e2c996990024187ba620d2764f3b6f6add2c) 2025-09-02 07:35:23 +00:00
4ee895974d 2025-09-01 nightly release (9a665ca3c472384e9d722bddba79e5a7680f1abd) 2025-09-01 07:36:00 +00:00
2afb96c3e1 2025-08-31 nightly release (ad7b748686610e317e5c0cbbd523b7a6e3b8b51f) 2025-08-31 07:33:52 +00:00
5661512350 2025-08-30 nightly release (f6368e934e6bef84211f7db82c22e3623038e43f) 2025-08-30 07:33:55 +00:00
8296ac99be 2025-08-29 nightly release (d153af713e8bf825534b55d29fd7cfef6a3a5071) 2025-08-29 07:34:44 +00:00
e74f214c33 2025-08-28 nightly release (e9d34b2438d65d6d16109e2416f3698de20f85c2) 2025-08-28 07:34:51 +00:00
c6897fdd85 2025-08-27 nightly release (cd87f3029582cedb3b88747a3bd7d200b05c1138) 2025-08-27 07:34:42 +00:00
95dc3256f1 2025-08-26 nightly release (e34b6a01039df5d8940acdccd8d8989f3cd827aa) 2025-08-26 07:35:53 +00:00
dcc2abce2d 2025-08-25 nightly release (726dce3c944cbda16e54d3b15cdb4b6ced05af72) 2025-08-25 07:35:46 +00:00
7ad0c2909e 2025-08-24 nightly release (3e5b021f217a42ae55dc690083f67a28126808ed) 2025-08-24 07:34:16 +00:00
f853a0f43e 2025-08-23 nightly release (c2390087c34c964ef648addf43efb8c6a34e30c2) 2025-08-23 07:34:17 +00:00
d9a80aff4c 2025-08-22 nightly release (cc2b65a91ae7773d4ecf9a600dda48fc3e69aa8f) 2025-08-22 07:34:51 +00:00
22b0a727eb 2025-08-21 nightly release (39862acb2e320783245d2a03acfd1b14cae28038) 2025-08-21 07:36:29 +00:00
7956a1d1d0 2025-08-20 nightly release (2b62ef74208792c7c4bf923f872e54b5f384efc8) 2025-08-20 07:35:54 +00:00
0ce7e98ca9 2025-08-19 nightly release (58f9a3dd6391397e439c5f5075837e8f983735aa) 2025-08-19 07:35:31 +00:00
1fb85cc366 2025-08-18 nightly release (3ced4f1e6cb37d3470dcc540892dee08a6019cf8) 2025-08-18 07:37:41 +00:00
194cdb4509 2025-08-17 nightly release (8f434545c2e48c858d8b0d06db8f9642d6a87ad0) 2025-08-17 07:34:55 +00:00
32d1befbfe 2025-08-16 nightly release (b74c7cd335180a8ebcd5284f2909a73c9a87aa33) 2025-08-16 07:34:40 +00:00
0b5972dede 2025-08-15 nightly release (5b9ad951f8195865e13a44fe09a78bf95973f2fa) 2025-08-15 07:36:16 +00:00
a82d678c97 2025-08-14 nightly release (3faee0a6318afcbbbb48687009a459214910d820) 2025-08-14 07:36:46 +00:00
b81cea13b4 2025-08-13 nightly release (a354fa91e26b376d96385a2206c5ff5b42aa4600) 2025-08-13 07:37:16 +00:00
916ef1939b 2025-08-12 nightly release (bfc873d02ec413344717493e4175a902921359fd) 2025-08-12 07:36:51 +00:00
113daf02cb 2025-08-11 nightly release (e7152ff8a6a929a0db7f3f4a72a5b6d471769cd3) 2025-08-11 07:39:07 +00:00
dd1b1d0d2b 2025-08-10 nightly release (01f66d08d93365015f4af005a252f439c4d4013a) 2025-08-10 07:35:25 +00:00
86d99efdc4 2025-08-09 nightly release (5ed4f9177907fe403ec4c4499d0d0e9be6b68fcf) 2025-08-09 07:35:19 +00:00
d9796cf6b9 2025-08-08 nightly release (3fcd79e023da7156ac584992ebab29205d3b7881) 2025-08-08 07:39:27 +00:00
f9acb53318 2025-08-07 nightly release (2507ae63f293354170695fd20a5c5ce5f64e323d) 2025-08-07 07:39:26 +00:00
95ba6271fc 2025-08-06 nightly release (74a754aae98aabc2aca67e5edb41cc684fae9a82) 2025-08-06 07:39:45 +00:00
77bc90913a 2025-08-05 nightly release (efc4b460b3789d97b87d775f86c5f4ee8dfb5629) 2025-08-05 07:39:49 +00:00
af79a3aadc 2025-08-04 nightly release (978e3a91421e82fc95b34e75efd6324e3e89e755) 2025-08-04 07:41:32 +00:00
6f9445d860 2025-08-03 nightly release (38895c0ac26e4a18a6be0f88c3ec0c96f8077852) 2025-08-03 07:36:11 +00:00
8d0646ae44 2025-08-02 nightly release (e57a92734da09b96add98bc06693b62122c5df72) 2025-08-02 07:35:54 +00:00
b4f42c92a0 2025-08-01 nightly release (1ebcba4e1b1a5f20324cc94c2b92f260a0c1c0ab) 2025-08-01 07:39:37 +00:00
bb53f04097 2025-07-31 nightly release (3e5e0946152ca3500c0491927c26724f7f8ac244) 2025-07-31 07:38:40 +00:00
6e2a16b899 2025-07-30 nightly release (badd0618e4d9488e48f500664084356041cd6d44) 2025-07-30 07:39:50 +00:00
2ae9c24a31 2025-07-29 nightly release (08ea8fccaf28155466dbc1da203219941f4b08c0) 2025-07-29 07:38:58 +00:00
fa58508f47 2025-07-28 nightly release (f63673626d4c6a574a49f9e0d1131764d46b2bb8) 2025-07-28 07:39:22 +00:00
0669d84e19 2025-07-27 nightly release (d72ebefe3fa7d3ee0e9c9b399f5c07611e790664) 2025-07-27 07:35:54 +00:00
0f22b01329 2025-07-26 nightly release (c6b479bc09090336dcd1c97f5e368e76490065ea) 2025-07-26 07:36:02 +00:00
fa05753590 2025-07-25 nightly release (6fc0ad22f0a07b6f38d138861c56a765d5a9bb02) 2025-07-25 07:38:10 +00:00
e4d06f14ac 2025-07-24 nightly release (febf3c475e6fe369b41ef009f3598659a6df0911) 2025-07-24 07:38:13 +00:00
add37ba086 2025-07-23 nightly release (2dccff7dcf56b0d168ebfd7ca08bdeca37273c56) 2025-07-23 07:38:56 +00:00
5ec79a9787 2025-07-22 nightly release (350d6af52c76481d0f386208b6b86be93b7ff22d) 2025-07-22 07:38:13 +00:00
d59923f01d 2025-07-21 nightly release (70b4a8880b1c3fb5e92c5fcd75bda6b6f299abac) 2025-07-21 07:40:42 +00:00
1c2e48b67a 2025-07-20 nightly release (4869f7117009fb99a57482fce56b00c6163fbce6) 2025-07-20 07:35:32 +00:00
d78a49992c 2025-07-19 nightly release (90b082e207bff79dd09d89cfef9be49de5c2ad83) 2025-07-19 07:35:34 +00:00
744d29186e 2025-07-18 nightly release (89d842fec5229fff0df5342b2db121368d51e717) 2025-07-18 07:37:56 +00:00
9e5df57ebb 2025-07-17 nightly release (f6d138807f138868de0397936e2bee482c1fb987) 2025-07-17 07:37:40 +00:00
ab43fe4bdf 2025-07-16 nightly release (03852ddc22350eb8b6ed6b61777639ce6080f3dc) 2025-07-16 07:37:49 +00:00
d38be5ebdb 2025-07-15 nightly release (9345279c6ebdbad95b7b53bc2cb6f63a4e57b2cc) 2025-07-15 07:38:13 +00:00
90f1e7bed1 2025-07-14 nightly release (1f57e0e04da9d334e238cec346f7ae3667bed9d1) 2025-07-14 07:38:24 +00:00
8f2a1f3416 2025-07-13 nightly release (5aee022d8b2bc9d31ddaf877315ffb8ad9d62985) 2025-07-13 07:36:19 +00:00
987acea60a 2025-07-12 nightly release (4ff9b7fa3116b1c429e577830ac6e816734ad029) 2025-07-12 07:35:43 +00:00
87b2ac5d19 2025-07-11 nightly release (ae86e8f6c829a3cfa9204949156fce2d048c919b) 2025-07-11 07:37:34 +00:00
1b995e9218 2025-07-10 nightly release (3232b57cd87fbd15c990fbf87d181716a1993a55) 2025-07-10 07:36:45 +00:00
1c10a682ee 2025-07-09 nightly release (1b3d69b59f92383633731aada8383ab88da3ed60) 2025-07-09 07:36:52 +00:00
c5b9696986 2025-07-08 nightly release (12f9942b107acc9d7acf9591818c826ef972a0f5) 2025-07-08 07:36:53 +00:00
d9bca3a299 2025-07-07 nightly release (d26ca5de058dbcf56ac52bb43e84dd98df2ace97) 2025-07-07 07:36:53 +00:00
e067016da8 2025-07-06 nightly release (7cda4017ddda554752e89069ae205be5e8388f59) 2025-07-06 07:34:39 +00:00
d9c875e47b 2025-07-05 nightly release (f7127b9b940a98596599acda1f89fc5153635a5d) 2025-07-05 07:34:44 +00:00
522bab616b 2025-07-04 nightly release (a6fab82b16011213cb010c8c50461b9a680748a2) 2025-07-04 07:37:22 +00:00
76578d0c40 2025-07-03 nightly release (5cc4e856fda4accb2e9291527693a91dc2a18d89) 2025-07-03 07:36:27 +00:00
dd43031b67 2025-07-02 nightly release (4500a4aa50141ed30e093ef8491b30d1d1287348) 2025-07-02 07:36:13 +00:00
65d9261836 2025-07-01 nightly release (c174f3a6a55864cedb8f6d9014e9b8cadf91186b) 2025-07-01 07:37:29 +00:00
249addeefd 2025-06-30 nightly release (771be857043bf794cd219a9b925e308e31f12314) 2025-06-30 07:37:04 +00:00
fcd40af2df 2025-06-29 nightly release (bccb8473fed94dbc6f1392d0c5b4a51150ee4a9a) 2025-06-29 07:34:58 +00:00
6b21a0c286 2025-06-28 nightly release (feea575082439a0496dd404a4925b7d551039065) 2025-06-28 07:34:50 +00:00
3cce5f1d04 2025-06-27 nightly release (382c6190c1329e96e71eef21a19737a3eda0040b) 2025-06-27 07:36:18 +00:00
0fb413a39a 2025-06-26 nightly release (85df746892d9b0e87e7a5dfa78ef81a84aec6de0) 2025-06-26 07:36:28 +00:00
d9c0ee5520 2025-06-25 nightly release (9b498d3bb28b8e3411ce464dd2755c5b96d92c8f) 2025-06-25 07:36:29 +00:00
fbea094c72 2025-06-24 nightly release (c82a174ceab79f77ba18405dd263eb03692608fd) 2025-06-24 07:36:32 +00:00
c8569f3a23 2025-06-23 nightly release (c55eef79f8880e4b610a0ca6f6131e690dc948dd) 2025-06-23 07:37:05 +00:00
382411c3d8 2025-06-22 nightly release (1d993fa3092e4f0b5745f2470024b35cac96da14) 2025-06-22 07:35:28 +00:00
c3ffa66474 2025-06-21 nightly release (ac86ec0e60370c037e018137f2048cafd47c5c28) 2025-06-21 07:34:55 +00:00
a64e2e686a 2025-06-20 nightly release (f7a5ad6c2987ee5a83aa5d868cee3b8067d3de94) 2025-06-20 07:35:51 +00:00
5622038e20 2025-06-19 nightly release (2625c70aecc6eced1dbe108279feab7509733bef) 2025-06-19 07:36:07 +00:00
19e7984774 2025-06-18 nightly release (2625c70aecc6eced1dbe108279feab7509733bef) 2025-06-18 07:36:44 +00:00
d159881b7f 2025-06-17 nightly release (6e2992a9984f2c3f6469564008c7e45869b84678) 2025-06-17 07:37:08 +00:00
9ce4d95e84 2025-06-16 nightly release (c620d0b5c7e8679413d620624725471223ce8359) 2025-06-16 07:37:01 +00:00
74d0136772 2025-06-15 nightly release (6ebe9a4f47e9cd1c9ccd467bcdfdea9445fd98d6) 2025-06-15 07:34:46 +00:00
c3882619c2 2025-06-14 nightly release (a6084b71edb8d2856356724b5e71c4e2a861867f) 2025-06-14 07:34:19 +00:00
58a15e1c08 2025-06-13 nightly release (020da744370f6ee23e377357e9acc330b5610a67) 2025-06-13 07:35:55 +00:00
c07ea91237 2025-06-12 nightly release (b00b641ff1fbfa8f4f6152ffc631e0d24145a7a8) 2025-06-12 07:35:56 +00:00
3017faa76e 2025-06-11 nightly release (3040ca6d0f8558e39919b14eebeacc34ddf980f5) 2025-06-11 07:36:00 +00:00
0f61f5f414 2025-06-10 nightly release (3863bbb55b38985c7d64c8a0be7beb2005a9cc07) 2025-06-10 07:36:35 +00:00
724da4eecc 2025-06-09 nightly release (be2ad70cfa1360da5c23a04ff6ca3480fa02f278) 2025-06-09 07:36:29 +00:00
843156205e 2025-06-08 nightly release (f6e18bc1054624bb148632a85c10371d6cc62492) 2025-06-08 07:34:24 +00:00
e9e2e1992d 2025-06-07 nightly release (83d22256f84232c5440b25a08459c649a32b9a4f) 2025-06-07 07:34:11 +00:00
975b4d9707 2025-06-06 nightly release (e895e9689c625cbcd8f46880115e0d093713fa37) 2025-06-06 07:35:46 +00:00
d53869579d 2025-06-05 nightly release (a01bb9da14ad08853c7b0c1b9719b978cdbf66bc) 2025-06-05 07:35:55 +00:00
a6aa36e428 2025-06-04 nightly release (3e57de1251b879b595fba1d0b9e5eeac732d2137) 2025-06-04 07:36:01 +00:00
534604db0b 2025-06-03 nightly release (28cb3c0fe5dec58c595617066acd8bd082aa867e) 2025-06-03 07:36:30 +00:00
64247892a0 2025-06-02 nightly release (0d0058d90de410cbc998089eb5e475776d2ad55d) 2025-06-02 07:36:51 +00:00
b864161782 2025-06-01 nightly release (5616fa4a68718ead203314a3467f7dd9547153ae) 2025-06-01 07:34:50 +00:00
4612dbdec6 2025-05-31 nightly release (1193bf085574f5f0836b6ca7d84e3c8cb1f2d0c3) 2025-05-31 07:34:30 +00:00
5f945e8ea7 2025-05-30 nightly release (0c6c7780d9563b555d8b2948a005170044142537) 2025-05-30 07:35:17 +00:00
b122c5cdee 2025-05-29 nightly release (b394c6e89c2f7986274e405ec8f91c12fa52b5e2) 2025-05-29 07:35:25 +00:00
f2ad693453 2025-05-28 nightly release (54f1f29fedd3321f2398b6b34c82cc6355d7ba56) 2025-05-28 07:35:52 +00:00
b40585022f 2025-05-27 nightly release (f8010e7b934ab5f289a9d0f92168476882d497d4) 2025-05-27 07:35:58 +00:00
b5ad205e0e 2025-05-26 nightly release (8c16d0e4047a8ac5885baf52e8779fb3e36f2987) 2025-05-26 07:42:06 +00:00
3560b8ebe9 2025-05-25 nightly release (53ecb8159aa28b3c015917acaa89604cfae0d2c6) 2025-05-25 07:35:03 +00:00
fc4fe48f43 2025-05-24 nightly release (76ed9db4682c2ca75116de1547bfc298fafd132d) 2025-05-24 07:34:21 +00:00
4d514e404f 2025-05-23 nightly release (c1055f41a67ef9e76626fa14eea38073f4a09b62) 2025-05-23 07:35:40 +00:00
5f5ca60410 2025-05-22 nightly release (d1fe198df60cac55c70ad4eb3f8b70f8a556b4c1) 2025-05-22 07:35:29 +00:00
08ff525349 2025-05-21 nightly release (531d8f5fb6ea6e1fcac011e5af09067303839750) 2025-05-21 07:35:43 +00:00
9e910e020f 2025-05-20 nightly release (5ef90e14a3e4b26ec9247e5af03de493f20e79a7) 2025-05-20 07:37:18 +00:00
3b875c25ea 2025-05-19 nightly release (2ade886412fcf80b6f681ba660e6f9743489d492) 2025-05-19 07:35:50 +00:00
42f44e6d06 2025-05-18 nightly release (8568dbce1d7775d37c3f2dcc4073d3f44968fc43) 2025-05-18 07:34:25 +00:00
c44eb22680 2025-05-17 nightly release (084c4aa6140fa3e3ae66b09ffe893df841fa06da) 2025-05-17 07:34:07 +00:00
bab64901cc 2025-05-16 nightly release (d1f1ff8610d6baa9f9ce132fc082a10ffa2a9854) 2025-05-16 07:35:29 +00:00
a84c4fe2bb 2025-05-15 nightly release (014726d9d313fd6bf92cad6afb6933d2eb0cdf8a) 2025-05-15 07:35:28 +00:00
46a5746426 2025-05-14 nightly release (d759a517af3e6b2337bf8f8e0d1734e64e470f1b) 2025-05-14 07:35:30 +00:00
8b228c20ce 2025-05-13 nightly release (7243c69421cd0b868f3fa3b552c17e9c8b3023a1) 2025-05-13 07:35:48 +00:00
c8d468403b 2025-05-12 nightly release (032ef487258d8bbcae40fc580cdbf47398706aa4) 2025-05-12 07:35:34 +00:00
c3b3e52305 2025-05-11 nightly release (1f5cf19f56734aa92f1757b1afdbdbbdb198b807) 2025-05-11 07:34:04 +00:00
aff1eebd2b 2025-05-10 nightly release (180cbf46f2d2c2ceba608ad2722a6c9546e3fada) 2025-05-10 07:34:08 +00:00
8fc591edea 2025-05-09 nightly release (ab829ec6290b92b6f2c2519a9a922c1b06d0981a) 2025-05-09 07:34:56 +00:00
cd09210540 2025-05-08 nightly release (6f6fac6a416b64221031d32e6c1e4df145df45f5) 2025-05-08 07:35:58 +00:00
0ef95aa4f2 2025-05-07 nightly release (dfcfad2112933cc34247421ac0a4d3f19a1806c1) 2025-05-07 07:35:42 +00:00
02417607d1 2025-05-06 nightly release (1d7728056b9d9492930f56f7ad535bf927c7a4e8) 2025-05-06 07:35:40 +00:00
edcbbadc9a 2025-05-05 nightly release (0ffd31dc8a514d9ecb1dc653725e359ad37d8faa) 2025-05-05 07:36:04 +00:00
5ca255eb29 2025-05-04 nightly release (e889937850759fe69a8c7de6326984102ed9b088) 2025-05-04 07:33:51 +00:00
0217311e9a 2025-05-03 nightly release (457fa820ad538c7aeadb68f0ec418d63972ba1ee) 2025-05-03 07:33:51 +00:00
b4bd238d58 2025-05-02 nightly release (ce94b212c71c53656d8a357b6d3f2487f5c8d60c) 2025-05-02 07:34:41 +00:00
8c7f92885f 2025-05-01 nightly release (3849fd13de1a5ee727fd64351edb0d3b1bb637a9) 2025-05-01 07:34:40 +00:00
43be1858b1 2025-04-30 nightly release (e872bf8f888bdbb27a03e03935db61babf7180b8) 2025-04-30 07:34:46 +00:00
d2a7a65bf4 2025-04-29 nightly release (e5f4356a258d646df59aa350845c8ff913463ccf) 2025-04-29 07:35:38 +00:00
0c03652153 2025-04-28 nightly release (98bd2bd1abc7e4f18693a4bbe52f68b8d47019ac) 2025-04-28 07:47:12 +00:00
140c4197f8 2025-04-27 nightly release (a0d440a26a555c34e87b90bef3bff960b34bb180) 2025-04-27 07:33:53 +00:00
6a2d29f997 2025-04-26 nightly release (65b845f82b42e865e12c6a26dc6c749db0400973) 2025-04-26 07:34:01 +00:00
e0ba40b8b1 2025-04-25 nightly release (1a6d50d40799ba05b17254b236a6bf8817dd7d06) 2025-04-25 07:34:34 +00:00
0c4b0ec0c0 2025-04-24 nightly release (4ac2ee573d941e573b6648876bf215af609dccbe) 2025-04-24 07:35:07 +00:00
dab7e57003 2025-04-23 nightly release (cd021d048e4645d1bf9f193587ca0eda377a2721) 2025-04-23 07:37:06 +00:00
b182d84228 2025-04-22 nightly release (01f1cc44cbbfdf6307aa01b803a4ee22f9ade946) 2025-04-22 07:35:08 +00:00
6597b2807c 2025-04-21 nightly release (8eb21dffa9b1d0b55756ef94628f71bccfd5bbe9) 2025-04-21 07:34:47 +00:00
4b7863fc9f 2025-04-20 nightly release (a40e876b08277795a6552cf5e77e8649237c6812) 2025-04-20 07:34:08 +00:00
d3eb151b05 2025-04-19 nightly release (adf5f38eae0449b48a0356aa7f0e35c762525be5) 2025-04-19 07:33:54 +00:00
491e7e6ba7 2025-04-18 nightly release (3ed5f1fb77669c8ac5d02e7acc0218e31b71c0b6) 2025-04-18 07:35:16 +00:00
fcaf1a59e6 2025-04-17 nightly release (300e0ee13c08ef77e88f32204a2e0925c17ce216) 2025-04-17 07:35:32 +00:00
de772dae0a 2025-04-16 nightly release (3a90fd481e050cb73eff4e99ed16135b344baf69) 2025-04-16 07:34:40 +00:00
a58c844d04 2025-04-15 nightly release (e178a3aa9441a65aa6bfa079c2c23e515971fae6) 2025-04-15 07:36:12 +00:00
4fd036eb33 2025-04-14 nightly release (1a1a32ce5af880709a761c4cd9e9e43fb67e5058) 2025-04-14 07:34:56 +00:00
160a26e1a3 2025-04-13 nightly release (1a1a32ce5af880709a761c4cd9e9e43fb67e5058) 2025-04-13 07:33:47 +00:00
499ae6a4d4 2025-04-12 nightly release (1a1a32ce5af880709a761c4cd9e9e43fb67e5058) 2025-04-12 07:33:54 +00:00
a2033c7442 2025-04-11 nightly release (1a1a32ce5af880709a761c4cd9e9e43fb67e5058) 2025-04-11 07:34:26 +00:00
a094b3ad3e 2025-04-10 nightly release (cd80778ac8636db99685d792cbc93374f574d38b) 2025-04-10 07:35:22 +00:00
dcea61f3d2 2025-04-09 nightly release (4447352e6499c28c17f4d48d40c2b1cc3d2863a5) 2025-04-09 07:34:53 +00:00
37bbfdc278 2025-04-08 nightly release (836955bdbdeb299e6937065299564fb44ec422c2) 2025-04-08 07:34:33 +00:00
2b568a51f1 2025-04-07 nightly release (d98575806ba3f2b67439c241e980df8f98923f44) 2025-04-07 07:35:43 +00:00
881e8b6bda 2025-04-06 nightly release (15768cc34b9cdafdac645b9c22806e0bf4e74100) 2025-04-06 07:34:21 +00:00
51ba1b337c 2025-04-05 nightly release (7ac81868513a212af6be4a05e2f921cafeeb3069) 2025-04-05 07:34:34 +00:00
56d317d3a7 2025-04-04 nightly release (f9f6c080d8309ac1c5a546a47571389bac0b922c) 2025-04-04 07:34:17 +00:00
e374008e67 2025-04-03 nightly release (532530be34bf396cc632b5c8d95253953e3f7717) 2025-04-03 07:34:28 +00:00
f2ce02c559 2025-04-02 nightly release (5734909f343ab1de44ed5ab23311d43a9c6afaed) 2025-04-02 07:34:31 +00:00
365763495b 2025-04-01 nightly release (827b730f4e1cf172c7ba228a2efd268149163d52) 2025-04-01 07:34:55 +00:00
d5d5207db1 2025-03-31 nightly release (cbc0964636b382e096e4a048909c3fbf4ff82e59) 2025-03-31 07:34:42 +00:00
de61ed1823 2025-03-30 nightly release (52135db69a5b02bb9e5120a5fa410c303f649dfe) 2025-03-30 07:34:05 +00:00
3de3814e5e 2025-03-29 nightly release (d670df356cc27af60b09cb2653dd53a9b92790dc) 2025-03-29 07:33:50 +00:00
dac34906ab 2025-03-28 nightly release (d670df356cc27af60b09cb2653dd53a9b92790dc) 2025-03-28 07:34:40 +00:00
425df71311 2025-03-27 nightly release (114d404b0720e8073748690faeb96449e5c0b229) 2025-03-27 07:34:19 +00:00
41d214b5d4 2025-03-26 nightly release (45b11730f10f64171a9861c98782e1875bad87c9) 2025-03-26 07:34:22 +00:00
3794824ceb 2025-03-25 nightly release (59d5cf083b4f860dea76fe8936076177f9367f10) 2025-03-25 07:35:11 +00:00
139ce10879 2025-03-24 nightly release (de3aca331104776bdfac3f053511b7af442b4038) 2025-03-24 07:34:41 +00:00
9164cb4fbf 2025-03-23 nightly release (621c801f786a0fb24766f8b30b5d3e08b5c25fd3) 2025-03-23 07:34:02 +00:00
233790922b 2025-03-22 nightly release (01b1d1f91b9ee15051489da6d4e9377459ad692c) 2025-03-22 07:34:00 +00:00
6c7ce1b7be 2025-03-21 nightly release (0692301e25f0e0d64b4102819a4c0a4d8fe51b53) 2025-03-21 07:34:04 +00:00
c15acc148e 2025-03-20 nightly release (02e21c78543d0861305382b84c43936c90274eab) 2025-03-20 07:33:48 +00:00
2745ea1c97 2025-03-19 nightly release (790f93db3a5474a26d99e587016815c987566b49) 2025-03-19 07:34:22 +00:00
f66f3718dc 2025-03-18 nightly release (790f93db3a5474a26d99e587016815c987566b49) 2025-03-18 07:34:34 +00:00
3f3f7f67bc 2025-03-17 nightly release (6b1b95ad2acc9404307142d1f050e0e1b5815f99) 2025-03-17 07:34:39 +00:00
1184d9a6aa 2025-03-16 nightly release (f80bee4934dc2d6c8031f481d699cd4832a1a932) 2025-03-16 07:33:51 +00:00
a7848a5ca9 2025-03-15 nightly release (740ce0fa5f8c7e9e51422b614f8187ab93a60b8b) 2025-03-15 07:33:48 +00:00
cc803031f2 2025-03-14 nightly release (e8d36019d428a3c298bedc53d692a81e2f9abd26) 2025-03-14 07:34:00 +00:00
d330b82ed6 2025-03-13 nightly release (f2d43d866cff717c1ce33074d44924be777188c5) 2025-03-13 07:33:50 +00:00
ea02d322f0 2025-03-12 nightly release (2a7e997b3f1805b077810d7fef87cabc4411eeea) 2025-03-12 07:34:14 +00:00
d962699548 2025-03-11 nightly release (295f2ed4d103017f7e19a7b8263ece606cd629db) 2025-03-11 07:33:52 +00:00
cdb42bd8cc 2025-03-10 nightly release (7ae0ce6360b6e4f944906502d20da24c04debee5) 2025-03-10 07:33:51 +00:00
ecc1272a4b 2025-03-09 nightly release (5245304f1ecd4e78bd11f5a5efa8ce12f3b52826) 2025-03-09 07:33:38 +00:00
acd10bbd23 2025-03-08 nightly release (85467ed063d284fa21a2f1d2adfec8fda544923d) 2025-03-08 07:33:48 +00:00
21169daf3a 2025-03-07 nightly release (9c9b05bc4f3661e7b781186e646c08254758a2d4) 2025-03-07 07:33:50 +00:00
e35f2fa1a1 2025-03-06 nightly release (1433bc145526949c84acf4ba5eaa1687cc2d72fe) 2025-03-06 07:34:37 +00:00
8afad6f64c 2025-03-05 nightly release (aade4fbd55a07aaa23dbdfe055d70cd503fd0059) 2025-03-05 07:34:24 +00:00
d13587dfbf 2025-03-04 nightly release (aade4fbd55a07aaa23dbdfe055d70cd503fd0059) 2025-03-04 07:34:06 +00:00
8a38a193e4 2025-03-03 nightly release (ab81ca5053440074dc7d8c46ae4775f62f662394) 2025-03-03 07:33:58 +00:00
96b99c3c6d 2025-03-02 nightly release (ce2f680e0009550ef0dc594f375d542662fcb7e5) 2025-03-02 07:33:55 +00:00
f2a3f7c4b3 2025-03-01 nightly release (08434df1f2f88c9770e59246caa2ff9c6f613270) 2025-03-01 07:33:49 +00:00
5679f4f9c4 2025-02-28 nightly release (1845e7d1f597850b39e2e2d509e7cf8f997462a3) 2025-02-28 07:33:42 +00:00
7c2f94413c 2025-02-27 nightly release (784902983e79fe2f0ae2d7a73a57f4f2338eb86b) 2025-02-27 07:33:48 +00:00
77d7c96844 2025-02-26 nightly release (9ad0ad6497973b3bd72c7b50101cf30d359b950e) 2025-02-26 07:33:57 +00:00
ca19385711 2025-02-25 nightly release (866dc45d3ca0094bb89729b8309eeb25f6c9b575) 2025-02-25 15:21:41 +00:00
2bc7eb9e50 2025-02-24 nightly release (bea72180ed75f522ce4fe5e723bc2112e0874732) 2025-02-24 07:33:42 +00:00
52b3292d38 2025-02-23 nightly release (bea72180ed75f522ce4fe5e723bc2112e0874732) 2025-02-23 07:33:39 +00:00
28e3ea64c0 2025-02-22 nightly release (84fcf1bb11aa2106facb4e44da2a4e295936755d) 2025-02-22 07:33:46 +00:00
9c302da50c 2025-02-21 nightly release (fe100c3c5bcb19899b1f92c3281e527ba1eb011e) 2025-02-21 07:33:48 +00:00
a1f23bcb2e 2025-02-20 nightly release (fea718f062be1ea0602bef36ff42f28df968fd06) 2025-02-20 07:33:51 +00:00
83692a2c20 2025-02-19 nightly release (454fbd5bbe52d241a0ac89dc37574a16d322a1c0) 2025-02-19 13:01:56 +00:00
f1fbb1edba 2025-02-19 nightly release (bd370c138a9378d807ad16228cc6a066f14a526d) 2025-02-19 07:33:50 +00:00
7604dd1102 2025-02-18 nightly release (71484a2106750a5388d0eb1094a2206595d0e7e6) 2025-02-18 07:33:45 +00:00
54ea81783c 2025-02-17 nightly release (ae351d4d0ee0676b81f58170595d016d40cd223f) 2025-02-17 07:33:55 +00:00
68fa1e1ce9 2025-02-16 nightly release (1677a3101959cd2ea5f811a023a2b8b0b9fc6c18) 2025-02-16 07:33:48 +00:00
73f9dbce08 2025-02-15 nightly release (4233a779603207f19033cd433d2961c93b932cb4) 2025-02-15 07:33:51 +00:00
68c826639e 2025-02-14 nightly release (f95bdf5e6c8ea482ba6f64d655513b6a191ac142) 2025-02-14 07:34:01 +00:00
c709115e6c 2025-02-13 nightly release (54e28b2a71dbe003ec03a72c4e829acc0cf25334) 2025-02-13 07:33:50 +00:00
4446d2c933 2025-02-12 nightly release (28a2ab6b8489a22f29bf27b8c691aa27c2ea1094) 2025-02-12 07:33:50 +00:00
90092b9b08 2025-02-11 nightly release (fe94ece375f46d09a223d9796cac02b0796f13f1) 2025-02-11 07:34:51 +00:00
5f7ce38e44 2025-02-10 nightly release (e8304f08fedc802a90f9361c30861f8c5aab946e) 2025-02-10 07:34:04 +00:00
9b43fab6c5 2025-02-09 nightly release (6a9a02acbe34a9d810c8bf56c865b9d0687a3051) 2025-02-09 07:33:44 +00:00
ae9c74989e 2025-02-08 nightly release (9c78fb920d51462bbb6fbdb82592b5963a56ae8a) 2025-02-08 07:33:58 +00:00
1323ac671b 2025-02-07 nightly release (fa0592b568ce35c391dfede8bede9e1ed67f33f5) 2025-02-07 07:33:54 +00:00
a20cc87f83 2025-02-06 nightly release (425804db2b59fe2653fbf0ece730a522865a9b2a) 2025-02-06 07:34:05 +00:00
d945c3e427 2025-02-05 nightly release (3c0d2bc262b51dc55377eee687064d91fb12696d) 2025-02-05 07:33:50 +00:00
48d01e495e 2025-02-04 nightly release (d3c7e4bb9cb570e997dd143817580283c634fab2) 2025-02-04 07:33:46 +00:00
ca2de2e26f 2025-02-03 nightly release (d80eef7c6d2efcbf4b60d555512c7db9da2a6e58) 2025-02-03 07:33:52 +00:00
738ebb45ca 2025-02-02 nightly release (7854299b27d55223e402651ce0d33b209a213589) 2025-02-02 07:33:48 +00:00
6fba2824ee 2025-02-01 nightly release (cde5ddfd1460644bf3f3cbe755b40d44bfc1891b) 2025-02-01 07:34:36 +00:00
edf08cb080 2025-01-31 nightly release (2d6f6637d31854bff0ec7dc6b82429f37e0da271) 2025-01-31 21:28:06 +00:00
5f15cdfe27 2025-01-31 nightly release (27e35de6c288bffad1b4d18b393579c1d1a95547) 2025-01-31 07:33:54 +00:00
b27bb24208 2025-01-30 nightly release (354fe48db9ef94c69db6d03d997a374048824f83) 2025-01-30 07:33:57 +00:00
e1e9393cdf 2025-01-29 nightly release (9fd6722fc9068eeaa176754acb315fc7e0f6416c) 2025-01-29 07:34:09 +00:00
e72d5a5817 2025-01-28 nightly release (c1161957a4122d1913aa00ce2c17c1cc7b83b309) 2025-01-28 07:33:41 +00:00
3127214173 2025-01-27 nightly release (b75afa2e2e492ea59502daa73196fb7454a75a1a) 2025-01-27 07:33:54 +00:00
f97e773692 2025-01-26 nightly release (90448f0128d8090a07325be24bd513c4d14bed6d) 2025-01-26 07:33:55 +00:00
66d78ef560 2025-01-25 nightly release (ef60de07a0d390ac06efaa41b6548118cf84e0ea) 2025-01-25 07:33:47 +00:00
16f149b177 2025-01-24 nightly release (6f07847efe94157b9ab0bdba080f952ecebfbdc3) 2025-01-24 07:34:06 +00:00
e96db3e274 2025-01-23 nightly release (5a18f1e1eb5ae9cf87f66a367f07fdb5211531c7) 2025-01-23 07:33:44 +00:00
76535beee0 2025-01-22 nightly release (f2cfe8b59f56b75f4aa313b3979af845a903f5f8) 2025-01-22 07:34:05 +00:00
1d5261b3a7 2025-01-21 nightly release (5fd881a5b67bf715f212dad8c7cacd4ddfb5746b) 2025-01-21 07:33:56 +00:00
37626ee0e6 2025-01-20 nightly release (6cb186e279bc179a6bb63f0226e24ab42a07b394) 2025-01-20 07:33:45 +00:00
9cf75bc595 2025-01-19 nightly release (8cc415774f47b5a50077f72ea493b71b8101e48d) 2025-01-19 07:33:43 +00:00
afeff746d3 2025-01-18 nightly release (64e54d5af638f6e427e8ad2355c45970400c437e) 2025-01-18 07:33:47 +00:00
ab2a8287ca 2025-01-17 nightly release (43a00d73b36494e052a82418182c63e18e9d9f69) 2025-01-17 07:33:50 +00:00
b3e16e3b7b 2025-01-16 nightly release (62ce3e6e84df516fdd5310d5095fa01251806f1d) 2025-01-16 07:33:47 +00:00
55bf78123d 2025-01-15 nightly release (e2251fffbb012303f1c47ead67fa733a49fd21b4) 2025-01-15 07:34:00 +00:00
68e1d954e3 2025-01-14 nightly release (dfe06e555d474d3ed597b67893e6ff270e2070f4) 2025-01-14 07:33:53 +00:00
32c95e44c6 2025-01-13 nightly release (87843ee9ab50778a98eda62fd7498d44c69488bd) 2025-01-13 07:33:42 +00:00
24d762795f 2025-01-12 nightly release (e0f67405a154e7f9ce1ca9533cbc1d156fe075d7) 2025-01-12 07:33:47 +00:00
ea2107b759 2025-01-11 nightly release (68dad26b9504d96bf7c247941dee67ffb1a781e9) 2025-01-11 07:33:53 +00:00
07c3c5e34c 2025-01-10 nightly release (9f09b719d33c61224ebb85baa369a8364063aa6f) 2025-01-10 07:33:48 +00:00
bd1e0e0018 2025-01-09 nightly release (dcc3cf7066b4d8cab63ecb73daf1e36b01220a4e) 2025-01-09 07:33:53 +00:00
a00264a930 2025-01-08 nightly release (28b4992e7a60bb3fbb07c591099fa810557b4e57) 2025-01-08 07:33:56 +00:00
de51f09432 2025-01-07 nightly release (301b9c8a90002fa621d93b108e54460066226629) 2025-01-07 07:33:58 +00:00
65e9e383bb 2025-01-06 nightly release (cb5fa17e4437d0cf20e2cde03bc1c753d49b1f69) 2025-01-06 07:33:47 +00:00
e67f93ae33 2025-01-05 nightly release (f2d6cfa6775601df5a038f7a4d0b37da75a53ed9) 2025-01-05 07:33:47 +00:00
0f7331ca63 2025-01-04 nightly release (0a94bb432ed75cc2d950d81b2921363218a7e459) 2025-01-04 07:34:05 +00:00
8c92c3c359 2025-01-03 nightly release (496fc909651ff4fc0d1933277c2d30524061471c) 2025-01-03 07:33:57 +00:00
f769c99631 2025-01-02 nightly release (a174ee2255aa181d8d39c167694db1eb1a2e0deb) 2025-01-02 07:33:53 +00:00
d4e525871c 2025-01-01 nightly release (a174ee2255aa181d8d39c167694db1eb1a2e0deb) 2025-01-01 07:33:45 +00:00
a1bc249b5f 2024-12-31 nightly release (8df99b6a6e1fb7b1e548ef01e8d21a652019ed28) 2024-12-31 07:33:43 +00:00
40b0741e91 2024-12-30 nightly release (2ed4d65af0a1993c0df7b081f4088d0f3614283e) 2024-12-30 07:34:20 +00:00
ad23baaa28 2024-12-29 nightly release (cf0b72c4ab960a847758132cc501cf793926e070) 2024-12-29 07:33:41 +00:00
b7f762e00d 2024-12-28 nightly release (d3e9133ab217b8b1f244cd78428d116f83d5806b) 2024-12-28 07:33:58 +00:00
b01ca2c28b 2024-12-27 nightly release (1cd70e7e237d03de3f50445ab0c7975d6749dc5e) 2024-12-27 07:33:50 +00:00
dd88b7cb14 2024-12-26 nightly release (4bacfd6e117f1e77dbce9444fc3ef3d95c5f2b89) 2024-12-26 07:33:54 +00:00
4ae33911b2 2024-12-25 nightly release (c0d710634fcce172490c3ace0de977829b38bc06) 2024-12-25 07:33:52 +00:00
993ac7f9d6 2024-12-24 nightly release (6ccb8ed1868984d9d2ea4e48a085508d1027cd9b) 2024-12-24 07:33:51 +00:00
b2d1835353 2024-12-23 nightly release (12662901aa8ced7d1118193e40dd4f018bb2e0fa) 2024-12-23 19:46:19 +00:00
b74622335a 2024-12-23 nightly release (eebc93d41eeffb936cbf20c9052e1e813d0cc052) 2024-12-23 07:33:45 +00:00
9f02401460 2024-12-22 nightly release (f1cbf4b1b5a299f999c11e77bfabe39c7f04efdc) 2024-12-22 07:33:41 +00:00
3333f84c71 2024-12-21 nightly release (b5e159270a3784bc60fcb18513f30af22521dcf0) 2024-12-21 07:33:48 +00:00
6b3b6ccebb 2024-12-20 nightly release (75661f2036d36fd7f869cd749eb6ef5fb40e4772) 2024-12-20 07:33:45 +00:00
61944adb69 2024-12-19 nightly release (2c48af568a082c70ca4ca2cdc9b6469ed253a371) 2024-12-19 07:34:07 +00:00
a5fc054c22 2024-12-18 nightly release (2ea4b56ec872424e486c4fe2d55da061067a2ed3) 2024-12-18 12:53:39 +00:00
7260a15470 2024-12-18 nightly release (c06b5048ba866e2dd39e5da5399fe8261322c7ca) 2024-12-18 07:33:51 +00:00
5764ca46ed 2024-12-17 nightly release (c15638d8035f706b29a402397fd6766025801032) 2024-12-17 07:34:49 +00:00
3f159d6357 2024-12-16 nightly release (af8789c05654477649e4d99e6a253a2ebd81ad9e) 2024-12-16 07:35:17 +00:00
9f9823e3d2 2024-12-15 nightly release (dd2d360b7d5dcc66660fdfe8da083a7077dada56) 2024-12-15 07:33:42 +00:00
587bb30c44 2024-12-14 nightly release (698eefadddb7c276b381ecb510f4bcc219212c25) 2024-12-14 07:34:11 +00:00
33229b026a 2024-12-13 nightly release (ceb664aca6861d1a05c3d5602b1d7086a1e2901a) 2024-12-13 07:34:15 +00:00
3c7f1c0b09 2024-12-12 nightly release (1dd6f2102936175c06468aa4a18fcf401b53b439) 2024-12-12 07:35:13 +00:00
3bcdb4ed6b 2024-12-11 nightly release (95e7fcf82e91fa965bf35790d06fbf69bb945f81) 2024-12-11 07:34:59 +00:00
96a8273b63 2024-12-10 nightly release (5d3bc633ff3fab550afd286d53697bb5aab1c60e) 2024-12-10 07:35:50 +00:00
66b9fcf5f6 2024-12-09 nightly release (7435f57f600ff083bd2d0efcf33eeda674d2caa1) 2024-12-09 07:35:41 +00:00
afb4be9252 2024-12-08 nightly release (2682e5e0d48a8200c1672b6a42250d3c8de44190) 2024-12-08 07:33:59 +00:00
21b0f3b9bd 2024-12-07 nightly release (7939b5f5f9b073984c26adef1446fa250a20bceb) 2024-12-07 07:34:19 +00:00
3dd667797a 2024-12-06 nightly release (80ca6dd892613fd4f1dee9040b8273ddeadb1c50) 2024-12-06 07:34:55 +00:00
e21ebc30af 2024-12-05 nightly release (b08bc07cd75d166ea4873a5ea24680bfd6204a76) 2024-12-05 07:35:07 +00:00
aa019efbc3 2024-12-04 nightly release (30d907c6fbb0e1ce81023e10f9f2b6bbc27bf59a) 2024-12-04 07:35:07 +00:00
7851460668 2024-12-03 nightly release (77748ed8ec2dea0deb6ffd59bd28329e6cdc9d56) 2024-12-03 07:35:18 +00:00
90b7dcf2c5 2024-12-02 nightly release (5deca07c0dcf1482eba99bf93b805cf1cc41ad6c) 2024-12-02 07:35:32 +00:00
798d5b7ddd 2024-12-01 nightly release (e29dabbd719b988208f329c22157ecf03be6cf56) 2024-12-01 07:34:27 +00:00
8712710221 2024-11-30 nightly release (e29dabbd719b988208f329c22157ecf03be6cf56) 2024-11-30 07:34:13 +00:00
f0427e7be1 2024-11-29 nightly release (b97a7861256188efb7d4cf862886db7e547040a9) 2024-11-29 07:34:43 +00:00
1fba97d21a 2024-11-28 nightly release (fea771dcce8508c5d71755da65d1b97d6da13475) 2024-11-28 07:35:07 +00:00
44c5ea24d5 2024-11-27 nightly release (9b89fa44bad4128b0be2b03b0d8c11ee800d3de6) 2024-11-27 07:35:04 +00:00
06d9768062 2024-11-26 nightly release (851edf208b308789087f263de739607ea25c8a0e) 2024-11-26 07:35:07 +00:00
b16d9ba310 2024-11-25 nightly release (2398e758d2493c8142d4b7f9c72207f05991e9e9) 2024-11-25 07:34:49 +00:00
b0a6940290 2024-11-24 nightly release (c513f01516673898d551818c8ca6085cf07e4006) 2024-11-24 07:34:33 +00:00
716ed475a1 2024-11-23 nightly release (44d5012a80e9b9c0f28dfc9927bfe8157412254d) 2024-11-23 07:33:50 +00:00
b8aad2e5e5 2024-11-22 nightly release (740d1eb0306f1f9d0ce81ea81f287a6b52738fab) 2024-11-22 07:34:41 +00:00
ac47a2d971 2024-11-21 nightly release (e0482fdf95eb3ce679fa442b50871d113ceb673b) 2024-11-21 07:34:45 +00:00
dd2e6d6140 2024-11-20 nightly release (cee3f8541e9fed93095e249d17f791b861548562) 2024-11-20 07:34:51 +00:00
a7f5ff1bc5 2024-11-19 nightly release (98e441f00b2e4dff5234df120e6194eab6773853) 2024-11-19 07:35:01 +00:00
37b96b77a5 2024-11-18 nightly release (c3fbec74bd92e1c4e97a6f2908cabb799d515ce7) 2024-11-18 07:35:13 +00:00
edeae2313f 2024-11-17 nightly release (2fc692b3dd42bf92c4f92dcec862bae7ae1c7995) 2024-11-17 07:34:29 +00:00
5d487aa9be 2024-11-16 nightly release (924c1fe3f304aa599b823fb549c35b7809f61086) 2024-11-16 07:34:02 +00:00
79da951f19 2024-11-15 nightly release (1c1d06a22c2534cca3c4c36f5e7947a67b0d1512) 2024-11-15 07:34:34 +00:00
a0d79cba8d 2024-11-14 nightly release (3ce75e7ea6706adf64d823d0c7ab2d04f657d43e) 2024-11-14 07:34:09 +00:00
1ba72852e9 2024-11-14 nightly release (70060b0927221c63cf08be896dbca6103f2be96e) 2024-11-14 03:11:36 +00:00
d195b9388e 2024-11-13 nightly release (39d1c91c33270f66cdf57bae2a19e7738cf8f77f) 2024-11-13 07:34:06 +00:00
555bc8349d 2024-11-12 nightly release (19eff28ff3f19b50da46f5a9ff5f4d4d213806fe) 2024-11-12 07:34:12 +00:00
9c847fb635 2024-11-11 nightly release (ffb979032dc149b4c895526fe5b92d713ed7b1e1) 2024-11-11 07:34:40 +00:00
77d07d22ef 2024-11-10 nightly release (5ef33e40b3c3fd2608552d3301c7255826c0e7f6) 2024-11-10 07:33:34 +00:00
30cf05fc13 2024-11-09 nightly release (cc44b55b0080759d85068aefa9c74e3bf49658e1) 2024-11-09 07:33:37 +00:00
29017895e1 2024-11-08 nightly release (4715b7700131618be5f439a8ad6b5ae94a201915) 2024-11-08 07:33:41 +00:00
0d5247caf3 2024-11-07 nightly release (cf0bb6c435c58db4c72e489f462e1a0ebe310f14) 2024-11-07 07:33:48 +00:00
5a05d8baca 2024-11-06 nightly release (63b01f328ef63a28b6c31e711d094b1a4b2b7d28) 2024-11-06 07:33:56 +00:00
a8b26c6b07 2024-11-05 nightly release (9039fbb47ecfc93df74a014a209e5929d10fd2a3) 2024-11-05 07:33:56 +00:00
76c297ad6b 2024-11-04 nightly release (e6ff07f00e04a9b58efb86a3dd70ed7280ae8522) 2024-11-04 07:34:15 +00:00
3c901e20a9 2024-11-03 nightly release (f121eab0182f7da58b39ffb84744bdc7109817e3) 2024-11-03 07:34:09 +00:00
a37bd4b1a2 2024-11-02 nightly release (8d1eaa3da663c2bdd626ff1aafa1c5d0ff6e1bf3) 2024-11-02 07:33:48 +00:00
3e0dd1351c 2024-11-01 nightly release (c8a648d4dffb9f0133ff4a2ea0e660b42105d3ad) 2024-11-01 07:34:23 +00:00
81d824d17a 2024-10-31 nightly release (70ba471957011c0ef9d35207b4fb63657e5f8d1a) 2024-10-31 07:34:05 +00:00
e47e879449 2024-10-30 nightly release (23d590e518688f96e1d1947a08e9ca27df3e67e4) 2024-10-30 08:48:13 +00:00
c787213d41 2024-10-29 nightly release (4ee514144bcc227c6d73192d49baf354eb5f321c) 2024-10-29 07:34:47 +00:00
7784111661 2024-10-28 nightly release (d2ec28978730db514931e4dc146f8188738ed1ff) 2024-10-28 07:34:27 +00:00
cef671f99b 2024-10-27 nightly release (00504aa6b8b0ae68761b89f023184202e8c79bc8) 2024-10-27 07:34:07 +00:00
36c366341b 2024-10-26 nightly release (a3de067975a61f11ccb8580416ea4d4a838cdb24) 2024-10-26 07:33:44 +00:00
bd5482c7c3 2024-10-25 nightly release (32a3dbc6450171dec4ef62a36037dd5dc24790d2) 2024-10-25 07:34:20 +00:00
f64544f7fa 2024-10-24 nightly release (dbd6ada8c3272e9aa36b5da0ee785da5e17bd650) 2024-10-24 07:34:14 +00:00
4e9fedafc2 2024-10-23 nightly release (f2ebf6d94ab8d9f6b1a1ba8c6d6d120d9e8a2156) 2024-10-23 07:35:03 +00:00
65a14490e8 2024-10-22 nightly release (89067402d40e70f70b66f734c830fcd450c665df) 2024-10-22 07:36:10 +00:00
5553778a00 2024-10-21 nightly release (82eb09aafd7e4ee6e4fb0580f2221ea6253d218b) 2024-10-21 07:34:43 +00:00
160d421a40 2024-10-20 nightly release (47e80abc7a9de6b5cdc20f7d1a8afb68c639d764) 2024-10-20 07:34:10 +00:00
64b61eb313 2024-10-19 nightly release (e8b1409dcfbc7609110c9c332d6038a957b8dd9f) 2024-10-19 07:33:53 +00:00
c2c91fc8a4 2024-10-18 nightly release (7365a57dc05cc500b5ec910ae008bb168dbadd08) 2024-10-18 07:34:10 +00:00
e4dcf5b50e 2024-10-17 nightly release (fe43f72be7e0afd7fc6e5eee5dfdfb2968e66f32) 2024-10-17 07:34:19 +00:00
1655e904b5 2024-10-16 nightly release (75109682b66267d35ed2a5235ef50348926a336c) 2024-10-16 07:34:18 +00:00
ec8499a174 2024-10-15 nightly release (ed94725b8c5d70b31659d10775c011a23cbcb464) 2024-10-15 07:35:42 +00:00
2fcfb44b7e 2024-10-14 nightly release (41977a05314bbf537e1c5d6cf5916a368d1907d9) 2024-10-14 07:35:48 +00:00
380701ee2e 2024-10-13 nightly release (e89fe0bd6e827435ce436af5df93edb4494f6def) 2024-10-13 07:33:49 +00:00
de761c548d 2024-10-12 nightly release (c254901bdb6dcf8be91b41016c97cf685145fc1a) 2024-10-12 07:33:49 +00:00
e767966307 2024-10-11 nightly release (8321eec009c8c79145ebccd51fdfc336e5f8b848) 2024-10-11 07:34:11 +00:00
2ca8a3bdd1 2024-10-10 nightly release (d9f4a7d3f9678e9492ee1485987370973a55bef9) 2024-10-10 07:33:54 +00:00
7a558ac7ae 2024-10-09 nightly release (23c531b3e903764d06601e2f94f05b61038db83c) 2024-10-09 07:33:58 +00:00
1217ddad52 2024-10-08 nightly release (ff95ff5d38d5133ce74543f8a7a769b6dd9e5d72) 2024-10-08 07:34:05 +00:00
d7f1e2141a 2024-10-07 nightly release (d1b87e26e5c4343f5b56bb1e6f89b479b389bfac) 2024-10-07 07:33:51 +00:00
c9a3e50fbf 2024-10-06 nightly release (4061910ba26f3d81bcde29251677bda1dffbe734) 2024-10-06 07:33:44 +00:00
c327365f95 2024-10-05 nightly release (d6f340f66c2a1b0bdf22377d10b073dd0e5a95d6) 2024-10-05 07:33:47 +00:00
e8a3a16596 2024-10-04 nightly release (88e338f4dddd8fa3eac9c63a4b742dfe8aad0302) 2024-10-04 07:33:59 +00:00
76cfea5e2c 2024-10-03 nightly release (5c0ce8d0a6423472959cf17efa92b20160c6f6a5) 2024-10-03 07:33:57 +00:00
4b2970f7cd 2024-10-02 nightly release (18525e185e211b3eab44c67a688e5df8396f6f97) 2024-10-02 07:33:44 +00:00
972a8333fc 2024-10-01 nightly release (156ca01e51f766b1b069c5c6f3d57112a5c8f9ff) 2024-10-01 07:33:57 +00:00
c8887ca3bc 2024-09-30 nightly release (156ca01e51f766b1b069c5c6f3d57112a5c8f9ff) 2024-09-30 07:33:49 +00:00
f8a6ada8af 2024-09-29 nightly release (1d6e0412f5205b1cd709e034526d7f21d6f2d56f) 2024-09-29 07:33:48 +00:00
32ef0376fd 2024-09-28 nightly release (f42e88fea5915012ddb4cd9530f367524bf57019) 2024-09-28 07:33:49 +00:00
5ba404f687 2024-09-27 nightly release (aa56f80ec1d690f40a38893bfe72b88dd34aa7f7) 2024-09-27 07:33:57 +00:00
29f97eb575 2024-09-26 nightly release (76b044d7cb987081aaaf5b381b74c93543023f7f) 2024-09-26 07:33:58 +00:00
21a304b17f 2024-09-25 nightly release (780f4debdbb51347da5b416416392e5849cbfec5) 2024-09-25 07:33:45 +00:00
5fe833157e 2024-09-24 nightly release (e09c5b6046bbe86958f066b09adeed8435d7d518) 2024-09-24 07:33:51 +00:00
64141411e0 2024-09-23 nightly release (f276da7f988b12fad74594aa054197371be17184) 2024-09-23 07:33:48 +00:00
4b5ae4de44 2024-09-22 nightly release (9731ccb9e0c9f09dcd3435a47fc40fe6fb960504) 2024-09-22 07:33:48 +00:00
4d07616615 2024-09-21 nightly release (1a10751731784942dcbb9c0524c1369a29d45244) 2024-09-21 07:33:57 +00:00
4c73f163cd 2024-09-20 nightly release (fe0e9fb385d6e75a01c9feaa459252db09b71839) 2024-09-20 07:33:48 +00:00
89957684e0 2024-09-19 nightly release (e037bb326fdafca243bdb08023bbef93b29a4513) 2024-09-19 07:33:51 +00:00
900998e06b 2024-09-18 nightly release (48d18fbd4cf785e1f69a6555d97a39023a5d199e) 2024-09-18 07:34:22 +00:00
aec9b2ab77 2024-09-17 nightly release (37a08b33bb86ad0fce3db6fc98f90c9e02d77cba) 2024-09-17 07:33:53 +00:00
79d8db5004 2024-09-16 nightly release (c64ae601ba9eb3ad2cd3402a14f6ac83c0ab7eba) 2024-09-16 07:34:04 +00:00
458f88a3af 2024-09-15 nightly release (c64ae601ba9eb3ad2cd3402a14f6ac83c0ab7eba) 2024-09-15 07:33:41 +00:00
a36aa26d30 2024-09-14 nightly release (081c4a966de77dd5187c1cb97d287cae6f3fbc02) 2024-09-14 07:33:47 +00:00
cc185792f2 2024-09-13 nightly release (0cdc6a8dcd7e294b01d8914385bbe45e79c1770d) 2024-09-13 07:34:19 +00:00
f23873cf88 2024-09-12 nightly release (a130ed828ab879aa4a8c3fcaba5148e872ccaf42) 2024-09-12 07:33:46 +00:00
c42ec0f9b5 2024-09-11 nightly release (26e5572dd24acd69b08eb94577f8796a480c9fe0) 2024-09-11 07:33:46 +00:00
584f674aa0 2024-09-10 nightly release (7ec17b49cf89cfeb97272a1baddcc30fa6fa66d8) 2024-09-10 07:33:42 +00:00
995ec16c7a 2024-09-09 nightly release (31c4e0d37d8efc37a0697159e5b9121ec34d5141) 2024-09-09 07:33:44 +00:00
5678da6c98 2024-09-08 nightly release (3bebc09be9845c0779f190489e8d4caa9e2653c8) 2024-09-08 07:33:41 +00:00
9515104a2b 2024-09-07 nightly release (3d734d837be7b065dc36ae808699459c8e73dda3) 2024-09-07 07:33:42 +00:00
e4f495cdb0 2024-09-06 nightly release (06a7dc21c1005750598c37f3adbc031183c74de6) 2024-09-06 07:33:52 +00:00
90cf7dcfbb 2024-09-05 nightly release (a7a53b796b1fcde9a52c86d29d88e12bbf2b4092) 2024-09-05 07:33:46 +00:00
48d4dac077 2024-09-04 nightly release (e000cf0ad980e5d140dc895a646174e9b945cf26) 2024-09-04 07:34:03 +00:00
704c6fc1cb 2024-09-03 nightly release (c140fa1426603322a5a69ef91300f13489db5970) 2024-09-03 07:33:42 +00:00
e8379aab48 2024-09-02 nightly release (c140fa1426603322a5a69ef91300f13489db5970) 2024-09-02 07:33:54 +00:00
00e3eea170 2024-09-01 nightly release (caa04e0caeb5736e9094f6e0667c03585cc90724) 2024-09-01 07:33:53 +00:00
bed3938804 2024-08-31 nightly release (86e03a64e1e9570adfb574bc406cc5f3d8d90209) 2024-08-31 07:33:44 +00:00
603ac39af5 2024-08-30 nightly release (0d5f9787959efa671d390d5ae02a445a3314178c) 2024-08-30 07:33:47 +00:00
e4cd76cf82 2024-08-29 nightly release (41e36e2b46e05b8718ca724f1780040783c621d2) 2024-08-29 07:33:45 +00:00
de66933aaf 2024-08-28 nightly release (55236d0cb7d183f2b64982d8718e9012ae8a40d8) 2024-08-28 07:33:44 +00:00
7e19f8fbcd 2024-08-27 nightly release (55236d0cb7d183f2b64982d8718e9012ae8a40d8) 2024-08-27 07:33:44 +00:00
3bca514ed8 2024-08-26 nightly release (2553278bae5993bd94bae4f04bf4586fb3f30d57) 2024-08-26 07:33:54 +00:00
aa1fc68d51 2024-08-25 nightly release (2553278bae5993bd94bae4f04bf4586fb3f30d57) 2024-08-25 07:34:01 +00:00
d1c7d770de 2024-08-24 nightly release (2553278bae5993bd94bae4f04bf4586fb3f30d57) 2024-08-24 07:33:42 +00:00
5ddb842eb9 2024-08-23 nightly release (255cd75a974389985a7a542be1455210a9c369e2) 2024-08-23 07:34:34 +00:00
ef01a09a2c 2024-08-22 nightly release (255cd75a974389985a7a542be1455210a9c369e2) 2024-08-22 07:33:52 +00:00
401217e3fd 2024-08-21 nightly release (c42ac54d9e817bf0a0366eb78e6c8beba4d5eff5) 2024-08-21 07:33:51 +00:00
02f175d628 2024-08-20 nightly release (92151c814ba715fe7d1f5648b0ae6950dceee6b7) 2024-08-20 07:33:41 +00:00
d6eae72783 2024-08-19 nightly release (ae000635700e78161e0ed1a18f62b5db4030e343) 2024-08-19 07:33:48 +00:00
748db193d7 2024-08-18 nightly release (b4a1673a6741e183856cf3503f0574d3ac881ce0) 2024-08-18 07:33:38 +00:00
77b78fab0a 2024-08-17 nightly release (12b8e29203dfb8f9c3b1a4c438aac4981a0899ae) 2024-08-17 07:33:42 +00:00
c89b05606e 2024-08-16 nightly release (29c4b4ea5a23ec41b98def0f50a0294c0bdc5c18) 2024-08-16 07:33:42 +00:00
0f8aad57ae 2024-08-15 nightly release (3965f118376a01382b0d1d3eea612188c4847ec8) 2024-08-15 07:33:46 +00:00
3a023a67c4 2024-08-14 nightly release (c2eeda5da0edfbb59673a229b085a80945514fc6) 2024-08-14 07:33:39 +00:00
839ac8af16 2024-08-13 nightly release (d4b31f7bcf962560768b1ee24a2ee5a1e914b8ba) 2024-08-13 07:33:53 +00:00
954b7d3faa 2024-08-12 nightly release (e7b870c88bc3b854a95399a96a274d2f1f908172) 2024-08-12 07:33:41 +00:00
22f2d2c094 2024-08-11 nightly release (a7912bf9dc39b934baf5e04b436cc2134776c10d) 2024-08-11 07:33:35 +00:00
db707c9b5a 2024-08-10 nightly release (05de2b2d0fd582e102f469e55a8a7212aef94a70) 2024-08-10 07:33:34 +00:00
94cf247e0e 2024-08-09 nightly release (bb6eef8ed1de0eb48bde10a07da57b6acc82fb05) 2024-08-09 07:33:42 +00:00
7d5462bfd6 2024-08-08 nightly release (ac6398b630db42570228b95ffbdeab12b7684357) 2024-08-08 07:33:49 +00:00
6d2050e0db 2024-08-07 nightly release (919e38424729fd9499f99a7d9e0ed994669954ef) 2024-08-07 07:33:45 +00:00
ed158d3e1a 2024-08-06 nightly release (345bea01dc69d9c31a4954c299767ccecd702d3d) 2024-08-06 07:33:43 +00:00
b9251a4598 2024-08-05 nightly release (c7cfa5172139737bf75afbd4a7920b1a02b1dcb2) 2024-08-05 07:33:44 +00:00
d6ea1eb2bc 2024-08-04 nightly release (6ec4af6865dd884f984c9dbcb273ae26e3825481) 2024-08-04 07:33:35 +00:00
0cf4254a75 2024-08-03 nightly release (419b76c4ac80c8b1c95120cd52db622333a3a688) 2024-08-03 07:33:43 +00:00
3974b13308 2024-08-02 nightly release (93979e70631ae90afe26c25ef620b311c9b6a8f5) 2024-08-02 07:33:37 +00:00
2beeb996cb 2024-08-01 nightly release (f0da167ce55ddbbe4f0138ed0f0804008069ddad) 2024-08-01 07:33:47 +00:00
e84a29505c 2024-07-31 nightly release (afb04d78c822bbad35b9c72cb21408525dc186f9) 2024-07-31 07:33:42 +00:00
ea5d26ff81 2024-07-30 nightly release (05a8540041cea936a63355c2e38b7b3beb5ce168) 2024-07-30 07:33:43 +00:00
0e29c08c0d 2024-07-29 nightly release (500aea8d5033fd3540c6ed325dd80e7e1420b0f3) 2024-07-29 07:33:36 +00:00
246f9c93b2 2024-07-28 nightly release (8f5cf464054a191c23219e49cc6e3203b2396cfb) 2024-07-28 07:33:36 +00:00
092902bbd4 2024-07-27 nightly release (28fd2e905da8484de38faf4e04073e896f7a95f7) 2024-07-27 07:33:39 +00:00
4e12f36799 2024-07-26 nightly release (58b8704f28f569fc08fadacc12830346251dd297) 2024-07-26 07:33:57 +00:00
46fcfc993e 2024-07-25 nightly release (14495ce28876e6c19733d32e07f913dba6b55771) 2024-07-25 07:33:39 +00:00
d3def8fd79 2024-07-24 nightly release (3aa45cae7750070c25e99fc49409ab311aa7db0b) 2024-07-24 07:33:43 +00:00
d9e6b14e89 2024-07-23 nightly release (406f510f89dd7561eec8da9321d8572bfad64e72) 2024-07-23 07:33:48 +00:00
13bc64a43d 2024-07-22 nightly release (c2425a3b572328c6c1fdadc080f8a83c6357f945) 2024-07-22 07:34:28 +00:00
571ca813dc 2024-07-21 nightly release (1d1d074072ecb0aa6ca95e3f43221d2275e16d74) 2024-07-21 07:33:39 +00:00
2c2b18cf11 2024-07-20 nightly release (7c299b46ca4d056835f7da0d6950939106469edb) 2024-07-20 07:34:08 +00:00
c0f37f35d9 2024-07-19 nightly release (367213a608528ee74e67e03bf11f775e263ef480) 2024-07-19 07:33:36 +00:00
5147aeb49a 2024-07-18 nightly release (874bbc53c9dfdf108e8a8af63109c06f9ff7f6e4) 2024-07-18 07:33:37 +00:00
bd12fbe652 2024-07-17 nightly release (7919f0b952272b83886021b172a8d56a893917ba) 2024-07-17 07:33:41 +00:00
4e39cdceb1 2024-07-16 nightly release (9ab8d47f9d27f6f4102e7786fcd604861d8e480c) 2024-07-16 07:33:36 +00:00
1c036b3ea4 2024-07-15 nightly release (6f275ae4d06b82a2b41a04516d793ad15d45955a) 2024-07-15 07:33:45 +00:00
c02ee0cb6a 2024-07-14 nightly release (f9f85bfc0b5b63274fa3fdd22afb0a456abf53f4) 2024-07-14 07:34:08 +00:00
e4e5c41b7e 2024-07-13 nightly release (d727e2f2d12c825879acbea10abb7b08bc8b0691) 2024-07-13 07:33:32 +00:00
f8279e35f3 2024-07-12 nightly release (18b7633bfbf859904222aad90006b54ae562766c) 2024-07-12 07:33:35 +00:00
a9a7d1e7ee 2024-07-11 nightly release (ceedee23ec2cec14d12c2edd106d9c239dae95a7) 2024-07-11 07:33:41 +00:00
0bf00552b8 2024-07-10 nightly release (007e75958fd2e822b5266df500cf791c14b92b62) 2024-07-10 07:33:45 +00:00
fc864dcf35 2024-07-09 nightly release (1e61cb8c871c876b6f8166d173dabd1440bda4f0) 2024-07-09 07:33:45 +00:00
32e74ed040 2024-07-08 nightly release (7128504424ca54311efdf22f2c8425291586860e) 2024-07-08 07:33:56 +00:00
1a71eb647b 2024-07-07 nightly release (7128504424ca54311efdf22f2c8425291586860e) 2024-07-07 07:33:39 +00:00
cb92c66e9c 2024-07-06 nightly release (7128504424ca54311efdf22f2c8425291586860e) 2024-07-06 07:34:09 +00:00
419de13620 2024-07-05 nightly release (7128504424ca54311efdf22f2c8425291586860e) 2024-07-05 07:33:46 +00:00
a532737602 2024-07-04 nightly release (9108b74bbc62eeb48e668ea67525445d01568c65) 2024-07-04 07:33:38 +00:00
6d35c780e0 2024-07-03 nightly release (3b77b122c5ce3033df1e1d541de2a3d420225c9d) 2024-07-03 07:34:19 +00:00
d7ee373e90 2024-07-02 nightly release (9ae78a578caff195821ad535a9e8d8ef59552142) 2024-07-02 07:33:46 +00:00
7b2cee6dc9 2024-07-01 nightly release (9ae78a578caff195821ad535a9e8d8ef59552142) 2024-07-01 07:34:15 +00:00
f28393cfc9 2024-06-30 nightly release (9ae78a578caff195821ad535a9e8d8ef59552142) 2024-06-30 07:33:39 +00:00
e0d8e538f0 2024-06-29 nightly release (a32ce5ce344b384ad4c6642895835c10ae7872c8) 2024-06-29 07:33:48 +00:00
364e6692f3 2024-06-28 nightly release (424068d0d22908294f2e0705d7227c37244b9319) 2024-06-28 16:02:35 +00:00
2f21c45513 2024-06-28 nightly release (d4b6ff6fbe31385ca9e5e299ff616203f5b4717d) 2024-06-28 07:33:37 +00:00
8b2405fd53 2024-06-27 nightly release (cdbd6542d015bae9b850602834c4f22e3001084b) 2024-06-27 07:33:34 +00:00
bde150a53f 2024-06-26 nightly release (90d5a6f001ef3ea40ef91ae20e050e39a6d550de) 2024-06-26 16:45:19 +00:00
4f096464a9 2024-06-26 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-26 07:33:42 +00:00
9e60d009a5 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 18:29:51 +00:00
a215657b4a 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 17:15:56 +00:00
2a0a69813f 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 15:58:29 +00:00
1125d755bf 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 07:33:37 +00:00
bbd0babd09 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 04:25:54 +00:00
475c553dc8 2024-06-25 nightly release (00f675bb4c2ec02bb5ffecfc75571026e220701c) 2024-06-25 03:43:16 +00:00
f9a5736c12 2024-06-24 nightly release (17d1723aeeadbfc6d33c02ab56c5aacb8c671876) 2024-06-24 21:35:25 +00:00
9bb4dd8ceb 2024-06-24 nightly release (920ebccca2644881ece4f9e07b4a4b4787b8f2b1) 2024-06-24 07:33:38 +00:00
91c197583a 2024-06-23 nightly release (920ebccca2644881ece4f9e07b4a4b4787b8f2b1) 2024-06-23 07:33:47 +00:00
74ca07380a 2024-06-23 nightly release (920ebccca2644881ece4f9e07b4a4b4787b8f2b1) 2024-06-23 01:49:12 +00:00
cb859f172e 2024-06-22 nightly release (92ca17d85def4a62aee04fcea3576cd0c07a0554) 2024-06-22 07:33:49 +00:00
769190cb3b 2024-06-21 nightly release (63a724d8e1fd49e64e31879c8545b285d213efe3) 2024-06-21 07:34:06 +00:00
5996356b3e 2024-06-20 nightly release (19f3abcde45f686e3d270d41c2c919d7598cec19) 2024-06-20 07:33:34 +00:00
505ff10e75 2024-06-19 nightly release (99f042d336b53844b509406f1ecf78cb6f5e5714) 2024-06-19 07:33:50 +00:00
23e34b0716 2024-06-18 nightly release (c017c97333dfb9d17f2e5357980241827e50e8d5) 2024-06-18 07:33:38 +00:00
8410bf5cd1 2024-06-17 nightly release (f9dae86222aaf15ea085c7774da70781bae46ff9) 2024-06-17 07:33:46 +00:00
db04d3cd9e 2024-06-16 nightly release (6079c5091091d872b8dafbaa4e31a5b6194647ad) 2024-06-16 07:33:35 +00:00
d69902da7e 2024-06-15 nightly release (2d01f877373d3255fa8b77c714c2ca17d08e6126) 2024-06-15 07:33:36 +00:00
3d45df9a51 2024-06-14 nightly release (8c20f53a5e24209624670ecd39841bd71f38d11d) 2024-06-14 07:33:45 +00:00
4ecd3982af 2024-06-13 nightly release (d630e1e838e7416b6e27572a91407c4447a00734) 2024-06-13 07:34:39 +00:00
b5335bf346 2024-06-12 nightly release (86b5df3e71e6b786347ee5fa69daa054849bea2e) 2024-06-12 07:33:44 +00:00
c8e5a721d0 2024-06-11 nightly release (734e8f6ad7e7f0fa0341fb658f1f986225173f5f) 2024-06-11 07:33:40 +00:00
481ceefe2a 2024-06-10 nightly release (df43d5843edd9abd95d2c039670bce51375d9c06) 2024-06-10 07:33:37 +00:00
963d450511 2024-06-09 nightly release (f681e3689b857b8811f19d60d439bfb3fb2dd2d3) 2024-06-09 07:33:33 +00:00
6a855e6923 2024-06-08 nightly release (6e5c2a1a3bc9507ec459f3e01f5e492d8bef122a) 2024-06-08 07:33:39 +00:00
9f88f70e2e 2024-06-07 nightly release (65aa16f968af2cd18ff8c25cc657e7abda594bfc) 2024-06-07 07:33:43 +00:00
529bedad3e 2024-06-06 nightly release (ffaea656b5d8ff6518669494cc8f664b94f8e8b1) 2024-06-06 07:33:42 +00:00
d3551df158 2024-06-05 nightly release (3bcc3cddb580bf0f0f1958cfe27001f236eac2c1) 2024-06-05 07:33:52 +00:00
b94ddab65b 2024-06-04 nightly release (1208347d0912d1236ae43257e2914767e35c3b36) 2024-06-04 07:33:37 +00:00
1b6f0e0d5f 2024-06-03 nightly release (7e97b33fbbb24fa5876500be764c97f51b74ac0e) 2024-06-03 07:33:39 +00:00
074e4f1c80 2024-06-02 nightly release (c19ad112f65ab88af3eeb319dda0675c076b0b67) 2024-06-02 07:33:38 +00:00
70b03a1d35 2024-06-01 nightly release (121c55d8d12a878b12eab00a7cebae2e2fa47ee7) 2024-06-01 07:33:43 +00:00
4d012a7a2f 2024-05-31 nightly release (029af29e6d2a91bc8a6e15d445fec42a49c0454e) 2024-05-31 07:34:17 +00:00
0bbe39cc0e 2024-05-30 nightly release (d66f12674cfe0151a86dc10b8de216f83bf42e6e) 2024-05-30 07:34:02 +00:00
c35e8711f4 2024-05-29 nightly release (0ff2f8b52248323bbe25108b64e706c43390cb72) 2024-05-29 07:33:53 +00:00
4fbc2ec72d 2024-05-28 nightly release (0ff2f8b52248323bbe25108b64e706c43390cb72) 2024-05-28 07:33:37 +00:00
2995cdef9a 2024-05-27 nightly release (6aa5bb1a76dee8112f1a9e7c194c790b5cdc6462) 2024-05-27 07:33:37 +00:00
549167fcb3 2024-05-26 nightly release (ee6cb6daa173896f8ea1876266a19775aaa4f610) 2024-05-26 07:33:37 +00:00
99b987f154 2024-05-25 nightly release (ed838793dfb530273fec30ea64954333672794e3) 2024-05-25 07:33:32 +00:00
269ad139c7 2024-05-24 nightly release (cb6ef68caa22c1a2f7a4e8583c0e7c923c8bfd17) 2024-05-24 07:34:51 +00:00
534d4bbde2 2024-05-23 nightly release (4f14282e350a6c9a0a280083c286f7d672fa3ebd) 2024-05-23 07:33:35 +00:00
1aa713bf08 2024-05-22 nightly release (608a11c4963dbba86189286da4a0aa58c0779126) 2024-05-22 07:33:51 +00:00
3149d44669 2024-05-21 nightly release (31ba6ee49bdbd7dd6c2a3c77ad31cc46aec2049e) 2024-05-21 07:33:38 +00:00
2a8ecff0c9 2024-05-20 nightly release (5fb11cda4fe60c1a7b30e6c844f84ce8933ef953) 2024-05-20 07:33:39 +00:00
bca6d8b2fe 2024-05-19 nightly release (71b6459edc19dac02b6e559977a0f615bf451210) 2024-05-19 07:33:36 +00:00
b138ead39a 2024-05-18 nightly release (d4704dcacc543023e7a746263a970bef155d58c4) 2024-05-18 07:33:43 +00:00
7fa9edf793 2024-05-17 nightly release (da1fc85d60fcf0bd1e8638d643a7c0c6560c3a5f) 2024-05-17 07:33:44 +00:00
a86434a3ca 2024-05-16 nightly release (315389bfed3a0b29752997862e18681169ebd501) 2024-05-16 07:33:42 +00:00
e5cd7bea02 2024-05-15 nightly release (1485621ccbb5367936ba6da51ba896387416c353) 2024-05-15 07:33:42 +00:00
8ea7ef39bc 2024-05-14 nightly release (9a2beb862d9c30f037c9b2eac878ec3f9227a5e2) 2024-05-14 07:33:54 +00:00
708a49f3e2 2024-05-13 nightly release (1c3fe8403365db3cc9b75524ae742e3027b745e2) 2024-05-13 07:33:36 +00:00
2de26f12a8 2024-05-12 nightly release (02093b6c6ae1046368e2500881d0bb5880873386) 2024-05-12 07:33:45 +00:00
d4d98b914c 2024-05-11 nightly release (c1690a3e12dd4a748af9827e84dbe8fa5273ee51) 2024-05-11 07:33:39 +00:00
8d3ad715c8 2024-05-10 nightly release (fcbf2b61e6f40048ef0e6d77360c86771956cc9c) 2024-05-10 07:33:33 +00:00
8f863f5efd 2024-05-09 nightly release (ff090c693751f564f45951f1b13c11478892799d) 2024-05-09 07:33:46 +00:00
e1c37ce2c1 2024-05-08 nightly release (50073127b5e49b2b75a912d73a70ecb61890a32d) 2024-05-08 07:34:30 +00:00
e4f522910a 2024-05-07 nightly release (48b6c8dbc376db4406a979b35cd6909bcb428931) 2024-05-07 07:33:24 +00:00
3e7378d00b 2024-05-06 nightly release (fc183f0bdec30baa6686e13720adae077c332bdd) 2024-05-06 07:33:40 +00:00
1b7523fbe9 2024-05-05 nightly release (6d30803d64953955df63da56833bf4eb52249aae) 2024-05-05 07:33:44 +00:00
48aefeb4a4 2024-05-04 nightly release (d4727fd4ebd42936a1bae7b7f44ee9a038fd643e) 2024-05-04 07:33:42 +00:00
5969fe4abd 2024-05-03 nightly release (a40d6df448de1acb263ed8f6ff9e7d26f5a1a161) 2024-05-03 07:33:33 +00:00
267a1102f8 2024-05-02 nightly release (b03fb49ed8d812ceba3741432ac1f9de3bd1650e) 2024-05-02 07:33:34 +00:00
01c419df43 2024-05-01 nightly release (1c905f1be34683480a33e36104b8482442d7c1fd) 2024-05-01 07:33:43 +00:00
dca7af5889 2024-04-30 nightly release (e7846447e03d44baf4437cf122fb6e70b0c1d472) 2024-04-30 07:33:36 +00:00
afb4c766d2 2024-04-29 nightly release (cc06c00a56a78e3ecdc1b5618e1af4a1a2be7cd5) 2024-04-29 07:33:40 +00:00
34ade3521c 2024-04-28 nightly release (7478b7f1cac9686f00edf3db4667cf86d2421531) 2024-04-28 07:33:44 +00:00
9179db815b 2024-04-27 nightly release (5944a5355501cb45fac966d3cf4277cbc718eff1) 2024-04-27 07:33:41 +00:00
38547e9613 2024-04-26 nightly release (769b1e6cdca56ee91a61ee6b1502a9faa1819106) 2024-04-26 07:33:36 +00:00
734a000f16 2024-04-25 nightly release (13ab24f1923359cdfe795a32cdd3d753f940efbe) 2024-04-25 07:33:48 +00:00
c5b898e77e 2024-04-24 nightly release (b91f83f18139a6ed2626c30979a38e533d4c7d7c) 2024-04-24 07:33:44 +00:00
6d1c678c58 2024-04-23 nightly release (7706cd7d12781b8c537dd045745738d60c6c31f1) 2024-04-23 07:34:04 +00:00
0a3e5f5bad 2024-04-22 nightly release (b1984237a0fb32b760c1b84d6d02d2f0f7ed293b) 2024-04-22 07:33:34 +00:00
02b1ebb3dd 2024-04-21 nightly release (bad8d25881d850eaf0b326f6ce5c78305e38c001) 2024-04-21 07:33:29 +00:00
db26423735 2024-04-20 nightly release (bad8d25881d850eaf0b326f6ce5c78305e38c001) 2024-04-20 07:33:37 +00:00
ee5e704c78 2024-04-20 nightly release (bad8d25881d850eaf0b326f6ce5c78305e38c001) 2024-04-20 03:06:07 +00:00
e0c77fb573 2024-04-19 nightly release (c9db59e9e4d425f9d4e9f55247888c24b0d638e8) 2024-04-19 18:17:20 +00:00
dc9eea4365 2024-04-19 nightly release (4946638f06e5916ea9bd0f790ff620bdb78a92a3) 2024-04-19 07:33:36 +00:00
0a0cedaf40 2024-04-18 nightly release (9385ef2a5dbd62cb877e863c91ff29a43c340456) 2024-04-18 19:38:08 +00:00
d8b31eb548 2024-04-18 nightly release (14162eecfcb5cc11139260c034c653e972a9073a) 2024-04-18 07:33:30 +00:00
449c28cb0d 2024-04-17 nightly release (dd3cea3291346e66a870bbec51e4d1a3550300db) 2024-04-17 07:33:43 +00:00
871442ef61 2024-04-16 nightly release (67bd43b5106bed6365f1986229d7c32079653e76) 2024-04-16 21:06:16 +00:00
0b80497b9d 2024-04-16 nightly release (e4efa311f1c692813befc45142d668f35a66392b) 2024-04-16 07:34:03 +00:00
42cbe0248e 2024-04-15 nightly release (19f50333e91e9e8b20a78517becd74bca70c7d46) 2024-04-15 07:33:32 +00:00
e275bb87c8 2024-04-14 nightly release (88a71594933b2464d9d8b6b3533c5a945a4ac2ff) 2024-04-14 08:03:45 +00:00
99d3d33091 2024-04-13 nightly release (7e3f80f00f3995e335bd6313b8c4be998cc4e2cd) 2024-04-13 07:33:52 +00:00
19db4687de 2024-04-12 nightly release (868e5ced5df34f1aef3703654f76e03f5126b534) 2024-04-12 07:33:35 +00:00
ad9f88b232 2024-04-11 nightly release (793df52dc52f5f5f657744abfd7681eaba7a21f9) 2024-04-11 07:34:32 +00:00
4dae33d814 2024-04-10 nightly release (65710d95c9adcc166e4d4a19ac16b8d7516fc87b) 2024-04-10 07:33:43 +00:00
74f1665940 2024-04-09 nightly release (d8e0c26e642bf8e44cc6e8d46822d54957b1c660) 2024-04-09 07:33:36 +00:00
a3fc530d82 2024-04-08 nightly release (bb04f3f66a5b92f0bed3712689f57774f00db349) 2024-04-08 07:33:35 +00:00
903938e95d 2024-04-07 nightly release (e3ea31662334770bbbb6da4abd881abc875e04c3) 2024-04-07 07:33:34 +00:00
a4ae0b67c2 2024-04-06 nightly release (22b99871442fc3c78ec173894c017d6d98996501) 2024-04-06 07:33:35 +00:00
8f9cba17bb 2024-04-05 nightly release (d8717c2d68bc0a8bda7e8ad823a0d6c2d8aae934) 2024-04-05 07:33:29 +00:00
3d14e74ccb 2024-04-04 nightly release (669462817071d1badd88a832a7c38b9bafde2233) 2024-04-04 07:33:48 +00:00
9da0ebeb73 2024-04-03 nightly release (15bd81bfafa86fec9d675e7f071c867c852ebe8f) 2024-04-03 07:33:51 +00:00
16261ef1eb 2024-04-02 nightly release (4d5cdc2e1e62ec400f4355cb9d3b0d2b5af0fbf8) 2024-04-02 07:33:38 +00:00
e1c8416590 2024-04-01 nightly release (781e8d2201c1e2aaeccbbc7b7b13f9322b481bc9) 2024-04-01 07:33:45 +00:00
4af23dd2d2 2024-03-31 nightly release (35c493f2cf9b623bfdc7e6b34dc1cb39690a7919) 2024-03-31 07:33:39 +00:00
70a3132121 2024-03-30 nightly release (f4ff063c333f286d4384523bac67c047aca4d7b9) 2024-03-30 07:33:42 +00:00
2f5e4e1df7 2024-03-29 nightly release (3beb9d85a6501d8df5a89e2cc2d7cb0f8f94dbfc) 2024-03-29 07:33:31 +00:00
096c0ed5e4 2024-03-28 nightly release (12116aee6852df2b040255b8fcc7deb52b897792) 2024-03-28 07:34:33 +00:00
384cbf2346 2024-03-27 nightly release (f2c1060de3cdddbfefcab11e547211993d0f9cfa) 2024-03-27 07:33:38 +00:00
a166d4b816 2024-03-26 nightly release (5e66bf5f42104bc60a8e77b51c84a4cce81efdd8) 2024-03-26 07:33:52 +00:00
c18fcd604f 2024-03-25 nightly release (deeeaded1ff45d0e1e666e42cadf2026594b6426) 2024-03-25 07:33:31 +00:00
848a2e8f52 2024-03-24 nightly release (f0d461beacded34abe196c72ec4bcdb55bf01793) 2024-03-24 07:33:29 +00:00
bbafd43d86 2024-03-23 nightly release (c677221798d8ce87c97aac1bd9ae34af0767c383) 2024-03-23 07:33:27 +00:00
9efd8fed32 2024-03-22 nightly release (ef0d470eb372a5e68f6332bea9b1df26fca28b59) 2024-03-22 07:33:31 +00:00
cfaed59ce7 2024-03-21 nightly release (cc0cadaf4c76c91d19474a1a512c9bc31e2c8602) 2024-03-21 07:33:42 +00:00
90fdee15be 2024-03-20 nightly release (6b5259e50704aede43c87fed33f64224f9047087) 2024-03-20 07:33:56 +00:00
0e66636599 2024-03-19 nightly release (5bc7f7f97760d2d485621f9f30d0316e1f2440c6) 2024-03-19 07:33:41 +00:00
c823f7a4de 2024-03-18 nightly release (7380585d9755eaef95bec8994a12e1fc6510f81b) 2024-03-18 07:33:33 +00:00
ad27e5012d 2024-03-17 nightly release (6f74b7607207054c1f5331183ab725640c99fe8d) 2024-03-17 07:33:37 +00:00
c5774a585f 2024-03-16 nightly release (f0b9a8344a38d2e865d08f084138ac2911a66ad1) 2024-03-16 07:34:28 +00:00
285db4990f 2024-03-15 nightly release (e4fda049c2bfe5a2e3aa0228a3792de87b4f670b) 2024-03-15 07:33:35 +00:00
8ef78d58d3 2024-03-14 nightly release (5b90074540577267c29f5f784be123ee54f6491d) 2024-03-14 07:33:44 +00:00
2447af7e49 2024-03-13 nightly release (9f235971f02e0d53038f5bcef9b7018be2ac8c6d) 2024-03-13 07:34:36 +00:00
a9e4e9b51d 2024-03-12 nightly release (6ca9ae4f8693639c395544327f7e362441a58c79) 2024-03-12 07:33:34 +00:00
1a6ae7b963 2024-03-11 nightly release (f11f2b0d55b1aa322f73f4bb521beaf9d4563603) 2024-03-11 07:33:34 +00:00
715d399539 2024-03-10 nightly release (41286f1505ffb214d386d72e4b72ebd680a4a475) 2024-03-10 07:33:30 +00:00
ffcaab7876 2024-03-09 nightly release (d482614fec5fb9bccb49bf4ee4ab561e872c0f50) 2024-03-09 07:33:47 +00:00
55e9301321 2024-03-08 nightly release (953c6c37cbfcc894963120666dbf066977931885) 2024-03-08 07:33:57 +00:00
ce01333322 2024-03-07 nightly release (a2854ae904c55ebf19031ca6e883e5dcbb6a4a9a) 2024-03-07 07:33:32 +00:00
c992f0fc38 2024-03-06 nightly release (dad1b765848c4f52501c4c60b1c3e6fbd3cc8837) 2024-03-06 07:33:41 +00:00
65d5412d00 2024-03-05 nightly release (6566b3db677a6d3f2f90a3fcd4dd1dd2d9d0bfc4) 2024-03-05 07:33:46 +00:00
c652a65065 2024-03-04 nightly release (581fe26792849a80f04feaa7f8bdec69b7f41dd8) 2024-03-04 07:51:50 +00:00
0586ca040c 2024-03-03 nightly release (581fe26792849a80f04feaa7f8bdec69b7f41dd8) 2024-03-03 07:33:40 +00:00
de87c0a689 2024-03-02 nightly release (581fe26792849a80f04feaa7f8bdec69b7f41dd8) 2024-03-02 07:33:26 +00:00
4be1e6af8b 2024-03-01 nightly release (2e84d01d0576a31a6387e4ccc195f11449fb875a) 2024-03-01 07:34:16 +00:00
574ad2898e 2024-02-29 nightly release (f5b99976adcbb01fd71bd0a39ea15bdac6c9e48a) 2024-02-29 07:33:43 +00:00
c019093955 2024-02-28 nightly release (9c597ff137ead9f7f7ec8fdcbf473de2d328e61b) 2024-02-28 07:33:41 +00:00
738f032fb9 2024-02-27 nightly release (a1c641f11809c1f04e1027086f44b1b8f8427dd9) 2024-02-27 07:33:39 +00:00
29e2492945 2024-02-26 nightly release (834c7a1d3ea07878ad87d127ee28606fc140b552) 2024-02-26 07:34:44 +00:00
53f5035912 2024-02-25 nightly release (5c7b761f8e748fe45c8e2e29563df637ae651917) 2024-02-25 07:33:22 +00:00
ea9f12d7d1 2024-02-24 nightly release (79f059987eead42b9279e31e28ed6fd697630d36) 2024-02-24 07:33:36 +00:00
d25357d14e 2024-02-23 nightly release (36c1cc962aaef854d2388a5ecfde230d40bcc1d6) 2024-02-23 07:33:36 +00:00
f8fa3bf4c8 2024-02-22 nightly release (fff9d98e58cda4ad67fef6d0739f684ca7d4bbec) 2024-02-22 07:33:34 +00:00
fe8007dad8 2024-02-21 nightly release (becfda005e524f93b1efed64917a129ef6778135) 2024-02-21 07:33:33 +00:00
8efa066dc0 2024-02-20 nightly release (becfda005e524f93b1efed64917a129ef6778135) 2024-02-20 07:33:29 +00:00
b57318ddcc 2024-02-19 nightly release (becfda005e524f93b1efed64917a129ef6778135) 2024-02-19 07:33:31 +00:00
672f086ea7 2024-02-18 nightly release (becfda005e524f93b1efed64917a129ef6778135) 2024-02-18 07:33:26 +00:00
d70e8ef6c8 2024-02-17 nightly release (becfda005e524f93b1efed64917a129ef6778135) 2024-02-17 07:33:36 +00:00
0747ef0bfb 2024-02-16 nightly release (62e5840b36b6790a5008faa76a920c6d154897b9) 2024-02-16 07:33:25 +00:00
04a9a7cd1a 2024-02-15 nightly release (cd08dc37f831f7b7deabdc92893758de84c4d3d9) 2024-02-15 07:33:42 +00:00
9debfae3d5 2024-02-14 nightly release (16369816a2e1c298fe5d15a439e922d10eb1894b) 2024-02-14 07:33:29 +00:00
98d4762774 2024-02-13 nightly release (2502a011108b0592dd6dd34e5a61b2d52b95160e) 2024-02-13 07:33:27 +00:00
633abee414 2024-02-12 nightly release (dcb08a7044d986ceecd7252fdb2dd0e10501587a) 2024-02-12 07:33:37 +00:00
fede3c1a2f 2024-02-11 nightly release (3ab08946d5052eaeda11d683d6a58e801a032755) 2024-02-11 07:33:40 +00:00
8f9cff839c 2024-02-10 nightly release (42ca82dfb1eb133b287b881c346a0032c1c2a08e) 2024-02-10 07:33:28 +00:00
1396090c1f 2024-02-09 nightly release (930b60f5aa7e17402491900a545d96822796b638) 2024-02-09 07:33:28 +00:00
0b66915bb5 2024-02-08 nightly release (5f6b35915af98fac741998edb55aeeba4aaa3794) 2024-02-08 07:33:36 +00:00
3cbc8e89fd 2024-02-07 nightly release (d0ca849fdf9807e730f91ce8e86d126b241e0940) 2024-02-07 07:33:40 +00:00
7f3f3c3d68 2024-02-06 nightly release (12ac3ba383af99733ec23fcd53c7e29f70b68371) 2024-02-06 07:33:48 +00:00
e795fa298a 2024-02-05 nightly release (b8307513e57f8beaf99daff342a23d705a417e11) 2024-02-05 07:33:36 +00:00
68d3fec0cb 2024-02-04 nightly release (8f82a44a5beed0f205a7f273b9f062da43d65679) 2024-02-04 07:33:30 +00:00
6517e8e586 2024-02-03 nightly release (ce40ee8ecdfdecd48ffcec4fced35f16a77f268d) 2024-02-03 07:33:21 +00:00
aaafe2673d 2024-02-02 nightly release (08472a4fd55881260cbad8a15260528e6c4bee04) 2024-02-02 07:34:01 +00:00
671f5d2d7f 2024-02-01 nightly release (4cba1dd0c3e7f625856566ae00d89d8ee2e8b990) 2024-02-01 07:33:32 +00:00
e3133a2234 2024-01-31 nightly release (e3cde685340d2c5c752428b37449ba75f59488af) 2024-01-31 07:33:40 +00:00
1e875b454f 2024-01-30 nightly release (dcc077eea2f95a9d5caa65eeca4d8c73e207f61d) 2024-01-30 07:34:34 +00:00
4e2aa5dbb8 2024-01-29 nightly release (890d8e66925ff7bb1b765087ad921ebc1bdebf48) 2024-01-29 07:33:38 +00:00
4749337721 2024-01-28 nightly release (2ed0af2bdeb2a5e0df78b22eab04d468f8db239e) 2024-01-28 07:33:22 +00:00
8f8d7de630 2024-01-27 nightly release (fe10b1800f5df432532fc91e0d553a521ec53479) 2024-01-27 07:33:29 +00:00
b12247c7ad 2024-01-26 nightly release (0c5da6100f5426173a64da5873fb565553c8510e) 2024-01-26 07:33:42 +00:00
86adc78cb3 2024-01-25 nightly release (2d7a360911fb7b27be82c51ca86b4b34b6f1b087) 2024-01-25 07:33:46 +00:00
54fee3b5dd 2024-01-24 nightly release (26968cefb0f0ddf31650015c95bbc11e8eaf88ec) 2024-01-24 07:33:42 +00:00
01a5c71e1d 2024-01-23 nightly release (5ec2d7959d1ef1e8eeacc5e59bbf0f8b2dda1ea6) 2024-01-23 22:34:47 +00:00
6458e8cbc2 2024-01-23 nightly release (3708f2608e932b588ae7d73788b969cf83ece8e8) 2024-01-23 07:33:38 +00:00
72fcb9ad66 2024-01-22 nightly release (39df084001c54cca5fe3174176f9b0206ddb7dcf) 2024-01-22 07:33:42 +00:00
4f9be7c2d0 2024-01-21 nightly release (949a76a7f001cc4ec0d8e14071d264f35b5f8a8a) 2024-01-21 07:33:40 +00:00
ffb3d30801 2024-01-20 nightly release (15d568d62142f207734c29a370d6e7ce0e7753de) 2024-01-20 07:33:32 +00:00
5a2ff3fc7c 2024-01-19 nightly release (f302a0d380cf2a6e8c2ae7e67c6859503a038cf7) 2024-01-19 07:33:38 +00:00
2b31a65125 2024-01-18 nightly release (02c96f69493ebd06d940a778a2d3d89c660a7ce4) 2024-01-18 07:33:35 +00:00
7b9dec1bfc 2024-01-17 nightly release (735715e6d31fb4356cc203824e0600b5f5dcb433) 2024-01-17 07:33:39 +00:00
24569d3416 2024-01-16 nightly release (28bb31e4a588f3fa198e927439fe09c871201aab) 2024-01-16 07:33:45 +00:00
cb0c26e8d3 2024-01-15 nightly release (19502ff6aaba0bce823989783d01b996469482f9) 2024-01-15 07:33:37 +00:00
6c531039fa 2024-01-14 nightly release (38c18f382577ee4a5587fd1876d2e2b546d004b8) 2024-01-14 07:33:30 +00:00
aa962d8943 2024-01-13 nightly release (96163eb010d233f97f114257ac1066def0164769) 2024-01-13 07:33:29 +00:00
ff10016dc5 2024-01-12 nightly release (b62ba82cdc2123d5542b18c035d52d28aee5c01a) 2024-01-12 07:33:40 +00:00
1beb432db5 2024-01-11 nightly release (ca23c56efcda3a0037252272a88b78936a5a9187) 2024-01-11 07:34:37 +00:00
f8e4c22ee2 2024-01-10 nightly release (8bcdde5058658cc193c94a7f1eb16660553dc35a) 2024-01-10 07:33:36 +00:00
03969cb2d2 2024-01-09 nightly release (428807f9bcd9bb32e0369c6b9c6f12fa4a4080e9) 2024-01-09 07:33:44 +00:00
da46ac2bbe 2024-01-08 nightly release (57491d2046b7ddcdf5588dea3cc1dee6c1eb366b) 2024-01-08 07:33:33 +00:00
2f05263756 2024-01-07 nightly release (95041829c8a76755d22df9bd711f25781e57e223) 2024-01-07 07:33:39 +00:00
98e5582aab 2024-01-06 nightly release (ff0f79d3c7aff0f9dd83b3a48d09a61ac8e82621) 2024-01-06 07:34:01 +00:00
f1655ac7ae 2024-01-05 nightly release (39f885331394e6baea6220f7e22bf1cda17bc361) 2024-01-05 07:33:34 +00:00
b99446db6b 2024-01-04 nightly release (e2359f72c82a14a1e2c6f036528fa9418227eba3) 2024-01-04 07:33:30 +00:00
804969c7ad 2024-01-03 nightly release (ca4df16fddc79b816021dc863f26056559dcf5bc) 2024-01-03 07:33:41 +00:00
a87500edd6 2024-01-02 nightly release (1ed8efa9b35328df6f0e8dbfd27578dcfde58e60) 2024-01-02 07:33:36 +00:00
7003edfbb4 2024-01-01 nightly release (fc5fda14bcc41008e5610bf39c53eb066933ea4e) 2024-01-01 07:33:30 +00:00
b41958165d 2023-12-31 nightly release (4bfaa6bc250f5ff5702703ea237f578a15bbe3b6) 2023-12-31 07:33:41 +00:00
534a8bd9e7 2023-12-30 nightly release (97891b184c12763f335fbe1ff63fab843edafab5) 2023-12-30 07:33:34 +00:00
7d163a9861 2023-12-29 nightly release (ef94499ad7ff40fee8aa230d71cd109570b74405) 2023-12-29 07:33:30 +00:00
ef28de986b 2023-12-28 nightly release (6375eb15efa1273514695e468f68963feedc0067) 2023-12-28 07:33:31 +00:00
50f7a03676 2023-12-27 nightly release (9c3ae37fc453505f5e437d1edadefdb278c2c39c) 2023-12-27 07:33:33 +00:00
eb8dedaa36 2023-12-26 nightly release (f6dfbffb3bb46ada6fe66b5da4f989f9d4d69b3c) 2023-12-26 07:33:46 +00:00
b68f93b094 2023-12-25 nightly release (36dccc2aba61a2637aa5d42f38b6fd1fe10dcbdc) 2023-12-25 07:33:40 +00:00
1ed8e26791 2023-12-24 nightly release (6c419a0efdcfa8e262582795144102051b527f62) 2023-12-24 07:33:26 +00:00
c70de4e370 2023-12-23 nightly release (84b2a323594bc7c4b47d61223b3f6466fe054416) 2023-12-23 07:33:50 +00:00
b6723b1317 2023-12-22 nightly release (b47aa69685aa6e561d3ba0edaff84b7833b98a82) 2023-12-22 07:33:29 +00:00
9a70b79cdc 2023-12-21 nightly release (f2c1fb3ee40012ab17a0548dcbff509d6b1dbf39) 2023-12-21 07:37:07 +00:00
1ee7950847 2023-12-20 nightly release (3747aca49a39479c2c5e223b91369db5bd339cdf) 2023-12-20 07:33:30 +00:00
ba4c18f527 2023-12-19 nightly release (9dda4b20a0dcc4786a130c12fc3e4a6a1ecf23d8) 2023-12-19 07:33:30 +00:00
ad2706c6cd 2023-12-18 nightly release (87ea6fb84471c09795672de542622515f81af3d7) 2023-12-18 07:33:27 +00:00
a2940cd437 2023-12-17 nightly release (87ea6fb84471c09795672de542622515f81af3d7) 2023-12-17 07:33:25 +00:00
8bea527b1a 2023-12-16 nightly release (e3aefe297050e197ff3f36f555a134a0e61ffc9c) 2023-12-16 07:33:34 +00:00
a846296964 2023-12-15 nightly release (9056903b098bb9190aa7d08caf5dbf549c5ada3a) 2023-12-15 07:33:35 +00:00
41dd4009c9 2023-12-14 nightly release (f5458f8f00006e7ba25731de42d651c808ccd8eb) 2023-12-14 07:33:49 +00:00
f13a21cce5 2023-12-13 nightly release (0dad85b402c2068c76a61d7c1ddcb60767ca1ef7) 2023-12-13 07:33:46 +00:00
935bfdac27 2023-12-12 nightly release (fbb744fd496c9ee85bcb68e2ba956753e61f6f88) 2023-12-12 07:33:32 +00:00
2cf75d28fe 2023-12-11 nightly release (fe01605830145b5aa204120b90361021a2952ac1) 2023-12-11 07:33:52 +00:00
5da0a5dcb6 2023-12-10 nightly release (4eb5838e184d7f5a795498d32bdde17f0088350f) 2023-12-10 07:33:41 +00:00
7cbcaabb5f 2023-12-09 nightly release (2ed47fecc5b9c526be9cc3c9bab93ca1fdb81547) 2023-12-09 07:33:30 +00:00
742864de52 2023-12-08 nightly release (9521331ba5d081a27b92eea50e42ed5da3dd973c) 2023-12-08 07:33:40 +00:00
424d4406cb 2023-12-07 nightly release (7ec145bfed9813599a0a9dcacbc7aa881626af79) 2023-12-07 07:33:47 +00:00
01557064c0 2023-12-06 nightly release (a548e805364b01554c5e48553f6c779d0973f498) 2023-12-06 07:33:55 +00:00
f87b94dcdc 2023-12-05 nightly release (7843df60e41f856edb148bbcbb5b9aee8292db74) 2023-12-05 07:33:43 +00:00
a111e45dfe 2023-12-04 nightly release (3fbfa8cd0a5cefadb3f116c5cd0d60e96ab8c99e) 2023-12-04 07:33:35 +00:00
6fc9d89863 2023-12-03 nightly release (3a2e2044cd36c1c300039aa915863b3e74df396b) 2023-12-03 07:33:48 +00:00
d2edc8ce7c 2023-12-02 nightly release (0fef82b3dfb4a5da1555a3c046950594b83e2898) 2023-12-02 07:33:24 +00:00
56a830e765 2023-12-01 nightly release (9267ab903200ed2ba548de3fa8a7e59a972cf68c) 2023-12-01 07:33:33 +00:00
ef73b5c9a8 2023-11-30 nightly release (f1fe0b685c4b93a684f0461a7a8f331e9dd17506) 2023-11-30 07:33:31 +00:00
95cc39e7d6 2023-11-29 nightly release (48820c928ce1822565821db3e73d4ee79a2508a1) 2023-11-29 07:33:54 +00:00
5ae273f939 2023-11-28 nightly release (11f11e95df9c205d427fe4dd7e63c9adb91ea03f) 2023-11-28 07:33:39 +00:00
b2f25d6342 2023-11-27 nightly release (624f2025229312bffd725775760dc9b147cc32d8) 2023-11-27 07:33:45 +00:00
df0c1b3a93 2023-11-26 nightly release (d37c4c69954ad7bdccca96854105c48e93d4587e) 2023-11-26 07:33:34 +00:00
794fd233b4 2023-11-25 nightly release (0f5e24bda9450a89ba56d2fdd471f56d97fe4546) 2023-11-25 07:33:36 +00:00
88ca0cc13d 2023-11-24 nightly release (dad3cc4d026794ad3ec309f7ae38e9c3798ce34f) 2023-11-24 07:33:31 +00:00
7f6282544f 2023-11-23 nightly release (b27565ad7d07baed98df50b05f108e209a6f4755) 2023-11-23 07:33:39 +00:00
3164682468 2023-11-22 nightly release (e0ec71deab2aedd6d44f4ea3e03b52bdaf5db3da) 2023-11-22 07:33:47 +00:00
8b7f52e025 2023-11-21 nightly release (18e1a37c4e637370ad3ceee91cecffcfeb4b79b6) 2023-11-21 07:33:34 +00:00
53233b86d5 2023-11-20 nightly release (7963aaac4157c961c1d54033d1f2515d0c987360) 2023-11-20 07:33:50 +00:00
6f045ad045 2023-11-19 nightly release (870539670aff386d66b190b4749316e21d2ae56e) 2023-11-19 07:33:31 +00:00
07c9b95f45 2023-11-18 nightly release (5e307417548374bb40d754518d324efa5359e8aa) 2023-11-18 07:33:37 +00:00
0603dcb449 2023-11-17 nightly release (e8ee14292e83f065c9baf0530de17759134091ee) 2023-11-17 07:33:49 +00:00
690c805c8b 2023-11-16 nightly release (a3b859fc673515f74d103494e61b432c9cc9009f) 2023-11-16 07:33:45 +00:00
a5a404865c 2023-11-15 nightly release (6f4409073f9fad32016f18b3b083f959d7600a2b) 2023-11-15 07:34:19 +00:00
ec2f8fd2f1 2023-11-14 nightly release (ffc3731dc477c92c1daa764f55bab1692c6a6361) 2023-11-14 07:33:40 +00:00
a45a8bf9e7 2023-11-13 nightly release (ef49f61f1909c2feb717023a6b55d87ac9c70a04) 2023-11-13 07:33:54 +00:00
63a5a14da9 2023-11-12 nightly release (ef49f61f1909c2feb717023a6b55d87ac9c70a04) 2023-11-12 07:34:05 +00:00
f40306d6c4 2023-11-11 nightly release (ef49f61f1909c2feb717023a6b55d87ac9c70a04) 2023-11-11 07:33:22 +00:00
edbf22fa03 2023-11-10 nightly release (265d6aac0b71b917d6e36c5dd65c22f61644b715) 2023-11-10 07:33:54 +00:00
2c3ba6926e 2023-11-09 nightly release (fbf7866ac98258a8130e14de3021d3160bc28af3) 2023-11-09 07:33:27 +00:00
4060c20449 2023-11-08 nightly release (aa376e31fdc8aacc6bfe1de5f6bff1d5f4fad136) 2023-11-08 07:33:33 +00:00
291abc63c0 2023-11-07 nightly release (10a829b85d721a76ba436f2416d2d802aab6e9e0) 2023-11-07 07:33:58 +00:00
a04dd794ad 2023-11-06 nightly release (bd9be877e4459d7889e5e3c8051caaffdfe21c85) 2023-11-06 07:34:04 +00:00
2d7dd2e800 2023-11-05 nightly release (64f326097be8ac66ff057365f3bed2d64c697563) 2023-11-05 07:33:37 +00:00
a89fef7184 2023-11-04 nightly release (fb044e2b1783854da105c7166becb8cc37ac96c4) 2023-11-04 07:34:00 +00:00
fd56aa0dae 2023-11-03 nightly release (4a17693d193a8b23109ac3129e5cde92babfe191) 2023-11-03 07:34:11 +00:00
d2c3aa1fde 2023-11-02 nightly release (59869903b3a54acb3ac3a93470fc595d1de3fa7a) 2023-11-02 07:33:53 +00:00
e844d7ab04 2023-11-01 nightly release (748c1a1d81400cbb067c0e15c3769e137cce57f4) 2023-11-01 07:33:58 +00:00
7d93922ea8 2023-10-31 nightly release (2f09da3a21a1a49425424715ea3b3f4131392334) 2023-10-31 07:33:50 +00:00
07cc1132a9 2023-10-30 nightly release (919c9b713e65aa1489123259a0ce7e79322d4d9d) 2023-10-30 07:33:51 +00:00
0a16ad0f88 2023-10-29 nightly release (f5088d2e45787094e201fe82677c399ce456ef71) 2023-10-29 07:33:46 +00:00
c0e43d4625 2023-10-28 nightly release (31f605344f255faaef0aede0f98483f4cb09f072) 2023-10-28 07:33:53 +00:00
525a926aaa 2023-10-27 nightly release (c84dbd2c0393fed3e3d98030c85c30fbbfdc7c3e) 2023-10-27 07:34:11 +00:00
bf9fd89f63 2023-10-26 nightly release (2aaa7e542cb3b217e19284d10d0c0ae1e2df202b) 2023-10-26 07:34:07 +00:00
e6efc2915b 2023-10-25 nightly release (6e2dfb360b310a8676e96caa6550be083d72bd96) 2023-10-25 07:34:13 +00:00
a422515e75 2023-10-24 nightly release (0e0f6a248db4ff054655ea405211dddc8e7ab817) 2023-10-24 07:34:06 +00:00
88eb6bbb1a 2023-10-23 nightly release (c65c0682b19ed479ea66653fc0457958a3e2c59c) 2023-10-23 07:33:55 +00:00
f468e74875 2023-10-22 nightly release (bf01a7b023c1ce4deb6316d25eadc1791807e88d) 2023-10-22 07:33:53 +00:00
147ac6b312 2023-10-21 nightly release (c84c86f018aea9aa9065ba3d57be1fc9fec51f5a) 2023-10-21 07:33:47 +00:00
6ffe31abca 2023-10-20 nightly release (e24fdfa1774f2bb008865fe991458b51e2bfba1d) 2023-10-20 07:34:06 +00:00
707b7b8613 2023-10-19 nightly release (e3463fe4ca5c43542e0d01814d2a1e13fa7769b3) 2023-10-19 07:34:03 +00:00
8aa40192b2 2023-10-18 nightly release (543a763cd8b433fc5740ce2b9db15b98e83ed9c2) 2023-10-18 07:33:58 +00:00
d902c353e9 2023-10-17 nightly release (013b51f8cc6f973d85c5adb36d5c110b7d42c7a2) 2023-10-17 07:34:05 +00:00
6c94bfc7da 2023-10-16 nightly release (4a388e70f2c7fedcdef598fb2144cc593452f04d) 2023-10-16 07:34:06 +00:00
abcc3fadc8 2023-10-15 nightly release (48989bc820d4dfbc0d23ce6f4a3e3e7495f5b315) 2023-10-15 07:33:47 +00:00
2438ac174d 2023-10-14 nightly release (625a3b1a428a8fa844090a87161b346b6d59075c) 2023-10-14 07:34:06 +00:00
85ee879b6b 2023-10-13 nightly release (a2c17a2b00f7c41866bbde28d33b8c50e5632e01) 2023-10-13 07:33:55 +00:00
996af0de18 2023-10-12 nightly release (9316c8b4bc5e449705e945a3069f35b690d70140) 2023-10-12 07:34:02 +00:00
e96ca539bc 2023-10-11 nightly release (02f6a8126e6453d1f5fba585fa7d552f0018263b) 2023-10-11 07:34:08 +00:00
c5b255161e 2023-10-10 nightly release (468a73f0e3527c52495c864c7d48dc26684f6c0b) 2023-10-10 07:33:56 +00:00
97287ff394 2023-10-09 nightly release (92fea5ae3f5307b8ebf5e9cb123d971237f8bf03) 2023-10-09 07:33:57 +00:00
f90c2af43e 2023-10-08 nightly release (459cef86492cfcfb1ed4136c5d4e5002c1c647a3) 2023-10-08 07:33:47 +00:00
8fe3c302f2 2023-10-07 nightly release (90bf6e3938050fded2dfc49bae9e3207c7f00e04) 2023-10-07 07:34:05 +00:00
20217d1426 2023-10-06 nightly release (11047be10e0767721f3fcb8f3a4b412d1c4834a8) 2023-10-06 07:33:40 +00:00
439cba9277 2023-10-05 nightly release (62cad5b5b0f921e3822ec25b6d7ea4343f4cab21) 2023-10-05 07:34:00 +00:00
56af607c04 2023-10-04 nightly release (510ec7e3c539dfed49df587d09e8a0a87e187201) 2023-10-04 07:34:00 +00:00
4e30fa8231 2023-10-03 nightly release (f7909cb947727195a9c55adaea2f374d0374d84b) 2023-10-03 07:33:58 +00:00
4dae8b4963 2023-10-02 nightly release (06464a347754ef764c90948a74428c0bb8daf9dd) 2023-10-02 07:34:03 +00:00
8d78e808f9 2023-10-01 nightly release (2bcae75513e56bcc12494636b33f31ebd9c2548e) 2023-10-01 07:34:04 +00:00
e6fa795672 2023-09-30 nightly release (6b84658433861a68459adb67b3468a9eb064f0e3) 2023-09-30 07:34:12 +00:00
496a17caec 2023-09-29 nightly release (3dc479e70b3d41dd5b09e9cfef8f5a993c05626e) 2023-09-29 07:34:22 +00:00
fecde478ac 2023-09-28 nightly release (75462fd87024bfe9fb79f4c46ab689bec227caa7) 2023-09-28 07:33:53 +00:00
d7520d8668 2023-09-27 nightly release (869226bf947bad0c4ba740c7b56ffe38acdddf52) 2023-09-27 07:34:04 +00:00
ab61acc20c 2023-09-26 nightly release (ac60638c6c74149f05c7980f571afa6fe0661b0c) 2023-09-26 07:33:56 +00:00
cc697537b0 2023-09-25 nightly release (12cd776d902dea1ee3f0ef7980bea62ff64096d2) 2023-09-25 07:33:54 +00:00
24d07d104b 2023-09-24 nightly release (dee100945eec2285943433e63b0670140eed0d1f) 2023-09-24 07:33:49 +00:00
5d97502dc8 2023-09-23 nightly release (691f8ca4f4108d1c22403d9ef6688e04077d28b4) 2023-09-23 07:33:50 +00:00
90c406a3a1 2023-09-22 nightly release (8856c1628e8ddb3fe3bd51ed8cfef5c02ad0a609) 2023-09-22 07:34:30 +00:00
d8fd7f96b9 2023-09-21 nightly release (55685d57c004f250118fcccc4e99ae883e037e2d) 2023-09-21 07:34:27 +00:00
00ae5fa311 2023-09-20 nightly release (1b3e5b53f336e782d6706eb6e61ec363f2fb2c30) 2023-09-20 07:34:02 +00:00
8fd241588a 2023-09-19 nightly release (54c28c564f0f4da174358312a026398ebca5337c) 2023-09-19 16:20:32 +00:00
4d1773d0c5 2023-09-19 nightly release (98208e51603a27e4b88d933a7c7edc18aada4b9e) 2023-09-19 07:34:08 +00:00
ba087c0903 2023-09-18 nightly release (9e86a093e4c165e093cba38f88ceda97f5b5e3af) 2023-09-18 07:34:06 +00:00
0de25554e9 2023-09-17 nightly release (d860313903f21c26d10c2bdd3a9482466255b001) 2023-09-17 07:33:46 +00:00
78c95e1741 2023-09-16 nightly release (b904432e82933ebbd53fd29910df532f15838176) 2023-09-16 07:33:56 +00:00
4a4af8fb1c 2023-09-15 nightly release (bf5622e9650c8dab77ccabc2fffe600bbdfc0b5b) 2023-09-15 07:33:48 +00:00
5c903fb12c 2023-09-14 nightly release (e066056414aef696265e14bceb54392d4965da99) 2023-09-14 07:34:04 +00:00
2baa4c4928 2023-09-13 nightly release (e066056414aef696265e14bceb54392d4965da99) 2023-09-13 07:34:07 +00:00
7b14f0ff8f 2023-09-12 nightly release (8025b193a966a6d8e3afc9c03a54e577bc04eb3d) 2023-09-12 07:34:01 +00:00
8ef4b6af4e 2023-09-11 nightly release (8ff00360a4daab7848307a9a0b1c81b1da873d0c) 2023-09-11 07:33:55 +00:00
3316374d14 2023-09-10 nightly release (8ff00360a4daab7848307a9a0b1c81b1da873d0c) 2023-09-10 07:33:53 +00:00
11d2c766f1 2023-09-09 nightly release (d4230e55748c66c72e7a17b1cd08540b742b20a5) 2023-09-09 07:34:00 +00:00
806d1a871d 2023-09-08 nightly release (4965fffedad8f7f4d333a384d3b046b029395de5) 2023-09-08 07:33:56 +00:00
0200b1106c 2023-09-07 nightly release (35974234c4f811e28a4a74852d2245ec4d044c2f) 2023-09-07 07:33:56 +00:00
a618118ba9 2023-09-06 nightly release (ce4967ad180bcdc1e89d1c0db4bf63dac8a44b6a) 2023-09-06 07:33:58 +00:00
9ea5b31c6f 2023-09-05 nightly release (51c2e22e94caf56ac89967093b274ac81c7ca9e2) 2023-09-05 07:34:17 +00:00
cf9eb00513 2023-09-04 nightly release (621463a3e6b488b2bff04e355a1abd9a4c5bb2cd) 2023-09-04 07:34:04 +00:00
ea7e229735 2023-09-03 nightly release (e5548f81956157e1fdb76cb52579bffe5915dee1) 2023-09-03 07:33:55 +00:00
753f5a11bf 2023-09-02 nightly release (4084d039b7a4b6e55ee6ca05f2789d7ed03b9d73) 2023-09-02 07:33:56 +00:00
73c794dadc 2023-09-01 nightly release (4a9c6f1b731e86b1d4fe31c6753ce7efdc522efa) 2023-09-01 07:33:43 +00:00
b5b99fe13b 2023-08-31 nightly release (0e4752bafc24755893bd1657c42d8937c275ce74) 2023-08-31 07:34:12 +00:00
b3874abf04 2023-08-30 nightly release (620d267ef30b199e0ba1b37407dcf8670448fb6a) 2023-08-30 07:34:16 +00:00
8c68466304 2023-08-29 nightly release (e68b3ad14f9598334a97c1aff15408e1d8f09002) 2023-08-29 07:34:27 +00:00
2c3aa09cde 2023-08-28 nightly release (138e2895d08a6517c5718b2a0118c1b23ff4664c) 2023-08-28 07:34:02 +00:00
f54acf0991 2023-08-27 nightly release (bad3f2db40ffa491181fc7df5dc310830326d9ec) 2023-08-27 07:33:51 +00:00
c0a66455c0 2023-08-26 nightly release (95cacb7fa97881b7e830d1ee0bcb4729b50632c0) 2023-08-26 07:33:53 +00:00
91bde862b2 2023-08-25 nightly release (e00bd8312440ad121cba8acc12935de4f1d947fc) 2023-08-25 07:34:11 +00:00
b48a2494be 2023-08-24 nightly release (2fcda650cf29301e86dd21a5ceabc0f31fa4e3d3) 2023-08-24 07:33:58 +00:00
62d3bf32fd 2023-08-23 nightly release (83517c8dba012b6b68eafe8f6296db97fe26fa3e) 2023-08-23 07:34:14 +00:00
1d3bf3da21 2023-08-22 nightly release (8ed169b1628285924e10fc98de53dbb75c92c43e) 2023-08-22 07:33:57 +00:00
a65b4aa3e4 2023-08-21 nightly release (11602ac564c0e3178b38a65e09be13644322d303) 2023-08-21 07:33:59 +00:00
4ce227bfb9 2023-08-20 nightly release (11602ac564c0e3178b38a65e09be13644322d303) 2023-08-20 07:33:50 +00:00
668af07501 2023-08-19 nightly release (3ddf30505f8f03bd98e6ff418d7389ba69d8043b) 2023-08-19 07:34:05 +00:00
bac60d8896 2023-08-18 nightly release (3c3874d623b2d2ddf7c666f099ae8d014c7dcca1) 2023-08-18 07:34:16 +00:00
3522f2a7b7 2023-08-17 nightly release (e9af315e02d42ca2075972212e1c5e644620901c) 2023-08-17 07:34:14 +00:00
3af011b858 2023-08-16 nightly release (6c0bba3dafde888777a07e395a6e731c1fa51c26) 2023-08-16 07:34:04 +00:00
e4d5143f8c 2023-08-15 nightly release (2624da638d989c902ef9e1a5cff6028ab816605c) 2023-08-15 07:33:49 +00:00
53551b5c87 2023-08-14 nightly release (2b1058c54273a73ed407f2a6495063e9ef18b54f) 2023-08-14 07:33:54 +00:00
3748ee4a8c 2023-08-13 nightly release (ddd2f682b974fa274771965266c2bc0786f1e747) 2023-08-13 07:34:05 +00:00
c9397a7bc8 2023-08-12 nightly release (5b04e9b6cea2be600e81d111a5e407296522ec8e) 2023-08-12 07:34:02 +00:00
422297f87f 2023-08-11 nightly release (4df84c3b4d93ea53c9ca169f32a0dc4619bee797) 2023-08-11 07:33:53 +00:00
a099ff75d3 2023-08-10 nightly release (dfd441a12cede6702d1fd160eb808778b62adae0) 2023-08-10 07:33:59 +00:00
abe3687720 2023-08-09 nightly release (6691413145b71f20221ae77cb2c5d98b2f3213eb) 2023-08-09 07:33:59 +00:00
c01a41cdec 2023-08-08 nightly release (5f551133dc6dc670705281eb3dcbb6ac0dba9a4b) 2023-08-08 07:33:38 +00:00
5e438d59cd 2023-08-07 nightly release (e35cb480f4df1cf440b8705c93546c1b15891a4b) 2023-08-07 07:33:37 +00:00
a8638d61c8 2023-08-06 nightly release (68cb854d73458a14684d584c25c22b17eb79dfca) 2023-08-06 07:34:09 +00:00
be75ecac1b 2023-08-05 nightly release (dc22b4fdb1b4af1f0b7b77a78b30237d337d7109) 2023-08-05 07:33:43 +00:00
4734e4d60f 2023-08-04 nightly release (aaa989c24451259aff4f0b70070bd7ab8380944d) 2023-08-04 07:33:55 +00:00
f89c73be3a 2023-08-03 nightly release (a6f7dd4707ac116c0f5fb5f44f42429f38d23ab4) 2023-08-03 07:33:39 +00:00
c89b169177 2023-08-02 nightly release (92cac6bf32afabed6de8551196fea1f81a27f65d) 2023-08-02 07:33:54 +00:00
1d1670186a 2023-08-01 nightly release (ceea08a986805030014fac203d5b2411e23ff091) 2023-08-01 07:33:46 +00:00
6298ac688f 2023-07-31 nightly release (3c70d4bda785106b7d55738befa36ff46c596068) 2023-07-31 07:33:55 +00:00
0ff243ff35 2023-07-30 nightly release (858ca65c8a3a8b730426690fcbdfb28e9626eda8) 2023-07-30 07:33:53 +00:00
b638df0afb 2023-07-29 nightly release (f160a972aa7ef2db508dbd233246f6dc61643d88) 2023-07-29 07:33:47 +00:00
eb5cb724fe 2023-07-28 nightly release (e31855d0d6cefe18ca4ee9f74b24d3ed5fbfcffb) 2023-07-28 07:34:14 +00:00
8a24a912a5 2023-07-27 nightly release (707aadeedd081714060e51cee279abaea6305a98) 2023-07-27 07:34:08 +00:00
964a13b3df 2023-07-26 nightly release (8d9c8897eddf53b01ce760ff9ae9ec9e4c2c08b5) 2023-07-26 07:33:43 +00:00
153afbda4b 2023-07-25 nightly release (98956c5320534cb66fd0dd69bc632122e16adba9) 2023-07-25 07:33:59 +00:00
ba1da8199b 2023-07-24 nightly release (54a673bdcf52a36603fcc56dceeef9f5afbd9e62) 2023-07-24 07:33:45 +00:00
a060bf3cf0 2023-07-23 nightly release (45e4706aff4cb92addda329576fcf9e4dc2e772c) 2023-07-23 07:33:38 +00:00
b5222f140d 2023-07-22 nightly release (0ad93a3d5684c2026bda8ff4ab7c72c6596a225b) 2023-07-22 07:33:35 +00:00
f228c8b8ca 2023-07-21 nightly release (a01a7329548e579ba894ac016670296cf96a6802) 2023-07-21 07:33:56 +00:00
a16c87a767 2023-07-20 nightly release (2e81cdc1ddbb07dead5b32a6fbf1514a118ac208) 2023-07-20 07:33:38 +00:00
82e03ad957 2023-07-19 nightly release (9c225c9b9a07eedaede9c27c74188181184fb022) 2023-07-19 07:33:53 +00:00
5e128c4fa1 2023-07-18 nightly release (ad6dad810e871da3ec9d19f1ec0f11a7b62fca03) 2023-07-18 07:33:49 +00:00
6ebf7bd6ab 2023-07-18 nightly release (ba00b0939ea82ec7607dfa8c0b4bd468f4f3bf31) 2023-07-18 00:03:13 -07:00
c437a4b1e0 2023-07-17 nightly release (93f852f201b93ca0c41b5cd861834d4f1f235ef7) 2023-07-17 00:03:38 -07:00
c69b6e5da6 2023-07-16 nightly release (e3c4f2fb59837808756f76c23f1fb29afa40ce9d) 2023-07-16 00:03:36 -07:00
6db8e8b9b7 2023-07-15 nightly release (028536646499abbb9cfce672a3ff7a91f1511e2c) 2023-07-15 00:03:16 -07:00
d257917ad4 2023-07-14 nightly release (a66f08d6265c9800ca00ee5f0a8a626f89e0374b) 2023-07-14 00:03:58 -07:00
fccac344df 2023-07-13 nightly release (0faf8ed49f9da63d1b5339f152586ffd7cde3e83) 2023-07-13 00:03:17 -07:00
e571f87e89 2023-07-12 nightly release (979f826015cbd2b353f02e93865a9b9a8877b414) 2023-07-12 08:10:34 -07:00
927dc66238 2023-07-11 nightly release (63d1fb21f56d9b91dd4080b04276d4cc461224fa) 2023-07-11 00:03:32 -07:00
69565763c8 2023-07-10 nightly release (54f33265dba0d0782febe8bf8029efb2d0b29ac1) 2023-07-10 00:03:45 -07:00
9b5a84f544 2023-07-09 nightly release (dd6c38cb596199d70bba76688c99ed919d77002d) 2023-07-09 00:03:30 -07:00
3a919e00b8 2023-07-08 nightly release (dbc22168008711f68775e9d5b159295527a9f108) 2023-07-08 00:03:20 -07:00
760dafbb05 2023-07-07 nightly release (a358a9262e4b8c7280d1817ac73f24a1bf383da6) 2023-07-07 00:03:28 -07:00
72404877d3 2023-07-06 nightly release (13763f58ad86fadf49ef7960d1836318e6480d36) 2023-07-06 00:03:23 -07:00
758c84d41f 2023-07-05 nightly release (ea4d5c45385233af6be36aa50a6945ee9c704b74) 2023-07-05 00:03:30 -07:00
e5472fd3c3 2023-07-04 nightly release (2a21469a77a53a066a299225a3d4ddd60693e7a6) 2023-07-04 00:03:21 -07:00
7682252cac 2023-07-03 nightly release (9f7ad25c987b8b69ff3a0c2aabd55a7c032de7d5) 2023-07-03 00:03:20 -07:00
d33f3a7547 2023-07-02 nightly release (707d265db2dc1eeb8a1b95bc70def5a1e5af7752) 2023-07-02 00:03:23 -07:00
bb3df0bb7c 2023-07-01 nightly release (1de1bea60d96c75403beaa13b1ce80d0ea6ccdbd) 2023-07-01 00:03:41 -07:00
dc72046b23 2023-06-30 nightly release (89decc3a10137838cf4f7400af034645d52684e0) 2023-06-30 00:03:23 -07:00
7bc858743e 2023-06-29 nightly release (998c07799f22a0bb63a39c84d15eae29778631f4) 2023-06-29 00:03:27 -07:00
94ca800459 2023-06-28 nightly release (28d42e66e418f655fdca45c53d4e09d095e7e182) 2023-06-28 00:03:30 -07:00
43ec335ff2 2023-06-27 nightly release (968b7b5e0f892f993c65f8a365fb2df99359f09c) 2023-06-27 00:03:56 -07:00
176a02ed90 2023-06-26 nightly release (58feefa4ede4779d339d76b78b0e0a3de7d47212) 2023-06-26 00:03:58 -07:00
3bebfdfbab 2023-06-25 nightly release (86e0eda18d3665b9db6ea075cc3586210f4116c3) 2023-06-25 00:03:35 -07:00
27b3861096 2023-06-24 nightly release (63f66d19ea8973563edbb48c8887d2e6b4931408) 2023-06-24 00:03:56 -07:00
ad724c83fb 2023-06-23 nightly release (5a97c947c69dd248fb60eba6c8d1913720dfe2af) 2023-06-23 00:04:57 -07:00
d46b579c85 2023-06-22 nightly release (58d11159bd9bdb4db70901821bcae4ce13160284) 2023-06-22 00:03:25 -07:00
e4cf441a4b 2023-06-21 nightly release (f3c3d12efb363f61ca9d68ed9e55f345f1a7e388) 2023-06-21 00:05:18 -07:00
e928f55884 2023-06-20 nightly release (d4b85f3031b81ea9f0e53502ad3b831fb91ec39b) 2023-06-20 09:45:27 -07:00
2aa882f2ad 2023-06-20 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-20 00:03:38 -07:00
5beeb400ca 2023-06-19 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-19 00:03:41 -07:00
59c654a6ad 2023-06-18 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-18 00:03:48 -07:00
a522f9aedd 2023-06-17 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-17 00:04:09 -07:00
1b5af9c097 2023-06-16 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-16 00:03:22 -07:00
0d4f9aee90 2023-06-15 nightly release (2d745b95d723641e575027bd4e2fff612f61cc8f) 2023-06-15 00:03:37 -07:00
487d6c278b 2023-06-14 nightly release (876161983d353f7553755a58b927762f09c86966) 2023-06-14 00:03:21 -07:00
246b53d588 2023-06-13 nightly release (45104cb67f5e0591bc246edb71f6771f95317cb7) 2023-06-13 00:04:05 -07:00
8aee9489c9 2023-06-12 nightly release (8a744c31d3c5194b4850869a112d94912c1e08b4) 2023-06-12 00:03:26 -07:00
ec23ae5ad4 2023-06-11 nightly release (03101a227f6639d5a9ad628d1dc300f9f99a8812) 2023-06-11 00:03:16 -07:00
dd69d6251a 2023-06-10 nightly release (0496d70aa076143aabde9ee0a010dcccb882eaa9) 2023-06-10 00:03:43 -07:00
b6ab779111 2023-06-09 nightly release (4cc474dec4c55fc11ee92e7c9366946744e60cdd) 2023-06-09 00:03:55 -07:00
c1406a99df 2023-06-08 nightly release (d5142c52d3592e4a5777834be80b276ed1073012) 2023-06-08 00:03:58 -07:00
6226b7d098 2023-06-07 nightly release (428bff842dbeb4bbef245b7c4355f8c76a4bd1b3) 2023-06-07 00:04:54 -07:00
4d648e450b 2023-06-06 nightly release (872fdb329b75c832c2cd1314b3613e28289d8fac) 2023-06-06 00:09:17 -07:00
7a5da81822 2023-06-05 nightly release (881307abcfd8fd229fa521098597f4becb2d6c86) 2023-06-05 00:03:25 -07:00
810edae513 2023-06-04 nightly release (992bffe5a3f030ac75152fcda4bdc6c8d7539962) 2023-06-04 00:05:41 -07:00
7726721661 2023-06-03 nightly release (39b04370db85313efe23966d04499970a882415c) 2023-06-03 00:03:32 -07:00
52c7a761c5 2023-06-02 nightly release (1ca2e993af6fa6934fca35da6970308ce227ddc7) 2023-06-02 00:03:32 -07:00
a14be7981b 2023-06-01 nightly release (bebb8b7c1e6f3baf35c00d2a9265a285b4e439a8) 2023-06-01 00:03:57 -07:00
4855233864 2023-05-31 nightly release (e7cc41772d65010749beab7734d29e32d1a7b494) 2023-05-31 00:03:46 -07:00
9148727f45 2023-05-30 nightly release (0e72ada9bba2693e55fd7177ab4d2af826d7d15f) 2023-05-30 00:03:31 -07:00
4316d8495a 2023-05-29 nightly release (af1d437654aa7fd5aa4a5d30ae2f2e9af34c7765) 2023-05-29 00:03:35 -07:00
3dedcb31fc 2023-05-28 nightly release (c3ea8cc58beec343fef8ec69c409e0b83e60a8e9) 2023-05-28 00:03:43 -07:00
c914be2d44 2023-05-27 nightly release (26f53bb8b0dfeb633fef405595bd4f30ffbf437b) 2023-05-27 00:03:26 -07:00
10b46f7c7f 2023-05-26 nightly release (fb468b6792213e0d8e6221b3bb51e71fcadbed30) 2023-05-26 00:03:28 -07:00
eb2ef134b4 2023-05-25 nightly release (3ca068bc44440e780298d250f295d2b68a8a9ae3) 2023-05-25 00:03:47 -07:00
41917f7d92 2023-05-24 nightly release (45843c7f41374d6d0f76050febc72582a650b472) 2023-05-24 00:04:57 -07:00
981d4c2578 2023-05-23 nightly release (8cab7994a6e92b9b37e324be493c04e4660dc330) 2023-05-23 00:03:25 -07:00
871fc7bb76 2023-05-22 nightly release (e9a7115605ee5b6ae38ea5716a4abea5aa415333) 2023-05-22 00:03:31 -07:00
1c938577d8 2023-05-21 nightly release (9e8da7fb44d190677d0e455bd0a85053311c27e2) 2023-05-21 00:03:38 -07:00
aa43e0d245 2023-05-20 nightly release (0c6f409cdad073e8c64ef11b72c41d89ab7ee167) 2023-05-20 00:03:16 -07:00
61239df555 2023-05-19 nightly release (f66d5dd788b4f9f09790c705afe64f377624c621) 2023-05-19 00:03:32 -07:00
329bb2a33e 2023-05-18 nightly release (900ca4df595fbd7370534cec9d4a0f781667dfd0) 2023-05-18 00:03:41 -07:00
174d01bc93 2023-05-17 nightly release (41d668c9dcad40589609efab899131f0acd188f1) 2023-05-17 00:03:24 -07:00
ed0910596d 2023-05-16 nightly release (799ef7e501003ef988e23a724789c0dbbd304ebb) 2023-05-16 00:03:32 -07:00
f3e13d9567 2023-05-15 nightly release (7dd8e08817ee59c926922409062e25f30408469b) 2023-05-15 00:03:40 -07:00
7a20f535c0 2023-05-14 nightly release (674e52b0b913d7b7f733ce1e73a42cb383860d55) 2023-05-14 00:03:16 -07:00
d6e2903b44 2023-05-13 nightly release (387b369ee4d0d94b616254e26e43ab16a30d83f4) 2023-05-13 00:03:15 -07:00
1a3d3669ef 2023-05-12 nightly release (e98d762f21083775598e7c1d96b2b9f6b10ea9d4) 2023-05-12 00:03:39 -07:00
6166b3dd77 2023-05-11 nightly release (da02ccc60e225c3150e695ddf724799dac961806) 2023-05-11 00:03:31 -07:00
b204f65758 2023-05-10 nightly release (b004c0b3c6a1ee39ba0b512a00d95e7f83852556) 2023-05-10 00:03:45 -07:00
6cbfabc45f 2023-05-09 nightly release (75e4214f92059aa3ab2931e31ace63f598ebec25) 2023-05-09 00:05:18 -07:00
9a8c655956 2023-05-08 nightly release (7d0e4e2aa843ef5d73646f5b304914d2b65db93c) 2023-05-08 00:03:36 -07:00
3a5c9bb5c8 2023-05-07 nightly release (ca9f55f79d944672cb93157836f8ee92f54d2e10) 2023-05-07 00:03:25 -07:00
cf05864b32 2023-05-06 nightly release (f73973d789a14afe9fde4640c767f2da0b547076) 2023-05-06 00:14:18 -07:00
ccace360e0 2023-05-05 nightly release (bf52d570d9be0167501cd6a206b7e262e6d3860c) 2023-05-05 00:03:25 -07:00
1b6d6e98fe 2023-05-04 nightly release (9bc68fcd25798553e311d8562fe3a1c5a450feb3) 2023-05-04 00:03:34 -07:00
664ac1ebd2 2023-05-03 nightly release (771a9debbe8cc1bbc41e1f9b8759971ae20f09d2) 2023-05-03 00:03:41 -07:00
d97f26abcb 2023-05-02 nightly release (ff297223641ae336c421994a9d650bbb72798c0c) 2023-05-02 00:03:51 -07:00
f38a04a5c5 2023-05-01 nightly release (e779a30d5097714acea011da6a554e43810b5d0e) 2023-05-01 00:03:22 -07:00
572ef38a2f 2023-04-30 nightly release (6c934a89a725fd5d171b52a37cbc58e198edf4d6) 2023-04-30 00:03:28 -07:00
6d1cfc04be 2023-04-29 nightly release (3d55bce3bf5fe5cb0d654ecb48100eeac1d2dfa0) 2023-04-29 00:03:24 -07:00
4fecad50d3 2023-04-28 nightly release (54c0edf6da01c5ded74fe67e834b3c6869d5e5f0) 2023-04-28 00:03:30 -07:00
521b386e57 2023-04-27 nightly release (e0bf51d3bf2cf4c8272708f78b72572d81efd0a2) 2023-04-27 00:03:25 -07:00
a977a12ca5 2023-04-26 nightly release (0b1b063158e35be06e488e29a302ef28932b083b) 2023-04-26 00:04:52 -07:00
015e4ddb72 2023-04-25 nightly release (ecd2c71871f8bf9a9fa4a4d875609b0922061a6f) 2023-04-25 00:03:17 -07:00
287a30305a 2023-04-24 nightly release (48d112c431fc988de5473d3992f6c72ec5f02a6b) 2023-04-24 00:03:20 -07:00
1b3ac4a14b 2023-04-23 nightly release (ebd47b0eec9af20b238a72860dfc08c0bf250fdb) 2023-04-23 00:05:36 -07:00
f85810f9fc 2023-04-22 nightly release (ca8625f45662e5d451d1da928b223e47d79ce5fa) 2023-04-22 00:03:25 -07:00
8aa785fa2b 2023-04-21 nightly release (51742a467d1714afb6715af92c4459160eb71fb4) 2023-04-21 00:03:24 -07:00
aef7b6b424 2023-04-20 nightly release (95ca8e589d8aaa614619e4dcd89c569cf0ad8dea) 2023-04-20 00:03:30 -07:00
b206fd2f6a 2023-04-19 nightly release (8e69879209330089fdd8f2cd48769dc467c7d036) 2023-04-19 00:03:07 -07:00
ffa6fefab6 2023-04-18 nightly release (436edc5ac3de4c4e677ed136473bafe72002cc93) 2023-04-18 00:03:24 -07:00
584d16f2f2 2023-04-17 nightly release (efc3887ea508b3cfd94603fd8afe4e8cf6dce7b7) 2023-04-17 00:03:23 -07:00
fea73cb39e 2023-04-16 nightly release (039faf0dbf75c8e6bb3c097c1b8d257eebb74c45) 2023-04-16 00:03:27 -07:00
ba53e304d4 2023-04-15 nightly release (e9be0b0fb93c271ba3deb31b5ccc8f4c4f602ef9) 2023-04-15 00:03:09 -07:00
30a9757c80 2023-04-14 nightly release (cd078d376e833c4da3b8a6b03447614501178e9b) 2023-04-14 00:03:21 -07:00
3e5bc3f6bb 2023-04-13 nightly release (ccc9a3d726b1f249daffa442460b70fb50a0ee2e) 2023-04-13 00:03:28 -07:00
84ec5d9b1f 2023-04-12 nightly release (6ff32b5575abf07ebee74c9e17fc5113d5dd0652) 2023-04-12 00:03:28 -07:00
61007ca987 2023-04-11 nightly release (d4ce045cfcf2d7cacd0b90d7ea625f6fa82d566b) 2023-04-11 00:03:18 -07:00
b8423c1370 2023-04-10 nightly release (96fb64a1599f3e1679baa9db16f71c8a854577c7) 2023-04-10 00:03:15 -07:00
e60d9b7507 2023-04-09 nightly release (54b168484d8463a6f38737751ab5ac78777fa6a6) 2023-04-09 00:03:15 -07:00
f3a098a55a 2023-04-08 nightly release (d255c8e1ad332a2ded0ff1595b63d50034c473ee) 2023-04-08 00:03:14 -07:00
83b1c515f4 2023-04-07 nightly release (616f50da3aa8c0616cf93f1d92f31044aa5123f8) 2023-04-07 00:03:22 -07:00
a86aae1504 2023-04-06 nightly release (9c7b03d51e097c40abdb9ef55ce79b98d7f1fd48) 2023-04-06 00:03:13 -07:00
73b995ec2d 2023-04-05 nightly release (2d9b2bcfba7eaf9aa30e05df4ff51fa9f3241e9e) 2023-04-05 00:04:29 -07:00
5fa1402662 2023-04-04 nightly release (c5963b779281e2b7dfba1b2fc0e6628c1622f7e4) 2023-04-04 00:03:17 -07:00
3b8052d979 2023-04-03 nightly release (5d62d1255778b53ece16c79fd842cd42eca31f93) 2023-04-03 00:03:10 -07:00
5775e1c1e6 2023-04-02 nightly release (7fcff01b50d6a3a94a181a5b452455e8a82efad3) 2023-04-02 00:03:04 -07:00
63f61a66b0 2023-04-01 nightly release (57c6f3fe90bccfed878b301c2d61bf42270c5b52) 2023-04-01 00:03:04 -07:00
f08dd7d0f7 2023-03-31 nightly release (3dc440527817b065fa5cb652467921c9514cdd1c) 2023-03-31 00:03:21 -07:00
f6aae5043e 2023-03-30 nightly release (af0264ae084359c8042194f5e15070aafb430677) 2023-03-30 00:03:19 -07:00
f1f0a4f064 2023-03-29 nightly release (91166ef7e75fc5fb94fb56ec6679a1744cf0f28c) 2023-03-29 00:03:21 -07:00
81558034b3 2023-03-28 nightly release (c1a6dde79e5517ba3f71dcd4b9ff8f00e0cd881d) 2023-03-28 00:03:26 -07:00
cb970ea2e5 2023-03-27 nightly release (542fb0b1fad6bf61929df16e2133e9a296820f08) 2023-03-27 00:03:29 -07:00
c9ed10c377 2023-03-26 nightly release (dc45ad702466e4a73d972d3e1dc0c12ed80d2eef) 2023-03-26 00:03:18 -07:00
13581257b1 2023-03-25 nightly release (2e8086b0a157dbe922a588fed15edc31c8faf802) 2023-03-25 00:03:16 -07:00
333a93ff4d 2023-03-24 nightly release (763c5a33e70113253e5861ee6d185ea343acf286) 2023-03-24 00:03:19 -07:00
d3b915155a 2023-03-23 nightly release (c5b65032aca9af04ce9d261bc29ff7f063b00748) 2023-03-23 00:03:18 -07:00
00891e96e8 2023-03-22 nightly release (f9a9a888128625969be1ff6effca9df74a55432c) 2023-03-22 00:03:31 -07:00
8c8491fe4c 2023-03-21 nightly release (d2f57229969d1758369a15a71740a94f5baa2cd6) 2023-03-21 00:03:32 -07:00
4d3baf684b 2023-03-20 nightly release (5471621497ea0068bd453d251bf5ec2621e8119f) 2023-03-20 00:03:23 -07:00
422a1d3b9a 2023-03-19 nightly release (c1214ce5c26fce541a920bdf9917c9ca9f63ecb0) 2023-03-19 00:03:16 -07:00
21b32e8b01 2023-03-18 nightly release (b132220309add1748f4548b88d7a947c19322ff9) 2023-03-18 00:03:06 -07:00
fb9db7dccf 2023-03-17 nightly release (cbd3df93c4a4b5d8a3244be9fbfa68e2b06bb836) 2023-03-17 00:03:19 -07:00
e262e404bd 2023-03-16 nightly release (3606f593665f2dc3ad0877db4f5df69a6c31cf2f) 2023-03-16 00:03:27 -07:00
4f7cbd0a3a 2023-03-15 nightly release (c6a82e433924b4d36fd571d36ce363cb1c622c76) 2023-03-15 00:03:27 -07:00
b5e03345ec 2023-03-14 nightly release (2cc8368af369c6c3d930ca9ad85c7124e4809509) 2023-03-14 00:03:11 -07:00
eb17fc7b11 2023-03-13 nightly release (be220690d9d8b7e8d58b81694c6cbf0958f94845) 2023-03-13 00:03:17 -07:00
1238ae3e39 2023-03-12 nightly release (82d3d053b9cf439a1970d788a7809cdc30142626) 2023-03-12 00:03:14 -08:00
cf353b03fd 2023-03-11 nightly release (f3fc4d035d8fc1ed560ade0c8b8eff6be1c95972) 2023-03-11 00:03:08 -08:00
c54ce93106 2023-03-10 nightly release (065de4301200117c65607b213322cbde800b50f8) 2023-03-10 00:03:08 -08:00
820eb13ecf 2023-03-09 nightly release (fe05266fda4f908130dea7cbac37e9264c0429a2) 2023-03-09 00:03:09 -08:00
47cb44946c 2023-03-08 nightly release (3a4275278b265f02e9d5fa336074d27b908dd1ea) 2023-03-08 00:03:24 -08:00
24e305c3c6 2023-03-07 nightly release (7038458c5b47eda626e9d535f792f1f4611c5675) 2023-03-07 00:03:12 -08:00
d7e5a324d5 2023-03-06 nightly release (02792ff16f4934ccd837c28df437de460273432c) 2023-03-06 00:03:05 -08:00
98e5a7eaf1 2023-03-05 nightly release (af8dbe7ec2b32492589bad1eef4ed72be81646f9) 2023-03-05 00:03:17 -08:00
f1d60f5872 2023-03-04 nightly release (43dd043ea79cd427aa40f1910da63da96e8363ec) 2023-03-04 00:03:07 -08:00
a9a8c5ea9e 2023-03-03 nightly release (53c9866ffa8baa7b7070901ce74704e0771bb05b) 2023-03-03 00:03:07 -08:00
5bdd05400a 2023-03-02 nightly release (62b775583f008effc510e5f5c3e2b30a85a53465) 2023-03-02 00:03:20 -08:00
f09ed1d3c2 2023-03-01 nightly release (21b1134be690bdf338689ed0da287e772e8fd859) 2023-03-01 00:03:19 -08:00
341911ad3e 2023-02-28 nightly release (58648822b640dc11d196f7060d968b2c38fb3351) 2023-02-28 00:03:13 -08:00
1e2e6e78c6 2023-02-27 nightly release (6624a73837bee5b59f01bdd4d2f0d5619bd3ab1f) 2023-02-27 00:03:21 -08:00
3313e86c03 2023-02-26 nightly release (a88bfc60c75d22a047f03787aaa43130c6a8d6d9) 2023-02-26 00:03:10 -08:00
f64b61f58c 2023-02-25 nightly release (f5cf1a8b434a39576f8f49f4ebb32741de5cb9c1) 2023-02-25 00:03:17 -08:00
dbde255a2c 2023-02-24 nightly release (6665fe9e65548ba01cb232b965af4d64a49fb46b) 2023-02-24 00:03:19 -08:00
2a2c29b984 2023-02-23 nightly release (cece63f1976464f3c48b5563d8a59888566d0897) 2023-02-23 12:55:17 -08:00
5a6cf2804b 2023-02-20 nightly release (286d821e61e29de8fd6c81abd78b84fea5a44c0b) 2023-02-20 00:03:06 -08:00
66f63bd56f 2023-02-19 nightly release (a17a7ccc92144452e0fe51e02f21f1f1ba88118a) 2023-02-19 00:03:06 -08:00
844f9f697e 2023-02-18 nightly release (e44737e61975c49b20fa176e77c012b626c5f331) 2023-02-18 00:08:44 -08:00
fe66daafaf 2023-02-17 nightly release (766d51b496bb85feab4b0f23977b4ffc0a0e354b) 2023-02-17 12:30:53 -08:00
9c72352263 2023-02-17 nightly release (5d1e9fd214fcd8bbc95e9f8dea69df8dd17bf92e) 2023-02-17 00:03:19 -08:00
5fe2e6ac60 2023-02-16 nightly release (07bc6b958768af3462095eea7af2cbc7b395b972) 2023-02-16 00:03:03 -08:00
de1114554c 2023-02-15 nightly release (c10acb834d73f399589ce08a9fea1e4520a8c02c) 2023-02-15 00:03:08 -08:00
e67dc17b06 2023-02-14 nightly release (d567df9f36094e1efa89d11599067773f45032c8) 2023-02-14 00:03:15 -08:00
8397282212 2023-02-13 nightly release (6fadd5e94a273d62ac3f245a7615f818b6a33500) 2023-02-13 00:03:07 -08:00
52df37a117 2023-02-12 nightly release (67d979098567fd61dfdb918d837426535eb9883b) 2023-02-12 00:03:02 -08:00
00a8867aba 2023-02-11 nightly release (948cd61afc90e1b9067b35d4aec4ec74deeb73f6) 2023-02-11 00:03:09 -08:00
54ad459fb0 2023-02-10 nightly release (336d9354d655e52c575d070fc53eaccbebc94cd2) 2023-02-10 00:03:18 -08:00
34d2472fc0 2023-02-09 nightly release (cb715c26e270759e3955968fbd3d763d51b0b83d) 2023-02-09 00:03:07 -08:00
cb47373166 2023-02-08 nightly release (61ecaf1dd40ba93dde11249bd8ee64274098d3d7) 2023-02-08 00:03:11 -08:00
1530b798ce 2023-02-07 nightly release (d493bc8a764f65c140e73d7a6e9d20abe519a9b0) 2023-02-07 00:03:12 -08:00
0a73b08b9f 2023-02-06 nightly release (9350bcf6ae9d646389a0a4345c48275d4f9e4d1a) 2023-02-06 00:03:02 -08:00
6a03ad6a34 2023-02-05 nightly release (1d53123f44e2d5f08e4605af353b7d32b62346ae) 2023-02-05 00:03:01 -08:00
3b05e02983 2023-02-04 nightly release (adde6fd25eec0bd5ebe304ca08a9d57ba64d10d5) 2023-02-04 00:02:59 -08:00
df9abf685b 2023-02-03 nightly release (732a865c1bf2382a75f531d5907d18dd9bb0c4c9) 2023-02-03 00:03:13 -08:00
bf27152a8a 2023-02-02 nightly release (569f2e3228efeb1f8571e96d8f3ec835239e9c0e) 2023-02-02 00:03:05 -08:00
2e6952fa58 2023-02-01 nightly release (79db5bcc9d3febad00e5a2234b44c7db87defdab) 2023-02-01 00:03:07 -08:00
b2690c3cea 2023-01-31 nightly release (2a6e08570442c8fcbad6659e074c226809b1ed22) 2023-01-31 00:03:05 -08:00
3a7bab55b2 2023-01-30 nightly release (e790281a85fe3693fc1d38bf0e2c6e874d5e10b0) 2023-01-30 00:03:07 -08:00
d6c87398e2 2023-01-29 nightly release (7cc91f4002cb5dd3290318a967fb1e830d812666) 2023-01-29 00:03:10 -08:00
5d6a4f697c 2023-01-28 nightly release (ca8f5e177a1e0781b4a9e376c34d3ef9b934a454) 2023-01-28 00:02:59 -08:00
6cbac32dc7 2023-01-27 nightly release (661800a2cf0a4251c48a50fce8599c4c5fc49be1) 2023-01-27 00:03:02 -08:00
8181f12af5 2023-01-26 nightly release (0a57a20c02132577a48f5283ffbdf04257af1dbf) 2023-01-26 00:03:01 -08:00
83e8426fa4 2023-01-25 nightly release (4bc0491752b6d891c5bb33a3d18c5da7334fc6df) 2023-01-25 00:02:59 -08:00
d0e7a12a39 2023-01-24 nightly release (2a8669c54cb29bf42692185340fd68f341ac65ef) 2023-01-24 00:02:57 -08:00
6f611c5030 2023-01-23 nightly release (20bf77f9bd3cd7cb4da758afb58042e2980ee6ba) 2023-01-23 00:03:12 -08:00
284677213e 2023-01-22 nightly release (ed07070a11802dd561995c20e89d33cc986de2fa) 2023-01-22 00:02:58 -08:00
f960e5c8ae 2023-01-21 nightly release (1af40d5108ee5ddd408eed8115ce3abf6512149c) 2023-01-21 00:03:09 -08:00
d7b0db060c 2023-01-20 nightly release (620846c8b4f00f58dbd8b62746ec8e4328552b58) 2023-01-20 00:03:12 -08:00
65d7b967f8 2023-01-19 nightly release (de459bdfaa44a25565d4c4eedda49906feb6d993) 2023-01-19 00:03:04 -08:00
69dbc7dca8 2023-01-18 nightly release (00fe63d1d8c5c6411e093fa4388dc98c3683d236) 2023-01-18 00:03:34 -08:00
fbc4086458 2023-01-17 nightly release (0388400f3f8a8ecae2f809ba40ca3ddd5a8b9028) 2023-01-17 00:03:09 -08:00
a4dd47e06e 2023-01-16 nightly release (85e0fd0280948a342a916429448fed2486e82aa5) 2023-01-16 00:02:55 -08:00
868797ac1f 2023-01-15 nightly release (d41b5d7c145f3e09c7223c2b707933266241ec9b) 2023-01-15 00:03:08 -08:00
c202ddde8d 2023-01-14 nightly release (b8057aa16d376eefe081d852335541e2a7609c40) 2023-01-14 00:02:59 -08:00
06f81fdbf8 2023-01-13 nightly release (fbbb19599a1d162e5927542ed251fd2ba63d5163) 2023-01-13 00:03:32 -08:00
a0c46f5ab8 2023-01-12 nightly release (5766764d6cf9b14380c1b6ef5c2fe5392722e37b) 2023-01-12 00:03:08 -08:00
466be3f2ad 2023-01-11 nightly release (364f526b9cdf9818a7647b5e637efdee825d61a1) 2023-01-11 00:03:02 -08:00
971b1d38ec 2023-01-10 nightly release (b0f359a3c99041d9c87e700dccd0f22e73f40e1d) 2023-01-10 00:03:00 -08:00
65ff52a53b 2023-01-09 nightly release (73e5379fab05c40ff6f42500309cdc17ee57548c) 2023-01-09 00:03:08 -08:00
fac4361e84 2023-01-08 nightly release (73e5379fab05c40ff6f42500309cdc17ee57548c) 2023-01-08 00:02:56 -08:00
253e5c9744 2023-01-07 nightly release (faed4db4971af151e3dba7233ae49f9c0149dc18) 2023-01-07 00:03:12 -08:00
143e944699 2023-01-06 nightly release (33547bb58745a5deedaa36ca4e9363413f803e12) 2023-01-06 00:02:56 -08:00
1b52ceea52 2023-01-05 nightly release (d6bd67f2ebebb840ecf9d1c7c70653c900e6ee96) 2023-01-05 00:03:01 -08:00
caaf948ae3 2023-01-04 nightly release (80394bb73423bb849f46a7a9ffc55ebf478b8639) 2023-01-04 00:02:54 -08:00
74c03b46ae 2023-01-03 nightly release (2b52db9c953d063db7b46c12f4df35b47aca4381) 2023-01-03 00:03:05 -08:00
680efdb840 2023-01-02 nightly release (f6136331244fbe680ccc03d3bd5c5d9a71933d9f) 2023-01-02 00:03:05 -08:00
ede810cc26 2023-01-01 nightly release (f6136331244fbe680ccc03d3bd5c5d9a71933d9f) 2023-01-01 00:02:59 -08:00
733de4dc1d 2022-12-31 nightly release (73436af43fd84891b6765f4d1e5eeb0073a10a11) 2022-12-31 00:02:58 -08:00
a52fb6c041 2022-12-30 nightly release (9710ac653157dee780c33bf3080568076ce69a7b) 2022-12-30 15:03:00 -08:00
f8dcaca1da 2022-12-30 nightly release (6f034dc0b09a96c50421cf92ddb8709c59d95edf) 2022-12-30 00:03:12 -08:00
7edb2ee6a4 2022-12-29 nightly release (3d8834bdbf7f5da1163fd7ac543728779b557d29) 2022-12-29 00:02:58 -08:00
5abc365268 2022-12-28 nightly release (2e79d46708fb53c1a92bf0c2840d47a39e13e400) 2022-12-28 00:03:06 -08:00
4ada512fc4 2022-12-27 nightly release (3f4e87beaf67ec44d609605777d9da9e65cfbdd9) 2022-12-27 00:03:00 -08:00
9c156524e8 2022-12-26 nightly release (3f4e87beaf67ec44d609605777d9da9e65cfbdd9) 2022-12-26 00:02:58 -08:00
fac2cc8b24 2022-12-25 nightly release (5725a440806e7d75ad4fdea2c63d1a0a2fd004af) 2022-12-25 00:03:01 -08:00
3416c23868 2022-12-24 nightly release (5725a440806e7d75ad4fdea2c63d1a0a2fd004af) 2022-12-24 00:03:07 -08:00
7277d5a8f0 2022-12-23 nightly release (b95e1d76a86b7b66f0946f72ebd33889bfc19e03) 2022-12-23 00:03:12 -08:00
7919ae96db 2022-12-22 nightly release (6cea4f3d57927b30c3fc0a2f7103684fde0c75ea) 2022-12-22 00:02:55 -08:00
5837a6683b 2022-12-21 nightly release (5d37890b8eb952560f22b1b8ff661a024bf4b6d9) 2022-12-21 00:03:00 -08:00
8b450f6934 2022-12-20 nightly release (d6dd2e97da619319a103d1061290fe33ce33b6a4) 2022-12-20 00:02:58 -08:00
1ae3ad540d 2022-12-19 nightly release (9ca41a986c902f9db44ff04ca87a07238627d020) 2022-12-19 00:03:10 -08:00
e2c1293373 2022-12-18 nightly release (e2377c8300c578d648aac3bff6f96cdfce4308de) 2022-12-18 00:03:06 -08:00
8726996125 2022-12-17 nightly release (e689c509222a2dbc4796bcf32625193b9ea13c49) 2022-12-17 00:03:08 -08:00
2bd3fbe2e6 2022-12-16 nightly release (4372dbb89f457a0aa90f22d27f1468442a2a51bd) 2022-12-16 00:03:08 -08:00
1902ca9d53 2022-12-15 nightly release (670efb974af056fc3f46b48225581351b047eb4d) 2022-12-15 00:03:10 -08:00
971c769d42 2022-12-14 nightly release (769392178a8da6aab1bf82a09c9b105ea3dd6778) 2022-12-14 00:02:55 -08:00
3612f8bd54 2022-12-13 nightly release (7498e23bd52f049071500d443a18e6e5382c87b1) 2022-12-13 00:03:12 -08:00
008d7ee616 2022-12-12 nightly release (b95ea4f1494dacf86b5789f5466025b1fac1f2bb) 2022-12-12 00:03:01 -08:00
e220581718 2022-12-11 nightly release (6845598617ab75920dc1d4fbba9475bf64148bd6) 2022-12-11 00:02:56 -08:00
6e83e0b5d7 2022-12-10 nightly release (0457020d2ccfcb34262e2d46a3a4dbbdba5772a2) 2022-12-10 00:03:03 -08:00
8ce9be6212 2022-12-09 nightly release (b4c27c86b71c41bb44a804d8c6a7d466fb4d8baf) 2022-12-09 00:03:00 -08:00
9a7b94fa1f 2022-12-08 nightly release (bc93454e4a51f85f6c8603309bed7bd6de84385a) 2022-12-08 00:03:08 -08:00
c8ee46c764 2022-12-07 nightly release (26d1dbc4f85be7c5dc03c865e9bc092d83f7f2f0) 2022-12-07 00:02:57 -08:00
d80585d52d 2022-12-06 nightly release (05ccbd6d94c25fc26d30d2f60081924ce5bc973f) 2022-12-06 00:03:01 -08:00
ba7543762b 2022-12-05 nightly release (4648baa91155718642937ec27b04196fde846566) 2022-12-05 00:03:10 -08:00
b23c765574 2022-12-04 nightly release (9a1c6fd50664a46f0bacac92a10bcc26f307fadb) 2022-12-04 00:02:54 -08:00
ea0a17f785 2022-12-03 nightly release (9a1c6fd50664a46f0bacac92a10bcc26f307fadb) 2022-12-03 00:03:05 -08:00
82ab7407b3 2022-12-02 nightly release (cf3c3f22804be6909e54fc09e07f891ab0886774) 2022-12-02 07:14:00 -08:00
203213d3bf 2022-12-02 nightly release (f623b123f00358936932e103131bb6e3fc8ea685) 2022-12-02 00:03:06 -08:00
d8006fa84d 2022-12-01 nightly release (b399acd2dd755d7184538a58f933fbd48593c158) 2022-12-01 00:03:03 -08:00
30b87f46b5 2022-11-30 nightly release (12f98f85bc7effd48f4728dcaba6362c8b2dd697) 2022-11-30 00:02:57 -08:00
c528648f56 2022-11-29 nightly release (2b522670d2840522e0eeb87afec7f1956eaa8748) 2022-11-29 00:02:58 -08:00
77d59b2eab 2022-11-28 nightly release (db1f1144f1303db45e0b9d96e4bb6bdd87c80e5a) 2022-11-28 00:02:53 -08:00
f8506fb341 2022-11-27 nightly release (39449ea61d9a6644731687219282f610cbf7cf54) 2022-11-27 00:02:54 -08:00
21825b268c 2022-11-26 nightly release (591dfffa38848de54b7f5f4e49260847024c9281) 2022-11-26 00:03:03 -08:00
b8162a48b9 2022-11-25 nightly release (95ea47ef0c1cffe1fe05cc36bdc47c26cc72f13e) 2022-11-25 00:02:59 -08:00
c60a6bb340 2022-11-24 nightly release (903ae4570e401e5c4e42dc4a44cae37f805044a4) 2022-11-24 00:03:00 -08:00
db1da1f2ca 2022-11-23 nightly release (52669534438db3d680def4c70cb03b7e27566d7e) 2022-11-23 00:02:57 -08:00
f44ba7d75d 2022-11-22 nightly release (40cf214f2d18b3b8af5354ddc5dad8156ea32520) 2022-11-22 00:03:06 -08:00
e290a47a82 2022-11-21 nightly release (1856fa5df7fda9950da26eff2ef885e845bf6b6c) 2022-11-21 00:03:03 -08:00
89e792c046 2022-11-20 nightly release (6afe341276f9ffa660446c5fa15b68558791869a) 2022-11-20 00:02:54 -08:00
3806b657b7 2022-11-19 nightly release (419ef2cdcfe84442de5232739284c6a51a18632f) 2022-11-19 00:02:50 -08:00
d7eadde6dc 2022-11-18 nightly release (6f609dd0e03e11395cc637a34abd68472e5a1e12) 2022-11-18 00:02:52 -08:00
0015b0d515 2022-11-17 nightly release (c3acb9c8859fb5cfa1959ee49849f07942c40ccc) 2022-11-17 00:03:02 -08:00
0662e90840 2022-11-16 nightly release (e2f0648750f2d0d0ac648728ce4c514db178cfa1) 2022-11-16 00:03:15 -08:00
b5ea3fd1ef 2022-11-15 nightly release (73d71ae3d62607f2e480af37c470375ea405eb1c) 2022-11-15 00:03:36 -08:00
b7c4176df3 2022-11-14 nightly release (06486cd0087200e08ebb8a9518e064251c7c5309) 2022-11-14 00:03:41 -08:00
637228bcc4 2022-11-13 nightly release (46796fe5e9b74602d45927304773fdcda1c3215a) 2022-11-13 00:04:06 -08:00
580b16fa9b 2022-11-12 nightly release (7c3adddd6c3fe1bda4a9e5bfb9f992a802329551) 2022-11-12 00:03:49 -08:00
aeacdaed41 2022-11-11 nightly release (a6d72f44a4e8b6e9d2e878f30fd8b1d3e1197f0e) 2022-11-11 00:03:54 -08:00
e02bd6d2e4 2022-11-10 nightly release (e87c79ca0cbab476a7d09853b5830b615a62f679) 2022-11-10 00:03:05 -08:00
3b29687f0f 2022-11-09 nightly release (a7420d2ccb62d005f2e1853cfef8d25eb7748a90) 2022-11-09 00:03:19 -08:00
93f15b1b54 2022-11-08 nightly release (ed97e0aa2918e687309ee9a146c8294aefb237d2) 2022-11-08 00:02:58 -08:00
d6f7b88fc6 2022-11-07 nightly release (eda247ee6ce2f8bc29d86ec94f3863f929a2ea6e) 2022-11-07 00:03:09 -08:00
027d0aef88 2022-11-06 nightly release (0e3031f7e76fbd84e62650642dc334c11cc3c511) 2022-11-06 00:02:53 -07:00
12d78465eb 2022-11-05 nightly release (957a9b63c5c2953da3a1d1fc86c20703c96b2fa6) 2022-11-05 00:03:02 -07:00
4ebaafab95 2022-11-04 nightly release (70b00b13830c8adbaa2db8f61d475c2458b707c4) 2022-11-04 00:03:04 -07:00
a374be6433 2022-11-03 nightly release (4c20c0509d5cf8d4dea83cc330056044a6277b1b) 2022-11-03 00:04:06 -07:00
ded1b03613 2022-11-02 nightly release (95fc0bcaaddc2d24e8759f24dbefa789d04e9e42) 2022-11-02 00:09:24 -07:00
43ff4c443a 2022-11-01 nightly release (afd00673b6dedbdb811cfb1a9078deee1cb53f38) 2022-11-01 00:05:13 -07:00
7ceeba2c87 2022-10-31 nightly release (d13f1e6ab4d20451f7e2acd87571ffa7fece0c32) 2022-10-31 00:02:52 -07:00
d6a7672424 2022-10-30 nightly release (e7b854fae9ff8116eaf4aeb24e04cac550bed362) 2022-10-30 00:02:54 -07:00
7623f24837 2022-10-29 nightly release (c5cb6ec06619a2fc9874b967f11d13663c5d32c1) 2022-10-29 00:02:57 -07:00
8d1914359f 2022-10-28 nightly release (fd27246c16d8a80e7de0ccc86d014f9759611b0f) 2022-10-28 00:03:05 -07:00
7ecffceed4 2022-10-27 nightly release (21bef8e944c90cdf98c2ead4369410db252944e1) 2022-10-27 00:03:46 -07:00
3fa360a3c8 2022-10-26 nightly release (0d13ffbbae0ae12e72ed8856ccdd822bf840344c) 2022-10-26 00:03:07 -07:00
dfd50c05fc 2022-10-25 nightly release (3f94adc1056b541851422f887149d54756ed91c1) 2022-10-25 00:03:10 -07:00
9c14af470f 2022-10-24 nightly release (233305a852e1cd7f319b15b5137074c9eac455f6) 2022-10-24 00:03:41 -07:00
21d5156225 2022-10-23 nightly release (efdd43d5193435206fbe76cecc294961d10558db) 2022-10-23 00:03:06 -07:00
8e7fb10812 2022-10-22 nightly release (8461460d55c2474b236a5d7198067ed299631b76) 2022-10-22 00:03:46 -07:00
6418c7d4ba 2022-10-21 nightly release (ff43288d31ea7f3de69f4907e2a36455c742d9c9) 2022-10-21 01:01:25 -07:00
aab82cf32e 2022-10-20 nightly release (472bdb3aa84678b2faa4afe1cb5757f55e14ed9a) 2022-10-20 00:03:02 -07:00
f2aafd1c40 2022-10-19 nightly release (c471c29fdccc3fe48a78083c638a4a88559488b4) 2022-10-19 00:03:50 -07:00
bd3e718742 2022-10-18 nightly release (4814270708cb6141c1fb6202f883c084c71290b4) 2022-10-18 00:03:48 -07:00
cb329eb0ba 2022-10-17 nightly release (364a9973cab8e7458abd27e3926168978fe5428e) 2022-10-17 00:02:45 -07:00
d20ebc91e3 2022-10-16 nightly release (a0c2a7f2eda788a48f1d243940297f1467faf138) 2022-10-16 00:02:54 -07:00
1edc91820e 2022-10-15 nightly release (5210fab64d4322438ebfd8ec9c1170d5effab0a3) 2022-10-15 00:03:45 -07:00
987a944470 2022-10-14 nightly release (f451e824f39516f503c2bdfd785d254b447b9557) 2022-10-14 00:02:58 -07:00
f4ae3bad46 2022-10-13 nightly release (48c648d75df4a2d02ede71f34c11b7f48c80da0e) 2022-10-13 00:03:32 -07:00
2c2a7b256d 2022-10-12 nightly release (25725fd62448165b91647304c26d676db22b6955) 2022-10-12 00:02:49 -07:00
027a1549b9 2022-10-11 nightly release (ad2b04c39c41949d8869de743736bcaeec2dfa0d) 2022-10-11 00:03:23 -07:00
04f63b02a1 2022-10-10 nightly release (c89d286af633a802226c34ccbdd5c7c4be10dcfb) 2022-10-10 00:02:57 -07:00
0dbefb2414 2022-10-09 nightly release (92ac84c98a19310885f3d818aba56b981940d615) 2022-10-09 00:02:53 -07:00
95911a478f 2022-10-08 nightly release (a95889ba7c1ecd8cb0f90507a6152cb035bcefd1) 2022-10-08 00:03:00 -07:00
a23db27756 2022-10-07 nightly release (b14f1d7bb855834ec5f2d3996746e048ba835d69) 2022-10-07 00:02:47 -07:00
99cb9ab0a2 2022-10-06 nightly release (bebd1622490becd09de97003bd22761e973d3edd) 2022-10-06 00:03:11 -07:00
03587d440b 2022-10-05 nightly release (ac25c210e5452d360fcc8cf5ea96c85756e3e370) 2022-10-05 00:02:55 -07:00
9f3d8fec57 2022-10-04 nightly release (82d9592f1baaf943b81bca13a51d655139f050aa) 2022-10-04 00:03:13 -07:00
57d0543a3f 2022-10-03 nightly release (b26eafec079a18bc331f569a7e35497129feed71) 2022-10-03 00:03:10 -07:00
60de01321d 2022-10-02 nightly release (92c2295ab4b5ccdedcc32227c1125a4daf9e2759) 2022-10-02 00:03:40 -07:00
7ac93c0c8f 2022-10-01 nightly release (05d1128106e50075b0fd7d667680214ace34306c) 2022-10-01 00:02:54 -07:00
3bf7094ddb 2022-09-30 nightly release (95681929e4c379c504d8a7761f8104118a5a16db) 2022-09-30 00:02:59 -07:00
7a07ea9138 2022-09-29 nightly release (7628603aeeeb8ed160c2479f75175bb3ea028a42) 2022-09-29 00:02:52 -07:00
5b04269af6 2022-09-28 nightly release (795028a3cec2603a750bdc02ab2b93329f43e883) 2022-09-28 00:02:58 -07:00
04bb9533d5 2022-09-27 nightly release (b360d66391f03a0d5dc2c9a7aff496324b75aa2f) 2022-09-27 00:03:05 -07:00
193cc14176 2022-09-26 nightly release (9c036aa112b0a8fd9afb824d1fda058e2b66ba1d) 2022-09-26 00:03:02 -07:00
69168261cd 2022-09-25 nightly release (db40fbdee03920944219588464d38774ca0b3d05) 2022-09-25 00:02:56 -07:00
6dc8fba854 2022-09-24 nightly release (2b6d2cad29fc1652f80199d647306b9c7c841ca9) 2022-09-24 00:02:52 -07:00
114d9a2be3 2022-09-23 nightly release (cf0de77c2cfb8843b8ae67e6a6f053e6bf6bb3d9) 2022-09-23 00:02:57 -07:00
62b4e98396 2022-09-22 nightly release (99ad8a304898de8bf1e20a6fc12e335e9b7c5064) 2022-09-22 00:02:55 -07:00
8b575a966c 2022-09-21 nightly release (cf2f552cd8a41f4913c370c15804173a3b56a415) 2022-09-21 00:02:54 -07:00
b472915d42 2022-09-20 nightly release (e41d758e26bd2de00e9dd50e94e878f46f9f1b88) 2022-09-20 00:02:50 -07:00
1b1d4240c3 2022-09-19 nightly release (9024015adf01d93fd2533c71fa1e7f06831c2ac7) 2022-09-19 00:02:58 -07:00
39579e7294 2022-09-18 nightly release (12a19a4846c924e9d1e2d37fa0a706fb8eaef9a7) 2022-09-18 00:02:53 -07:00
e42e8dc76f 2022-09-17 nightly release (d6c2080eb49ccaaf43cff37b7f07a85906250b92) 2022-09-17 00:02:58 -07:00
089b57935b 2022-09-16 nightly release (0ec19db7ac88e307135100ddcfc418ae3925844f) 2022-09-16 00:02:51 -07:00
a5ce01692c 2022-09-15 nightly release (625e44c1df211d6753609a9b391cb10f2f94367f) 2022-09-15 00:03:03 -07:00
f35657efc9 2022-09-14 nightly release (55ca297d4e048c641d149a76f2fda7c9ce630ff6) 2022-09-14 00:02:52 -07:00
0feda8a4ba 2022-09-13 nightly release (2fbc0fab20d4af520f69f158f8777e99ad761e1d) 2022-09-13 00:02:48 -07:00
82246b020e 2022-09-12 nightly release (5f960db0e01839f1de8735060b374ea6cbd1713a) 2022-09-12 00:02:48 -07:00
6dd155f968 2022-09-11 nightly release (5f960db0e01839f1de8735060b374ea6cbd1713a) 2022-09-11 00:02:51 -07:00
3bcb7fae2d 2022-09-10 nightly release (96e4bd950027a2f472fafa98616c92403a890bd2) 2022-09-10 00:02:56 -07:00
f708f8d227 2022-09-09 nightly release (dbdc1cd590169576cfb78008f33b7cc795150729) 2022-09-09 00:02:53 -07:00
16ac031e95 2022-09-08 nightly release (e0229d6517385a98afeadbc6391d3592d5027c63) 2022-09-08 00:02:53 -07:00
e3c0d6d5b3 2022-09-07 nightly release (06ebe2d5bc1055f226f56ed2fe26a29038a466e5) 2022-09-07 00:03:03 -07:00
37d93c97bc 2022-09-06 nightly release (1a16b2576f69383480e8be889531e4f574356c62) 2022-09-06 00:02:49 -07:00
83d53043a3 2022-09-05 nightly release (9a6aa9053f79127721875e371addd9c3baeaaac0) 2022-09-05 00:02:50 -07:00
a3ee509f45 2022-09-04 nightly release (e46c1c7931da2d723a6cad4ec307ff4ed4e9cb7f) 2022-09-04 00:02:57 -07:00
a70ad97d6c 2022-09-03 nightly release (2a332afbf41b68080a9436e910b93af7cd336fbc) 2022-09-03 00:02:51 -07:00
e0735fd259 2022-09-02 nightly release (97b2dff60081e1092cfd6d1b3a80c995ff3d6148) 2022-09-02 00:02:44 -07:00
467eb02f43 2022-09-01 nightly release (693ed8b14777d1515c18653f5f8f28a602898662) 2022-09-01 00:02:48 -07:00
325dcc2a47 2022-08-31 nightly release (71d99662a0d7f8a9ad68999c9a014b71591cbb68) 2022-08-31 00:02:57 -07:00
e47d389287 2022-08-30 nightly release (df98c529480b2ece3809b19fc850f57d2054605a) 2022-08-30 00:02:48 -07:00
b044e4c13d 2022-08-29 nightly release (533203f5aaa9f8987f25d828e1c37e755a2ba4ea) 2022-08-29 00:02:46 -07:00
8cdff0bbfb 2022-08-28 nightly release (c9b144ff47ff3b6f358752976d29ac61f2b9b070) 2022-08-28 00:02:45 -07:00
40043c8960 2022-08-27 nightly release (e33897cb9999f124bce126c7e43f96c0755413ef) 2022-08-27 00:02:48 -07:00
733c645ec1 2022-08-26 nightly release (15b560a5c4d638c82e738f3496e2faf95fc328a5) 2022-08-26 00:03:00 -07:00
b7c5e1bc42 2022-08-25 nightly release (b21a6ff6397b74c148c12e4fc41ef12b382443e2) 2022-08-25 00:02:45 -07:00
503de157b7 2022-08-24 nightly release (754d7f05b6841e555cea5a4b2c505dd9e0baec1d) 2022-08-24 00:02:56 -07:00
a0ea0f5fc9 2022-08-23 nightly release (b29a074882a2194d61f1cd7ccf939618d8384d08) 2022-08-23 00:02:51 -07:00
85a04f1c91 2022-08-22 nightly release (765fd77d9a96983e1a2adf496ac2fe66b4825f45) 2022-08-22 00:02:45 -07:00
5c72ae78f9 2022-08-21 nightly release (c9475fa927ef5557aa54e4e9a7bc2a9ab98cdcf7) 2022-08-21 00:02:41 -07:00
1af6aa6752 2022-08-20 nightly release (9732a7d84ee72521d006c9617430c4415016daef) 2022-08-20 00:02:48 -07:00
ba442f621d 2022-08-19 nightly release (61b2cde5270986476f47b58b984de80d02aac321) 2022-08-19 00:02:49 -07:00
2c8f75b138 2022-08-18 nightly release (7263450c309443a8fd3f8ab29fbc04c35692e58f) 2022-08-18 00:02:45 -07:00
89a0e3da4a 2022-08-17 nightly release (343b5f86512f75f8f3bd4b90749c0459743b9e72) 2022-08-17 00:02:53 -07:00
937b90ea32 2022-08-16 nightly release (641d75d0ba0053816a73a6c977ac4a2d6e00e896) 2022-08-16 00:02:55 -07:00
c979188ed7 2022-08-15 nightly release (fbe8c77427ea95eb76876f20239e9493f2a1d6ec) 2022-08-15 00:02:58 -07:00
202caa35b2 2022-08-14 nightly release (408fa38f33d10e02fe762ef9d444ec9fc4f41ffc) 2022-08-14 00:02:53 -07:00
d773851902 2022-08-13 nightly release (c2808571bf823a26e97231d83f5f3f2c5e3d3fe3) 2022-08-13 00:02:44 -07:00
eb92c0d89f 2022-08-12 nightly release (2ca721cda54bcaee2202819bee92088ae2320ebf) 2022-08-12 00:02:44 -07:00
1cdc061e46 2022-08-11 nightly release (3aeb5e4ff9d56ecd680401cfa3f23e97a279efbe) 2022-08-11 00:02:45 -07:00
8a8283d468 2022-08-10 nightly release (e1007950484aa1df4a2f87c9c14b514ffd7736a5) 2022-08-10 00:02:48 -07:00
61f112cb3a 2022-08-09 nightly release (9e65e93c39238ec05aa7913693d7c3e4523bf257) 2022-08-09 00:02:55 -07:00
2085de7d43 2022-08-08 nightly release (1d56ea5e92b7bd041cf84ba9e0bb73f47a7eacf9) 2022-08-08 00:02:44 -07:00
c506576280 2022-08-07 nightly release (4f255dbfb320e8b30f83b35dd4a40c8abd3164fc) 2022-08-07 00:02:54 -07:00
5244615fad 2022-08-06 nightly release (86437b8631918aa4e766df869bca43853f0be6e9) 2022-08-06 00:03:07 -07:00
2869946265 2022-08-05 nightly release (802a4fd28620f03d6537374953dbb4bb887a47b4) 2022-08-05 00:02:47 -07:00
a2b3a3801c 2022-08-04 nightly release (1164c83c3c3070c82618350d57c7bf65ec56f0f1) 2022-08-04 00:02:53 -07:00
881e41c398 2022-08-03 nightly release (9647bec0ec41176adfd0cd5b80ab72c5bf6b2141) 2022-08-03 00:02:54 -07:00
a05de36989 2022-08-02 nightly release (c6b1e096afeabcc118c2e74db6709a1b4c531c53) 2022-08-02 00:03:06 -07:00
f059422a11 2022-08-01 nightly release (53f56894ae0b747d2833ee168599afcfdd4be471) 2022-08-01 00:02:55 -07:00
4a3790b3f0 2022-07-31 nightly release (32cf6c6fb0d98f747f576f52abe533449ae5da84) 2022-07-31 00:02:43 -07:00
f623d1fb75 2022-07-30 nightly release (dc53cb4536839d11ab9a32ec10a0ff0dd96a590f) 2022-07-30 00:02:47 -07:00
5e354516c9 2022-07-29 nightly release (357b7d589c9c451f4850449b9313d8b857ae7140) 2022-07-29 00:02:43 -07:00
053ea30ff8 2022-07-28 nightly release (7f7c81c5f9c4ef92085c1081dfb0f037f768bf27) 2022-07-28 00:02:46 -07:00
27064dc6e1 2022-07-27 nightly release (3cf9c3d8769fa3509c190a4f4c3dacd61ba154af) 2022-07-27 00:02:42 -07:00
983d26963e 2022-07-26 nightly release (1223e94469682271c94ac3b6a0cbe31a3078e351) 2022-07-26 00:02:44 -07:00
f0bd47f927 2022-07-25 nightly release (64094d81fe3cf512d3dfc6b2aabfd1754c86e87d) 2022-07-25 00:02:52 -07:00
63efe6b923 2022-07-24 nightly release (194255bb56a7bdcb5e6fb236d82b4897c2e5967c) 2022-07-24 00:02:41 -07:00
c747033c31 2022-07-23 nightly release (35d97e21c8e2e28fae4a4744ce42f1544972ba1f) 2022-07-23 00:02:52 -07:00
dae37da22c 2022-07-22 nightly release (12cb26509a30077f4bd11972dea9baa03c8d943f) 2022-07-22 00:02:47 -07:00
d7d8cf9170 2022-07-21 nightly release (2fb2740ef976ab6f139c5ccfa17c5c265bd2f78c) 2022-07-21 00:02:37 -07:00
bb7af45ebb 2022-07-20 nightly release (589e8a1da5aefeb27c2187b8f0d11471edb10153) 2022-07-20 00:02:46 -07:00
ab98dd1924 2022-07-19 nightly release (a8f4011e90aeffac0757bfdb971b139e1d348967) 2022-07-19 00:02:52 -07:00
8e9ce913ff 2022-07-18 nightly release (471397d0ee27b61ae1a088ece9f3ead1562152e0) 2022-07-18 02:51:54 -07:00
6f50b0393b 2022-07-18 nightly release (86b86202b58a6e3e7ccde32c51f81eff2e4e6445) 2022-07-18 00:02:28 -07:00
64c005dbd7 2022-07-17 nightly release (0b5b10002af2dce031d4fad337728f81c58a8b10) 2022-07-17 00:02:36 -07:00
468bcbe765 2022-07-16 nightly release (00359ff886e69f064360e5e8c6f2d5c306a105f1) 2022-07-16 00:02:48 -07:00
888ece62d5 2022-07-15 nightly release (75fdebde6290e2955129e665c2b0d99c391542a7) 2022-07-15 00:02:49 -07:00
c77e5b3ace 2022-07-14 nightly release (12c30a8250d1a00a0ac2e03d70ec909c76d922c3) 2022-07-14 00:03:12 -07:00
608f835654 2022-07-13 nightly release (07f4dc9b2c4cf6a00aa12cfb1d5db9056475ae98) 2022-07-13 00:02:53 -07:00
564e65cf0a 2022-07-12 nightly release (28776c45e393ec7d6731a5613f5d79d309036d3a) 2022-07-12 00:03:24 -07:00
4423cee876 2022-07-11 nightly release (3c2199b159b6ec57af3f7ea22d61ace9ce5cf5bc) 2022-07-11 00:02:50 -07:00
1ccfb24e91 2022-07-10 nightly release (f3008be9004418c3651bf89de764355580b994a2) 2022-07-10 00:02:37 -07:00
f1ef8f4871 2022-07-09 nightly release (39f659c3baa491cc060f7df6b55354bd78c30be1) 2022-07-09 00:02:45 -07:00
c10163e770 2022-07-08 nightly release (8389ccbcd809e2596bd4f8a20d069fc919beefdf) 2022-07-08 00:03:18 -07:00
19bac0d4c9 2022-07-07 nightly release (74877943b84cb6d3fc82993ebc8f0e2f8b3c5ce1) 2022-07-07 00:04:30 -07:00
76c411ec8d 2022-07-06 nightly release (fe361dede45747067e39669573cbcf48be4fe4f9) 2022-07-06 00:03:00 -07:00
5728ca13ae 2022-07-05 nightly release (828c787ea98da39eb786925eedcb8527aae07153) 2022-07-05 00:03:21 -07:00
4492525e2e 2022-07-04 nightly release (19f3d4d7950daef5c0e93a7c6da37353381da3d9) 2022-07-04 00:02:45 -07:00
14908b1f7d 2022-07-03 nightly release (19f3d4d7950daef5c0e93a7c6da37353381da3d9) 2022-07-03 00:02:44 -07:00
fa0f6bad6d 2022-07-02 nightly release (19f3d4d7950daef5c0e93a7c6da37353381da3d9) 2022-07-02 00:02:33 -07:00
b12db36e77 2022-07-01 nightly release (ffae7308c9bfbe52964577e35b3c1fdbcfb28e66) 2022-07-01 00:02:38 -07:00
67434681aa 2022-06-30 nightly release (331c0c18033bf4138c9ea468a8c759865dd8ffff) 2022-06-30 00:02:54 -07:00
5452b8baa5 2022-06-29 nightly release (5943aaa0c45bddef9b577cd0483627144585af0d) 2022-06-29 00:02:41 -07:00
2010b6df9a 2022-06-28 nightly release (8a45ef23f564cc092fa0805ea6c0f8f73eed209c) 2022-06-28 00:02:22 -07:00
3245693a02 2022-06-27 nightly release (80b50dfa3ab16de3e90dab8eeed003a98a0da1fe) 2022-06-27 00:02:44 -07:00
5074dab26d 2022-06-26 nightly release (80b50dfa3ab16de3e90dab8eeed003a98a0da1fe) 2022-06-26 00:02:31 -07:00
7b6fd33c64 2022-06-25 nightly release (80b50dfa3ab16de3e90dab8eeed003a98a0da1fe) 2022-06-25 00:02:45 -07:00
2befd0b446 2022-06-24 nightly release (55aa0b1a840e7bf5c53c8e457abf85ded92317eb) 2022-06-24 00:04:40 -07:00
f0e1176a37 2022-06-23 nightly release (9f29d09b3bfbb6c4b64605703f52d7e2fe1fea7f) 2022-06-23 00:02:29 -07:00
4de7faed35 2022-06-22 nightly release (bd7cd7c3569bb708207a80c704355af2ca42b834) 2022-06-22 00:02:50 -07:00
766cc00b15 2022-06-21 nightly release (6d6e77eb6b9649aeb1f21b59145391f28e136a40) 2022-06-21 00:02:35 -07:00
3f72225847 2022-06-20 nightly release (332e43ed1a353a8b0a1d8e0167daaaed1e8b7a34) 2022-06-20 00:02:40 -07:00
c296168bd0 2022-06-19 nightly release (0545c85f744cadc6f06616f15748052cd7cebe20) 2022-06-19 00:02:27 -07:00
c4171aed91 2022-06-18 nightly release (1432a3d6acc7ac58269e5ea7ef6b2373e9a3dbf6) 2022-06-18 00:02:36 -07:00
4c19eece3f 2022-06-17 nightly release (4a4890cfb2440c497fd41e69405ad623c144e32b) 2022-06-17 09:52:36 -07:00
8115b705b3 2022-06-17 nightly release (9d419e81e2cf64504126652def4eec46b72b75c5) 2022-06-17 00:02:34 -07:00
a4fa62064e 2022-06-16 nightly release (86606fbe22c76d71851a38003462e9b6428b47d3) 2022-06-16 00:02:52 -07:00
39c39325d1 2022-06-15 nightly release (bad7720dde598d4300b6523e2c06e61923a2820a) 2022-06-15 00:02:37 -07:00
4981166f3d 2022-06-14 nightly release (18305e30a785a0336837a3e4406b84e3bf36e727) 2022-06-14 00:02:26 -07:00
b6cec31acb 2022-06-13 nightly release (a732bbea232fa32191f259d7cb15e9fabb6c2926) 2022-06-13 00:02:38 -07:00
bf5a87c628 2022-06-12 nightly release (66460c4a6ab0dc29187618bdf0a3d097bbb0ad21) 2022-06-12 00:02:36 -07:00
74ee629516 2022-06-11 nightly release (38350acf8fddc350c893e23a8e77bed2e59f5b06) 2022-06-11 00:02:33 -07:00
92b4285a8d 2022-06-10 nightly release (70d6446a3def513b8082d243d7996ef86c2787a6) 2022-06-10 00:03:19 -07:00
18fa2ad3f3 2022-06-09 nightly release (bfaa187fb083aea66804673de033b17506061de2) 2022-06-09 00:02:53 -07:00
5ab96cd7be 2022-06-08 nightly release (d09e3674d875060c1a848f9634ceff7300fb7c04) 2022-06-08 00:02:33 -07:00
12aaa27135 2022-06-07 nightly release (b40c751c33439bb8721fddb85c25b893ba73ada7) 2022-06-07 00:02:55 -07:00
22aa5e65d2 2022-06-06 nightly release (e6cc2e8d384d3e045b1529c89bcb0460883691e9) 2022-06-06 00:02:46 -07:00
17bd418fc3 2022-06-05 nightly release (7860ce5b79f28d601f31aeade400d9873137fee4) 2022-06-05 00:02:50 -07:00
9c02239648 2022-06-04 nightly release (7860ce5b79f28d601f31aeade400d9873137fee4) 2022-06-04 00:02:36 -07:00
6593c7bbc1 2022-06-03 nightly release (4bb8db85e924b1850d5cf1709a2a0bb7deca603d) 2022-06-03 00:02:43 -07:00
7ba52788aa 2022-06-02 nightly release (4bb8db85e924b1850d5cf1709a2a0bb7deca603d) 2022-06-02 00:02:36 -07:00
b7577f4d6a 2022-06-01 nightly release (01d20491ff2034f283455a59d8faa9b11c43a10c) 2022-06-01 00:02:46 -07:00
d76af8f41c 2022-05-31 nightly release (017b0ae9431ae3780a4eb9bf6d8865dfcd02cd92) 2022-05-31 00:03:03 -07:00
0cac4ed4c7 2022-05-30 nightly release (18273c39da4880b68f8a546978a23516fe5c3e51) 2022-05-30 00:10:03 -07:00
447b0d9521 2022-05-29 nightly release (18273c39da4880b68f8a546978a23516fe5c3e51) 2022-05-29 00:02:36 -07:00
555bfd9e65 2022-05-28 nightly release (18273c39da4880b68f8a546978a23516fe5c3e51) 2022-05-28 00:02:39 -07:00
3038818d93 2022-05-27 nightly release (d98a8148b66fb6f74ce1b437d6bde4f24208bb78) 2022-05-27 00:02:45 -07:00
367ce697da 2022-05-26 nightly release (032d1ace1de47e93edcc69b06da9d79636652991) 2022-05-26 00:02:41 -07:00
281c99ca98 2022-05-25 nightly release (d450034f240681f5133bc61ddc9c0d195c527b59) 2022-05-25 00:02:50 -07:00
8f263fda5c 2022-05-24 nightly release (c7ce4fcc619fab5c82071eac934b505b396ee015) 2022-05-24 00:03:09 -07:00
56d66c84c6 2022-05-23 nightly release (d4345ed0a6c06b1e489e41c219f94d26d3014ce6) 2022-05-23 00:02:35 -07:00
5db8a74f9a 2022-05-22 nightly release (5f1b0a4f48bad11907031ff473b99558ae703593) 2022-05-22 00:03:23 -07:00
00c4d7fa54 2022-05-21 nightly release (47834679ba2f869e66450a74e2add4c04f0006e9) 2022-05-21 00:02:31 -07:00
f5a90b859c 2022-05-20 nightly release (b3e7230efa30e03b9ee8ff3e2b31c38754a6b2b1) 2022-05-20 00:02:54 -07:00
23ce60e364 2022-05-19 nightly release (4124307faeed923175d3e02fa685c0788e99f0ee) 2022-05-19 00:02:44 -07:00
2b57412cef 2022-05-18 nightly release (05ce0f9be63dd6fadd2fb40c29f8f867f267002b) 2022-05-18 11:50:31 -07:00
3e449774fe 2022-05-18 nightly release (7f1e331b34fd0b9caba12aa86469b59366cde9a4) 2022-05-18 00:02:44 -07:00
bd39de2c81 2022-05-17 nightly release (6aea0b10734df77252a2f67315b5c447c263ea6c) 2022-05-17 00:02:47 -07:00
c6efbc72a2 2022-05-16 nightly release (88205886d72486fbeac420c7df99bfe460c38436) 2022-05-16 00:02:33 -07:00
4f32ac4356 2022-05-15 nightly release (e175065c4e31f33247eec4edf026c8ee020d943e) 2022-05-15 00:02:31 -07:00
6a62a087bb 2022-05-14 nightly release (3cade9d454babc70f43ace1ce6481543104934b2) 2022-05-14 00:02:33 -07:00
44bf440b53 2022-05-13 nightly release (65f71c0cbeb080c13e927d37b0d23d39bac6f092) 2022-05-13 00:02:35 -07:00
24898298be 2022-05-12 nightly release (188854eeaf148b685e54a438fa7b9a20d3a28e33) 2022-05-12 00:02:45 -07:00
794df1af9a 2022-05-11 nightly release (fc4f8b5edec69c0ddc63e5210d3f34724d4bd672) 2022-05-11 00:02:36 -07:00
b99396932d 2022-05-10 nightly release (4ceac494259e6b7d57e721793fb0a9ad598a0e12) 2022-05-10 00:02:33 -07:00
e6f2163016 2022-05-09 nightly release (e3dcd175f7aacb6aa2fb150b01335afd508c9d52) 2022-05-09 00:02:29 -07:00
19998c0c4c 2022-05-08 nightly release (e3dcd175f7aacb6aa2fb150b01335afd508c9d52) 2022-05-08 00:02:26 -07:00
60ac495151 2022-05-07 nightly release (901cb7c2e40123822c2d8e5cf4c5af782a4e22a1) 2022-05-07 00:02:33 -07:00
06611fcdd8 2022-05-06 nightly release (040e2e04dd35c49e2b0faeeca964333f7cbc45b9) 2022-05-06 00:03:53 -07:00
0328afd12e 2022-05-05 nightly release (4baf7c0899a2fa9c3630613f37d5fc65971db21c) 2022-05-05 00:02:34 -07:00
1d34bdd21e 2022-05-04 nightly release (201ddafc22e22c387b4cd654f397e05354d73d09) 2022-05-04 00:02:28 -07:00
5a8679f89b 2022-05-03 nightly release (201ddafc22e22c387b4cd654f397e05354d73d09) 2022-05-03 00:02:35 -07:00
fd1f1d0d1b 2022-05-02 nightly release (201ddafc22e22c387b4cd654f397e05354d73d09) 2022-05-02 00:02:41 -07:00
629bca39ad 2022-05-01 nightly release (201ddafc22e22c387b4cd654f397e05354d73d09) 2022-05-01 00:02:30 -07:00
13015c5b75 2022-04-30 nightly release (2540f866ff1eff10dbed7ca47ea9c432e8583da2) 2022-04-30 00:02:31 -07:00
e19fc28ab6 2022-04-29 nightly release (ac31e5d4a3ba20315b5bae26411252c72e0f5c0b) 2022-04-29 00:02:33 -07:00
32808706c5 2022-04-28 nightly release (177ea46332fcde48df5ce0c0efe1552991a5548a) 2022-04-28 00:02:33 -07:00
5a835234d2 2022-04-27 nightly release (ec62901a2c38b63d12843e0f079bdeb7644d8714) 2022-04-27 00:02:34 -07:00
a4974f7e6e 2022-04-26 nightly release (e48b29b1fb1510535efa2a00b6501d5455556aa2) 2022-04-26 00:02:30 -07:00
7393e51ecc 2022-04-25 nightly release (36420b5e8cce9c783903bbc210ed7f2b6535ebf5) 2022-04-25 00:02:36 -07:00
bbd2ae4d6c 2022-04-24 nightly release (77f23d64607142c0cba47f5148ebc1959c9de366) 2022-04-24 00:02:52 -07:00
5b7df69855 2022-04-23 nightly release (2f2158ae4502667951a4d6f5f95d751c7d0927d8) 2022-04-23 00:02:38 -07:00
acc1284169 2022-04-22 nightly release (80fe96c86057efa768ad1eed6c54af0ad259a423) 2022-04-22 00:02:30 -07:00
c0d0c45456 2022-04-21 nightly release (3e10fe323165a94fed66b1487902e8d394ce3be1) 2022-04-21 00:02:32 -07:00
30beb5e09a 2022-04-20 nightly release (d0af05f931e271131e1e207bcc47235059cfd723) 2022-04-20 00:02:39 -07:00
3a600dd46f 2022-04-19 nightly release (736f0d0e46ad70f2382a9035bc72f491970d43f5) 2022-04-19 00:02:41 -07:00
1d23709c9c 2022-04-18 nightly release (f4d89aa28e182bd7768a997a70b033748591ceac) 2022-04-18 00:02:31 -07:00
f827d1bda6 2022-04-17 nightly release (1c5c739993284f908ede18fcd5c1ff79dcadc251) 2022-04-17 00:02:31 -07:00
be96d5d2cb 2022-04-16 nightly release (5dcbcc6de83b552f43415ef60bb2e771bdbc0026) 2022-04-16 00:02:23 -07:00
5cbdc6315b 2022-04-15 nightly release (cc1902a5ed64e5e3b956c5cc6fcbdcd45630f7b8) 2022-04-15 00:02:35 -07:00
053a97bbcb 2022-04-14 nightly release (1118b157bc524944b6094ee0d69adac9ec86931a) 2022-04-14 00:02:33 -07:00
80e358b406 2022-04-13 nightly release (4afe2db641c526800fb8b33532a920be625f3cf4) 2022-04-13 00:02:35 -07:00
80863b0d47 2022-04-12 nightly release (25aa251f37b74ea8354a3e9366912180a6c84613) 2022-04-12 00:02:37 -07:00
3daf56e4fd 2022-04-11 nightly release (a98b4666e0d5b50d876df39a02ae4241d5663ccf) 2022-04-11 14:34:00 -07:00
9afee87fe1 2022-04-11 nightly release (0389f99c4976319f688e936ac520441466f6ab13) 2022-04-11 07:53:19 -07:00
3d8554ce13 2022-04-11 nightly release (caa28ff4959c7cf7165dabf1ffae7c233b8e4b61) 2022-04-11 00:02:30 -07:00
49f28d09b8 2022-04-10 nightly release (f42bdff0166ef503c844353c32b6725391e440ac) 2022-04-10 00:02:29 -07:00
6f47f3883d 2022-04-09 nightly release (58a44523c1f74093ad9a05513a32c45a109b6c55) 2022-04-09 00:02:33 -07:00
02cf8fe543 2022-04-08 nightly release (11f1fef9817bc8a9bc0c3ff7af98ab6cbefe51ed) 2022-04-08 00:02:31 -07:00
8fcdacc23d 2022-04-07 nightly release (ef41201d4acf6b7601577b08b90e36f749db84b8) 2022-04-07 00:02:39 -07:00
59ac7da723 2022-04-06 nightly release (f2a4d49174eb7b705c2c605c45f78d4fa6786be0) 2022-04-06 00:03:18 -07:00
4817424257 2022-04-05 nightly release (b0e047b59da4d6434bf347dd6ae501169218bb1a) 2022-04-05 00:02:42 -07:00
17459dfef2 2022-04-04 nightly release (bf16552617e0f82e6963762b6d40a8ae39105fae) 2022-04-04 00:02:29 -07:00
fa2c3ef58f 2022-04-03 nightly release (bd032cd8d65e36b9d16af42520f5d63e861cb9d4) 2022-04-03 00:02:24 -07:00
4aad5531c0 2022-04-02 nightly release (6efc5c1acfe6afc7268e39d9b058a34e87932560) 2022-04-02 00:04:58 -07:00
2f5ec0f958 2022-04-01 nightly release (c0a6add7eef8ab3715c0f4281b3b7a2a0f1e24b5) 2022-04-01 00:03:50 -07:00
0c6e65a77b 2022-03-31 nightly release (3036a0309dba11d0601d19b5f2d2f4a7e6afa456) 2022-03-31 00:03:40 -07:00
32ec80e619 2022-03-30 nightly release (3269729c683ac01d7e91b109187a69686167bb08) 2022-03-30 00:02:59 -07:00
7313eddbb2 2022-03-29 nightly release (51e50a2ddb9844e0abaf6028fe5e4246448dffff) 2022-03-29 00:03:16 -07:00
ee7c21e4f2 2022-03-28 nightly release (1c5a8125798392f8d7c57e88735f43a14ae0beca) 2022-03-28 00:02:31 -07:00
a9cc98c890 2022-03-27 nightly release (1c5a8125798392f8d7c57e88735f43a14ae0beca) 2022-03-27 00:02:22 -07:00
4e21b8b1d0 2022-03-26 nightly release (90459ba9dc6a812ef74c814d8fd1fa1edaaa27ee) 2022-03-26 00:02:36 -07:00
b7c262acb8 2022-03-25 nightly release (4d82e5bf449929c2732250f8620976e5be96a7f3) 2022-03-25 00:02:40 -07:00
10d252ff4a 2022-03-24 nightly release (d583f9c9d2bd0cc5fb5d369cd498bd62b62c43fe) 2022-03-24 00:03:02 -07:00
6a9d73c33a 2022-03-23 nightly release (65329f4fac8fb22318b7a3eb115e9da207d8d41a) 2022-03-23 00:02:35 -07:00
674a66aea3 2022-03-22 nightly release (7c2103ad5ffdc1ef91231c966988f7f2a61b4166) 2022-03-22 00:02:37 -07:00
3c1c7fd26e 2022-03-21 nightly release (7c2103ad5ffdc1ef91231c966988f7f2a61b4166) 2022-03-21 00:02:48 -07:00
be7f24a66d 2022-03-20 nightly release (38512d90c1380aa7eb66bdfbc52c744bc06b17c6) 2022-03-20 00:02:30 -07:00
2b1020d9c9 2022-03-19 nightly release (b86554abedd9b1bfbca582b1f28e02806a2dfbf8) 2022-03-19 00:02:25 -07:00
46686703a0 2022-03-18 nightly release (6ffe16662f1f4792bf4dc2c2ec35f21b6ff1cc7e) 2022-03-18 00:03:00 -07:00
203c75e473 2022-03-17 nightly release (495e69eaff3037318eafc1b8c2166f11db474a1d) 2022-03-17 00:03:11 -07:00
1a3899dc0e 2022-03-16 nightly release (ac3effd150e829da8bac7525adadec2fad31ece1) 2022-03-16 00:03:08 -07:00
7fc88a1335 2022-03-15 nightly release (060f1b822a6b71e1db07b94f68fdfb53fe47a7d0) 2022-03-15 00:02:26 -07:00
6dc1221394 2022-03-14 nightly release (ef9023e93dabdcfe328bb55869ded08096e2d993) 2022-03-14 00:02:28 -07:00
9b7dac5e86 2022-03-13 nightly release (ef9023e93dabdcfe328bb55869ded08096e2d993) 2022-03-13 00:02:32 -08:00
08dbe0b800 2022-03-12 nightly release (bbdb758423d8f22cfcae492686cba848e3eadbc9) 2022-03-12 00:02:40 -08:00
7d3f48cab3 2022-03-11 nightly release (794f813522deb8afb5e576cec264ce9224cfe067) 2022-03-11 00:02:29 -08:00
7ed23549dd 2022-03-10 nightly release (d8dbf9d8b2d73c4799555af04d8fdf9af9d027a3) 2022-03-10 00:02:31 -08:00
6874a3d788 2022-03-09 nightly release (beda4e8b2f644434202c3d27eac21b5bf9b82321) 2022-03-09 00:02:28 -08:00
df69a9d17e 2022-03-08 nightly release (07410207c487369d87a03e4602f72ec870abe4b7) 2022-03-08 00:02:26 -08:00
8057557dc7 2022-03-07 nightly release (5167e9d59d76d67f4a240f94600ce6bba2c70ed3) 2022-03-07 00:02:27 -08:00
f1c8cb63b4 2022-03-06 nightly release (5167e9d59d76d67f4a240f94600ce6bba2c70ed3) 2022-03-06 00:02:44 -08:00
59ceb67b45 2022-03-05 nightly release (5167e9d59d76d67f4a240f94600ce6bba2c70ed3) 2022-03-05 00:02:31 -08:00
526746077c 2022-03-04 nightly release (b955a046cd7ac6178e8a23c855a98f3d546dec37) 2022-03-04 00:02:25 -08:00
9b5962b28a 2022-03-03 nightly release (715c000cf107a83583cf6292d61e121562296be9) 2022-03-03 00:02:38 -08:00
32c488b10c 2022-03-02 nightly release (81437e66c1cc02f3c18c60b0d3467fc80a51ae09) 2022-03-02 09:20:52 -08:00
54d1329999 2022-03-02 nightly release (2f957f513e6faebb001d60a544aedd8042ce7026) 2022-03-02 00:02:34 -08:00
e71a0f5247 2022-03-01 nightly release (5e86505693c4c7e518e9e08cfa206c6405df7f67) 2022-03-01 00:02:25 -08:00
4d45de45d4 2022-02-28 nightly release (6688487f3ec22b7e89553b8acd6782264061f5cd) 2022-02-28 00:05:23 -08:00
bc9703b4fe 2022-02-27 nightly release (6688487f3ec22b7e89553b8acd6782264061f5cd) 2022-02-27 00:02:20 -08:00
82fe813e3a 2022-02-26 nightly release (6688487f3ec22b7e89553b8acd6782264061f5cd) 2022-02-26 00:02:20 -08:00
bb2f184fe2 2022-02-25 nightly release (6688487f3ec22b7e89553b8acd6782264061f5cd) 2022-02-25 00:02:36 -08:00
143655fcc9 2022-02-24 nightly release (6688487f3ec22b7e89553b8acd6782264061f5cd) 2022-02-24 00:02:51 -08:00
ecf368e6b2 2022-02-23 nightly release (7807a83f6e677987e8cb0bdbebd04ccdd157b68b) 2022-02-23 00:02:44 -08:00
e8d0a25159 2022-02-22 nightly release (f41db99a5690bf0ae4d51d9cdb9aaff95703f6c6) 2022-02-22 00:02:30 -08:00
47698f9118 2022-02-21 nightly release (f41db99a5690bf0ae4d51d9cdb9aaff95703f6c6) 2022-02-21 00:02:38 -08:00
bbad85aa47 2022-02-20 nightly release (f41db99a5690bf0ae4d51d9cdb9aaff95703f6c6) 2022-02-20 00:03:46 -08:00
74e6ae00b6 2022-02-19 nightly release (1646a0033dda77eca980c40870524996b4ad1f76) 2022-02-19 00:02:40 -08:00
ffd57dc90c 2022-02-18 nightly release (d4f3d07ae251876054f5681afc44e0d6057d851b) 2022-02-18 12:41:03 -08:00
cbab909688 2022-02-18 nightly release (d4f3d07ae251876054f5681afc44e0d6057d851b) 2022-02-18 00:02:37 -08:00
56dccfef91 2022-02-17 nightly release (e0e1e0b114d57542e65a054d05a81618e786fe18) 2022-02-17 15:14:25 -08:00
35e605ec6f 2022-02-17 nightly release (bbac8c9c4816c87eae17a04b60d4103940c08f83) 2022-02-17 00:03:18 -08:00
7e58a2be96 2022-02-16 nightly release (47c69933558040158c1533f1b500d15153236b3b) 2022-02-16 00:02:25 -08:00
e61d57f299 2022-02-15 nightly release (47c69933558040158c1533f1b500d15153236b3b) 2022-02-15 00:02:42 -08:00
19bed12bb3 2022-02-14 nightly release (1776caf361fc2c652f0c00b2fd42714447cefc29) 2022-02-14 00:02:37 -08:00
e83d4e52c0 2022-02-13 nightly release (c73cc92eff3160121973930dca2a2927268dc2c1) 2022-02-13 00:02:31 -08:00
a8ce06044a 2022-02-12 nightly release (444191de5680e7c5526614d94adbbcd7cba985e2) 2022-02-12 00:02:34 -08:00
1222e07cd4 2022-02-11 nightly release (730fef25c71dfb7c7d3f403df48541cc0aac154d) 2022-02-11 00:02:29 -08:00
30eddeb999 2022-02-10 nightly release (239531fb3165fbca13a18febbabff493ea4fd55d) 2022-02-10 00:02:25 -08:00
b362168f8c 2022-02-09 nightly release (4b69a2373f8f77548fba82886ab0dc8c06a38d87) 2022-02-09 00:02:52 -08:00
641a582e7b 2022-02-08 nightly release (224093db113fd333a7cb8e5e07308de5098e4a62) 2022-02-08 00:02:38 -08:00
3053858b8d 2022-02-07 nightly release (5c6b897516ac59775d7d58692fad052c399c4ec3) 2022-02-07 00:02:26 -08:00
d804a55840 2022-02-06 nightly release (5c6b897516ac59775d7d58692fad052c399c4ec3) 2022-02-06 00:03:04 -08:00
49ebad53c5 2022-02-05 nightly release (f2f40ce870488b0cfc6e1d9c1cdea3a95f01a4c1) 2022-02-05 00:02:26 -08:00
e9259fa905 2022-02-04 nightly release (1ad53b51d03d9ff4085bcc02b3a65088ed4a6c80) 2022-02-04 00:02:34 -08:00
e2e9c916a5 2022-02-03 nightly release (58dabebcd746aad95a37bdfc7e60e5d22f0f5641) 2022-02-03 00:02:30 -08:00
72056d08cd 2022-02-02 nightly release (f20fa66f704a61b4570ce372add59c7469f44a96) 2022-02-02 00:03:00 -08:00
b5590f46d3 2022-02-01 nightly release (a319bce58d66d12cd71fbf54a145cf7b7563eebc) 2022-02-01 09:00:43 -08:00
2352fadbfa 2022-02-01 nightly release (8fa5cde3a9fab1f82bbb424312995035f2342eaa) 2022-02-01 00:02:33 -08:00
7ddf106b1f 2022-01-31 nightly release (8fa5cde3a9fab1f82bbb424312995035f2342eaa) 2022-01-31 00:02:57 -08:00
3e25201ab5 2022-01-30 nightly release (8fa5cde3a9fab1f82bbb424312995035f2342eaa) 2022-01-30 00:02:53 -08:00
d53c69395a 2022-01-29 nightly release (9413c0cd3e15c2b38e7df500613cff1e7951699e) 2022-01-29 00:02:29 -08:00
c8381acacb 2022-01-28 nightly release (fb0e27d38a8fdab4e1c14d6378c9e41cb30fd6a3) 2022-01-28 10:47:42 -08:00
573a6ad052 2022-01-28 nightly release (7aa4a1f63e14406807ff6cb45faabf0151a63db8) 2022-01-28 00:02:43 -08:00
aaa24811c5 2022-01-27 nightly release (12e01f78257479f91b0f23d8d93318bc92945c87) 2022-01-27 00:02:29 -08:00
a2f0cefe70 2022-01-26 nightly release (12e01f78257479f91b0f23d8d93318bc92945c87) 2022-01-26 00:02:37 -08:00
4d321910fa 2022-01-25 nightly release (b372be4211d40be92ffbb025cac0038ee3445141) 2022-01-25 00:02:51 -08:00
e5e237cdd2 2022-01-24 nightly release (9b3a56eecfab13877d32f0a5051e1584746668bc) 2022-01-24 00:02:35 -08:00
a031636e60 2022-01-23 nightly release (9b3a56eecfab13877d32f0a5051e1584746668bc) 2022-01-23 00:02:21 -08:00
f7e78364e4 2022-01-22 nightly release (7680a0ae9dce001265c34869af469c55653f8c04) 2022-01-22 00:02:54 -08:00
fe71938284 2022-01-21 nightly release (2eb4b05b94811286593171ad1c6f1f97b36cf665) 2022-01-21 00:02:27 -08:00
121e193266 2022-01-20 nightly release (f45e217c0158c247772f6491a18662cc972c29cd) 2022-01-20 00:03:13 -08:00
6ee1aed356 2022-01-19 nightly release (30739f532940a6dbc19bccb56442e6352bf3fed7) 2022-01-19 00:02:39 -08:00
c199e3cdb7 2022-01-18 nightly release (17540c5c80f5c6cd4e0fee42ec47d881e46f47f9) 2022-01-18 00:02:27 -08:00
1261c6d6bb 2022-01-17 nightly release (1ecfa1d61a3e56aab7f3b69c33fac9e9a0eebb6c) 2022-01-17 00:03:26 -08:00
d949a9746b 2022-01-16 nightly release (1ecfa1d61a3e56aab7f3b69c33fac9e9a0eebb6c) 2022-01-16 00:02:28 -08:00
f1436c776e 2022-01-15 nightly release (c43e0286a9fd234b98a0666c8539b65d0e114139) 2022-01-15 00:02:20 -08:00
050720060a 2022-01-14 nightly release (356af8f857d7c8d5948a438002757c4a4a9c45e8) 2022-01-14 00:02:26 -08:00
19172fdb82 2022-01-13 nightly release (60632a00fe6212159164d92ad69766925ab15c97) 2022-01-13 11:21:32 -08:00
9d73bfd9c8 2022-01-10 nightly release (2bed616e0fb1a937b1bb1eee8e6cf83734e839bd) 2022-01-10 00:02:45 -08:00
8e9a40233c 2022-01-09 nightly release (49a07c892265ed89ed8302db15af4647746f6543) 2022-01-09 00:03:02 -08:00
a7432d187f 2022-01-08 nightly release (0eb2fc608c0ea8c4150a6ba823e80a52e4d9d158) 2022-01-08 00:02:27 -08:00
d097728842 2022-01-07 nightly release (ddea6980fe7ce6168e13710164f06bd1b7ca1674) 2022-01-07 00:04:28 -08:00
65fabd7f04 2022-01-06 nightly release (e1aa5db108deb4f3e0faa95b703d4bbc9f7453b7) 2022-01-06 00:02:29 -08:00
39e21b875b 2022-01-05 nightly release (14457bb8cbaebf501872fc4183376eb6d7e62d81) 2022-01-05 00:03:09 -08:00
aa16a081e0 2022-01-03 nightly release (fa09099ba35fcd42347732ca3a5f8ddaf145da1b) 2022-01-03 00:02:28 -08:00
b526651566 2022-01-02 nightly release (ce86881afadc0fea628c7e47d64a4073f3e09894) 2022-01-02 00:05:04 -08:00
758a1e7d2d 2022-01-01 nightly release (ce86881afadc0fea628c7e47d64a4073f3e09894) 2022-01-01 00:02:20 -08:00
21348f6cdb 2021-12-31 nightly release (7bfaa230be303280740b1f94574fb6bc4aee2758) 2021-12-31 00:02:26 -08:00
d94f86e906 2021-12-30 nightly release (2b00dbbbbcb23dc506072a81d04145fb5f983490) 2021-12-30 00:04:33 -08:00
6d3cc13581 2021-12-29 nightly release (a0c99a8d3bce895c6bb6a220e98ca84274eb33dd) 2021-12-29 00:03:09 -08:00
766e7ac1bf 2021-12-28 nightly release (795af1578ccade97792646e02e5ec3c295385501) 2021-12-28 00:05:39 -08:00
5796475e9f 2021-12-27 nightly release (795af1578ccade97792646e02e5ec3c295385501) 2021-12-27 00:03:03 -08:00
59aa7dd7b7 2021-12-26 nightly release (795af1578ccade97792646e02e5ec3c295385501) 2021-12-26 00:02:26 -08:00
788fb7ea22 2021-12-25 nightly release (795af1578ccade97792646e02e5ec3c295385501) 2021-12-25 00:02:28 -08:00
3264153060 2021-12-24 nightly release (795af1578ccade97792646e02e5ec3c295385501) 2021-12-24 00:02:29 -08:00
81d11862e2 2021-12-23 nightly release (a421ee0e52e57e854656d40df3d8280af27ab4a0) 2021-12-23 00:02:56 -08:00
ec8f98980f 2021-12-22 nightly release (6217fee96bf1dc4e1343935d7ff87053f9bf22e4) 2021-12-22 00:02:42 -08:00
8f2a8717fb 2021-12-21 nightly release (5651e1e3ad435ec45b9435b9d78ff2fbc715fa0b) 2021-12-21 00:02:26 -08:00
4811137a2b 2021-12-20 nightly release (7ea86dfdb162758c9fbbf6807ab1dd778591c062) 2021-12-20 00:03:21 -08:00
f0e58f4f9b 2021-12-19 nightly release (fb34af1b211d0b0ed7c2fcc63599215c8fb107c2) 2021-12-19 00:02:54 -08:00
ff227a22b7 2021-12-18 nightly release (9ee3006d583e9853da79f7bd12431c67a863519a) 2021-12-18 00:02:27 -08:00
bb1f3fce83 2021-12-17 nightly release (4a6a5d163012a81268f0db20e9fcc3a926dd4d54) 2021-12-17 00:02:23 -08:00
54d8b577b7 2021-12-16 nightly release (3d358a76783acef87f282cc0fb20818eeb4c133c) 2021-12-16 00:02:38 -08:00
1446d40fb4 2021-12-15 nightly release (3d358a76783acef87f282cc0fb20818eeb4c133c) 2021-12-15 00:02:58 -08:00
785dab1d01 2021-12-14 nightly release (3d358a76783acef87f282cc0fb20818eeb4c133c) 2021-12-14 00:02:31 -08:00
95346adead 2021-12-13 nightly release (e948856ce7ead632483e35714a9a27ea2fa68ee7) 2021-12-13 00:05:52 -08:00
18dc1aa4a1 2021-12-12 nightly release (e948856ce7ead632483e35714a9a27ea2fa68ee7) 2021-12-12 00:02:38 -08:00
0e83eb8b88 2021-12-11 nightly release (e948856ce7ead632483e35714a9a27ea2fa68ee7) 2021-12-11 00:03:25 -08:00
bfd8a5fd5f 2021-12-10 nightly release (e948856ce7ead632483e35714a9a27ea2fa68ee7) 2021-12-10 00:02:19 -08:00
fc105afbd8 2021-12-09 nightly release (8b20dde93240642b3fce14b304e2d5e6d09d9891) 2021-12-09 00:02:36 -08:00
98fc2d6d95 2021-12-08 nightly release (e06af7913692641dbcad1cf4d7931f32b8b4c2a7) 2021-12-08 09:28:55 -08:00
4c5efdfc23 2021-12-08 nightly release (bd8a4a937216433b281a333905175214a12f5fc1) 2021-12-08 00:02:35 -08:00
f12c9eb1a0 2021-12-07 nightly release (38c576cfef0473e2d1921e83ed52a2b4364cdede) 2021-12-07 00:04:14 -08:00
7ae7bea489 2021-12-06 nightly release (6a4fa860262951ca14db0c53fc7d60c3dbc48af4) 2021-12-06 00:02:59 -08:00
ea056f797f 2021-12-05 nightly release (6a4fa860262951ca14db0c53fc7d60c3dbc48af4) 2021-12-05 00:07:22 -08:00
6c54275622 2021-12-04 nightly release (6a4fa860262951ca14db0c53fc7d60c3dbc48af4) 2021-12-04 00:04:13 -08:00
ef07820bab 2021-12-03 nightly release (abda069ce203bbe9b655a939a58a7fedca86af80) 2021-12-03 00:03:58 -08:00
afbb6e88ab 2021-12-02 nightly release (cbe0a38d8c99e5c860d61818b2452ee3efa6d22f) 2021-12-02 00:02:27 -08:00
4b0e1e1c0a 2021-12-01 nightly release (e534c5efd7e7a0ed476fa1e9ec2f37ccd3a1b63d) 2021-12-01 00:02:40 -08:00
379f835b6c 2021-11-30 nightly release (1342f19a8c2d92ed86bc32a0b3a6fc9b35b3e3e3) 2021-11-30 00:06:12 -08:00
9212bb98d6 2021-11-29 nightly release (6ae34ea6f8b65d2ad36e417c3d525507901cfd7f) 2021-11-29 00:06:32 -08:00
1b6bb4f7b0 2021-11-28 nightly release (b10929a14a32c90ac5943cc3f27a3a9105e6f53f) 2021-11-28 00:10:41 -08:00
13468ed9ea 2021-11-27 nightly release (cffad597ea620600472c509b642a9ad03a56fdbe) 2021-11-27 00:05:38 -08:00
f547c5c960 2021-11-26 nightly release (5fdcc20d8d96a6b42387f57c2ce331516ad94228) 2021-11-26 00:07:52 -08:00
dfa8a087e3 2021-11-25 nightly release (5fdcc20d8d96a6b42387f57c2ce331516ad94228) 2021-11-25 00:04:09 -08:00
84395832d9 2021-11-24 nightly release (b5b62b340891f041b378681577c74922d21700a9) 2021-11-24 00:04:25 -08:00
e42361b602 2021-11-23 nightly release (d6a68e0b8dfe314da642e17e84b1f4cb095d00ba) 2021-11-23 00:07:38 -08:00
7cdf1ed9bd 2021-11-22 nightly release (e1c449ff342ee00a4b25e1651bd08a41b7e9fda4) 2021-11-22 00:03:38 -08:00
95589e9ba3 2021-11-21 nightly release (c7ecf1498d961415006c3710ac8d99166fe5d634) 2021-11-21 00:07:57 -08:00
cf31235b62 2021-11-20 nightly release (75955e4ef8a941d72db20c5098371325bd83ffd1) 2021-11-20 00:05:00 -08:00
15077954a3 2021-11-19 nightly release (ca921117589dfd8eca7c18bb2c31350dd26bbd45) 2021-11-19 00:02:50 -08:00
40631bb9cd 2021-11-18 nightly release (980778713588be8a583557c4693634c3782b00c4) 2021-11-18 00:02:53 -08:00
4eb447d938 2021-11-17 nightly release (aa9ee8d02aecee1a01f7e4fe22fd0660851227e8) 2021-11-17 00:06:20 -08:00
bfc110e848 2021-11-16 nightly release (722af775c3ff01c4af4f3fe79bb12997c8ab665a) 2021-11-16 00:05:37 -08:00
649bf082f6 2021-11-15 nightly release (1adeeabdc0c8832420c091c5c668843768530d7f) 2021-11-15 00:03:03 -08:00
228a46daa1 2021-11-14 nightly release (1adeeabdc0c8832420c091c5c668843768530d7f) 2021-11-14 00:06:12 -08:00
39c478062a 2021-11-13 nightly release (80339e85c5fea7c1f3ef1dd63ce67c049691194f) 2021-11-13 00:03:34 -08:00
96a56d12b5 2021-11-12 nightly release (613c1aca6dcc5c9764d81ddfb1e33f7b7b06bd5f) 2021-11-12 00:02:50 -08:00
65f638ab6c 2021-11-11 nightly release (1f07efd0f21e8750967c907c3f96b5344d3ab8c0) 2021-11-11 00:02:47 -08:00
4670c0042a 2021-11-10 nightly release (6b44e75f6bccca7acc8ec31a635f1175c265ac54) 2021-11-10 00:05:00 -08:00
ce5eb6a07a 2021-11-09 nightly release (4b1d044498f49ad5f770354174070a4277279c2d) 2021-11-09 00:02:29 -08:00
05a2aa8a7f 2021-11-08 nightly release (191b48b12f33e1e9525882da0c62b68686d69e42) 2021-11-08 00:04:23 -08:00
2512eac760 2021-11-07 nightly release (9fb3ba9d7bc5f6f8852a2bafe053b16a26d73e51) 2021-11-07 00:02:41 -07:00
9f25d95f9b 2021-11-06 nightly release (ae501a9727c16b8bc83c2fd7b40d9d801133ac91) 2021-11-06 00:04:47 -07:00
458c445463 2021-11-05 nightly release (f1754319e32f302a53520ac3608addb31402209b) 2021-11-05 00:03:07 -07:00
f14f488fd2 2021-11-04 nightly release (2486061c72c12ac7eb53946448f0a29525bf8cd1) 2021-11-04 00:09:46 -07:00
755da00eda 2021-11-03 nightly release (54241a9cfa1d4c5ee2096cd9acec1ae7bf623c37) 2021-11-03 00:07:22 -07:00
c81e8a07b2 2021-11-02 nightly release (c65f332da47eb9bc76aefc50122cae2630fff2cc) 2021-11-02 00:12:01 -07:00
c0f53f117a 2021-11-01 nightly release (97f29bda59deab8c063cf01f0a8ff4321b93c55e) 2021-11-01 00:11:29 -07:00
79922746b0 2021-10-31 nightly release (510e3026a9bdac6e347e8756c7750029201ecc82) 2021-10-31 00:03:48 -07:00
1a13e431d3 2021-10-30 nightly release (c00806beda43063a0978a81aa4e6ce42cb893fe0) 2021-10-30 00:04:21 -07:00
56587756dc 2021-10-29 nightly release (26241994b26df626ca81ec7c666b54bea90e2dd8) 2021-10-29 00:06:31 -07:00
729c0ef82e 2021-10-28 nightly release (fae1c0a4340ef4698f43875f5ed84ba512bdcd95) 2021-10-28 00:06:50 -07:00
4a04d2b0fe 2021-10-27 nightly release (c88da701e2f94987ea58a0980cc19cfb956cd980) 2021-10-27 00:02:48 -07:00
85a7535c03 2021-10-26 nightly release (0e371e413dd12b93cf50ad2441652ee6e0eb7217) 2021-10-26 00:11:04 -07:00
52fec21b2f 2021-10-25 nightly release (83f70db95cf9f53a98fae63d511b5013279a9ac2) 2021-10-25 00:13:15 -07:00
ef0fca4249 2021-10-24 nightly release (83f70db95cf9f53a98fae63d511b5013279a9ac2) 2021-10-24 00:03:57 -07:00
db84da55b7 2021-10-23 nightly release (83f70db95cf9f53a98fae63d511b5013279a9ac2) 2021-10-23 00:03:23 -07:00
5c9ba2feff 2021-10-22 nightly release (9d4549295d8da634771d6040c224d21928805be7) 2021-10-22 00:04:51 -07:00
15fecc4c83 2021-10-21 nightly release (f8f04d5424f9ea3068bcd16d1c799f161944936f) 2021-10-21 00:02:52 -07:00
03975588d7 2021-10-20 nightly release (32e3003726070597da9c6237e59c8ba09744cfe2) 2021-10-20 00:06:35 -07:00
c186c995df 2021-10-19 nightly release (0d203a16fed340488be0966d377e8a6f7f8f4244) 2021-10-19 00:04:57 -07:00
15ef6a1052 2021-10-18 nightly release (49a1d7bfcb9b0fc5f0ee62d91f5d6c76e4cf9dc8) 2021-10-18 00:06:57 -07:00
cb85f701d4 2021-10-17 nightly release (49a1d7bfcb9b0fc5f0ee62d91f5d6c76e4cf9dc8) 2021-10-17 00:08:45 -07:00
1392b8260e 2021-10-16 nightly release (49a1d7bfcb9b0fc5f0ee62d91f5d6c76e4cf9dc8) 2021-10-16 00:05:17 -07:00
8640112dea 2021-10-15 nightly release (49a1d7bfcb9b0fc5f0ee62d91f5d6c76e4cf9dc8) 2021-10-15 00:04:15 -07:00
d1b988e47c 2021-10-14 nightly release (6634570aef94b34dfc3a40865c9ba057356e6a47) 2021-10-14 00:04:21 -07:00
da7bfd9bcc 2021-10-13 nightly release (06a156efc75f726ca95cadc043bab0c0d75d7548) 2021-10-13 00:04:56 -07:00
e5dba35501 2021-10-12 nightly release (99711133403eff8474af0e710a45d367f4fb5e66) 2021-10-12 00:17:43 -07:00
90bf35d772 2021-10-11 nightly release (99711133403eff8474af0e710a45d367f4fb5e66) 2021-10-11 00:03:33 -07:00
29fe93c375 2021-10-10 nightly release (b96c7aea73705a94e584084fa410a7392cb7523f) 2021-10-10 00:04:45 -07:00
654e2c11ec 2021-10-09 nightly release (85b562dd2bd0a0738159746ce83bf110effcc065) 2021-10-09 00:05:22 -07:00
cba9960d6a 2021-10-08 nightly release (ca363d1e22f56722855d2c937eeb508784ad4e33) 2021-10-08 00:07:12 -07:00
a1937d7c45 2021-10-07 nightly release (67970e8c9b326e8e5d6e30ce652ec965f3599f3f) 2021-10-07 00:15:48 -07:00
6102554be1 2021-10-06 nightly release (3bd26792c06a4537883537997078de9d4a73e48d) 2021-10-06 00:08:48 -07:00
a21f2ab401 2021-10-05 nightly release (6eb3a1c8310253c6875d1d703f3cd00cdd9b00f1) 2021-10-05 00:04:15 -07:00
125a559b5c 2021-10-04 nightly release (89ed9bdaee468195faed1eb230960491eb350304) 2021-10-04 00:03:29 -07:00
a7b6201b1e 2021-10-03 nightly release (29c0725e8a0de91e1a4338dec785d1638aa02931) 2021-10-03 00:05:49 -07:00
2cead16bcb 2021-10-02 nightly release (10f62942818281eb99e0bef5f1afcc71c66599a7) 2021-10-02 00:12:13 -07:00
03686b218d 2021-10-01 nightly release (8297a16cc07fa88799fd221cca8d5efa1b71fe5f) 2021-10-01 00:15:23 -07:00
6a58458563 2021-09-30 nightly release (3900509b7da866c22e08120e73a0b54cc30e4de7) 2021-09-30 00:06:50 -07:00
13ee5d4f98 2021-09-29 nightly release (93852bb2d41d90b6ac660015d79f7474bcebb774) 2021-09-29 00:02:57 -07:00
01e3a7f7e7 2021-09-28 nightly release (63bb7c6dbab5644c6f95ccfb66de00db40fa6340) 2021-09-28 00:04:10 -07:00
1a7aea8cb1 2021-09-27 nightly release (146817c9d07ecc6f3af8111f31e37a8c64948cc0) 2021-09-27 00:05:24 -07:00
55eac26522 2021-09-26 nightly release (146817c9d07ecc6f3af8111f31e37a8c64948cc0) 2021-09-26 00:07:02 -07:00
eb64e52a57 2021-09-25 nightly release (af7238f2149fd23b87dbec0b5e0a2e5a82e7f0d1) 2021-09-25 00:03:57 -07:00
af95408d21 2021-09-24 nightly release (d78b3909e83fe6b8f3629bd7013528edbd7edc26) 2021-09-24 00:04:48 -07:00
42cf661a25 2021-09-23 nightly release (0ca1102609e9d2b06bad6965b695c0d76d8ffe46) 2021-09-23 00:05:23 -07:00
701771a879 2021-09-22 nightly release (3f5f721ab34e8b540bba47efbb9fc93d1bac0921) 2021-09-22 00:04:12 -07:00
6cf311ca6d 2021-09-21 nightly release (0dc98728bc06e1e0a553b8ad4ed2591b688cc72f) 2021-09-21 00:06:56 -07:00
5b07b6ad2f 2021-09-20 nightly release (88032d894311e5c0aed8bbc21a4306bc6be4af82) 2021-09-20 00:03:29 -07:00
87df24cd30 2021-09-19 nightly release (88032d894311e5c0aed8bbc21a4306bc6be4af82) 2021-09-19 00:03:22 -07:00
bd05cbf977 2021-09-18 nightly release (6707dfeefb00512eba1d95cb91306671638dc4d5) 2021-09-18 00:03:25 -07:00
64fd318420 2021-09-17 nightly release (8c38d141df429459ea6891847950ce157ac82b2c) 2021-09-17 00:04:16 -07:00
20ba201201 2021-09-16 nightly release (2bb898e039d90d3897cc0fbd1886f2b2fe4dbcfb) 2021-09-16 00:03:54 -07:00
64187fc690 2021-09-15 nightly release (6ab97fbc287ea89ce81abcb24829b502aeb309cc) 2021-09-15 00:03:13 -07:00
99da1f699d 2021-09-14 nightly release (c4073af61d4e530f8627dced870f42526d93dcaf) 2021-09-14 00:06:38 -07:00
84a9f5031f 2021-09-13 nightly release (d46ea03871562d4c93a9dfedcb211051338b44a9) 2021-09-13 00:09:58 -07:00
58df55da4d 2021-09-12 nightly release (dd2d48df07d6b9354f3e448bf66655941a22d1e1) 2021-09-12 00:04:31 -07:00
6862deee75 2021-09-11 nightly release (ade4bf3e82ea369e77d511a796ba936ce281aa89) 2021-09-11 00:02:27 -07:00
5286f993ad 2021-09-10 nightly release (11ef68938c4dda67efb9944ec4f3521776e0f9bc) 2021-09-10 00:05:13 -07:00
c99e75cc1e 2021-09-09 nightly release (15532595209d2daf34d35e10f8d3d3b64966aea2) 2021-09-09 00:09:14 -07:00
58c529752a 2021-09-08 nightly release (1a1fb31cfa3135e56c533da037b5d8dc6981b7fa) 2021-09-08 00:09:21 -07:00
277d05ac57 2021-09-07 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-07 00:02:23 -07:00
b7e88bfb19 2021-09-06 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-06 00:09:57 -07:00
d5e8254a4a 2021-09-05 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-05 00:04:55 -07:00
42fac310f6 2021-09-04 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-04 00:04:19 -07:00
7ee25ea72d 2021-09-03 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-03 00:09:38 -07:00
c9eff59b96 2021-09-02 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-02 00:07:41 -07:00
9c414cc253 2021-09-01 nightly release (0c4e4e588e2e3308c659f741e7bc5cabf0975c09) 2021-09-01 10:47:03 -07:00
aab14ffd43 2021-09-01 nightly release (8406dba65af414f4ac9bb569ca8d70752611e4ba) 2021-09-01 00:05:36 -07:00
cca8c1fe99 2021-08-31 nightly release (8406dba65af414f4ac9bb569ca8d70752611e4ba) 2021-08-31 00:05:17 -07:00
47829fdabc 2021-08-30 nightly release (8406dba65af414f4ac9bb569ca8d70752611e4ba) 2021-08-30 00:03:14 -07:00
5ceddc29e7 2021-08-29 nightly release (8406dba65af414f4ac9bb569ca8d70752611e4ba) 2021-08-29 00:02:17 -07:00
fc8a7a5769 2021-08-28 nightly release (8406dba65af414f4ac9bb569ca8d70752611e4ba) 2021-08-28 00:04:29 -07:00
c9287bd4b7 2021-08-27 nightly release (510d2ece81c18ba3f9bbcbc509effe281a77206c) 2021-08-27 00:06:04 -07:00
3d4fed4dc0 2021-08-26 nightly release (f4bc28990f6edcaf6bfc9e9737a70ea0be514198) 2021-08-26 00:03:25 -07:00
ece2e093bc 2021-08-25 nightly release (8dda299d9631e0f6e121dcb9f8f94bbdd8435515) 2021-08-25 00:11:42 -07:00
0d14ad556e 2021-08-24 nightly release (f5d585391d13287250e85cbd55a17c5e0b8ac2a8) 2021-08-24 00:11:28 -07:00
ca87998c97 2021-08-23 nightly release (d6133b2fe6b863dd49fb21641bd04e24e19ac794) 2021-08-23 00:02:58 -07:00
058c01d851 2021-08-22 nightly release (2289a12f21c54da93bf5d696e3f9aea83dd9c10d) 2021-08-22 00:03:02 -07:00
161d945f2d 2021-08-21 nightly release (a8de0d83fed2d68512c0b0e20716bd63e6769469) 2021-08-21 00:02:47 -07:00
38b78b9bfe 2021-08-20 nightly release (ccca66597ab7079c39b744c2906171aa63e7db61) 2021-08-20 00:13:47 -07:00
41b2532c21 2021-08-19 nightly release (2aa19f33c6272cb016c629792ddc70cf9636fc9a) 2021-08-19 00:02:54 -07:00
67788eefcd 2021-08-18 nightly release (cd5e9dcc1dd2d240aa034b1f02b9886b44b1efa6) 2021-08-18 00:03:53 -07:00
c21b6c1529 2021-08-17 nightly release (075024b9a34904ec3ecdab3704c3bcaa329bdfea) 2021-08-17 00:08:09 -07:00
100f6e1ee6 2021-08-16 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-16 00:03:21 -07:00
b27b86ad55 2021-08-15 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-15 00:07:23 -07:00
fa0a4e5a49 2021-08-14 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-14 00:09:34 -07:00
2cbeb755f3 2021-08-13 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-13 00:09:28 -07:00
c0abc5fe82 2021-08-12 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-12 00:02:42 -07:00
54912fec6b 2021-08-11 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-11 14:52:11 -07:00
bcd79e571e 2021-08-11 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-11 00:03:01 -07:00
56b302f2a7 2021-08-10 nightly release (3c1d1170a4ca2e50a846c69cc61583a29952afee) 2021-08-10 00:03:00 -07:00
269b2a58d4 2021-08-09 nightly release (30214aef2d831067b8962398321f1fb20d359c97) 2021-08-09 00:04:07 -07:00
fd62ee1fff 2021-08-08 nightly release (30214aef2d831067b8962398321f1fb20d359c97) 2021-08-08 00:04:31 -07:00
2b4586f493 2021-08-07 nightly release (4bd54cebe0b736acbcb8f040df897d17956bb71b) 2021-08-07 00:03:28 -07:00
f9574bca64 2021-08-06 nightly release (4bd54cebe0b736acbcb8f040df897d17956bb71b) 2021-08-06 00:04:35 -07:00
b9e662f0e4 2021-08-05 nightly release (4bd54cebe0b736acbcb8f040df897d17956bb71b) 2021-08-05 00:02:27 -07:00
726dc164e6 2021-08-04 nightly release (773a8eede437de972311b21824694e4fb120f6a2) 2021-08-04 00:07:56 -07:00
e2c5ce2ac5 2021-08-03 nightly release (10d3a2c13a1ae547ee5ece5838d66432158d4b22) 2021-08-03 00:02:25 -07:00
4acea95c07 2021-08-02 nightly release (7adb78017a81b656d22864ec97c072519a7dca63) 2021-08-02 00:03:19 -07:00
7e69745b3b 2021-08-01 nightly release (32b37ba2462d9d87337a4fe332f95524a4c49777) 2021-08-01 00:02:33 -07:00
19454af809 2021-07-31 nightly release (7521addede276bd978fc2b113a6f7d010273bdf1) 2021-07-31 00:02:30 -07:00
8b5dbd9749 2021-07-30 nightly release (8f519c5e07e9440a4beb519463302c0cdf2a4b37) 2021-07-30 00:07:42 -07:00
b24169897d 2021-07-29 nightly release (cac4aa71ca262dadd6a887bd1f449b3a35f03bf3) 2021-07-29 00:07:41 -07:00
145a20b1c8 2021-07-28 nightly release (df18d05429d8283ad7b848fa7fca0e06b7ec630b) 2021-07-28 00:03:32 -07:00
7fce0bbbd8 2021-07-27 nightly release (d2594fa5380954eba7d013044ebdde3c041b650d) 2021-07-27 00:02:30 -07:00
fe20ae42aa 2021-07-26 nightly release (8152433de2420fc64063366bebd7b1feadf38d1f) 2021-07-26 00:03:08 -07:00
68fa6f6579 2021-07-25 nightly release (8152433de2420fc64063366bebd7b1feadf38d1f) 2021-07-25 00:04:58 -07:00
cf42c96705 2021-07-24 nightly release (e856a45283c6a215c78597d05f6e8dfeb0030c49) 2021-07-24 00:03:01 -07:00
b324086eca 2021-07-23 nightly release (a9b0a921d592b328e7e80a436ef065dadda5f01b) 2021-07-23 00:04:42 -07:00
2bfbfd8285 2021-07-21 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-21 00:02:20 -07:00
10d38a8b75 2021-07-19 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-19 00:03:15 -07:00
590290b1d0 2021-07-18 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-18 00:02:35 -07:00
d4adc41437 2021-07-17 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-17 00:03:15 -07:00
604c318ee0 2021-07-16 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-16 00:02:40 -07:00
d88bfc953f 2021-07-15 nightly release (94965212e5bf959b029e59d685162b1929bb4c31) 2021-07-15 00:02:11 -07:00
7a317743cf 2021-07-14 nightly release (60382de455ea5f860d5787fac72ea100b7a405bb) 2021-07-14 00:03:10 -07:00
98f637eb78 2021-07-13 nightly release (8a2c7d902fb159bb57a0cf46f3a5ba74095cc34a) 2021-07-13 00:02:45 -07:00
27cbbb870c 2021-07-12 nightly release (76c0f223d3ff430369a2864cf4e05464b1bfb688) 2021-07-12 00:03:04 -07:00
55e9cf2d89 2021-07-11 nightly release (76c0f223d3ff430369a2864cf4e05464b1bfb688) 2021-07-11 00:04:40 -07:00
abc594d345 2021-07-10 nightly release (76c0f223d3ff430369a2864cf4e05464b1bfb688) 2021-07-10 00:05:52 -07:00
3b69ec8047 2021-07-09 nightly release (80797d03e072d32c36fd26589f03368b1536001d) 2021-07-09 00:02:44 -07:00
fc79ae3d0e 2021-07-08 nightly release (c03f99f3ef2db0cd61f9bf3813492cd9fda9ce79) 2021-07-08 00:02:52 -07:00
273fb34c2f 2021-07-07 nightly release (5da507b57bee31805217889b9f8ff673915dbc3a) 2021-07-07 00:03:41 -07:00
b2bec4fed4 2021-07-06 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-06 00:02:14 -07:00
fb10eeee5b 2021-07-05 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-05 00:06:20 -07:00
8ab947ade6 2021-07-04 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-04 00:02:48 -07:00
17a841ec7b 2021-07-03 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-03 00:02:56 -07:00
b31c9ebcab 2021-07-02 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-02 00:02:43 -07:00
0487088661 2021-07-01 nightly release (5576c7bdd1a21187ae4ff6bc6c584555d5470a43) 2021-07-01 00:02:35 -07:00
f502a6f6b9 2021-06-30 nightly release (5bc28c897e5d00c0a839de9692b9b54de5294aff) 2021-06-30 00:02:26 -07:00
1f6616c269 2021-06-29 nightly release (d71e7ae740f635534594075fc3060e24c399d0dc) 2021-06-29 00:03:46 -07:00
d3c62eb854 2021-06-28 nightly release (3bfe15085d6a01b3accf75647d12c70084392a61) 2021-06-28 00:02:36 -07:00
be1a85d8c7 2021-06-27 nightly release (dae25c2002a0d7201588e6ff60316a8d9ace88a8) 2021-06-27 00:02:32 -07:00
f82186a4bb 2021-06-26 nightly release (ad69e2fd1120ac37f826c09ee2f1654f1d5c80b2) 2021-06-26 00:02:35 -07:00
9f626092c9 2021-06-25 nightly release (2dedd96dd259a37f7a812856b43de29a14381aee) 2021-06-25 00:04:26 -07:00
1221896926 2021-06-24 nightly release (5bd49c3396e7dd0380b0ee8633a6ae7c3791e479) 2021-06-24 00:03:03 -07:00
61ec571d74 2021-06-23 nightly release (5bd49c3396e7dd0380b0ee8633a6ae7c3791e479) 2021-06-23 00:02:34 -07:00
360e0ec73e 2021-06-22 nightly release (5bd49c3396e7dd0380b0ee8633a6ae7c3791e479) 2021-06-22 00:02:33 -07:00
143c23e586 2021-06-21 nightly release (3815a013ed76e2a0a0b15fbcd0d419d9be322254) 2021-06-21 00:03:00 -07:00
d65834d579 2021-06-20 nightly release (3815a013ed76e2a0a0b15fbcd0d419d9be322254) 2021-06-20 00:05:17 -07:00
932d09235e 2021-06-19 nightly release (3815a013ed76e2a0a0b15fbcd0d419d9be322254) 2021-06-19 00:03:50 -07:00
eed1219e4b 2021-06-18 nightly release (be038d89898d0d2111b8acedefd08ceed62664cb) 2021-06-18 00:02:08 -07:00
7be6ef5eeb 2021-06-17 nightly release (be038d89898d0d2111b8acedefd08ceed62664cb) 2021-06-17 00:02:32 -07:00
d7ab6005b9 2021-06-16 nightly release (be038d89898d0d2111b8acedefd08ceed62664cb) 2021-06-16 00:03:01 -07:00
f8fb474ad9 2021-06-15 nightly release (1fc3576d97b5c551ea1add6e81da530070f2e03f) 2021-06-15 00:03:05 -07:00
c742b6c9c3 2021-06-14 nightly release (1fc3576d97b5c551ea1add6e81da530070f2e03f) 2021-06-14 00:02:18 -07:00
cb3b64cb01 2021-06-13 nightly release (1fc3576d97b5c551ea1add6e81da530070f2e03f) 2021-06-13 00:02:19 -07:00
54dc5817a9 2021-06-12 nightly release (1fc3576d97b5c551ea1add6e81da530070f2e03f) 2021-06-12 00:03:35 -07:00
5dc15963c2 2021-06-11 nightly release (1fc3576d97b5c551ea1add6e81da530070f2e03f) 2021-06-11 00:02:07 -07:00
ddaf6a0647 2021-06-10 nightly release (2f395f3b5466b72638847df37f5b3948ae4c5948) 2021-06-10 00:02:43 -07:00
210259b208 2021-06-09 nightly release (77dde35f1a55aaebc7ad3df53edb6796a1183a24) 2021-06-09 00:02:29 -07:00
89e6f30509 2021-06-08 nightly release (77dde35f1a55aaebc7ad3df53edb6796a1183a24) 2021-06-08 00:02:40 -07:00
f7bfc7bb4d 2021-06-07 nightly release (de40c8e495ffc7b4042ac544ba38759c4dcb5d50) 2021-06-07 00:02:39 -07:00
216f8135a8 2021-06-06 nightly release (0a5bfa99198a1c07e4eeec35dd8c20082a05f63a) 2021-06-06 00:04:49 -07:00
93404aa88f 2021-06-05 nightly release (c769300301e8bc775e54cdd114e2beaa11b1f893) 2021-06-05 00:02:17 -07:00
ba9b756a30 2021-06-04 nightly release (f87aa23125ff92520204fa0ca201c2d169fd3e17) 2021-06-04 00:02:51 -07:00
abca349be8 2021-06-03 nightly release (f87aa23125ff92520204fa0ca201c2d169fd3e17) 2021-06-03 00:07:09 -07:00
789de8268a 2021-06-02 nightly release (1d37f415671976c36f6bf3fa4b83384db066fc2f) 2021-06-02 00:03:00 -07:00
2916b4e5e9 2021-06-01 nightly release (223725cfb08fc6915597d1e16f11d7c51c3c2934) 2021-06-01 00:02:16 -07:00
d13f843261 2021-05-31 nightly release (ea465f73783a130b7a21200a2ec2fa01c885a63b) 2021-05-31 00:02:32 -07:00
be3599d1b9 2021-05-30 nightly release (d68df54269552dc8312b7c2eba23be20c255c59f) 2021-05-30 00:02:14 -07:00
9b497f13f4 2021-05-29 nightly release (c9af4c2636c7ca27be15f39f16512c2f5f36b7fe) 2021-05-29 00:02:07 -07:00
8149145c71 2021-05-28 nightly release (934f6dca65a7521aec7a13a1156b21551196bba0) 2021-05-28 00:02:43 -07:00
fa0e02b7cf 2021-05-27 nightly release (58d1b3639bc07f9519de18e5a18e575f260c7eeb) 2021-05-27 00:02:34 -07:00
b530f7c66b 2021-05-26 nightly release (cf395c071820e4d98a960bc761524b655d262bb3) 2021-05-26 00:04:03 -07:00
6b0e363bd3 2021-05-25 nightly release (f29e75c4dcc3454d50849f3a4670c6ae1d4d3142) 2021-05-25 00:03:02 -07:00
c375b9af1f 2021-05-24 nightly release (e8c6a65074aa039b749edab2b968a4885550dbde) 2021-05-24 00:03:12 -07:00
8c318c5cdd 2021-05-23 nightly release (e8c6a65074aa039b749edab2b968a4885550dbde) 2021-05-23 00:03:29 -07:00
f8f3346997 2021-05-22 nightly release (e8c6a65074aa039b749edab2b968a4885550dbde) 2021-05-22 00:04:14 -07:00
f3a9779b78 2021-05-21 nightly release (e8c6a65074aa039b749edab2b968a4885550dbde) 2021-05-21 00:02:16 -07:00
94e33c13cd 2021-05-20 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-20 00:02:33 -07:00
c5de2f0f2c 2021-05-19 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-19 00:10:34 -07:00
19537812bc 2021-05-18 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-18 00:02:24 -07:00
fc348d8ad2 2021-05-17 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-17 00:02:44 -07:00
7d615e312d 2021-05-16 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-16 00:02:20 -07:00
537fc9b889 2021-05-15 nightly release (00a46a5eb46073807ec3d28dfd83bf07b206530f) 2021-05-15 00:04:07 -07:00
4fb06c9e93 2021-05-14 nightly release (9b95568dc3a81de60435ad155ec87f625f4b69a2) 2021-05-14 00:02:23 -07:00
40b7867cb5 2021-05-13 nightly release (d212bf186390fdcc3b36cd3b41489544c4f50b75) 2021-05-13 00:02:23 -07:00
ef9586b10b 2021-05-12 nightly release (0d4dc6cb39184c2a6ef48cc5238f4df60ec9f14d) 2021-05-12 00:03:01 -07:00
bde9f3aa8c 2021-05-11 nightly release (f97650e70bb8ef42680a700e8c14a288aa3ea661) 2021-05-11 00:02:57 -07:00
9584d83c36 2021-05-10 nightly release (fc55290e5b128d82fa3854565a4d89f60d747fa7) 2021-05-10 00:02:29 -07:00
515bd352fa 2021-05-09 nightly release (e8fb167b1732b2e0ed7dde05f5c59e9a34997a00) 2021-05-09 00:05:09 -07:00
6e6cc22e9a 2021-05-08 nightly release (8c04593c0a486bea7e2cbec348298d348742e096) 2021-05-08 00:02:10 -07:00
c9944ca13c 2021-05-07 nightly release (e5e095cbe4dbc5a601f98e6134dcbd59c6342d7d) 2021-05-07 00:02:26 -07:00
b64472a49d 2021-05-06 nightly release (7627dd568aeda29b2cd757f11493d8a1f0599b60) 2021-05-06 00:11:15 -07:00
513f2a2ada 2021-05-05 nightly release (9c5478588e68a104024dcdaae61c9b402390631c) 2021-05-05 00:02:38 -07:00
a465a9317b 2021-05-04 nightly release (c0309af1f3d57e362a00308c48bca8a5ac2ecb38) 2021-05-04 00:03:00 -07:00
2bd4eadf47 2021-05-03 nightly release (5c68072ee866dde690bc3dda7c2b4bf1a1e6f485) 2021-05-03 00:02:14 -07:00
4ee630a813 2021-05-02 nightly release (afe6b4c8ee7c494c259bbcf8585ffb30a416d924) 2021-05-02 00:02:39 -07:00
adfc9a352b 2021-05-01 nightly release (5e422fa1707f637a7eb8ea9207943d729e13cbda) 2021-05-01 00:02:03 -07:00
1bb0a274a0 2021-04-30 nightly release (65968ab817db323a532f50a2f2ea131ae27dada5) 2021-04-30 00:02:42 -07:00
434be444db 2021-04-29 nightly release (73453f1de112609a34461c84bb16faf74b8b40a4) 2021-04-29 00:03:04 -07:00
6ea01360d9 2021-04-28 nightly release (808850b6de8f92afde0ddf5dce6b94523b126b51) 2021-04-28 00:04:10 -07:00
0fd1dbcff0 2021-04-27 nightly release (7989f2ac879fcc624fc7cc055f437fa849cda5f2) 2021-04-27 00:02:25 -07:00
fb65a2e2ff 2021-04-26 nightly release (70d9be0f42e569d6c74091bbed89ac2d9933ee65) 2021-04-26 00:02:28 -07:00
bc2e5ae70f 2021-04-25 nightly release (bcef7ebd603a6e16a11ab20a030a4338dbb91ff6) 2021-04-25 00:03:07 -07:00
2322ce0268 2021-04-24 nightly release (19943aafe90558a209857a188191df161fd32a6f) 2021-04-24 00:02:35 -07:00
b881571665 2021-04-23 nightly release (19943aafe90558a209857a188191df161fd32a6f) 2021-04-23 00:04:30 -07:00
c7974927b6 2021-04-22 nightly release (19943aafe90558a209857a188191df161fd32a6f) 2021-04-22 00:02:28 -07:00
aca2009f6b 2021-04-21 nightly release (1e03a2505f9cee92587bf45fbbbbfedede5cb9ec) 2021-04-21 00:01:48 -07:00
24ee5bc666 2021-04-20 nightly release (ca6e5c7fc9244ace874bb99aacb12eddef5d4f8a) 2021-04-20 00:02:03 -07:00
6b4502817d 2021-04-19 nightly release (3e42da09dfac51a260a01acd65953e497d027059) 2021-04-19 00:02:20 -07:00
cffbd8af00 2021-04-18 nightly release (85126629a59ac51dcebca08b0ef2da5dd3afd827) 2021-04-18 00:01:53 -07:00
8ed25026ce 2021-04-17 nightly release (98933866a984d104e9f2bf1a91f3a38d3cbe0b99) 2021-04-17 00:01:58 -07:00
10ff790778 2021-04-16 nightly release (bde53cfd9ad3992b21ff30120018017252e8a643) 2021-04-16 00:02:34 -07:00
afff696fee 2021-04-15 nightly release (1688a5d31a740fe502232295ec22e49d376e4f2d) 2021-04-15 00:02:05 -07:00
12d5971c08 2021-04-14 nightly release (19f15317a0c2153aa9ef911e84b939122c9b0769) 2021-04-14 00:02:10 -07:00
a697df1413 2021-04-13 nightly release (19f15317a0c2153aa9ef911e84b939122c9b0769) 2021-04-13 00:02:04 -07:00
e5450b3cc8 2021-04-12 nightly release (19f15317a0c2153aa9ef911e84b939122c9b0769) 2021-04-12 00:01:50 -07:00
3e479451cd 2021-04-11 nightly release (c9b94a85e9029f994f9bd72409293723cbc1d7b1) 2021-04-11 00:01:54 -07:00
552e7d3bd3 2021-04-10 nightly release (7485818a3ff69775b7a01b2d4d971df441702605) 2021-04-10 00:02:17 -07:00
26116b3581 2021-04-09 nightly release (f1a0b817f063250d76aa3bddba6d0d5772a77bf3) 2021-04-09 00:01:49 -07:00
b785f7a276 2021-04-08 nightly release (5f90ed550ccffbe02476a9229ecddc3dc89b3d50) 2021-04-08 00:02:36 -07:00
167a6be779 2021-04-07 nightly release (96655e2b81765d94c359a5dc079ec00404244184) 2021-04-07 00:01:53 -07:00
435d2577d1 2021-04-06 nightly release (b986a76d91906f3e22d6963b16f56e2f8e813a54) 2021-04-06 00:01:53 -07:00
0226b9c72e 2021-04-05 nightly release (6e33420436412d3704d181ebb7fe3f39ba00a087) 2021-04-05 00:02:01 -07:00
a35e8f72a0 2021-04-04 nightly release (6e33420436412d3704d181ebb7fe3f39ba00a087) 2021-04-04 00:01:51 -07:00
33aed5f7bf 2021-04-03 nightly release (6e33420436412d3704d181ebb7fe3f39ba00a087) 2021-04-03 00:01:56 -07:00
729f49d35a 2021-04-02 nightly release (047a487b072354325d50db1510e75ec4218b1a75) 2021-04-02 00:01:54 -07:00
732df435ba 2021-04-01 nightly release (eb52e3646035c8916495515399c2c7ccf490c705) 2021-04-01 00:02:56 -07:00
12be6b82da 2021-03-31 nightly release (920eb01e2e066f6e51f20d0e24a02472e53bc723) 2021-03-31 00:02:04 -07:00
0f545f9a7b 2021-03-30 nightly release (1267efce75e20e571995694c6fbcf4934119395b) 2021-03-30 00:01:49 -07:00
f6458977ba 2021-03-29 nightly release (b7c5d575638afeb7b61594782af438658f6234cc) 2021-03-29 00:02:02 -07:00
3f1f3bf563 2021-03-28 nightly release (7caa464631c1fcc9f9a4290cf0fe7913c36d1796) 2021-03-28 00:01:54 -07:00
6f95b09bb8 2021-03-27 nightly release (394b720e38455c2c07e6a31ef816edd0c5afbeb4) 2021-03-27 00:01:48 -07:00
cae5d728c0 2021-03-26 nightly release (fd58ececab731803eceace70b985b35f9872b53c) 2021-03-26 00:01:52 -07:00
755dd076a3 2021-03-25 nightly release (347ab5d8b86a69c4ab0a163b01d41cd0d0734f59) 2021-03-25 00:01:57 -07:00
13fb17b712 2021-03-24 nightly release (91d37d7d2fd2bb9bc9dcaa3ffd58a39426285af9) 2021-03-24 00:01:52 -07:00
09588132d7 2021-03-23 nightly release (6a4d2c61d5ea12d62bfcf0ad0b9cd79ae776433e) 2021-03-23 00:01:50 -07:00
6f3e9ce0af 2021-03-22 nightly release (6a4d2c61d5ea12d62bfcf0ad0b9cd79ae776433e) 2021-03-22 00:02:07 -07:00
82c758067f 2021-03-21 nightly release (6a4d2c61d5ea12d62bfcf0ad0b9cd79ae776433e) 2021-03-21 00:03:10 -07:00
c3626319c3 2021-03-20 nightly release (454dd7ba8647ac11735c6563ac8e2b60313789ad) 2021-03-20 00:02:11 -07:00
638cdc776a 2021-03-19 nightly release (19792b45dbf30b4555c4a87512e624cdd4aa6e4c) 2021-03-19 00:01:57 -07:00
1bbf0359e8 2021-03-18 nightly release (2e7311ef25a028f06bfff7cf97e6fbf5da767eb5) 2021-03-18 00:03:31 -07:00
b14b3f48b9 2021-03-17 nightly release (b936abd840d8fa3122d3a6166c0d7344d8352901) 2021-03-17 00:02:03 -07:00
3f71714146 2021-03-16 nightly release (e87ab2ac4d4f4d208a1dcbc21b584fe59bf18e5f) 2021-03-16 00:01:50 -07:00
f595ab38d4 2021-03-15 nightly release (f6df18f6ca444561b4108d746ed7b579a78c0294) 2021-03-15 00:02:10 -07:00
3ddc48dbe5 2021-03-14 nightly release (84af0c7acdac705e0465d4865cd37e6cfe2cd537) 2021-03-14 00:02:01 -08:00
49244d58a9 2021-03-13 nightly release (8a5b946ff6ecc068b11d5c40a571af8b8b24137e) 2021-03-13 00:01:57 -08:00
4ec6b36905 2021-03-12 nightly release (997f05cd34078c0d2447f9f310b1f5d6fd041503) 2021-03-12 00:01:53 -08:00
f8c286b72c 2021-03-11 nightly release (0584fd9339af7c939ab7d955db05743ba58ff86d) 2021-03-11 00:01:53 -08:00
30b9583650 2021-03-10 nightly release (a9e4bb56e54e83a69fbe7fad6d637817db1dd6a4) 2021-03-10 00:01:58 -08:00
56e7889e52 2021-03-09 nightly release (a947bfaa2650ea1f4c6e61e94c7e6d3eb3a3d952) 2021-03-09 00:02:00 -08:00
21d09eea0c 2021-03-08 nightly release (36dc5d3b3aaa81280ad290d4b85d4dd033c5c911) 2021-03-08 17:06:31 -08:00
8859a4060b 2021-03-05 nightly release (69bb0e028596d481cda38a0f49bcb5965fab4293) 2021-03-05 00:01:52 -08:00
39496d2d15 2021-03-04 nightly release (d98839e53eaa171230c6d190e51e2fded8fa8fe1) 2021-03-04 00:02:00 -08:00
cc88ac8bbd 2021-03-03 nightly release (30dd15e778195c6b7cf266a0b4b20af9c9ca5ba7) 2021-03-03 00:02:33 -08:00
715835c8ee 2021-03-02 nightly release (748285ccd76b67db7ebc0bc099789bb09c23c038) 2021-03-02 00:01:55 -08:00
70f88165ce 2021-03-01 nightly release (b9e12a0e8290af1c05107cf7e9a6117355e5ac1a) 2021-03-01 00:01:58 -08:00
ad67b30e18 2021-02-28 nightly release (f2f7fdba05159e90b75b780cef29a0640a1f475c) 2021-02-28 00:01:49 -08:00
ea85ae6460 2021-02-27 nightly release (177694681ecc582c5335adbbe43c1ee1e02d53ce) 2021-02-27 00:01:55 -08:00
7e0921bfc4 2021-02-26 nightly release (7a178a8a523d4653a3a2fa10c573b71e7fab1b9a) 2021-02-26 00:01:51 -08:00
edc5fdff12 2021-02-25 nightly release (57947c5d85cb2fc755773ebce2df06b1c7d177b0) 2021-02-25 00:04:07 -08:00
8b997aa6a3 2021-02-24 nightly release (b4b7db2f3bdd67a8650583a49b8a12b24c2c7a78) 2021-02-24 11:13:59 -08:00
c89db19de8 2021-02-23 nightly release (64847c7f0b3559c6edc40f001619b80c7dc68ef7) 2021-02-23 00:04:07 -08:00
3cbcda0694 2021-02-22 nightly release (c2b9283d4aa3f05999926b6871fc1c4bb787c15a) 2021-02-22 00:01:57 -08:00
ad403652be 2021-02-21 nightly release (a935118c90db94879b41d6dc359520e99e6cdca2) 2021-02-21 00:01:49 -08:00
ebd6d2d8c4 2021-02-20 nightly release (bb34fd6191e0f2a31edc38e00d93a24d9da8c031) 2021-02-20 00:01:50 -08:00
c316f4b69f 2021-02-19 nightly release (0c46b6b3f63b0858cb0d3e76ee43ccc2659143a6) 2021-02-19 00:02:18 -08:00
02ae2764a8 2021-02-18 nightly release (ac121165e29d29399615e4ea8fc286ab0864571d) 2021-02-18 00:01:55 -08:00
15f099ad3a 2021-02-17 nightly release (bb9e0c625ebe0e8dd73d896b8a52ff807d969fb3) 2021-02-17 00:01:51 -08:00
a9f93776d4 2021-02-16 nightly release (df837d0384398f1fac1000189d62b05e7ff0240d) 2021-02-16 00:04:22 -08:00
486e771762 2021-02-15 nightly release (1903b32c35a7e7432d62e43a2d3a679f6f01066d) 2021-02-15 00:01:55 -08:00
6c8fea96b3 2021-02-14 nightly release (4949eea0ffb60dc81a0a78402fa59fdf68206718) 2021-02-14 00:02:55 -08:00
08bda18b3f 2021-02-13 nightly release (71d0b5632bfa29f1b6828050edc6512402e253a7) 2021-02-13 00:03:08 -08:00
acd0a1de4c 2021-02-12 nightly release (e4203c4306d86a546d12f9fc354ea78794e2606e) 2021-02-12 00:02:09 -08:00
5c9184d4c4 2021-02-11 nightly release (fd41ed1ccef68e88e075c7b633409644c22f0782) 2021-02-11 00:01:59 -08:00
99bc386e8d 2021-02-10 nightly release (0620c96fd6a140e68c49d68ed14721b1ee108ecc) 2021-02-10 00:02:16 -08:00
567520f3a8 2021-02-09 nightly release (034a007ad80038ad796959387c5a450f7a05ac57) 2021-02-09 00:02:04 -08:00
71e7186e5d 2021-02-08 nightly release (fcf8b712348f21634044a5d76a69a59727756357) 2021-02-08 00:02:08 -08:00
3e934d77c2 2021-02-07 nightly release (0c313564af6173d54b393ae0b70cf2cb0db5a5c8) 2021-02-07 00:02:00 -08:00
256d46ca95 2021-02-06 nightly release (215d9daceb5482d2d5cceaaf44cb3f2aa38faaaf) 2021-02-06 00:02:23 -08:00
a8da1dd168 2021-02-05 nightly release (d3023d86ba6eebbcfeafc1633d1a8f8249d12e6d) 2021-02-05 00:02:07 -08:00
5fdff0d29f 2021-02-04 nightly release (1518aee639b6f9fb4456977431720bd5ecb2ed74) 2021-02-04 00:03:20 -08:00
4b6fea91c7 2021-02-03 nightly release (62f6e55439255d27d41752e2f01715c11e04bd38) 2021-02-03 00:02:01 -08:00
d8fdfb6912 2021-02-02 nightly release (7328710cbce459bbd77dfe424acc94010725d979) 2021-02-02 00:01:53 -08:00
59906439fe 2021-02-01 nightly release (40c0fffb4bb4a7d49cb50c6b276565aa60b3daaf) 2021-02-01 00:02:00 -08:00
fa29005e57 2021-01-31 nightly release (9cf62a4b5d3b287442e70c0c560a8e21d8c3b189) 2021-01-31 00:02:28 -08:00
f34c7916c7 2021-01-30 nightly release (e26fccc22b1f1fa28bceb076567d3e53c92a4c77) 2021-01-30 00:04:16 -08:00
ecc357c395 2021-01-29 nightly release (534aabce147129fc2fa54d448093c79603d45781) 2021-01-29 00:02:38 -08:00
470e6b3037 2021-01-28 nightly release (9fe7c0633f74b04889cce81cea2cbb28f8d08cea) 2021-01-28 00:02:15 -08:00
8d5685876a 2021-01-27 nightly release (19358808604129573dba354558ca4019acf2503f) 2021-01-27 00:02:13 -08:00
adf8b7eb1c 2021-01-26 nightly release (6dda0363bb47fbfbceb242098f63b67560540584) 2021-01-26 10:19:32 -08:00
e64ec0010a 2021-01-25 nightly release (48b6b9221a544f7d5b7d6f93eec2fa304da8af94) 2021-01-25 00:09:03 -08:00
49b090d628 2021-01-24 nightly release (1f40f2a1723fd3b9302bea3829f2570c8e0e7e94) 2021-01-24 00:03:43 -08:00
159eb0d08a 2021-01-23 nightly release (6aec1eba1582ef2c3486652ec0a6cd0ce346b83d) 2021-01-23 00:04:39 -08:00
c51f016767 2021-01-22 nightly release (7494f0233aabb5109e068f3cad73e20dc6a8dd23) 2021-01-22 00:02:55 -08:00
52f6bba29c 2021-01-21 nightly release (439afda090a343e90aa87678a0019c0dc26880cc) 2021-01-21 00:03:48 -08:00
99845753b9 2021-01-20 nightly release (e00966501b63013cd3057daf864cbb54e7f4cf9b) 2021-01-20 00:03:07 -08:00
eb7195e27a 2021-01-19 nightly release (5252e9857a1587a38ca09d316c958eb232e0f68d) 2021-01-19 00:06:10 -08:00
e6279f85c9 2021-01-18 nightly release (3f052ba07b2da4801d8f52f4116357760d5b632d) 2021-01-18 00:07:39 -08:00
43d4eaff8a 2021-01-17 nightly release (7e05d07ca7557b0b433b97a5943c8eedbbf34837) 2021-01-17 00:02:40 -08:00
cc54968f58 2021-01-16 nightly release (a469336292e411a056fbe9445ed948108acde57d) 2021-01-16 00:05:07 -08:00
c4efbf7862 2021-01-15 nightly release (d9f71b5868ca7e36e16e9e6a87ae39c738ccdc5f) 2021-01-15 00:04:29 -08:00
71094fd978 2021-01-14 nightly release (19a8e68d8c2c53f47f1dcfdbadec03f6897d84e6) 2021-01-14 00:04:55 -08:00
4c84d88295 2021-01-13 nightly release (b54240d200fe34fe425857a67a87273bc105665f) 2021-01-13 00:02:38 -08:00
538bf139cb 2021-01-12 nightly release (8c5b0247a571aa672f9070fcc9769f2c4bb19571) 2021-01-12 00:04:11 -08:00
efdef1838a 2021-01-11 nightly release (9d8bd216f9e29251685389a22dce69614ab648a5) 2021-01-11 00:02:43 -08:00
5f767b4f41 2021-01-10 nightly release (375c30a7177442fb9d6de7516a9ae4031ae324c4) 2021-01-10 00:03:26 -08:00
206064ae71 2021-01-09 nightly release (d4c1684cf5ddbbe808d71999d4fdf014c3fdb8b1) 2021-01-09 00:02:27 -08:00
bc83b4980f 2021-01-08 nightly release (c215ffb6a2de1c85a62a146a9e282908335ba3ed) 2021-01-08 00:04:16 -08:00
b7bb2d75a2 2021-01-07 nightly release (968ad47b410b93d2600d163db50eb9fb45c24a2b) 2021-01-07 00:04:09 -08:00
396c67bec6 2021-01-06 nightly release (ad7d208ba5f2c5614679a7999918b75ae74530e9) 2021-01-06 00:05:09 -08:00
21c7ada3a6 2021-01-05 nightly release (ee80b458433627ea8e4f48e7b50043dca1906bb1) 2021-01-05 00:03:00 -08:00
e2681f4d25 2021-01-04 nightly release (e44b2b72bd4ccecf9c2f6c18d09c11eff446b5a3) 2021-01-04 00:03:15 -08:00
4af891460c 2021-01-03 nightly release (8aad66a7bd35782a0e662d133276830204499656) 2021-01-03 00:02:30 -08:00
b788d5159e 2021-01-02 nightly release (8aad66a7bd35782a0e662d133276830204499656) 2021-01-02 00:03:13 -08:00
d7a4e5a328 2021-01-01 nightly release (749f8b78508c43f9e6331f2395a4202785068442) 2021-01-01 00:05:05 -08:00
afb63f9b63 2020-12-31 nightly release (749f8b78508c43f9e6331f2395a4202785068442) 2020-12-31 00:03:08 -08:00
8b6af7fd8f 2020-12-30 nightly release (12b73fdbbf4a89f3ec46983f90a2bb2d866cb338) 2020-12-30 00:02:59 -08:00
3c482552c8 2020-12-29 nightly release (c619892482667f846f96215f290df70d56bd4a84) 2020-12-29 00:03:24 -08:00
606ddb19c9 2020-12-28 nightly release (963f7629b591dc9750476faf1513bc7f1fb4d6de) 2020-12-28 00:05:11 -08:00
95d87beeb1 2020-12-27 nightly release (963f7629b591dc9750476faf1513bc7f1fb4d6de) 2020-12-27 00:04:51 -08:00
9b38aa2443 2020-12-26 nightly release (963f7629b591dc9750476faf1513bc7f1fb4d6de) 2020-12-26 00:02:40 -08:00
6d23d0fe51 2020-12-25 nightly release (963f7629b591dc9750476faf1513bc7f1fb4d6de) 2020-12-25 00:02:57 -08:00
8e7138bce1 2020-12-24 nightly release (89b4899ea5363fd69872c0cabf0dedea2dc533c8) 2020-12-24 00:03:20 -08:00
54837ec26d 2020-12-23 nightly release (55b431b17aba504ae7b75f6f97b4437101e50f38) 2020-12-23 00:04:02 -08:00
58d9290532 2020-12-22 nightly release (590e7168ed66bc1060a0bff6c35cc1eea86db0ae) 2020-12-22 00:02:56 -08:00
b8f60df5f5 2020-12-21 nightly release (5c3788d5d76f64f6708e0b79f40b1cf45276625a) 2020-12-21 00:02:54 -08:00
9ceeb84f52 2020-12-20 nightly release (c0deb231db76dbea8a9d326401417f7d1ce96ed5) 2020-12-20 00:02:40 -08:00
370cb23850 2020-12-19 nightly release (e0f60c97208a9745b4e031b0941ec60b75a7406b) 2020-12-19 00:02:41 -08:00
cfa557ab81 2020-12-18 nightly release (5fcfebd84abc5af3f4816d2a77319dd617d52da1) 2020-12-18 00:03:18 -08:00
006df1bad5 2020-12-17 nightly release (65876d3f5134bba3c6ab5dccd1860ce1b9e43b6d) 2020-12-17 00:03:36 -08:00
902afe6bbb 2020-12-16 nightly release (94e328c0385d2e915d2bc38446d1da2f1cd94068) 2020-12-16 00:05:43 -08:00
450503d815 2020-12-15 nightly release (39a10fb6528b355791993a67b895934e3c902765) 2020-12-15 00:03:40 -08:00
eb6c0edcb4 2020-12-14 nightly release (94a3d4b083c945050a93fefcdd20d7d336185f2d) 2020-12-14 00:03:44 -08:00
b50c85260f 2020-12-13 nightly release (dc4db95540da06623c747bf0f2bf9f4af3d2925a) 2020-12-13 00:02:58 -08:00
637ad9acd8 2020-12-12 nightly release (717f31d9846f9b7707f9b1ab6076e1353f399119) 2020-12-12 00:02:49 -08:00
2275fa0a44 2020-12-11 nightly release (2b1057b0cf2eaea633a90b2e130612d8f93eeb2b) 2020-12-11 00:03:11 -08:00
ff32f65844 2020-12-10 nightly release (27f7d1c2865355c694fb964609df45974748615b) 2020-12-10 00:07:21 -08:00
ffe1744602 2020-12-09 nightly release (2d9585a6a10ea5717c6523086259391684c5aaf2) 2020-12-09 00:03:38 -08:00
6b1df384ea 2020-12-08 nightly release (cb6233aa538114fce55380a79978f3e576eb7cfe) 2020-12-08 00:05:02 -08:00
dff5a4324f 2020-12-07 nightly release (a39398b9e5d528e4a6ca293f1703833932f0d9b2) 2020-12-07 00:02:43 -08:00
c58b37f253 2020-12-06 nightly release (17f53bffefa7bd46e134a99bcd4c4e471b81c86b) 2020-12-06 00:02:41 -08:00
19f40be8c8 2020-12-05 nightly release (6317e0b2f1090ea4189e88557d4ff6656fb758cc) 2020-12-05 00:04:00 -08:00
ea248f6464 2020-12-04 nightly release (2181ff89bb6126b1382f35d7cfca23ee45f40fc9) 2020-12-04 00:03:29 -08:00
2e5c4409a0 2020-12-03 nightly release (79b9c034656652cad838a15094536fe38344ab2c) 2020-12-03 00:03:37 -08:00
c87acc2ecc 2020-12-02 nightly release (bcc85a363ecbcb381623d3c26faa94be13ad58bc) 2020-12-02 00:04:43 -08:00
492c0eb536 2020-12-01 nightly release (ccd20e995fb56a1aafefd90c0f2c68c537534c67) 2020-12-01 00:56:29 -08:00
d3dbcaf423 2020-11-30 nightly release (755b8158e2a664ad308bab3cc0b6f4ae14aefd39) 2020-11-30 00:04:24 -08:00
1cabe03694 2020-11-29 nightly release (36c87f1243f582ae761ec6d69f5965bd91c32d3c) 2020-11-29 00:04:52 -08:00
2221ff5a44 2020-11-28 nightly release (272f4db043ec2c63ecfe6d2759e7893cb842a3c3) 2020-11-28 00:04:01 -08:00
1b0b4998ee 2020-11-27 nightly release (7df84452423f44ebe1db40a2e3463066bf954f95) 2020-11-27 00:02:58 -08:00
c10ca6b85f 2020-11-26 nightly release (18ae12a841bdc99c6cce65ac5c77cc1149dc8564) 2020-11-26 00:05:35 -08:00
b5e7a24057 2020-11-25 nightly release (e9efd8df1bce365d2dddbbc9e9266b7432aee5b2) 2020-11-25 00:03:13 -08:00
168b0224aa 2020-11-24 nightly release (671ee71ad4b6f507218d1cad278a8e743780b716) 2020-11-24 00:03:27 -08:00
88092c79b7 2020-11-23 nightly release (4ed7f36ed181ee784f9904d5eabf073701e1fb78) 2020-11-23 00:02:56 -08:00
90af5978b6 2020-11-22 nightly release (f2da18af143b3fdb322d2188dace6e2020e301b9) 2020-11-22 00:02:42 -08:00
4f320939f0 2020-11-21 nightly release (fdc62c74a60a5cd3a833d50a6f23045e9c55035e) 2020-11-21 00:03:16 -08:00
7ad15e28f6 2020-11-20 nightly release (eb49dabe925b2fa32897dae771f831cb056aef65) 2020-11-20 00:02:57 -08:00
a4262a1db7 2020-11-19 nightly release (8819bad86cd15c74dd076012c59e7b1f6081fda4) 2020-11-19 00:03:09 -08:00
5a09c3b029 2020-11-18 nightly release (df0ae244a999a365ac13695cf4682ea30490b157) 2020-11-18 00:02:46 -08:00
0f0c2ba3e8 2020-11-17 nightly release (49f0e5dfeb64a928c6a2368dd5f86573b07d20fb) 2020-11-17 00:02:39 -08:00
984b5f0945 2020-11-16 nightly release (013e6a3d9d0d3ebe8283bf9af0f3b666ba4d96b7) 2020-11-16 00:03:12 -08:00
c36b7c99a6 2020-11-15 nightly release (8ef7ccd669a36f49eb052d12a71df9b7836cafa5) 2020-11-15 00:04:25 -08:00
b553e35ddf 2020-11-14 nightly release (982ae987d3572b211b371e5c2a7f8062b1ae86f1) 2020-11-14 00:03:21 -08:00
17d86337b4 2020-11-13 nightly release (16d6af74e6605941f51ffd9cacca15e40fa9eec8) 2020-11-13 00:04:31 -08:00
9bc97fcaf0 2020-11-12 nightly release (4b25d83e9bdaee701967d7aff625cedf4c12913c) 2020-11-12 00:03:50 -08:00
20721e12b8 2020-11-11 nightly release (ae5c2febb912066f1a8dec8b54451c09195b2c6d) 2020-11-11 00:02:53 -08:00
0a7dab4ce7 2020-11-10 nightly release (f2eac5df1840b65b24ef2f1c3bd6332f654935b6) 2020-11-10 00:02:38 -08:00
1ca45fae2d 2020-11-09 nightly release (9e0102c10f57631000ebf28e55a055f480b9b780) 2020-11-09 00:02:38 -08:00
e9dd9f342a 2020-11-08 nightly release (781e0ed835e1bfbf6613720c89ba98a4de53e2e9) 2020-11-08 00:02:44 -08:00
6c2cd89110 2020-11-07 nightly release (9d0c6e9469028cd7e7f44172e30aa4ce21b64be3) 2020-11-07 00:03:07 -08:00
1e9fe285da 2020-11-06 nightly release (873652d9accc54f8d2a3fac4baf1c926af755025) 2020-11-06 00:03:02 -08:00
f463bdbe57 2020-11-05 nightly release (d8c3b2b10c14f86f817f1ef12cabc8ef5e37c30a) 2020-11-05 00:03:43 -08:00
6071dc770f 2020-11-04 nightly release (996f444c007a89f7364ed03b7c24755f7ec43eb0) 2020-11-04 00:03:13 -08:00
d60c452534 2020-11-03 nightly release (0ead9d545a92e5d4bed99661b108545a0126826d) 2020-11-03 00:04:54 -08:00
1c10830b51 2020-11-02 nightly release (1cc1da541158b53c24a579fd316d190d5c27bfd1) 2020-11-02 00:02:44 -08:00
b5d9a1c61e 2020-11-01 nightly release (19ede75eb95b2436d5e493497a38c1e6be5ec50b) 2020-11-01 00:02:36 -07:00
ec10b116d2 2020-10-31 nightly release (ee0033af9b7531ba0a453844dc621f8cfa140c20) 2020-10-31 00:04:53 -07:00
3ee3d3b7eb 2020-10-30 nightly release (d95e1afad37ab91a7c8d3fed19d86f2b7f2d218f) 2020-10-30 00:03:00 -07:00
f71e46c37f 2020-10-29 nightly release (b553c06abbe7133c059e05844033067625382973) 2020-10-29 00:02:39 -07:00
d25dcd31ae 2020-10-28 nightly release (ddbdbce6232f896f47b81fc13f95b536cf274d20) 2020-10-28 00:03:01 -07:00
ea2c6ca48e 2020-10-27 nightly release (6b50ccc41cd9feb624243a518e1362659f2fada4) 2020-10-27 00:03:16 -07:00
81d3931f01 2020-10-26 nightly release (d94bd998ece87a1af996ad047e98b1ccba2c3a85) 2020-10-26 00:02:44 -07:00
06e4087ffa 2020-10-25 nightly release (edbc84aa4ae6b9d0410e581c31e8c309426b2d29) 2020-10-25 00:03:10 -07:00
ebbb40c985 2020-10-24 nightly release (13b7855f33e61e3c466197518250e57ffe5886db) 2020-10-24 00:04:54 -07:00
7a69d3fa6b 2020-10-23 nightly release (4fd2cce9fa939006b97abca6e66c117bb42b2b2e) 2020-10-23 00:03:33 -07:00
96741a8516 2020-10-22 nightly release (fe4f90c40bfcb442eddcd26657158bd8fd43a464) 2020-10-22 00:02:41 -07:00
b466478440 2020-10-21 nightly release (8357e2edc329b3a62979ceae3faa1e51fd70150e) 2020-10-21 00:04:07 -07:00
11c8a58712 2020-10-20 nightly release (e5ed037529264e6747a33145aad364660cb250db) 2020-10-20 00:02:41 -07:00
3292b9e050 2020-10-19 nightly release (0c5cd8c2b9cdf473e30bbb1b49ca80ed442813df) 2020-10-19 00:03:03 -07:00
f57dc3adb8 2020-10-18 nightly release (c3466dabaae9328b207804afb043b7b519f64825) 2020-10-18 00:02:39 -07:00
342069f090 2020-10-17 nightly release (cc471c6dafff9b3a45575ba01244b1b58a25ab34) 2020-10-17 00:02:25 -07:00
b1eed8fe32 2020-10-16 nightly release (ec5f81f9d334efa3d46ca9c66885e2ab14b6ce01) 2020-10-16 00:03:20 -07:00
e5ed02e3f0 2020-10-15 nightly release (a87a1c110342dff912963aac1d8095878c79f914) 2020-10-15 00:02:42 -07:00
3142764e51 2020-10-14 nightly release (d790ec6de01a61fe81733c41a64b6092bacfb7bd) 2020-10-14 00:03:00 -07:00
9e25229618 2020-10-13 nightly release (7f6a1b2bd5eca2d25c70afe233f8b6878fec241d) 2020-10-13 00:02:42 -07:00
5015a81dda 2020-10-12 nightly release (a814231616f5db7fcdb8793f64c12d652d1e8572) 2020-10-12 00:02:42 -07:00
73a00339a9 2020-10-11 nightly release (bbb3f0937743ddd006d8a5400e9549623260e6be) 2020-10-11 00:02:34 -07:00
8f6131de72 2020-10-10 nightly release (b7261de0df87c4df548451cbfbe020c62396bd86) 2020-10-10 00:03:06 -07:00
403616e494 2020-10-09 nightly release (87226f72d2827d0367d01b664efa21d80ccaf632) 2020-10-09 00:02:25 -07:00
3ada667f23 2020-10-08 nightly release (c19b9cd18dd1da5f499ef0672e6871928618204d) 2020-10-08 00:07:08 -07:00
69474f119a 2020-10-07 nightly release (205ab4961232140d3a46a6a3f59b377243bb5407) 2020-10-07 00:02:33 -07:00
72429b08dc 2020-10-06 nightly release (2fbe5971b360f63715fcccf4bb61ac7c44dff48c) 2020-10-06 00:04:23 -07:00
8722e9d287 2020-10-05 nightly release (e1ff46b6e5b752a889174ba4a995e74898799287) 2020-10-05 00:02:25 -07:00
8706bf8b1f 2020-10-04 nightly release (2ab74a48395c55d9b186a01bdb09fdd347bf4f1b) 2020-10-04 00:03:20 -07:00
2fc129834c 2020-10-03 nightly release (d8a9c2c27e0d11fdde1d8e5bfbce1b55fa2cd478) 2020-10-03 00:02:21 -07:00
29f546df64 2020-10-02 nightly release (1a2d3b6a750cc4c1709b64412619b28c737e1a79) 2020-10-02 00:02:41 -07:00
17635b8851 2020-10-01 nightly release (4339f5c076e6f59433ac4eec08b6151a803a7604) 2020-10-01 00:02:30 -07:00
1c087f9b30 2020-09-30 nightly release (c2c7099944e94fb7d0460ac8689819b42ba0e30e) 2020-09-30 00:02:23 -07:00
c54443b19e 2020-09-29 nightly release (6bdb871d47f8810fb627d908c4fa2408fa6a632f) 2020-09-29 00:03:39 -07:00
e3234fd375 2020-09-28 nightly release (c3bf402cbbd5bba53fa8b7d86500e4dc3bb904b8) 2020-09-28 00:02:59 -07:00
f3659fb14b 2020-09-27 nightly release (bc5710f2f746d33645858ed82141076ab5fec75d) 2020-09-27 00:02:20 -07:00
4a6dd6ec6a 2020-09-26 nightly release (d9af3d2fcd4e86c1b410f700dc6361e5c538b0af) 2020-09-26 00:02:44 -07:00
d4a3a4ca6e 2020-09-25 nightly release (99e0a87bbb4faa6bb539c0eedf323d79fdd8cfcf) 2020-09-25 00:03:07 -07:00
ce6dd35b28 2020-09-24 nightly release (b3d7c2f97859973c7282a772b811708379064d37) 2020-09-24 00:02:57 -07:00
eeb9914f09 2020-09-23 nightly release (215679573ebff5a03238a7f9aa801a6c00826f19) 2020-09-23 00:04:30 -07:00
af6cc04916 2020-09-22 nightly release (5aed75b21bf81f14f1c527df8832f5a93299019c) 2020-09-22 00:02:30 -07:00
8de4375712 2020-09-21 nightly release (9f67176b821afe4afa75df22f43f4932f1289ef4) 2020-09-21 00:04:36 -07:00
b64de1730d 2020-09-20 nightly release (da7863f46bff365499730244a3198a9d4b201f7c) 2020-09-20 00:02:36 -07:00
420a345397 2020-09-19 nightly release (9e5045e978d8800a6dbeb919745169e4de18927c) 2020-09-19 00:02:26 -07:00
145abbc193 2020-09-18 nightly release (f2b3480795d4364aba32de18e42e1309ffd013f4) 2020-09-18 00:03:00 -07:00
27cdcdc69a 2020-09-17 nightly release (b6f4bb0a703d6c33bedf3c7f4551954a8015fcb9) 2020-09-17 00:02:40 -07:00
b5c2df117b 2020-09-16 nightly release (b85568a54a9c60986235ad1e0cc5dffc71b9d5b1) 2020-09-16 00:03:32 -07:00
4c94add238 2020-09-15 nightly release (f5d231d5933e0ca8feb59f9fe76913d8aa720457) 2020-09-15 10:11:47 -07:00
e5b3332958 2020-09-15 nightly release (2435d941b13723b4ccae1eb65695e2c902b9399d) 2020-09-15 00:02:29 -07:00
ce76eb5dc4 2020-09-14 nightly release (870f6470405a37392eb37ea7e927bca6adfecc3c) 2020-09-14 00:02:42 -07:00
7ad07dab6c 2020-09-13 nightly release (e703c17967ba7565ca8c4a019511b0b7b46a2d5d) 2020-09-13 00:02:22 -07:00
680262a4a5 2020-09-12 nightly release (05c1f1d974910736275b4c4572095a106499c298) 2020-09-12 00:13:43 -07:00
521dce53ee 2020-09-11 nightly release (b5d75dddd93089458c7aee91134ff281d5c3b580) 2020-09-11 00:02:39 -07:00
61fd94ce73 2020-09-10 nightly release (65d4a6b7c05674935da8cbd3ae68f982dd9272ff) 2020-09-10 00:04:37 -07:00
beea9fe377 2020-09-09 nightly release (15cbd1cf4b2cd37e102a495f5e5d8362d2c6e6e2) 2020-09-09 12:26:09 -07:00
bac811d8a8 2020-09-09 nightly release (135ebbde6dda16887cc2c08962bb3694af0f8e82) 2020-09-09 00:02:55 -07:00
5200db437e 2020-09-08 nightly release (cce5982c4ceb77a0797e8bd4c717ebfec0681eab) 2020-09-08 00:02:56 -07:00
2d48355fe2 2020-09-07 nightly release (626e410e1dedcdb9d5a410a8827cc7a8a9fbcce1) 2020-09-07 00:03:07 -07:00
72cbcceccf 2020-09-06 nightly release (70c8daf43946b53af6493d058899ef952d27d339) 2020-09-06 00:02:29 -07:00
a6ebbbad37 2020-09-05 nightly release (5a0d65b06b197c06797a41de04ce99edbe48f669) 2020-09-05 00:02:25 -07:00
b0e834edbe 2020-09-04 nightly release (98ad5ff41f82086ce77d5519945aff288b030c6e) 2020-09-04 00:02:42 -07:00
ccfd128bb8 2020-09-03 nightly release (ab7606702cca34c06f0bf08d6b109402c574563c) 2020-09-03 00:02:37 -07:00
9bef2cdcca 2020-09-02 nightly release (297c938729a0adbd98a235a5970c972f6148adfe) 2020-09-02 13:38:07 -07:00
bae900999d 2020-09-02 nightly release (7000c2efb54bae527de22a325c2b59e9f9af45b9) 2020-09-02 00:02:53 -07:00
cb188a89fa 2020-09-01 nightly release (6da26cf0d96475a2fa4d0aa235f868eff198546e) 2020-09-01 00:04:06 -07:00
c32d9b1874 2020-08-31 nightly release (8fb7c50250f9cb38232bf87008855fd1665b31ec) 2020-08-31 00:03:14 -07:00
a27ceb1a7e 2020-08-30 nightly release (1830e4f08cd3b41df9d643211762156b67371611) 2020-08-30 00:03:02 -07:00
42cb14b81d 2020-08-29 nightly release (000739c31ad34909e64124e0d39b2f49249458e9) 2020-08-29 00:02:39 -07:00
dade70d4af 2020-08-28 nightly release (f06d3904f2c7b6e47ffa532f4a22b9e18941bb90) 2020-08-28 00:03:10 -07:00
0f03b7c404 2020-08-27 nightly release (a070c619b9bed1205ec95b53f97db3fbfc43c4de) 2020-08-27 00:05:38 -07:00
8e23641871 2020-08-26 nightly release (42f6c3b1f475c3c1cb1655a70b128fa5cf236860) 2020-08-26 10:11:03 -07:00
f361befd6c 2020-08-26 nightly release (2b70f827373fe5c90e15ce7ba0a1d331dcd57379) 2020-08-26 00:02:35 -07:00
2b2b063dfd 2020-08-25 nightly release (d1d32003bbe1cb06de552c3581982d1bc8125cd9) 2020-08-25 00:02:45 -07:00
17857c55a3 2020-08-24 nightly release (1f0cfbaaad09921f588adf549751041b8cb2e283) 2020-08-24 00:02:41 -07:00
8d4f134db7 2020-08-23 nightly release (a97ca93c0e698b81599f7a0ca5cdbda947799431) 2020-08-23 00:02:40 -07:00
13f00ef652 2020-08-22 nightly release (88b564ce3927f7a691c29697b2b21873a84a0d23) 2020-08-22 00:06:42 -07:00
f3070b6b37 2020-08-21 nightly release (da036250cd7dae8896fdc14b2bc718bcb3bdd158) 2020-08-21 00:03:56 -07:00
0b355b5f8c 2020-08-20 nightly release (66a79bf114ee4e9a4adf0d83b48f2266cfaeab95) 2020-08-20 10:29:04 -07:00
c75d13a67a 2020-08-20 nightly release (4e964f3b97558792d6af903425561f765b1c5d68) 2020-08-20 00:03:14 -07:00
7915de9032 2020-08-19 nightly release (018b4d7abb894c3de21f9f10b0678c80a7b0a701) 2020-08-19 14:55:57 -07:00
6f80e1207a 2020-08-19 nightly release (fa6b34b54c731938327c8e30e08b287a10b86b0a) 2020-08-19 00:02:57 -07:00
14b1e2392c 2020-08-18 nightly release (c44b1de54e29e9d33365fe0116a43d3958f5a450) 2020-08-18 00:02:32 -07:00
02b98413b7 2020-08-17 nightly release (e2eb0cb1a9e525de9abb352cf39c85cc090e33b8) 2020-08-17 00:02:31 -07:00
865a01d2eb 2020-08-16 nightly release (5bcf9b017a426e55466cf7435009d1fb339684d8) 2020-08-16 00:02:36 -07:00
4458315a89 2020-08-15 nightly release (91f3114fc1350dd2e1797e6edc5c61c44f2ffecd) 2020-08-15 00:03:22 -07:00
ac414f6c7e 2020-08-14 nightly release (b9a105bcc03d27f68b53e32258ee4c252570dcc9) 2020-08-14 00:03:33 -07:00
936fa35cf1 2020-08-13 nightly release (c9dcc833bca69a0f2dd3518ce97136206da8024f) 2020-08-13 00:03:43 -07:00
b7c4a72c53 2020-08-12 nightly release (ecb9e790ed6ceafa738ad52a500b9e50bc0fc241) 2020-08-12 00:02:47 -07:00
c531bf36cd 2020-08-11 nightly release (ddcf3ded3e78042a41fd6d6b861d678e11460821) 2020-08-11 00:02:53 -07:00
1eed3cba2a 2020-08-10 nightly release (d7aaa3327bf9ad8757897a76879230da92bf607f) 2020-08-10 12:37:23 -07:00
c8173d2cb5 2020-08-10 nightly release (55ac2405893165de0687960a6650bbc5c8f29e73) 2020-08-10 00:02:26 -07:00
818b9ac780 2020-08-09 nightly release (b6810c1064eb24cb542a9be56140689dce8ad7a1) 2020-08-09 00:02:28 -07:00
97c7575520 2020-08-08 nightly release (b7a9bc0802b68cff07958937cfda2271155689e5) 2020-08-08 00:02:23 -07:00
5dec2a9909 2020-08-07 nightly release (cb1ac94069700e47f7283c41820d3c2de0af9553) 2020-08-07 00:02:52 -07:00
c81b784a72 2020-08-06 nightly release (644d787cd8d9512b92d18e9a94d6f3a401b5ca69) 2020-08-06 00:03:49 -07:00
5415138490 2020-08-05 nightly release (0f358fab6b92307edba4d89a855cac395f5b1565) 2020-08-05 00:03:04 -07:00
40277cdaae 2020-08-04 nightly release (ae67f4c8b89547d648b66a49048ce13982ed6be7) 2020-08-04 00:03:10 -07:00
51381481e2 2020-08-03 nightly release (bfa94487b968ccb570ef8cd9547029b967e76ed0) 2020-08-03 00:02:59 -07:00
36fa26aae5 2020-08-02 nightly release (91c80d122ab271d36ce37d60acf430fdbd54d249) 2020-08-02 00:03:17 -07:00
69909359f4 2020-08-01 nightly release (44b018ddeb89e9c6283d3a1c17549848cf77d6a4) 2020-08-01 00:03:38 -07:00
006129dc63 2020-07-31 nightly release (2f840b1662b487d5551d7230f8eb4d57645cfff5) 2020-07-31 00:06:51 -07:00
87867a04f9 2020-07-30 nightly release (0444bac940695ccfa43854f9241839f759ba5f28) 2020-07-30 00:03:38 -07:00
7e19a4a05b 2020-07-29 nightly release (6b3f335641e1874c5b0ae0aa719687ed5f42ab45) 2020-07-29 00:03:42 -07:00
e99cef1e0b 2020-07-28 nightly release (4f723825b48e555512813fcffd56e89e5b16eeaf) 2020-07-28 00:03:07 -07:00
1da1361946 2020-07-27 nightly release (96aaa311c0251d24decb9dc5da4957b7c590af6f) 2020-07-27 00:02:27 -07:00
bfbc0a6fcf 2020-07-26 nightly release (b7bda236d18815052378c88081f64935427d7716) 2020-07-26 00:04:40 -07:00
2f4f3b4fb7 2020-07-25 nightly release (366c014a7799f0b7bbc258fd6c271dadb99d1de0) 2020-07-25 00:02:25 -07:00
f83664fb35 2020-07-24 nightly release (c0bfa45f9d26fb814a80f3053fbc550ff77d82c1) 2020-07-24 00:02:36 -07:00
c6ef1bac44 2020-07-23 nightly release (0ec7ba40888f07678d3a1d766817154dc90bef90) 2020-07-23 00:02:44 -07:00
10c53d9390 2020-07-22 nightly release (5c9918e757b019564e74ae6f676cacfe70a87afd) 2020-07-22 00:03:14 -07:00
a41d75b78a 2020-07-21 nightly release (fe415589a964697a78186189bd4815541f853b47) 2020-07-21 00:02:27 -07:00
bb29acf111 2020-07-20 nightly release (bd42e1a082f21d189492a950533970caabf2d089) 2020-07-20 00:03:24 -07:00
33f735f3ec 2020-07-19 nightly release (a69a2628109a55f7f965bb79eca8967fce685a6a) 2020-07-19 00:02:41 -07:00
0fcfa4aca3 2020-07-18 nightly release (e7a09b4d17010e60bc95c25f8165ef479d1b9612) 2020-07-18 00:02:55 -07:00
b18ecab49c 2020-07-17 nightly release (e3e58e20cd57892fd39e4bda33a2c249cab6f739) 2020-07-17 00:03:42 -07:00
7fb344967b 2020-07-16 nightly release (04c0f2e3cc7be79bfa005d1670b19cfb7dee308c) 2020-07-16 00:03:01 -07:00
21dba79af2 2020-07-15 nightly release (9552ec787cf7a004ed7a6063d45bb5e2d85e1d60) 2020-07-15 00:03:03 -07:00
7affad5f48 2020-07-14 nightly release (80d5b3785b88f83eb598e393d0137f045b979c4b) 2020-07-14 00:02:49 -07:00
62b00bcddb 2020-07-13 nightly release (0c77bd7c0bbd4d6e50a5f3ce7b4debbee85d7963) 2020-07-13 12:58:41 -07:00
b7e29fb2c6 2020-07-13 nightly release (67a4f375cdf06113ca959b4e16739edb666f243f) 2020-07-13 00:02:49 -07:00
7bc96af0a7 2020-07-12 nightly release (4b4184fc69e224701529b84d2f182c1d65cea74a) 2020-07-12 00:02:37 -07:00
1ec86870fc 2020-07-11 nightly release (a1ed6e1eb30c03db55881bca536e5edf64622a1b) 2020-07-11 00:02:33 -07:00
5797d683a2 2020-07-10 nightly release (df252c059c3ea4c04f8c39c3b4c25a3f4572b0b7) 2020-07-10 00:03:27 -07:00
2360093da9 2020-07-09 nightly release (bf9cc5c77698da260e806ce07a690770b6d26253) 2020-07-09 00:02:31 -07:00
0a0d5b9a80 2020-07-08 nightly release (e2a291b396be8db6f9ac1fc7d45e97c6026df590) 2020-07-08 00:02:31 -07:00
f4f757998d 2020-07-07 nightly release (22c7d183f7c95a70f75acb310c1abc79d674fb18) 2020-07-07 11:13:40 -07:00
52e3d4aba1 2020-07-07 nightly release (4aa543ed2e3ff9e9e6aab4979efca559a62f22b7) 2020-07-07 00:02:22 -07:00
cbac4f50d3 2020-07-06 nightly release (300a3aaaadb5edaac818713b1752e9af976336f9) 2020-07-06 00:02:26 -07:00
9a199cf853 2020-07-05 nightly release (8ecd4f36aab89df38500e72458af5e05e7f12a78) 2020-07-05 00:02:28 -07:00
d9a61a1671 2020-07-04 nightly release (480851ad2c21e8e39e336d849b8030a2f91718d7) 2020-07-04 00:02:15 -07:00
b2718d2b21 2020-07-03 nightly release (824ab19941b09164b099c0a614b78984b9c68cf9) 2020-07-03 00:04:57 -07:00
b9bde4e47b 2020-07-02 nightly release (ea03f954ada77bfbfef542ce93be2f525c8d8e64) 2020-07-02 00:02:42 -07:00
05bcdcd112 2020-07-01 nightly release (fcadca1bdab62ea5728e49397e023c8863466e83) 2020-07-01 00:02:57 -07:00
6bdf560205 2020-06-30 nightly release (871bfaaba1da0eff28d5a992cc86a2bb745e6621) 2020-06-30 11:14:52 -07:00
ca6a9756c2 2020-06-30 nightly release (b9cca4b186797b4ccdc12197b3b71db94d8e2297) 2020-06-30 00:02:32 -07:00
9a7a41a96d 2020-06-29 nightly release (b35cdc5200af963e410c0a25400fd07f30b89bca) 2020-06-29 00:02:19 -07:00
2c978b42a4 2020-06-28 nightly release (502ec8f7f76619e6cbb1efb0e23eb8c5438daed2) 2020-06-28 00:02:34 -07:00
09c29e5af2 2020-06-27 nightly release (61a8de77cfc50ba0d12348065a7d399663ba6511) 2020-06-27 00:02:23 -07:00
28d1a1436b 2020-06-26 nightly release (eebd492dcfb8d4152a5ba4240486f3df5aaf112d) 2020-06-26 00:02:56 -07:00
64d71c446e 2020-06-25 nightly release (eae1ed99a35eac4e7b6daf7123136e832c50a158) 2020-06-25 00:02:46 -07:00
1d4e5f4a25 2020-06-24 nightly release (7b0f867c4853af69b14bb516ba2a9dbff8f56d51) 2020-06-24 00:02:33 -07:00
8752b4048d 2020-06-23 nightly release (e9efad687875a7de1e599dda776ed1e9509d01eb) 2020-06-23 00:02:44 -07:00
48a48958f3 2020-06-22 nightly release (c8738957221e3edd0aa2fc2be84c037fd0611881) 2020-06-22 12:49:39 -07:00
aa61b8bc13 2020-06-22 nightly release (ab8a99bd36b9969f6226f0dfd62510e3dd6ecb51) 2020-06-22 00:02:27 -07:00
d6e183bda7 2020-06-21 nightly release (3bbedb34b9b316729a27e793d94488b574e1577a) 2020-06-21 00:02:52 -07:00
e51edad5d3 2020-06-20 nightly release (9da277c63557784d6a2ea7c44d1c469d7178d444) 2020-06-20 00:02:52 -07:00
c51aaa7f08 2020-06-19 nightly release (86b1afa039f3fba83f082382b7c62b896fb98e09) 2020-06-19 00:02:39 -07:00
681f9c3458 2020-06-18 nightly release (d1a0e880750bd2a7a88ff3465df3af7f05261790) 2020-06-18 00:02:55 -07:00
309d8f4dea 2020-06-17 nightly release (9d588f7ce26775ffad0035dcc4c1128d62b889fc) 2020-06-17 00:02:54 -07:00
37dddadd6a 2020-06-16 nightly release (bcb44796ba00f9ac5f22e33f1de3a24b277c4c3a) 2020-06-16 00:03:48 -07:00
d630b39c4f 2020-06-15 nightly release (541814f2b7eacabacdc87ccb1b4495bf486f501a) 2020-06-15 00:02:18 -07:00
9fca12ab19 2020-06-14 nightly release (8072f0685f5bd9bc8f1e48ef916518fa31a50826) 2020-06-14 00:02:19 -07:00
c82098341b 2020-06-13 nightly release (8d3fcb43cf5e58d05351107bc99ee5e2ce8ae5b9) 2020-06-13 00:04:02 -07:00
7b4d0fbaa9 2020-06-12 nightly release (c068233300f1473e3119b8d6b8b672c2fb912f1d) 2020-06-12 00:02:03 -07:00
195f29e3ba 2020-06-11 nightly release (c3d4053bc0648f76906208a69d863276c8b82995) 2020-06-11 00:02:27 -07:00
31019eecb8 2020-06-10 nightly release (6bdfd6ae1adb341f5bae2fc8bc987653b8a319ad) 2020-06-10 00:01:56 -07:00
bd13707502 2020-06-09 nightly release (af05158c56af29e062580f458a86a32b8f4c2b85) 2020-06-09 00:02:44 -07:00
41ff48299b 2020-06-08 nightly release (6c56671fd96ac71346c818d0a5ea8087575e9cba) 2020-06-08 00:01:58 -07:00
61a9383920 2020-06-07 nightly release (e4627e5dba1516afe0c12bf748ebc2200b6e378d) 2020-06-07 00:01:59 -07:00
b5da8c9f3e 2020-06-06 nightly release (6a75f650dd3bf6d3fdaafffe7298d141c0377489) 2020-06-06 00:02:17 -07:00
2f447b8e25 2020-06-05 nightly release (8a6914ddb225196d9b4c712ad7a82b464a80c0e5) 2020-06-05 00:02:36 -07:00
00de97d13a 2020-06-04 nightly release (fe684679b06f7f2fe7a7e136ea5605c04254b652) 2020-06-04 12:31:20 -07:00
645b018a22 2020-06-04 nightly release (03eca384fd87ee07c73b6406c3e32ee69bb13fb0) 2020-06-04 00:02:18 -07:00
6fdf7aa7a2 2020-06-03 nightly release (a05ef17e467a152e86e3de1d47868dd4a1d9d648) 2020-06-03 00:02:01 -07:00
588bf42df3 2020-06-02 nightly release (f4365cf5ba8ee4ba319385cbd2ff7b9a825a75d0) 2020-06-02 00:02:14 -07:00
c3dc364b18 2020-06-01 nightly release (caaea084e9e63dd3f22edcab0fda6822f7634820) 2020-06-01 00:02:00 -07:00
860bd46af1 2020-05-31 nightly release (8556664d6896a8e7f48f1c419e06e0568b9ee09e) 2020-05-31 00:02:09 -07:00
825ee6cbb3 2020-05-30 nightly release (b7b99ab0c8f82100177729b9751481852d83e77e) 2020-05-30 00:02:07 -07:00
c1afe3d886 2020-05-29 nightly release (b08a4aaf3bdf59e80590fc2b4a7c821be2213699) 2020-05-29 00:02:06 -07:00
43beca9d58 2020-05-28 nightly release (f5bc91f851f7d3b862643b51f06f0281eb225b8c) 2020-05-28 00:01:59 -07:00
f0711fe9c6 2020-05-27 nightly release (916084d933792f7ee619aee7155fedf68d1a8cd1) 2020-05-27 00:02:22 -07:00
f01bd55177 2020-05-26 nightly release (d035d05080729c30636ff30fcc068de3c7e9badd) 2020-05-26 00:02:00 -07:00
31d8b6eabd 2020-05-25 nightly release (d035d05080729c30636ff30fcc068de3c7e9badd) 2020-05-25 00:02:12 -07:00
74b18f831e 2020-05-24 nightly release (d035d05080729c30636ff30fcc068de3c7e9badd) 2020-05-24 00:03:13 -07:00
7c4f81427c 2020-05-23 nightly release (d035d05080729c30636ff30fcc068de3c7e9badd) 2020-05-23 00:01:53 -07:00
04734358e7 2020-05-22 nightly release (d035d05080729c30636ff30fcc068de3c7e9badd) 2020-05-22 00:02:14 -07:00
991faa295f 2020-05-21 nightly release (e9902358df14dc4809e4f50b12088a5200a1862d) 2020-05-21 00:01:58 -07:00
0a55aad1ea 2020-05-20 nightly release (1465970a343e61f2f2b104859ca7f5d7e03f5d02) 2020-05-20 00:02:15 -07:00
fe43bd1a77 2020-05-19 nightly release (f6f1384811b9cc722f650ed9ead8ee99938c009a) 2020-05-19 00:01:52 -07:00
8216138905 2020-05-18 nightly release (176174a68ba2d36b9a5aaef0943421682ecc66d4) 2020-05-18 00:01:53 -07:00
c680caafb1 2020-05-17 nightly release (176174a68ba2d36b9a5aaef0943421682ecc66d4) 2020-05-17 00:02:01 -07:00
c683033c5b 2020-05-16 nightly release (83df3beacad3e22bdfa95c1d3514af59dceaacdc) 2020-05-16 00:02:02 -07:00
8167c5996d 2020-05-15 nightly release (c0bc1827611f4ad6370e87af35571bfe3cc91e4f) 2020-05-15 00:02:02 -07:00
053c725853 2020-05-14 nightly release (96885f73ed79c4d3d01717248f24694e05e1b041) 2020-05-14 00:01:54 -07:00
5fdf2cdc0e 2020-05-13 nightly release (61bea93fca35ad7ace2c9856499d3f478ffb1377) 2020-05-13 00:02:04 -07:00
f5bcbc5400 2020-05-12 nightly release (cf82011361592c0f55d1ce9e55c692108308374d) 2020-05-12 00:01:56 -07:00
c361c5a57c 2020-05-11 nightly release (324dc1623e2f91892038fb1b151450a7c6529dd9) 2020-05-11 00:02:03 -07:00
5d263b7b81 2020-05-10 nightly release (26928b164f3e43a48bc57fc41ca277583501054d) 2020-05-10 00:01:58 -07:00
e241ab52a0 2020-05-09 nightly release (45010833069c02162fee40291ef7d444dfe7f41b) 2020-05-09 00:02:19 -07:00
2311a48ce4 2020-05-08 nightly release (4c358b8b726f56bc78ce20bb031e10869145de94) 2020-05-08 00:02:45 -07:00
5c7548f1bd 2020-05-07 nightly release (9143d7fb687acb4aff2ca7f8e1fc13c2af7a941b) 2020-05-07 00:01:59 -07:00
b372ce156d 2020-05-06 nightly release (b57b596f20b004116053e821d76ee08d46e55e39) 2020-05-06 00:02:19 -07:00
d84fbdc752 2020-05-05 nightly release (429d90f6487b276b02bd13b26c5291678412b389) 2020-05-05 00:01:54 -07:00
4154b913b5 2020-05-04 nightly release (843c0230f2928aad61a6940688da3a6cd6c4cd57) 2020-05-04 00:01:59 -07:00
bb75b0b420 2020-05-03 nightly release (5baa6b6c34c9a61c936f90168b6449421814553d) 2020-05-03 00:01:57 -07:00
0d1ee45511 2020-05-02 nightly release (d6394183078d3525f64b27ec0659b994a78c42dd) 2020-05-02 00:01:59 -07:00
3c5465887a 2020-05-01 nightly release (9e32a1f5cdcefa3ab55d91121e10d37e8fc850ea) 2020-05-01 00:01:53 -07:00
4684f1fe19 2020-04-30 nightly release (68250fa557cc3079bdd88aee4bee2d9222fbb34d) 2020-04-30 00:02:19 -07:00
4070924186 2020-04-29 nightly release (4bfa51d40595d41d6bec6d4a9b1ade72adde4ebc) 2020-04-29 00:02:11 -07:00
d055855a96 2020-04-28 nightly release (ebcacd5e878f3f8e84c941d6b9567c88f50a2f10) 2020-04-28 00:02:00 -07:00
52f688abbc 2020-04-27 nightly release (f41742ff2fd5c9507c037dc120d75f6f191a87b1) 2020-04-27 00:02:50 -07:00
7bce785c8b 2020-04-26 nightly release (b64fc3c4b5d927928770f9b343eb845123367084) 2020-04-26 00:02:15 -07:00
d3b0b98dbc 2020-04-25 nightly release (6e659e928ba48afa8a6f5d734c37ab187734927b) 2020-04-25 00:02:08 -07:00
1021e473d6 2020-04-24 nightly release (827f04a075d9f564e0871f809ae67f5538b30ab9) 2020-04-24 00:02:02 -07:00
572542260d 2020-04-23 nightly release (b889e0da8ab33e0b47abc817e679851299728be7) 2020-04-23 00:02:18 -07:00
5213e2cf39 2020-04-22 nightly release (799793f27951dbf1abd01c3a1082e6edd525f19e) 2020-04-22 00:02:25 -07:00
23c4dbd92b 2020-04-21 nightly release (a1eb591ea6afa07d2bc6e644bc0697a585dbdd7e) 2020-04-21 00:02:11 -07:00
2c106114c9 2020-04-20 nightly release (0f0d69009eb1dbc58feacc819bc9885990e888aa) 2020-04-20 00:02:31 -07:00
130773838d 2020-04-19 nightly release (b0b9e704ed1f31ed1c81994c20e5a9f3715d2583) 2020-04-19 00:01:52 -07:00
54f8763e8f 2020-04-18 nightly release (197c85fcbc487d707e0e2635a5291da7c8658036) 2020-04-18 00:02:02 -07:00
59c6f7575b 2020-04-17 nightly release (a89d1ed5496dccce310b3dd08a417b5de71e8332) 2020-04-17 00:01:53 -07:00
57f9ef23d8 2020-04-16 nightly release (7539ea0207859d5e20f6e836818bfafa77f3045e) 2020-04-16 00:01:55 -07:00
5ddf7a5733 2020-04-15 nightly release (9cac2b83d9e6838de796e0cecfbacaa6a64dc6a8) 2020-04-15 00:02:09 -07:00
8cfa076820 2020-04-14 nightly release (dd64e738c5cb191a5280b19635fe9941d6c0b95a) 2020-04-14 00:02:13 -07:00
e15f869505 2020-04-13 nightly release (b92f8d9b7e2e8543e2808c1d05c09e57c19ce5d9) 2020-04-13 00:02:03 -07:00
013659bc5b 2020-04-12 nightly release (d83509e603d6d932a818d4e0ca027129aa9c5857) 2020-04-12 00:02:09 -07:00
81f40df4e5 2020-04-11 nightly release (409346eee308017336fc73a4ae1e9b60777b7b49) 2020-04-11 00:02:06 -07:00
cabe3becc0 2020-04-10 nightly release (31dca07fa5673c115ae6e9e68a09b969918c49d8) 2020-04-10 00:01:53 -07:00
4ba93a8a3e 2020-04-09 nightly release (f59e646faa6ec7c388735aeda4a5bd7eb8eb0be2) 2020-04-09 00:01:56 -07:00
1061602446 2020-04-08 nightly release (f0bddd5e7a89a7f8037a27180b27aeb1a90b6f6a) 2020-04-08 00:01:55 -07:00
50aefcfa05 2020-04-07 nightly release (3e5d25fdfd6dc22cfc697a83d924ff386fdf51b3) 2020-04-07 00:02:24 -07:00
598d03f9a9 2020-04-06 nightly release (82d58ed484eb04f894475de0551055f7e070f481) 2020-04-06 00:02:00 -07:00
28295bbcce 2020-04-05 nightly release (b3cdec88e364e56bc69bf42cd6d8583fcfd62a18) 2020-04-05 00:02:30 -07:00
06d935798d 2020-04-04 nightly release (e3e2dd7779974307cc5caa75d539adac690f5ca5) 2020-04-04 00:02:09 -07:00
021d8fa26d 2020-04-03 nightly release (1a146b0577ac7737cc8eb28ecf4c10fd713dd4c5) 2020-04-03 00:01:49 -07:00
d0937d2101 2020-04-02 nightly release (2f50c119545c654088bb2796fa23e747099ca053) 2020-04-02 00:01:54 -07:00
66d3b83708 2020-04-01 nightly release (ee6f7c3e62a179178e8e0cc3ab1aaedfa820d04d) 2020-04-01 00:01:54 -07:00
73f6729ccf 2020-03-31 nightly release (a090de380c1d0be68b26476d69d38a3291268c69) 2020-03-31 00:01:57 -07:00
77f1aef758 2020-03-30 nightly release (340048b67c53f05a04def9e5a69403c7b49915c8) 2020-03-30 00:02:07 -07:00
29ccceee5c 2020-03-29 nightly release (67c382294443cca408347ce68d73d5084301c5a2) 2020-03-29 00:01:52 -07:00
554de41a6e 2020-03-28 nightly release (683246e5ead92503e1022418cab33c93bfbc77e3) 2020-03-28 00:02:02 -07:00
565f305f3a 2020-03-27 nightly release (ac639d927a37f58bda16c7a1b96a2dfcf3a21666) 2020-03-27 00:02:02 -07:00
a49ed6d378 2020-03-26 nightly release (be0cdf5d157a84dd28bd95ca8f5f82306c0340f5) 2020-03-26 00:01:59 -07:00
dd073cd4fc 2020-03-25 nightly release (17abb7c31a30ee8e5037528b7b6552a25b7132e7) 2020-03-25 14:19:03 -07:00
fc211ce302 2020-03-25 nightly release (d6377b7cef0c7bc822df80eedd86689bc51e83d2) 2020-03-25 00:02:04 -07:00
addd3250a4 2020-03-24 nightly release (8b8af0d4580f74680240a88a34fea78be02a6d22) 2020-03-24 00:02:26 -07:00
e8c963122a 2020-03-23 nightly release (a6672f3b305c3805c691f3477e7940d146130a88) 2020-03-23 00:02:27 -07:00
f3908c0ee6 2020-03-22 nightly release (a5b509985a37127fb52fbfdee85c7b336cd8d2c1) 2020-03-22 00:01:50 -07:00
37ea717b03 2020-03-21 nightly release (95ad94c75b09ad2438141e4eb52e83e737966e60) 2020-03-21 00:02:00 -07:00
8b2e30b3f5 2020-03-20 nightly release (ec9f6809734b4cada98d02138ad8de75ce790273) 2020-03-20 00:02:28 -07:00
2730db1362 2020-03-19 nightly release (c8f665dcb626378ca9c51d7b70fc242524105441) 2020-03-19 00:02:22 -07:00
f1a11aee2b 2020-03-18 nightly release (bcbdba450c25cdf7c6bbe590880cf39f0984123c) 2020-03-18 00:01:58 -07:00
5d40408bfd 2020-03-17 nightly release (089a0a211776ac928a9fefb1841e1d44c9b4dee1) 2020-03-17 00:01:57 -07:00
e9bd3eca1b 2020-03-16 nightly release (bdd7dbfd4b75e66a88d393993b41c77f576f74fc) 2020-03-16 00:04:09 -07:00
36718f7877 2020-03-15 nightly release (6c555e1508184f2cbf34c6ec96d557809808fe85) 2020-03-15 00:02:09 -07:00
d3d99e47ef 2020-03-14 nightly release (fb20621b3b80aef95485574f53cceecaf51ac8be) 2020-03-14 00:02:08 -07:00
bac80526bd 2020-03-13 nightly release (fd355965857f5c281d0b60be864745e7b7a223bd) 2020-03-13 00:02:28 -07:00
fc35f28aa5 2020-03-12 nightly release (c235be42ddecc3c4e1cdf192ca2764455082c1c6) 2020-03-12 00:05:52 -07:00
c09e7d1b26 2020-03-11 nightly release (2ce9513b0c8894987f6d42bfb57ff95b22e32c95) 2020-03-11 00:04:29 -07:00
f9ef5dafca 2020-03-10 nightly release (4f62cbe7de8f867809ca601c996dd48a5a28ffca) 2020-03-10 00:08:48 -07:00
d44877c493 2020-03-09 nightly release (7e55494502478d7f78138bc974e681df52b0635c) 2020-03-09 00:02:22 -07:00
81e7c5374a 2020-03-08 nightly release (79d47c1c5ff5306bdd275196b7171c04bebbdcca) 2020-03-08 00:19:17 -08:00
e80485cacc 2020-03-07 nightly release (65bad41cbec096aa767b3752843eddebf845726f) 2020-03-07 00:02:51 -08:00
fbd3eeb1e7 2020-03-06 nightly release (9a5e9d8cecb1c68eebd69618729a7ec5671b2a06) 2020-03-06 00:03:33 -08:00
d499ac979a 2020-03-05 nightly release (2b79bab029ec387618f6b9724a4027b81fbda33c) 2020-03-05 00:04:15 -08:00
b236f19a6a 2020-03-04 nightly release (f097ca503d349fa352281925fc6df72e52fff077) 2020-03-04 00:02:50 -08:00
ea8063a8aa 2020-03-03 nightly release (0afee0c20bc9c3b4261157d5a5f8eee437954a2a) 2020-03-03 00:03:22 -08:00
3b175e7c33 2020-03-02 nightly release (a500491cbc51c093b5990a69c6066479c13e360c) 2020-03-02 00:03:45 -08:00
38aabee374 2020-03-01 nightly release (ace2b4f37f26b8d7782dd6f1ce7e3738f8dc0dec) 2020-03-01 00:02:54 -08:00
bd482deca4 2020-02-29 nightly release (5a8562a6af2f4097975ad079e982a88924c4fd07) 2020-02-29 00:02:32 -08:00
e5f2f9d8c7 2020-02-28 nightly release (f5f1e5e7f66502a6a3f53f22f5034fdef8f040e9) 2020-02-28 00:02:24 -08:00
d2665bc828 2020-02-27 nightly release (973371139475834c44d118ba0256d97b070980a0) 2020-02-27 00:07:20 -08:00
9f327c18e3 2020-02-26 nightly release (758ad516f32708de243f194144ee0f7b9e0f5117) 2020-02-26 00:02:40 -08:00
496939b5fa 2020-02-25 nightly release (4460c8b034f8fd544ff9c271c4aa21698644d352) 2020-02-25 00:02:35 -08:00
bd8e7b182f 2020-02-24 nightly release (039dc9085425e18b8c217f6e33a1c3dd072dd48f) 2020-02-24 00:02:31 -08:00
6693e040e5 2020-02-23 nightly release (6d448acb345d2f21a6ddc6bd4b57a27fc785112d) 2020-02-23 00:02:05 -08:00
9718bd1498 2020-02-22 nightly release (8291e06f8fb14a09e6c3b7a740a182250069242c) 2020-02-22 00:02:08 -08:00
5ec369fd8b 2020-02-21 nightly release (a943b0518bee8f3ad5f6c44a30fbdd3382f2209c) 2020-02-21 00:02:12 -08:00
6ba25af498 2020-02-20 nightly release (e95282ab282032369289232e844ee61fbdf3a4e9) 2020-02-20 00:03:33 -08:00
63db28f43a 2020-02-19 nightly release (d13c1b8af803eecb7586c3760e6e93efb51e6677) 2020-02-19 00:02:30 -08:00
1e1c56b0fd 2020-02-18 nightly release (dde2ff46084202f646632d32aece341c911ff269) 2020-02-18 00:02:29 -08:00
3529bc52ce 2020-02-17 nightly release (87dc2dbcce2f46bbc861ef7e884a0e6b99290cf5) 2020-02-17 00:02:49 -08:00
3b952ed61f 2020-02-16 nightly release (f6808df75fb3ac4bc6b5f17a1d960f069e1faaea) 2020-02-16 00:02:07 -08:00
33e3497594 2020-02-15 nightly release (d35a4c202e917b5d5cb67ac749fcf7931212c25b) 2020-02-15 00:02:15 -08:00
03a562bf9e 2020-02-14 nightly release (ecd3c252b4da3056797f8a505c9ebe8d68db55c4) 2020-02-14 00:02:59 -08:00
b974dc1a0b 2020-02-13 nightly release (b98c7d34ed718774db28651220eb8bb71b2e8baf) 2020-02-13 00:04:26 -08:00
f7b3186fa4 2020-02-12 nightly release (9d9fa2eace07f2833bcd73551b52bf31bbdbc093) 2020-02-12 00:08:14 -08:00
c58acf210e 2020-02-11 nightly release (9857d9b4cd4b50c326c0d8309e92e5bbde083a84) 2020-02-11 00:04:23 -08:00
fa524b1ca1 2020-02-10 nightly release (e2f12885140c36c1d5bf82de6eb47797856fdacd) 2020-02-10 00:03:15 -08:00
121046fe2e 2020-02-09 nightly release (e2f12885140c36c1d5bf82de6eb47797856fdacd) 2020-02-09 00:03:14 -08:00
e9a11f3014 2020-02-08 nightly release (6249d7302b7277864ed0ade93f58d88ee0cd3aa8) 2020-02-08 00:05:28 -08:00
d180c32586 2020-02-07 nightly release (05d18ffaf5ccc5a19245afafe3998fc3731b570d) 2020-02-07 00:02:37 -08:00
77c97edf1e 2020-02-06 nightly release (e76fa9822dc4f980791d1bf01d63b2d4e9993ced) 2020-02-06 00:04:15 -08:00
1c420dd12b 2020-02-05 nightly release (1b446aa2ee540c6fbd029619459962aa7af3f168) 2020-02-05 00:13:49 -08:00
57a3554274 2020-02-04 nightly release (b894dc06de3e0750d9db8bd20b92429f6d873fa1) 2020-02-04 00:08:04 -08:00
e121e114d2 2020-02-03 nightly release (29e6f13cd1c309cf3dfd8ba45a6ca199359422b5) 2020-02-03 00:02:34 -08:00
6bc40330a5 2020-02-02 nightly release (71ad88199abb837286cdec73ccfcfb9f1a0a2356) 2020-02-02 00:02:18 -08:00
35d1dd656d 2020-02-01 nightly release (c83f9849067c5f14ce8e61f84b62af1215af5133) 2020-02-01 00:03:53 -08:00
ed119e9754 2020-01-31 nightly release (ed10408cc64d1acf0e325a3dda01f7b911350052) 2020-01-31 00:02:26 -08:00
7ef2fd057b 2020-01-30 nightly release (821b6aa769645c8190703b7d8e2cc9f36597853a) 2020-01-30 00:08:51 -08:00
9784297745 2020-01-29 nightly release (5e2311033ebc4bb6009f70db68e4d63ba73a1633) 2020-01-29 00:02:54 -08:00
7a245af681 2020-01-28 nightly release (2060e0a9dd197f8116635dc7517dde5191c0b1a0) 2020-01-28 15:25:48 -08:00
ace7cb80fd 2020-01-28 nightly release (8e4161517e112478a1c1f0290fedb91965f95aff) 2020-01-28 00:02:51 -08:00
db7d91084b 2020-01-27 nightly release (1e5aead35b3d2dca993f90e7d3343cc105ab93e1) 2020-01-27 00:02:08 -08:00
989298c613 2020-01-26 nightly release (90a259e1e22d14c79f788520c836d78b7f6325ba) 2020-01-26 00:02:41 -08:00
2e96268be1 2020-01-25 nightly release (e0ffe72649cef3a1dfd321545194d1b3574975c7) 2020-01-25 00:02:48 -08:00
b068dc341c 2020-01-24 nightly release (3ada2e0d64b40622e823b8135d2bbbc74e6526b9) 2020-01-24 00:02:13 -08:00
05641e89d5 2020-01-23 nightly release (21d475e20d8e9ae1652548e33c3be76383a821d3) 2020-01-23 00:07:25 -08:00
9ae9ff0f09 2020-01-22 nightly release (44b270d892176d6526801bdfa5227a8caa9852bf) 2020-01-22 00:03:23 -08:00
8b77987981 2020-01-21 nightly release (ecbf6f99e6a4e373105133b31534c9fb50f2acca) 2020-01-21 00:03:38 -08:00
0ba313bc2f 2020-01-20 nightly release (ecbf6f99e6a4e373105133b31534c9fb50f2acca) 2020-01-20 00:02:06 -08:00
80d85d6d95 2020-01-19 nightly release (58234c0254f135d1e3714b17f44f4922d56d41b4) 2020-01-19 00:02:25 -08:00
72f778b3d8 2020-01-18 nightly release (1ecad2bb2b9cf7c76657250688fb56af2e87886a) 2020-01-18 00:05:21 -08:00
e13d222815 2020-01-17 nightly release (ef5ae4823a00923342c82e08dd06adf579f5bc26) 2020-01-17 00:07:47 -08:00
be1384f850 2020-01-16 nightly release (d75b6b3f9d41c4f82fb2f5a04e8c9b27361e2701) 2020-01-16 00:05:31 -08:00
35bd8fc853 2020-01-15 nightly release (4dce482acb2f0b248e4886b3069dca8e3a1b7681) 2020-01-15 00:04:50 -08:00
90cb5cd111 2020-01-14 nightly release (62b1a5f8466991b3e042345e1c786d520c3b9d91) 2020-01-14 00:02:33 -08:00
aa881c569d 2020-01-13 nightly release (14593f077f9cb248cca85fd18b598d14c47d5d4e) 2020-01-13 00:04:24 -08:00
8ec30d8da4 2020-01-12 nightly release (927c2a02b0b29a0fafcced8d65896dd417023067) 2020-01-12 00:09:43 -08:00
b324108e81 2020-01-11 nightly release (927c2a02b0b29a0fafcced8d65896dd417023067) 2020-01-11 00:02:48 -08:00
0fa8c2c780 2020-01-10 nightly release (8ea49e7a0897b77a2cd6bf854efd80ef593acf02) 2020-01-10 00:02:55 -08:00
004e3ab791 2020-01-09 nightly release (26f552a3d10f9952636346173a1c34e824556c98) 2020-01-09 11:06:55 -08:00
0ae8b50609 2020-01-09 nightly release (0dbd5c0bfe9c4af1ecb0fccc669277d6eafd0d2b) 2020-01-09 00:02:20 -08:00
ab79b1861b 2020-01-08 nightly release (9116f02bebf3a5260feef5732d36c54ecb3b4033) 2020-01-08 00:05:01 -08:00
3ea026f4ab 2020-01-07 nightly release (a561a8448b6b7bb8f6068178fe7bc9e2bf348304) 2020-01-07 00:14:56 -08:00
b5620f68e6 2020-01-06 nightly release (33430cf0946650058118096f78741440676e33c0) 2020-01-06 00:02:22 -08:00
8936e4ed33 2020-01-05 nightly release (3f0b330736a2af1331e49e8e12e880dffd1e5974) 2020-01-05 00:09:33 -08:00
9944deb456 2020-01-04 nightly release (2bac76969c3a7306a818cb35983fee3f3005131a) 2020-01-04 00:02:39 -08:00
9c908cb9c3 2020-01-03 nightly release (95cb66570af68ec93b5a72144a4f8eee45c354dc) 2020-01-03 00:04:06 -08:00
4313ac1d3e 2020-01-02 nightly release (cb1af5f61fb338c591e6427fd274ea5b44df4f26) 2020-01-02 00:03:28 -08:00
505aad770c 2020-01-01 nightly release (cb1af5f61fb338c591e6427fd274ea5b44df4f26) 2020-01-01 00:02:30 -08:00
8c2e381be8 2019-12-31 nightly release (b102550d2c103cd4e2d7cb9535d730417b7c8ef2) 2019-12-31 00:02:47 -08:00
73a5627944 2019-12-30 nightly release (ee87b01f4093208d527fc0bd740723c2fa4f1feb) 2019-12-30 00:07:29 -08:00
86523be4f1 2019-12-29 nightly release (22d84204f7188ed4042505e723eef46f048ff47c) 2019-12-29 00:08:28 -08:00
e67d8245f9 2019-12-28 nightly release (90a187618ef043edb40483746fba16ddb0b9918b) 2019-12-28 00:03:33 -08:00
9fe8cf51de 2019-12-27 nightly release (b522a8e1ff8a531c4ac75a3551b99d5b40125cf0) 2019-12-27 00:02:40 -08:00
fa96a94943 2019-12-26 nightly release (a54dc87e8ebf7634d3fb2f32dd32b73c1a4d095f) 2019-12-26 00:03:14 -08:00
776a8b0c01 2019-12-25 nightly release (a54dc87e8ebf7634d3fb2f32dd32b73c1a4d095f) 2019-12-25 00:08:27 -08:00
9eb235f1a5 2019-12-24 nightly release (363d8be787cb324a451b8511abea4e5bf05f376f) 2019-12-24 00:02:25 -08:00
3d6e73b978 2019-12-23 nightly release (fe76af96eddbf62df0d2722220b907e56e3ee8e6) 2019-12-23 00:02:20 -08:00
6998eb5c60 2019-12-22 nightly release (7d630278daee00ea2db6bc01e8a2a5f160bd8e81) 2019-12-22 00:02:09 -08:00
087fe33bef 2019-12-21 nightly release (700109eb630b79fd65cb93becb7f2d14f93bdb5c) 2019-12-21 00:05:00 -08:00
c899e0f249 2019-12-20 nightly release (4c341582ea18f241628c6e1756633bc9f897b76d) 2019-12-20 00:03:23 -08:00
fc345e9b5c 2019-12-19 nightly release (1e116a5089a353fa5186e436addbc4dd08d73f68) 2019-12-19 00:05:38 -08:00
1fb749785c 2019-12-18 nightly release (3c8892aa0cd80e62f01b1ba3c99e4f5fd713868c) 2019-12-18 00:04:05 -08:00
bb462a28c7 2019-12-17 nightly release (0e548a76ebc42d604d2c26ed586b899e2a25ded4) 2019-12-17 00:02:15 -08:00
28efaa7b99 2019-12-16 nightly release (409151e1bb90c66546901d372f59930f72242ee9) 2019-12-16 00:02:14 -08:00
96449cd8e6 2019-12-15 nightly release (ec92711aac5537bb509535c74bf59ccbf4d72db2) 2019-12-15 00:02:04 -08:00
74de2ce96f 2019-12-14 nightly release (36d17f4105f48d264fe085ce3dc0e4e825ebfb42) 2019-12-14 00:02:26 -08:00
4954096451 2019-12-13 nightly release (f7c92f60ba25ec5c50e125a4098913684448deca) 2019-12-13 00:02:15 -08:00
35cdcd2d31 2019-12-12 nightly release (2488231fe32e6e2c86f58acaa34766a6daa19235) 2019-12-12 00:02:20 -08:00
827fe3ff0a 2019-12-11 nightly release (8013ffd400b80ea3478e4b38daf9049647bf1550) 2019-12-11 00:03:19 -08:00
e8dc63722a 2019-12-10 nightly release (5205556782a71bdb8d90bcf0dcc58262713056b6) 2019-12-10 00:06:41 -08:00
6f08a756d1 2019-12-09 nightly release (190dac13e33267b4808a280fbc449ad672ec7544) 2019-12-09 00:04:51 -08:00
cefedb5547 2019-12-08 nightly release (6848f9abb82edc4e03e34b2c45a6c559a45a6c7c) 2019-12-08 00:02:27 -08:00
e2195755f4 2019-12-07 nightly release (63f1b780ba584384aef515ee3405f5847234787a) 2019-12-07 00:06:39 -08:00
7f6fc267c8 2019-12-06 nightly release (d32aec5ad627290516c17f37deeae04cafa06eab) 2019-12-06 00:05:51 -08:00
3fd4c696d9 2019-12-05 nightly release (a939b52ddbb0e1f9b7bf6b3a90dd4f7b331ef8de) 2019-12-05 00:02:45 -08:00
2561aea9fa 2019-12-04 nightly release (7e472679ff95fe4d23bcad89e98b8a6a2594880a) 2019-12-04 00:02:39 -08:00
d68cce5399 2019-12-03 nightly release (18ec4632b335521c8497ca2760a386c6d0d10a64) 2019-12-03 00:02:14 -08:00
66186d66e7 2019-12-02 nightly release (c780610f2d8358297cb4e4460692d496e124d64d) 2019-12-02 00:02:02 -08:00
bb9fdbeb5b 2019-12-01 nightly release (dd52f50fc85e6710f020936c1fc5f14673508350) 2019-12-01 00:03:15 -08:00
60d1c2048a 2019-11-30 nightly release (dd52f50fc85e6710f020936c1fc5f14673508350) 2019-11-30 00:02:51 -08:00
1e33e3ff3c 2019-11-29 nightly release (dd52f50fc85e6710f020936c1fc5f14673508350) 2019-11-29 00:02:09 -08:00
801675b97a 2019-11-28 nightly release (1350b99de4f13dfecfac335c088a79ff1f7e6adc) 2019-11-28 00:03:47 -08:00
3b178ac7ba 2019-11-27 nightly release (829499e626362e6a1badeba4e28c0f7a7a120fde) 2019-11-27 00:04:56 -08:00
2b44caa054 2019-11-26 nightly release (b8f50d9cc860460c7e9b6d3b370cab546e9f9583) 2019-11-26 00:02:13 -08:00
f8779b3945 2019-11-25 nightly release (3990e9d1ca23e39bfa65fe1d907ddb9f9dbf0919) 2019-11-25 00:02:52 -08:00
dfcf37b25a 2019-11-24 nightly release (3990e9d1ca23e39bfa65fe1d907ddb9f9dbf0919) 2019-11-24 00:02:20 -08:00
c1c03d34de 2019-11-23 nightly release (328ec5460f159ad9d42ddec463eaff2c118b092e) 2019-11-23 00:03:11 -08:00
1ac88375e4 2019-11-22 nightly release (48b943960e98082f103b9cbbdac54ec1eeca3fc9) 2019-11-22 00:02:32 -08:00
91110f4b2a 2019-11-21 nightly release (f7b12a985812f278b225fd58549ac95c7864a22c) 2019-11-21 00:06:35 -08:00
85ab8fc4b7 2019-11-20 nightly release (7495c25440709213cf9e018e7929a1a691c34489) 2019-11-20 00:03:35 -08:00
13f5548df1 2019-11-19 nightly release (a9ad2e2f00e9b7d9b30af5c0c6db348432ad7964) 2019-11-19 00:02:54 -08:00
95eee138ed 2019-11-18 nightly release (bb217eee985529b87f9582d6e4d6cb452fcd3909) 2019-11-18 00:03:42 -08:00
b6b29af92a 2019-11-17 nightly release (b011461c9f4bee46075cdf23a13d75c35baed612) 2019-11-17 00:02:06 -08:00
1b1e2c69e2 2019-11-16 nightly release (455b5c1a7d1503c03853e37b5a2caf60948359eb) 2019-11-16 00:04:39 -08:00
a3eaa3fac6 2019-11-15 nightly release (d22f61432dc71315029641b01bf264482bc9c5ca) 2019-11-15 15:49:07 -08:00
dc8c0d2ad7 2019-11-15 nightly release (d22f61432dc71315029641b01bf264482bc9c5ca) 2019-11-15 14:03:45 -08:00
031bd7a195 2019-11-15 nightly release (e1a309a647c5096bddaf44c423cc5dea8d6cae6c) 2019-11-15 00:03:24 -08:00
96a8c5838a 2019-11-14 nightly release (9fd7db616a0e220a74f4459958ea2d3186d5e55a) 2019-11-14 00:01:54 -08:00
fcfd231cbb 2019-11-13 nightly release 2019-11-13 00:02:28 -08:00
692a412019 2019-11-12 nightly release 2019-11-12 00:02:10 -08:00
c302ad7241 2019-11-11 nightly release 2019-11-11 03:00:50 -08:00
4700557819 2019-11-10 nightly release 2019-11-10 03:00:46 -08:00
36ddaddedc 2019-11-09 nightly release 2019-11-09 03:03:17 -08:00
3d0a871767 2019-11-08 nightly release (f362ae1f72525138b0b5e6240fc480f72148712f) 2019-11-08 13:10:28 -08:00
945c9128dc 2019-11-08 nightly release 2019-11-08 03:01:53 -08:00
76e078d3b0 2019-11-07 nightly release 2019-11-07 03:01:36 -08:00
40453f8c2d 2019-11-06 nightly release 2019-11-06 03:02:19 -08:00
2169a327ea 2019-11-05 nightly release 2019-11-05 03:02:39 -08:00
8bd6991397 2019-11-04 nightly release 2019-11-04 03:01:55 -08:00
cd324a9107 2019-11-03 nightly release 2019-11-03 03:04:23 -08:00
51770b859f 2019-11-02 nightly release 2019-11-02 03:01:32 -07:00
c4a27d2dad 2019-11-01 nightly release 2019-11-01 03:01:17 -07:00
4e8f1b5ee3 2019-10-31 nightly release 2019-10-31 03:03:17 -07:00
9328ceaba3 2019-10-30 nightly release 2019-10-30 03:01:42 -07:00
7fd0514bec 2019-10-29 nightly release 2019-10-29 03:04:52 -07:00
97ce0ad2e2 2019-10-28 nightly release 2019-10-28 03:05:15 -07:00
a9ffa7dbfe 2019-10-27 nightly release 2019-10-27 03:01:31 -07:00
30ae96a55e 2019-10-26 nightly release 2019-10-26 03:03:27 -07:00
8ee799199f 2019-10-25 nightly release 2019-10-25 03:01:22 -07:00
18edd71061 2019-10-24 nightly release 2019-10-24 03:02:07 -07:00
2b630217db 2019-10-23 nightly release 2019-10-23 03:02:12 -07:00
4b1da15d9b 2019-10-22 nightly release 2019-10-22 03:07:48 -07:00
201ea71b2e 2019-10-21 nightly release 2019-10-21 03:04:27 -07:00
6ea77adf16 2019-10-20 nightly release 2019-10-20 03:01:18 -07:00
6e0fb1c894 2019-10-19 nightly release 2019-10-19 03:07:41 -07:00
e0b14d085e 2019-10-18 nightly release 2019-10-18 03:02:23 -07:00
fb77773d5f 2019-10-17 nightly release 2019-10-17 03:04:03 -07:00
5c86840692 2019-10-16 nightly release 2019-10-16 03:01:01 -07:00
21ad376b4e 2019-10-15 nightly release 2019-10-15 03:02:07 -07:00
47dab98ccb nightly release 2019-10-14 03:00:32 -07:00
310 changed files with 4507 additions and 2438 deletions

View File

@ -0,0 +1,19 @@
# Aarch64 (ARM/Graviton) Support Scripts
Scripts for building aarch64 PyTorch PIP Wheels. These scripts build the following wheels:
* torch
* torchvision
* torchaudio
* torchtext
* torchdata
## Aarch64_ci_build.sh
This script is design to support CD operations within PyPi manylinux aarch64 container, and be executed in the container. It prepares the container and then executes __aarch64_wheel_ci_build.py__ to build the wheels. The script "assumes" the PyTorch repo is located at: ```/pytorch``` and will put the wheels into ```/artifacts```.
### Usage
```DESIRED_PYTHON=<PythonVersion> aarch64_ci_build.sh```
__NOTE:__ CI build is currently __EXPERMINTAL__
## Build_aarch64_wheel.py
This app allows a person to build using AWS EC3 resources and requires AWS-CLI and Boto3 with AWS credentials to support building EC2 instances for the wheel builds. Can be used in a codebuild CD or from a local system.
### Usage
```build_aarch64_wheel.py --key-name <YourPemKey> --use-docker --python 3.8 --branch <RCtag>```

View File

@ -0,0 +1,53 @@
#!/bin/bash
set -eux -o pipefail
GPU_ARCH_VERSION=${GPU_ARCH_VERSION:-}
# Set CUDA architecture lists to match x86 build_cuda.sh
if [[ "$GPU_ARCH_VERSION" == *"12.6"* ]]; then
export TORCH_CUDA_ARCH_LIST="8.0;9.0"
elif [[ "$GPU_ARCH_VERSION" == *"12.8"* ]]; then
export TORCH_CUDA_ARCH_LIST="8.0;9.0;10.0;12.0"
elif [[ "$GPU_ARCH_VERSION" == *"12.9"* ]]; then
export TORCH_CUDA_ARCH_LIST="8.0;9.0;10.0;12.0"
elif [[ "$GPU_ARCH_VERSION" == *"13.0"* ]]; then
export TORCH_CUDA_ARCH_LIST="8.0;9.0;10.0;11.0;12.0+PTX"
fi
# Compress the fatbin with -compress-mode=size for CUDA 13
if [[ "$DESIRED_CUDA" == *"13"* ]]; then
export TORCH_NVCC_FLAGS="-compress-mode=size"
# Bundle ptxas into the cu13 wheel, see https://github.com/pytorch/pytorch/issues/163801
export BUILD_BUNDLE_PTXAS=1
fi
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
source $SCRIPTPATH/aarch64_ci_setup.sh
###############################################################################
# Run aarch64 builder python
###############################################################################
cd /
# adding safe directory for git as the permissions will be
# on the mounted pytorch repo
git config --global --add safe.directory /pytorch
pip install -r /pytorch/requirements.txt
pip install auditwheel==6.2.0 wheel
if [ "$DESIRED_CUDA" = "cpu" ]; then
echo "BASE_CUDA_VERSION is not set. Building cpu wheel."
python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn
else
echo "BASE_CUDA_VERSION is set to: $DESIRED_CUDA"
export USE_SYSTEM_NCCL=1
# Check if we should use NVIDIA libs from PyPI (similar to x86 build_cuda.sh logic)
if [[ -z "$PYTORCH_EXTRA_INSTALL_REQUIREMENTS" ]]; then
echo "Bundling CUDA libraries with wheel for aarch64."
else
echo "Using nvidia libs from pypi for aarch64."
echo "Updated PYTORCH_EXTRA_INSTALL_REQUIREMENTS for aarch64: $PYTORCH_EXTRA_INSTALL_REQUIREMENTS"
export USE_NVIDIA_PYPI_LIBS=1
fi
python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn --enable-cuda
fi

View File

@ -0,0 +1,21 @@
#!/bin/bash
set -eux -o pipefail
# This script is used to prepare the Docker container for aarch64_ci_wheel_build.py python script
# By creating symlinks from desired /opt/python to /usr/local/bin/
NUMPY_VERSION=2.0.2
if [[ "$DESIRED_PYTHON" == "3.13" || "$DESIRED_PYTHON" == "3.13t" ]]; then
NUMPY_VERSION=2.1.2
fi
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
source $SCRIPTPATH/../manywheel/set_desired_python.sh
pip install -q numpy==${NUMPY_VERSION} pyyaml==6.0.2 scons==4.7.0 ninja==1.11.1 patchelf==0.17.2
for tool in python python3 pip pip3 ninja scons patchelf; do
ln -sf ${DESIRED_PYTHON_BIN_DIR}/${tool} /usr/local/bin;
done
python --version

View File

@ -0,0 +1,333 @@
#!/usr/bin/env python3
# encoding: UTF-8
import os
import shutil
from subprocess import check_call, check_output
def list_dir(path: str) -> list[str]:
"""'
Helper for getting paths for Python
"""
return check_output(["ls", "-1", path]).decode().split("\n")
def replace_tag(filename) -> None:
with open(filename) as f:
lines = f.readlines()
for i, line in enumerate(lines):
if line.startswith("Tag:"):
lines[i] = line.replace("-linux_", "-manylinux_2_28_")
print(f"Updated tag from {line} to {lines[i]}")
break
with open(filename, "w") as f:
f.writelines(lines)
def patch_library_rpath(
folder: str,
lib_name: str,
use_nvidia_pypi_libs: bool = False,
desired_cuda: str = "",
) -> None:
"""Apply patchelf to set RPATH for a library in torch/lib"""
lib_path = f"{folder}/tmp/torch/lib/{lib_name}"
if use_nvidia_pypi_libs:
# For PyPI NVIDIA libraries, construct CUDA RPATH
cuda_rpaths = [
"$ORIGIN/../../nvidia/cudnn/lib",
"$ORIGIN/../../nvidia/nvshmem/lib",
"$ORIGIN/../../nvidia/nccl/lib",
"$ORIGIN/../../nvidia/cusparselt/lib",
]
if "130" in desired_cuda:
cuda_rpaths.append("$ORIGIN/../../nvidia/cu13/lib")
else:
cuda_rpaths.extend(
[
"$ORIGIN/../../nvidia/cublas/lib",
"$ORIGIN/../../nvidia/cuda_cupti/lib",
"$ORIGIN/../../nvidia/cuda_nvrtc/lib",
"$ORIGIN/../../nvidia/cuda_runtime/lib",
"$ORIGIN/../../nvidia/cufft/lib",
"$ORIGIN/../../nvidia/curand/lib",
"$ORIGIN/../../nvidia/cusolver/lib",
"$ORIGIN/../../nvidia/cusparse/lib",
"$ORIGIN/../../nvidia/nvtx/lib",
"$ORIGIN/../../nvidia/cufile/lib",
]
)
# Add $ORIGIN for local torch libs
rpath = ":".join(cuda_rpaths) + ":$ORIGIN"
else:
# For bundled libraries, just use $ORIGIN
rpath = "$ORIGIN"
if os.path.exists(lib_path):
os.system(
f"cd {folder}/tmp/torch/lib/; "
f"patchelf --set-rpath '{rpath}' --force-rpath {lib_name}"
)
def copy_and_patch_library(
src_path: str,
folder: str,
use_nvidia_pypi_libs: bool = False,
desired_cuda: str = "",
) -> None:
"""Copy a library to torch/lib and patch its RPATH"""
if os.path.exists(src_path):
lib_name = os.path.basename(src_path)
shutil.copy2(src_path, f"{folder}/tmp/torch/lib/{lib_name}")
patch_library_rpath(folder, lib_name, use_nvidia_pypi_libs, desired_cuda)
def package_cuda_wheel(wheel_path, desired_cuda) -> None:
"""
Package the cuda wheel libraries
"""
folder = os.path.dirname(wheel_path)
os.mkdir(f"{folder}/tmp")
os.system(f"unzip {wheel_path} -d {folder}/tmp")
# Delete original wheel since it will be repackaged
os.system(f"rm {wheel_path}")
# Check if we should use PyPI NVIDIA libraries or bundle system libraries
use_nvidia_pypi_libs = os.getenv("USE_NVIDIA_PYPI_LIBS", "0") == "1"
if use_nvidia_pypi_libs:
print("Using nvidia libs from pypi - skipping CUDA library bundling")
# For PyPI approach, we don't bundle CUDA libraries - they come from PyPI packages
# We only need to bundle non-NVIDIA libraries
minimal_libs_to_copy = [
"/lib64/libgomp.so.1",
"/usr/lib64/libgfortran.so.5",
"/acl/build/libarm_compute.so",
"/acl/build/libarm_compute_graph.so",
"/usr/local/lib/libnvpl_lapack_lp64_gomp.so.0",
"/usr/local/lib/libnvpl_blas_lp64_gomp.so.0",
"/usr/local/lib/libnvpl_lapack_core.so.0",
"/usr/local/lib/libnvpl_blas_core.so.0",
]
# Copy minimal libraries to unzipped_folder/torch/lib
for lib_path in minimal_libs_to_copy:
copy_and_patch_library(lib_path, folder, use_nvidia_pypi_libs, desired_cuda)
# Patch torch libraries used for searching libraries
torch_libs_to_patch = [
"libtorch.so",
"libtorch_cpu.so",
"libtorch_cuda.so",
"libtorch_cuda_linalg.so",
"libtorch_global_deps.so",
"libtorch_python.so",
"libtorch_nvshmem.so",
"libc10.so",
"libc10_cuda.so",
"libcaffe2_nvrtc.so",
"libshm.so",
]
for lib_name in torch_libs_to_patch:
patch_library_rpath(folder, lib_name, use_nvidia_pypi_libs, desired_cuda)
else:
print("Bundling CUDA libraries with wheel")
# Original logic for bundling system CUDA libraries
# Common libraries for all CUDA versions
common_libs = [
# Non-NVIDIA system libraries
"/lib64/libgomp.so.1",
"/usr/lib64/libgfortran.so.5",
"/acl/build/libarm_compute.so",
"/acl/build/libarm_compute_graph.so",
# Common CUDA libraries (same for all versions)
"/usr/local/lib/libnvpl_lapack_lp64_gomp.so.0",
"/usr/local/lib/libnvpl_blas_lp64_gomp.so.0",
"/usr/local/lib/libnvpl_lapack_core.so.0",
"/usr/local/lib/libnvpl_blas_core.so.0",
"/usr/local/cuda/extras/CUPTI/lib64/libnvperf_host.so",
"/usr/local/cuda/lib64/libcudnn.so.9",
"/usr/local/cuda/lib64/libcusparseLt.so.0",
"/usr/local/cuda/lib64/libcurand.so.10",
"/usr/local/cuda/lib64/libnccl.so.2",
"/usr/local/cuda/lib64/libnvshmem_host.so.3",
"/usr/local/cuda/lib64/libcudnn_adv.so.9",
"/usr/local/cuda/lib64/libcudnn_cnn.so.9",
"/usr/local/cuda/lib64/libcudnn_graph.so.9",
"/usr/local/cuda/lib64/libcudnn_ops.so.9",
"/usr/local/cuda/lib64/libcudnn_engines_runtime_compiled.so.9",
"/usr/local/cuda/lib64/libcudnn_engines_precompiled.so.9",
"/usr/local/cuda/lib64/libcudnn_heuristic.so.9",
"/usr/local/cuda/lib64/libcufile.so.0",
"/usr/local/cuda/lib64/libcufile_rdma.so.1",
"/usr/local/cuda/lib64/libcusparse.so.12",
]
# CUDA version-specific libraries
if "13" in desired_cuda:
minor_version = desired_cuda[-1]
version_specific_libs = [
"/usr/local/cuda/extras/CUPTI/lib64/libcupti.so.13",
"/usr/local/cuda/lib64/libcublas.so.13",
"/usr/local/cuda/lib64/libcublasLt.so.13",
"/usr/local/cuda/lib64/libcudart.so.13",
"/usr/local/cuda/lib64/libcufft.so.12",
"/usr/local/cuda/lib64/libcusolver.so.12",
"/usr/local/cuda/lib64/libnvJitLink.so.13",
"/usr/local/cuda/lib64/libnvrtc.so.13",
f"/usr/local/cuda/lib64/libnvrtc-builtins.so.13.{minor_version}",
]
elif "12" in desired_cuda:
# Get the last character for libnvrtc-builtins version (e.g., "129" -> "9")
minor_version = desired_cuda[-1]
version_specific_libs = [
"/usr/local/cuda/extras/CUPTI/lib64/libcupti.so.12",
"/usr/local/cuda/lib64/libcublas.so.12",
"/usr/local/cuda/lib64/libcublasLt.so.12",
"/usr/local/cuda/lib64/libcudart.so.12",
"/usr/local/cuda/lib64/libcufft.so.11",
"/usr/local/cuda/lib64/libcusolver.so.11",
"/usr/local/cuda/lib64/libnvJitLink.so.12",
"/usr/local/cuda/lib64/libnvrtc.so.12",
f"/usr/local/cuda/lib64/libnvrtc-builtins.so.12.{minor_version}",
]
else:
raise ValueError(f"Unsupported CUDA version: {desired_cuda}.")
# Combine all libraries
libs_to_copy = common_libs + version_specific_libs
# Copy libraries to unzipped_folder/torch/lib
for lib_path in libs_to_copy:
copy_and_patch_library(lib_path, folder, use_nvidia_pypi_libs, desired_cuda)
# Make sure the wheel is tagged with manylinux_2_28
for f in os.scandir(f"{folder}/tmp/"):
if f.is_dir() and f.name.endswith(".dist-info"):
replace_tag(f"{f.path}/WHEEL")
break
os.system(f"wheel pack {folder}/tmp/ -d {folder}")
os.system(f"rm -rf {folder}/tmp/")
def complete_wheel(folder: str) -> str:
"""
Complete wheel build and put in artifact location
"""
wheel_name = list_dir(f"/{folder}/dist")[0]
# Please note for cuda we don't run auditwheel since we use custom script to package
# the cuda dependencies to the wheel file using update_wheel() method.
# However we need to make sure filename reflects the correct Manylinux platform.
if "pytorch" in folder and not enable_cuda:
print("Repairing Wheel with AuditWheel")
check_call(["auditwheel", "repair", f"dist/{wheel_name}"], cwd=folder)
repaired_wheel_name = list_dir(f"/{folder}/wheelhouse")[0]
print(f"Moving {repaired_wheel_name} wheel to /{folder}/dist")
os.rename(
f"/{folder}/wheelhouse/{repaired_wheel_name}",
f"/{folder}/dist/{repaired_wheel_name}",
)
else:
repaired_wheel_name = list_dir(f"/{folder}/dist")[0]
print(f"Copying {repaired_wheel_name} to artifacts")
shutil.copy2(
f"/{folder}/dist/{repaired_wheel_name}", f"/artifacts/{repaired_wheel_name}"
)
return repaired_wheel_name
def parse_arguments():
"""
Parse inline arguments
"""
from argparse import ArgumentParser
parser = ArgumentParser("AARCH64 wheels python CD")
parser.add_argument("--debug", action="store_true")
parser.add_argument("--build-only", action="store_true")
parser.add_argument("--test-only", type=str)
parser.add_argument("--enable-mkldnn", action="store_true")
parser.add_argument("--enable-cuda", action="store_true")
return parser.parse_args()
if __name__ == "__main__":
"""
Entry Point
"""
args = parse_arguments()
enable_mkldnn = args.enable_mkldnn
enable_cuda = args.enable_cuda
branch = check_output(
["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd="/pytorch"
).decode()
print("Building PyTorch wheel")
build_vars = ""
# MAX_JOB=5 is not required for CPU backend (see commit 465d98b)
if enable_cuda:
build_vars += "MAX_JOBS=5 "
# Handle PyPI NVIDIA libraries vs bundled libraries
use_nvidia_pypi_libs = os.getenv("USE_NVIDIA_PYPI_LIBS", "0") == "1"
if use_nvidia_pypi_libs:
print("Configuring build for PyPI NVIDIA libraries")
# Configure for dynamic linking (matching x86 logic)
build_vars += "ATEN_STATIC_CUDA=0 USE_CUDA_STATIC_LINK=0 USE_CUPTI_SO=1 "
else:
print("Configuring build for bundled NVIDIA libraries")
# Keep existing static linking approach - already configured above
override_package_version = os.getenv("OVERRIDE_PACKAGE_VERSION")
desired_cuda = os.getenv("DESIRED_CUDA")
if override_package_version is not None:
version = override_package_version
build_vars += (
f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version} PYTORCH_BUILD_NUMBER=1 "
)
elif branch in ["nightly", "main"]:
build_date = (
check_output(["git", "log", "--pretty=format:%cs", "-1"], cwd="/pytorch")
.decode()
.replace("-", "")
)
version = (
check_output(["cat", "version.txt"], cwd="/pytorch").decode().strip()[:-2]
)
if enable_cuda:
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version}.dev{build_date}+{desired_cuda} PYTORCH_BUILD_NUMBER=1 "
else:
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version}.dev{build_date} PYTORCH_BUILD_NUMBER=1 "
elif branch.startswith(("v1.", "v2.")):
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1 : branch.find('-')]} PYTORCH_BUILD_NUMBER=1 "
if enable_mkldnn:
print("build pytorch with mkldnn+acl backend")
build_vars += "USE_MKLDNN=ON USE_MKLDNN_ACL=ON "
build_vars += "ACL_ROOT_DIR=/acl "
if enable_cuda:
build_vars += "BLAS=NVPL "
else:
build_vars += "BLAS=OpenBLAS OpenBLAS_HOME=/opt/OpenBLAS "
else:
print("build pytorch without mkldnn backend")
os.system(f"cd /pytorch; {build_vars} python3 -m build --wheel --no-isolation")
if enable_cuda:
print("Updating Cuda Dependency")
filename = os.listdir("/pytorch/dist/")
wheel_path = f"/pytorch/dist/{filename[0]}"
package_cuda_wheel(wheel_path, desired_cuda)
pytorch_wheel_name = complete_wheel("/pytorch/")
print(f"Build Complete. Created {pytorch_wheel_name}..")

View File

@ -0,0 +1,999 @@
#!/usr/bin/env python3
# This script is for building AARCH64 wheels using AWS EC2 instances.
# To generate binaries for the release follow these steps:
# 1. Update mappings for each of the Domain Libraries by adding new row to a table like this:
# "v1.11.0": ("0.11.0", "rc1"),
# 2. Run script with following arguments for each of the supported python versions and required tag, for example:
# build_aarch64_wheel.py --key-name <YourPemKey> --use-docker --python 3.8 --branch v1.11.0-rc3
import os
import subprocess
import sys
import time
from typing import Optional, Union
import boto3
# AMI images for us-east-1, change the following based on your ~/.aws/config
os_amis = {
"ubuntu20_04": "ami-052eac90edaa9d08f", # login_name: ubuntu
"ubuntu22_04": "ami-0c6c29c5125214c77", # login_name: ubuntu
"redhat8": "ami-0698b90665a2ddcf1", # login_name: ec2-user
}
ubuntu20_04_ami = os_amis["ubuntu20_04"]
def compute_keyfile_path(key_name: Optional[str] = None) -> tuple[str, str]:
if key_name is None:
key_name = os.getenv("AWS_KEY_NAME")
if key_name is None:
return os.getenv("SSH_KEY_PATH", ""), ""
homedir_path = os.path.expanduser("~")
default_path = os.path.join(homedir_path, ".ssh", f"{key_name}.pem")
return os.getenv("SSH_KEY_PATH", default_path), key_name
ec2 = boto3.resource("ec2")
def ec2_get_instances(filter_name, filter_value):
return ec2.instances.filter(
Filters=[{"Name": filter_name, "Values": [filter_value]}]
)
def ec2_instances_of_type(instance_type="t4g.2xlarge"):
return ec2_get_instances("instance-type", instance_type)
def ec2_instances_by_id(instance_id):
rc = list(ec2_get_instances("instance-id", instance_id))
return rc[0] if len(rc) > 0 else None
def start_instance(
key_name, ami=ubuntu20_04_ami, instance_type="t4g.2xlarge", ebs_size: int = 50
):
inst = ec2.create_instances(
ImageId=ami,
InstanceType=instance_type,
SecurityGroups=["ssh-allworld"],
KeyName=key_name,
MinCount=1,
MaxCount=1,
BlockDeviceMappings=[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": True,
"VolumeSize": ebs_size,
"VolumeType": "standard",
},
}
],
)[0]
print(f"Create instance {inst.id}")
inst.wait_until_running()
running_inst = ec2_instances_by_id(inst.id)
print(f"Instance started at {running_inst.public_dns_name}")
return running_inst
class RemoteHost:
addr: str
keyfile_path: str
login_name: str
container_id: Optional[str] = None
ami: Optional[str] = None
def __init__(self, addr: str, keyfile_path: str, login_name: str = "ubuntu"):
self.addr = addr
self.keyfile_path = keyfile_path
self.login_name = login_name
def _gen_ssh_prefix(self) -> list[str]:
return [
"ssh",
"-o",
"StrictHostKeyChecking=no",
"-i",
self.keyfile_path,
f"{self.login_name}@{self.addr}",
"--",
]
@staticmethod
def _split_cmd(args: Union[str, list[str]]) -> list[str]:
return args.split() if isinstance(args, str) else args
def run_ssh_cmd(self, args: Union[str, list[str]]) -> None:
subprocess.check_call(self._gen_ssh_prefix() + self._split_cmd(args))
def check_ssh_output(self, args: Union[str, list[str]]) -> str:
return subprocess.check_output(
self._gen_ssh_prefix() + self._split_cmd(args)
).decode("utf-8")
def scp_upload_file(self, local_file: str, remote_file: str) -> None:
subprocess.check_call(
[
"scp",
"-i",
self.keyfile_path,
local_file,
f"{self.login_name}@{self.addr}:{remote_file}",
]
)
def scp_download_file(
self, remote_file: str, local_file: Optional[str] = None
) -> None:
if local_file is None:
local_file = "."
subprocess.check_call(
[
"scp",
"-i",
self.keyfile_path,
f"{self.login_name}@{self.addr}:{remote_file}",
local_file,
]
)
def start_docker(self, image="quay.io/pypa/manylinux2014_aarch64:latest") -> None:
self.run_ssh_cmd("sudo apt-get install -y docker.io")
self.run_ssh_cmd(f"sudo usermod -a -G docker {self.login_name}")
self.run_ssh_cmd("sudo service docker start")
self.run_ssh_cmd(f"docker pull {image}")
self.container_id = self.check_ssh_output(
f"docker run -t -d -w /root {image}"
).strip()
def using_docker(self) -> bool:
return self.container_id is not None
def run_cmd(self, args: Union[str, list[str]]) -> None:
if not self.using_docker():
return self.run_ssh_cmd(args)
assert self.container_id is not None
docker_cmd = self._gen_ssh_prefix() + [
"docker",
"exec",
"-i",
self.container_id,
"bash",
]
p = subprocess.Popen(docker_cmd, stdin=subprocess.PIPE)
p.communicate(
input=" ".join(["source .bashrc && "] + self._split_cmd(args)).encode(
"utf-8"
)
)
rc = p.wait()
if rc != 0:
raise subprocess.CalledProcessError(rc, docker_cmd)
def check_output(self, args: Union[str, list[str]]) -> str:
if not self.using_docker():
return self.check_ssh_output(args)
assert self.container_id is not None
docker_cmd = self._gen_ssh_prefix() + [
"docker",
"exec",
"-i",
self.container_id,
"bash",
]
p = subprocess.Popen(docker_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
(out, err) = p.communicate(
input=" ".join(["source .bashrc && "] + self._split_cmd(args)).encode(
"utf-8"
)
)
rc = p.wait()
if rc != 0:
raise subprocess.CalledProcessError(rc, docker_cmd, output=out, stderr=err)
return out.decode("utf-8")
def upload_file(self, local_file: str, remote_file: str) -> None:
if not self.using_docker():
return self.scp_upload_file(local_file, remote_file)
tmp_file = os.path.join("/tmp", os.path.basename(local_file))
self.scp_upload_file(local_file, tmp_file)
self.run_ssh_cmd(
["docker", "cp", tmp_file, f"{self.container_id}:/root/{remote_file}"]
)
self.run_ssh_cmd(["rm", tmp_file])
def download_file(self, remote_file: str, local_file: Optional[str] = None) -> None:
if not self.using_docker():
return self.scp_download_file(remote_file, local_file)
tmp_file = os.path.join("/tmp", os.path.basename(remote_file))
self.run_ssh_cmd(
["docker", "cp", f"{self.container_id}:/root/{remote_file}", tmp_file]
)
self.scp_download_file(tmp_file, local_file)
self.run_ssh_cmd(["rm", tmp_file])
def download_wheel(
self, remote_file: str, local_file: Optional[str] = None
) -> None:
if self.using_docker() and local_file is None:
basename = os.path.basename(remote_file)
local_file = basename.replace(
"-linux_aarch64.whl", "-manylinux2014_aarch64.whl"
)
self.download_file(remote_file, local_file)
def list_dir(self, path: str) -> list[str]:
return self.check_output(["ls", "-1", path]).split("\n")
def wait_for_connection(addr, port, timeout=15, attempt_cnt=5):
import socket
for i in range(attempt_cnt):
try:
with socket.create_connection((addr, port), timeout=timeout):
return
except (ConnectionRefusedError, TimeoutError): # noqa: PERF203
if i == attempt_cnt - 1:
raise
time.sleep(timeout)
def update_apt_repo(host: RemoteHost) -> None:
time.sleep(5)
host.run_cmd("sudo systemctl stop apt-daily.service || true")
host.run_cmd("sudo systemctl stop unattended-upgrades.service || true")
host.run_cmd(
"while systemctl is-active --quiet apt-daily.service; do sleep 1; done"
)
host.run_cmd(
"while systemctl is-active --quiet unattended-upgrades.service; do sleep 1; done"
)
host.run_cmd("sudo apt-get update")
time.sleep(3)
host.run_cmd("sudo apt-get update")
def install_condaforge(
host: RemoteHost, suffix: str = "latest/download/Miniforge3-Linux-aarch64.sh"
) -> None:
print("Install conda-forge")
host.run_cmd(f"curl -OL https://github.com/conda-forge/miniforge/releases/{suffix}")
host.run_cmd(f"sh -f {os.path.basename(suffix)} -b")
host.run_cmd(f"rm -f {os.path.basename(suffix)}")
if host.using_docker():
host.run_cmd("echo 'PATH=$HOME/miniforge3/bin:$PATH'>>.bashrc")
else:
host.run_cmd(
[
"sed",
"-i",
"'/^# If not running interactively.*/i PATH=$HOME/miniforge3/bin:$PATH'",
".bashrc",
]
)
def install_condaforge_python(host: RemoteHost, python_version="3.8") -> None:
if python_version == "3.6":
# Python-3.6 EOLed and not compatible with conda-4.11
install_condaforge(
host, suffix="download/4.10.3-10/Miniforge3-4.10.3-10-Linux-aarch64.sh"
)
host.run_cmd(f"conda install -y python={python_version} numpy pyyaml")
else:
install_condaforge(
host, suffix="download/4.11.0-4/Miniforge3-4.11.0-4-Linux-aarch64.sh"
)
# Pytorch-1.10 or older are not compatible with setuptools=59.6 or newer
host.run_cmd(
f"conda install -y python={python_version} numpy pyyaml setuptools>=59.5.0"
)
def embed_libgomp(host: RemoteHost, use_conda, wheel_name) -> None:
host.run_cmd("pip3 install auditwheel")
host.run_cmd(
"conda install -y patchelf" if use_conda else "sudo apt-get install -y patchelf"
)
from tempfile import NamedTemporaryFile
with NamedTemporaryFile() as tmp:
tmp.write(embed_library_script.encode("utf-8"))
tmp.flush()
host.upload_file(tmp.name, "embed_library.py")
print("Embedding libgomp into wheel")
if host.using_docker():
host.run_cmd(f"python3 embed_library.py {wheel_name} --update-tag")
else:
host.run_cmd(f"python3 embed_library.py {wheel_name}")
def checkout_repo(
host: RemoteHost,
*,
branch: str = "main",
url: str,
git_clone_flags: str,
mapping: dict[str, tuple[str, str]],
) -> Optional[str]:
for prefix in mapping:
if not branch.startswith(prefix):
continue
tag = f"v{mapping[prefix][0]}-{mapping[prefix][1]}"
host.run_cmd(f"git clone {url} -b {tag} {git_clone_flags}")
return mapping[prefix][0]
host.run_cmd(f"git clone {url} -b {branch} {git_clone_flags}")
return None
def build_torchvision(
host: RemoteHost,
*,
branch: str = "main",
use_conda: bool = True,
git_clone_flags: str,
run_smoke_tests: bool = True,
) -> str:
print("Checking out TorchVision repo")
build_version = checkout_repo(
host,
branch=branch,
url="https://github.com/pytorch/vision",
git_clone_flags=git_clone_flags,
mapping={
"v1.7.1": ("0.8.2", "rc2"),
"v1.8.0": ("0.9.0", "rc3"),
"v1.8.1": ("0.9.1", "rc1"),
"v1.9.0": ("0.10.0", "rc1"),
"v1.10.0": ("0.11.1", "rc1"),
"v1.10.1": ("0.11.2", "rc1"),
"v1.10.2": ("0.11.3", "rc1"),
"v1.11.0": ("0.12.0", "rc1"),
"v1.12.0": ("0.13.0", "rc4"),
"v1.12.1": ("0.13.1", "rc6"),
"v1.13.0": ("0.14.0", "rc4"),
"v1.13.1": ("0.14.1", "rc2"),
"v2.0.0": ("0.15.1", "rc2"),
"v2.0.1": ("0.15.2", "rc2"),
},
)
print("Building TorchVision wheel")
# Please note libnpg and jpeg are required to build image.so extension
if use_conda:
host.run_cmd("conda install -y libpng jpeg")
# Remove .so files to force static linking
host.run_cmd(
"rm miniforge3/lib/libpng.so miniforge3/lib/libpng16.so miniforge3/lib/libjpeg.so"
)
# And patch setup.py to include libz dependency for libpng
host.run_cmd(
[
'sed -i -e \'s/image_link_flags\\.append("png")/image_link_flags += ["png", "z"]/\' vision/setup.py'
]
)
build_vars = ""
if branch == "nightly":
version = host.check_output(
["if [ -f vision/version.txt ]; then cat vision/version.txt; fi"]
).strip()
if len(version) == 0:
# In older revisions, version was embedded in setup.py
version = (
host.check_output(["grep", '"version = \'"', "vision/setup.py"])
.strip()
.split("'")[1][:-2]
)
build_date = (
host.check_output("cd vision && git log --pretty=format:%s -1")
.strip()
.split()[0]
.replace("-", "")
)
build_vars += f"BUILD_VERSION={version}.dev{build_date}"
elif build_version is not None:
build_vars += f"BUILD_VERSION={build_version} PYTORCH_VERSION={branch[1:].split('-', maxsplit=1)[0]}"
if host.using_docker():
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
host.run_cmd(f"cd vision && {build_vars} python3 -m build --wheel --no-isolation")
vision_wheel_name = host.list_dir("vision/dist")[0]
embed_libgomp(host, use_conda, os.path.join("vision", "dist", vision_wheel_name))
print("Copying TorchVision wheel")
host.download_wheel(os.path.join("vision", "dist", vision_wheel_name))
if run_smoke_tests:
host.run_cmd(
f"pip3 install {os.path.join('vision', 'dist', vision_wheel_name)}"
)
host.run_cmd("python3 vision/test/smoke_test.py")
print("Delete vision checkout")
host.run_cmd("rm -rf vision")
return vision_wheel_name
def build_torchdata(
host: RemoteHost,
*,
branch: str = "main",
use_conda: bool = True,
git_clone_flags: str = "",
) -> str:
print("Checking out TorchData repo")
git_clone_flags += " --recurse-submodules"
build_version = checkout_repo(
host,
branch=branch,
url="https://github.com/pytorch/data",
git_clone_flags=git_clone_flags,
mapping={
"v1.13.1": ("0.5.1", ""),
"v2.0.0": ("0.6.0", "rc5"),
"v2.0.1": ("0.6.1", "rc1"),
},
)
print("Building TorchData wheel")
build_vars = ""
if branch == "nightly":
version = host.check_output(
["if [ -f data/version.txt ]; then cat data/version.txt; fi"]
).strip()
build_date = (
host.check_output("cd data && git log --pretty=format:%s -1")
.strip()
.split()[0]
.replace("-", "")
)
build_vars += f"BUILD_VERSION={version}.dev{build_date}"
elif build_version is not None:
build_vars += f"BUILD_VERSION={build_version} PYTORCH_VERSION={branch[1:].split('-', maxsplit=1)[0]}"
if host.using_docker():
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
host.run_cmd(f"cd data && {build_vars} python3 -m build --wheel --no-isolation")
wheel_name = host.list_dir("data/dist")[0]
embed_libgomp(host, use_conda, os.path.join("data", "dist", wheel_name))
print("Copying TorchData wheel")
host.download_wheel(os.path.join("data", "dist", wheel_name))
return wheel_name
def build_torchtext(
host: RemoteHost,
*,
branch: str = "main",
use_conda: bool = True,
git_clone_flags: str = "",
) -> str:
print("Checking out TorchText repo")
git_clone_flags += " --recurse-submodules"
build_version = checkout_repo(
host,
branch=branch,
url="https://github.com/pytorch/text",
git_clone_flags=git_clone_flags,
mapping={
"v1.9.0": ("0.10.0", "rc1"),
"v1.10.0": ("0.11.0", "rc2"),
"v1.10.1": ("0.11.1", "rc1"),
"v1.10.2": ("0.11.2", "rc1"),
"v1.11.0": ("0.12.0", "rc1"),
"v1.12.0": ("0.13.0", "rc2"),
"v1.12.1": ("0.13.1", "rc5"),
"v1.13.0": ("0.14.0", "rc3"),
"v1.13.1": ("0.14.1", "rc1"),
"v2.0.0": ("0.15.1", "rc2"),
"v2.0.1": ("0.15.2", "rc2"),
},
)
print("Building TorchText wheel")
build_vars = ""
if branch == "nightly":
version = host.check_output(
["if [ -f text/version.txt ]; then cat text/version.txt; fi"]
).strip()
build_date = (
host.check_output("cd text && git log --pretty=format:%s -1")
.strip()
.split()[0]
.replace("-", "")
)
build_vars += f"BUILD_VERSION={version}.dev{build_date}"
elif build_version is not None:
build_vars += f"BUILD_VERSION={build_version} PYTORCH_VERSION={branch[1:].split('-', maxsplit=1)[0]}"
if host.using_docker():
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
host.run_cmd(f"cd text && {build_vars} python3 -m build --wheel --no-isolation")
wheel_name = host.list_dir("text/dist")[0]
embed_libgomp(host, use_conda, os.path.join("text", "dist", wheel_name))
print("Copying TorchText wheel")
host.download_wheel(os.path.join("text", "dist", wheel_name))
return wheel_name
def build_torchaudio(
host: RemoteHost,
*,
branch: str = "main",
use_conda: bool = True,
git_clone_flags: str = "",
) -> str:
print("Checking out TorchAudio repo")
git_clone_flags += " --recurse-submodules"
build_version = checkout_repo(
host,
branch=branch,
url="https://github.com/pytorch/audio",
git_clone_flags=git_clone_flags,
mapping={
"v1.9.0": ("0.9.0", "rc2"),
"v1.10.0": ("0.10.0", "rc5"),
"v1.10.1": ("0.10.1", "rc1"),
"v1.10.2": ("0.10.2", "rc1"),
"v1.11.0": ("0.11.0", "rc1"),
"v1.12.0": ("0.12.0", "rc3"),
"v1.12.1": ("0.12.1", "rc5"),
"v1.13.0": ("0.13.0", "rc4"),
"v1.13.1": ("0.13.1", "rc2"),
"v2.0.0": ("2.0.1", "rc3"),
"v2.0.1": ("2.0.2", "rc2"),
},
)
print("Building TorchAudio wheel")
build_vars = ""
if branch == "nightly":
version = (
host.check_output(["grep", '"version = \'"', "audio/setup.py"])
.strip()
.split("'")[1][:-2]
)
build_date = (
host.check_output("cd audio && git log --pretty=format:%s -1")
.strip()
.split()[0]
.replace("-", "")
)
build_vars += f"BUILD_VERSION={version}.dev{build_date}"
elif build_version is not None:
build_vars += f"BUILD_VERSION={build_version} PYTORCH_VERSION={branch[1:].split('-', maxsplit=1)[0]}"
if host.using_docker():
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
host.run_cmd(
f"cd audio && export FFMPEG_ROOT=$(pwd)/third_party/ffmpeg && export USE_FFMPEG=1 \
&& ./packaging/ffmpeg/build.sh \
&& {build_vars} python3 -m build --wheel --no-isolation"
)
wheel_name = host.list_dir("audio/dist")[0]
embed_libgomp(host, use_conda, os.path.join("audio", "dist", wheel_name))
print("Copying TorchAudio wheel")
host.download_wheel(os.path.join("audio", "dist", wheel_name))
return wheel_name
def configure_system(
host: RemoteHost,
*,
compiler: str = "gcc-8",
use_conda: bool = True,
python_version: str = "3.8",
) -> None:
if use_conda:
install_condaforge_python(host, python_version)
print("Configuring the system")
if not host.using_docker():
update_apt_repo(host)
host.run_cmd("sudo apt-get install -y ninja-build g++ git cmake gfortran unzip")
else:
host.run_cmd("yum install -y sudo")
host.run_cmd("conda install -y ninja scons")
if not use_conda:
host.run_cmd(
"sudo apt-get install -y python3-dev python3-yaml python3-setuptools python3-wheel python3-pip"
)
host.run_cmd("pip3 install dataclasses typing-extensions")
if not use_conda:
print("Installing Cython + numpy from PyPy")
host.run_cmd("sudo pip3 install Cython")
host.run_cmd("sudo pip3 install numpy")
def build_domains(
host: RemoteHost,
*,
branch: str = "main",
use_conda: bool = True,
git_clone_flags: str = "",
) -> tuple[str, str, str, str]:
vision_wheel_name = build_torchvision(
host, branch=branch, use_conda=use_conda, git_clone_flags=git_clone_flags
)
audio_wheel_name = build_torchaudio(
host, branch=branch, use_conda=use_conda, git_clone_flags=git_clone_flags
)
data_wheel_name = build_torchdata(
host, branch=branch, use_conda=use_conda, git_clone_flags=git_clone_flags
)
text_wheel_name = build_torchtext(
host, branch=branch, use_conda=use_conda, git_clone_flags=git_clone_flags
)
return (vision_wheel_name, audio_wheel_name, data_wheel_name, text_wheel_name)
def start_build(
host: RemoteHost,
*,
branch: str = "main",
compiler: str = "gcc-8",
use_conda: bool = True,
python_version: str = "3.8",
pytorch_only: bool = False,
pytorch_build_number: Optional[str] = None,
shallow_clone: bool = True,
enable_mkldnn: bool = False,
) -> tuple[str, str, str, str, str]:
git_clone_flags = " --depth 1 --shallow-submodules" if shallow_clone else ""
if host.using_docker() and not use_conda:
print("Auto-selecting conda option for docker images")
use_conda = True
if not host.using_docker():
print("Disable mkldnn for host builds")
enable_mkldnn = False
configure_system(
host, compiler=compiler, use_conda=use_conda, python_version=python_version
)
if host.using_docker():
print("Move libgfortant.a into a standard location")
# HACK: pypa gforntran.a is compiled without PIC, which leads to the following error
# libgfortran.a(error.o)(.text._gfortrani_st_printf+0x34): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `__stack_chk_guard@@GLIBC_2.17' # noqa: E501, B950
# Workaround by copying gfortran library from the host
host.run_ssh_cmd("sudo apt-get install -y gfortran-8")
host.run_cmd("mkdir -p /usr/lib/gcc/aarch64-linux-gnu/8")
host.run_ssh_cmd(
[
"docker",
"cp",
"/usr/lib/gcc/aarch64-linux-gnu/8/libgfortran.a",
f"{host.container_id}:/opt/rh/devtoolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/",
]
)
print("Checking out PyTorch repo")
host.run_cmd(
f"git clone --recurse-submodules -b {branch} https://github.com/pytorch/pytorch {git_clone_flags}"
)
host.run_cmd("pytorch/.ci/docker/common/install_openblas.sh")
print("Building PyTorch wheel")
build_opts = ""
if pytorch_build_number is not None:
build_opts += f" -C--build-option=--build-number={pytorch_build_number}"
# Breakpad build fails on aarch64
build_vars = "USE_BREAKPAD=0 "
if branch == "nightly":
build_date = (
host.check_output("cd pytorch && git log --pretty=format:%s -1")
.strip()
.split()[0]
.replace("-", "")
)
version = host.check_output("cat pytorch/version.txt").strip()[:-2]
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={version}.dev{build_date} PYTORCH_BUILD_NUMBER=1"
if branch.startswith(("v1.", "v2.")):
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1 : branch.find('-')]} PYTORCH_BUILD_NUMBER=1"
if host.using_docker():
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
if enable_mkldnn:
host.run_cmd("pytorch/.ci/docker/common/install_acl.sh")
print("build pytorch with mkldnn+acl backend")
build_vars += " USE_MKLDNN=ON USE_MKLDNN_ACL=ON"
build_vars += " BLAS=OpenBLAS"
build_vars += " OpenBLAS_HOME=/opt/OpenBLAS"
build_vars += " ACL_ROOT_DIR=/acl"
host.run_cmd(
f"cd $HOME/pytorch && {build_vars} python3 -m build --wheel --no-isolation{build_opts}"
)
print("Repair the wheel")
pytorch_wheel_name = host.list_dir("pytorch/dist")[0]
ld_library_path = "/acl/build:$HOME/pytorch/build/lib"
host.run_cmd(
f"export LD_LIBRARY_PATH={ld_library_path} && auditwheel repair $HOME/pytorch/dist/{pytorch_wheel_name}"
)
print("replace the original wheel with the repaired one")
pytorch_repaired_wheel_name = host.list_dir("wheelhouse")[0]
host.run_cmd(
f"cp $HOME/wheelhouse/{pytorch_repaired_wheel_name} $HOME/pytorch/dist/{pytorch_wheel_name}"
)
else:
print("build pytorch without mkldnn backend")
host.run_cmd(
f"cd pytorch && {build_vars} python3 -m build --wheel --no-isolation{build_opts}"
)
print("Deleting build folder")
host.run_cmd("cd pytorch && rm -rf build")
pytorch_wheel_name = host.list_dir("pytorch/dist")[0]
embed_libgomp(host, use_conda, os.path.join("pytorch", "dist", pytorch_wheel_name))
print("Copying the wheel")
host.download_wheel(os.path.join("pytorch", "dist", pytorch_wheel_name))
print("Installing PyTorch wheel")
host.run_cmd(f"pip3 install pytorch/dist/{pytorch_wheel_name}")
if pytorch_only:
return (pytorch_wheel_name, None, None, None, None)
domain_wheels = build_domains(
host, branch=branch, use_conda=use_conda, git_clone_flags=git_clone_flags
)
return (pytorch_wheel_name, *domain_wheels)
embed_library_script = """
#!/usr/bin/env python3
from auditwheel.patcher import Patchelf
from auditwheel.wheeltools import InWheelCtx
from auditwheel.elfutils import elf_file_filter
from auditwheel.repair import copylib
from auditwheel.lddtree import lddtree
from subprocess import check_call
import os
import shutil
import sys
from tempfile import TemporaryDirectory
def replace_tag(filename):
with open(filename, 'r') as f:
lines = f.read().split("\\n")
for i,line in enumerate(lines):
if not line.startswith("Tag: "):
continue
lines[i] = line.replace("-linux_", "-manylinux2014_")
print(f'Updated tag from {line} to {lines[i]}')
with open(filename, 'w') as f:
f.write("\\n".join(lines))
class AlignedPatchelf(Patchelf):
def set_soname(self, file_name: str, new_soname: str) -> None:
check_call(['patchelf', '--page-size', '65536', '--set-soname', new_soname, file_name])
def replace_needed(self, file_name: str, soname: str, new_soname: str) -> None:
check_call(['patchelf', '--page-size', '65536', '--replace-needed', soname, new_soname, file_name])
def embed_library(whl_path, lib_soname, update_tag=False):
patcher = AlignedPatchelf()
out_dir = TemporaryDirectory()
whl_name = os.path.basename(whl_path)
tmp_whl_name = os.path.join(out_dir.name, whl_name)
with InWheelCtx(whl_path) as ctx:
torchlib_path = os.path.join(ctx._tmpdir.name, 'torch', 'lib')
ctx.out_wheel=tmp_whl_name
new_lib_path, new_lib_soname = None, None
for filename, elf in elf_file_filter(ctx.iter_files()):
if not filename.startswith('torch/lib'):
continue
libtree = lddtree(filename)
if lib_soname not in libtree['needed']:
continue
lib_path = libtree['libs'][lib_soname]['path']
if lib_path is None:
print(f"Can't embed {lib_soname} as it could not be found")
break
if lib_path.startswith(torchlib_path):
continue
if new_lib_path is None:
new_lib_soname, new_lib_path = copylib(lib_path, torchlib_path, patcher)
patcher.replace_needed(filename, lib_soname, new_lib_soname)
print(f'Replacing {lib_soname} with {new_lib_soname} for {filename}')
if update_tag:
# Add manylinux2014 tag
for filename in ctx.iter_files():
if os.path.basename(filename) != 'WHEEL':
continue
replace_tag(filename)
shutil.move(tmp_whl_name, whl_path)
if __name__ == '__main__':
embed_library(sys.argv[1], 'libgomp.so.1', len(sys.argv) > 2 and sys.argv[2] == '--update-tag')
"""
def run_tests(host: RemoteHost, whl: str, branch="main") -> None:
print("Configuring the system")
update_apt_repo(host)
host.run_cmd("sudo apt-get install -y python3-pip git")
host.run_cmd("sudo pip3 install Cython")
host.run_cmd("sudo pip3 install numpy")
host.upload_file(whl, ".")
host.run_cmd(f"sudo pip3 install {whl}")
host.run_cmd("python3 -c 'import torch;print(torch.rand((3,3))'")
host.run_cmd(f"git clone -b {branch} https://github.com/pytorch/pytorch")
host.run_cmd("cd pytorch/test; python3 test_torch.py -v")
def get_instance_name(instance) -> Optional[str]:
if instance.tags is None:
return None
for tag in instance.tags:
if tag["Key"] == "Name":
return tag["Value"]
return None
def list_instances(instance_type: str) -> None:
print(f"All instances of type {instance_type}")
for instance in ec2_instances_of_type(instance_type):
ifaces = instance.network_interfaces
az = ifaces[0].subnet.availability_zone if len(ifaces) > 0 else None
print(
f"{instance.id} {get_instance_name(instance)} {instance.public_dns_name} {instance.state['Name']} {az}"
)
def terminate_instances(instance_type: str) -> None:
print(f"Terminating all instances of type {instance_type}")
instances = list(ec2_instances_of_type(instance_type))
for instance in instances:
print(f"Terminating {instance.id}")
instance.terminate()
print("Waiting for termination to complete")
for instance in instances:
instance.wait_until_terminated()
def parse_arguments():
from argparse import ArgumentParser
parser = ArgumentParser("Build and test AARCH64 wheels using EC2")
parser.add_argument("--key-name", type=str)
parser.add_argument("--debug", action="store_true")
parser.add_argument("--build-only", action="store_true")
parser.add_argument("--test-only", type=str)
group = parser.add_mutually_exclusive_group()
group.add_argument("--os", type=str, choices=list(os_amis.keys()))
group.add_argument("--ami", type=str)
parser.add_argument(
"--python-version",
type=str,
choices=[f"3.{d}" for d in range(6, 12)],
default=None,
)
parser.add_argument("--alloc-instance", action="store_true")
parser.add_argument("--list-instances", action="store_true")
parser.add_argument("--pytorch-only", action="store_true")
parser.add_argument("--keep-running", action="store_true")
parser.add_argument("--terminate-instances", action="store_true")
parser.add_argument("--instance-type", type=str, default="t4g.2xlarge")
parser.add_argument("--ebs-size", type=int, default=50)
parser.add_argument("--branch", type=str, default="main")
parser.add_argument("--use-docker", action="store_true")
parser.add_argument(
"--compiler",
type=str,
choices=["gcc-7", "gcc-8", "gcc-9", "clang"],
default="gcc-8",
)
parser.add_argument("--use-torch-from-pypi", action="store_true")
parser.add_argument("--pytorch-build-number", type=str, default=None)
parser.add_argument("--disable-mkldnn", action="store_true")
return parser.parse_args()
if __name__ == "__main__":
args = parse_arguments()
ami = (
args.ami
if args.ami is not None
else os_amis[args.os]
if args.os is not None
else ubuntu20_04_ami
)
keyfile_path, key_name = compute_keyfile_path(args.key_name)
if args.list_instances:
list_instances(args.instance_type)
sys.exit(0)
if args.terminate_instances:
terminate_instances(args.instance_type)
sys.exit(0)
if len(key_name) == 0:
raise RuntimeError("""
Cannot start build without key_name, please specify
--key-name argument or AWS_KEY_NAME environment variable.""")
if len(keyfile_path) == 0 or not os.path.exists(keyfile_path):
raise RuntimeError(f"""
Cannot find keyfile with name: [{key_name}] in path: [{keyfile_path}], please
check `~/.ssh/` folder or manually set SSH_KEY_PATH environment variable.""")
# Starting the instance
inst = start_instance(
key_name, ami=ami, instance_type=args.instance_type, ebs_size=args.ebs_size
)
instance_name = f"{args.key_name}-{args.os}"
if args.python_version is not None:
instance_name += f"-py{args.python_version}"
inst.create_tags(
DryRun=False,
Tags=[
{
"Key": "Name",
"Value": instance_name,
}
],
)
addr = inst.public_dns_name
wait_for_connection(addr, 22)
host = RemoteHost(addr, keyfile_path)
host.ami = ami
if args.use_docker:
update_apt_repo(host)
host.start_docker()
if args.test_only:
run_tests(host, args.test_only)
sys.exit(0)
if args.alloc_instance:
if args.python_version is None:
sys.exit(0)
install_condaforge_python(host, args.python_version)
sys.exit(0)
python_version = args.python_version if args.python_version is not None else "3.10"
if args.use_torch_from_pypi:
configure_system(host, compiler=args.compiler, python_version=python_version)
print("Installing PyTorch wheel")
host.run_cmd("pip3 install torch")
build_domains(
host, branch=args.branch, git_clone_flags=" --depth 1 --shallow-submodules"
)
else:
start_build(
host,
branch=args.branch,
compiler=args.compiler,
python_version=python_version,
pytorch_only=args.pytorch_only,
pytorch_build_number=args.pytorch_build_number,
enable_mkldnn=not args.disable_mkldnn,
)
if not args.keep_running:
print(f"Waiting for instance {inst.id} to terminate")
inst.terminate()
inst.wait_until_terminated()

View File

@ -0,0 +1,87 @@
#!/usr/bin/env python3
import os
import shutil
import sys
from subprocess import check_call
from tempfile import TemporaryDirectory
from auditwheel.elfutils import elf_file_filter
from auditwheel.lddtree import lddtree
from auditwheel.patcher import Patchelf
from auditwheel.repair import copylib
from auditwheel.wheeltools import InWheelCtx
def replace_tag(filename):
with open(filename) as f:
lines = f.read().split("\\n")
for i, line in enumerate(lines):
if not line.startswith("Tag: "):
continue
lines[i] = line.replace("-linux_", "-manylinux2014_")
print(f"Updated tag from {line} to {lines[i]}")
with open(filename, "w") as f:
f.write("\\n".join(lines))
class AlignedPatchelf(Patchelf):
def set_soname(self, file_name: str, new_soname: str) -> None:
check_call(
["patchelf", "--page-size", "65536", "--set-soname", new_soname, file_name]
)
def replace_needed(self, file_name: str, soname: str, new_soname: str) -> None:
check_call(
[
"patchelf",
"--page-size",
"65536",
"--replace-needed",
soname,
new_soname,
file_name,
]
)
def embed_library(whl_path, lib_soname, update_tag=False):
patcher = AlignedPatchelf()
out_dir = TemporaryDirectory()
whl_name = os.path.basename(whl_path)
tmp_whl_name = os.path.join(out_dir.name, whl_name)
with InWheelCtx(whl_path) as ctx:
torchlib_path = os.path.join(ctx._tmpdir.name, "torch", "lib")
ctx.out_wheel = tmp_whl_name
new_lib_path, new_lib_soname = None, None
for filename, _ in elf_file_filter(ctx.iter_files()):
if not filename.startswith("torch/lib"):
continue
libtree = lddtree(filename)
if lib_soname not in libtree["needed"]:
continue
lib_path = libtree["libs"][lib_soname]["path"]
if lib_path is None:
print(f"Can't embed {lib_soname} as it could not be found")
break
if lib_path.startswith(torchlib_path):
continue
if new_lib_path is None:
new_lib_soname, new_lib_path = copylib(lib_path, torchlib_path, patcher)
patcher.replace_needed(filename, lib_soname, new_lib_soname)
print(f"Replacing {lib_soname} with {new_lib_soname} for {filename}")
if update_tag:
# Add manylinux2014 tag
for filename in ctx.iter_files():
if os.path.basename(filename) != "WHEEL":
continue
replace_tag(filename)
shutil.move(tmp_whl_name, whl_path)
if __name__ == "__main__":
embed_library(
sys.argv[1], "libgomp.so.1", len(sys.argv) > 2 and sys.argv[2] == "--update-tag"
)

View File

@ -4,17 +4,14 @@ set -ex
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# Source the common build script for architecture-specific configurations (MKLDNN, ACL, etc.)
source "${SCRIPTPATH}/../pytorch/build.sh" || true
case "${GPU_ARCH_TYPE:-BLANK}" in
cuda | cuda-aarch64)
cuda)
bash "${SCRIPTPATH}/build_cuda.sh"
;;
rocm)
bash "${SCRIPTPATH}/build_rocm.sh"
;;
cpu | cpu-cxx11-abi | cpu-aarch64 | cpu-s390x)
cpu | cpu-cxx11-abi | cpu-s390x)
bash "${SCRIPTPATH}/build_cpu.sh"
;;
xpu)

View File

@ -18,31 +18,12 @@ retry () {
$* || (sleep 1 && $*) || (sleep 2 && $*) || (sleep 4 && $*) || (sleep 8 && $*)
}
# Detect architecture first
ARCH=$(uname -m)
echo "Detected architecture: $ARCH"
PLATFORM=""
# TODO move this into the Docker images
OS_NAME=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [[ "$OS_NAME" == *"AlmaLinux"* ]]; then
retry yum install -q -y zip openssl
# Set platform based on architecture
case $ARCH in
x86_64)
PLATFORM="manylinux_2_28_x86_64"
;;
aarch64)
PLATFORM="manylinux_2_28_aarch64"
;;
s390x)
PLATFORM="manylinux_2_28_s390x"
;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
PLATFORM="manylinux_2_28_x86_64"
elif [[ "$OS_NAME" == *"Red Hat Enterprise Linux"* ]]; then
retry dnf install -q -y zip openssl
elif [[ "$OS_NAME" == *"Ubuntu"* ]]; then
@ -57,8 +38,6 @@ else
exit 1
fi
echo "Platform set to: $PLATFORM"
# We use the package name to test the package by passing this to 'pip install'
# This is the env variable that setup.py uses to name the package. Note that
# pip 'normalizes' the name first by changing all - to _
@ -320,8 +299,8 @@ for pkg in /$WHEELHOUSE_DIR/torch_no_python*.whl /$WHEELHOUSE_DIR/torch*linux*.w
# ROCm workaround for roctracer dlopens
if [[ "$DESIRED_CUDA" == *"rocm"* ]]; then
patchedpath=$(fname_without_so_number $destpath)
# Keep the so number for XPU dependencies, libgomp.so.1, ACL libraries, and NVPL libraries to avoid twice load
elif [[ "$DESIRED_CUDA" == *"xpu"* || "$filename" == "libgomp.so.1" || "$filename" == libarm_compute* || "$filename" == libnvpl* || "$filename" == "libgfortran.so.5" ]]; then
# Keep the so number for XPU dependencies and libgomp.so.1 to avoid twice load
elif [[ "$DESIRED_CUDA" == *"xpu"* || "$filename" == "libgomp.so.1" ]]; then
patchedpath=$destpath
else
patchedpath=$(fname_with_sha256 $destpath)
@ -367,22 +346,9 @@ for pkg in /$WHEELHOUSE_DIR/torch_no_python*.whl /$WHEELHOUSE_DIR/torch*linux*.w
done
# create Manylinux 2_28 tag this needs to happen before regenerate the RECORD
# Support all architectures (x86_64, aarch64, s390x)
if [[ "$IS_MANYLINUX2_28" == "1" && $GPU_ARCH_TYPE != "xpu" ]]; then
if [[ $PLATFORM == "manylinux_2_28_x86_64" && $GPU_ARCH_TYPE != "cpu-s390x" && $GPU_ARCH_TYPE != "xpu" ]]; then
wheel_file=$(echo $(basename $pkg) | sed -e 's/-cp.*$/.dist-info\/WHEEL/g')
echo "Updating wheel tag for $ARCH architecture"
# Replace linux_* with manylinux_2_28_* based on architecture
case $ARCH in
x86_64)
sed -i -e 's#linux_x86_64#manylinux_2_28_x86_64#g' $wheel_file
;;
aarch64)
sed -i -e 's#linux_aarch64#manylinux_2_28_aarch64#g' $wheel_file
;;
s390x)
sed -i -e 's#linux_s390x#manylinux_2_28_s390x#g' $wheel_file
;;
esac
sed -i -e s#linux_x86_64#"${PLATFORM}"# $wheel_file;
fi
# regenerate the RECORD file with new hashes

View File

@ -15,10 +15,6 @@ if [[ -z "$EXTRA_CAFFE2_CMAKE_FLAGS" ]]; then
EXTRA_CAFFE2_CMAKE_FLAGS=()
fi
# Detect architecture
ARCH=$(uname -m)
echo "Building CPU wheel for architecture: $ARCH"
WHEELHOUSE_DIR="wheelhousecpu"
LIBTORCH_HOUSE_DIR="libtorch_housecpu"
if [[ -z "$PYTORCH_FINAL_PACKAGE_DIR" ]]; then
@ -38,10 +34,8 @@ elif [[ "$OS_NAME" == *"Red Hat Enterprise Linux"* ]]; then
elif [[ "$OS_NAME" == *"AlmaLinux"* ]]; then
LIBGOMP_PATH="/usr/lib64/libgomp.so.1"
elif [[ "$OS_NAME" == *"Ubuntu"* ]]; then
if [[ "$ARCH" == "s390x" ]]; then
if [[ "$(uname -m)" == "s390x" ]]; then
LIBGOMP_PATH="/usr/lib/s390x-linux-gnu/libgomp.so.1"
elif [[ "$ARCH" == "aarch64" ]]; then
LIBGOMP_PATH="/usr/lib/aarch64-linux-gnu/libgomp.so.1"
else
LIBGOMP_PATH="/usr/lib/x86_64-linux-gnu/libgomp.so.1"
fi
@ -55,34 +49,6 @@ DEPS_SONAME=(
"libgomp.so.1"
)
# Add ARM-specific library dependencies for CPU builds
if [[ "$ARCH" == "aarch64" ]]; then
echo "Adding ARM-specific CPU library dependencies"
# ARM Compute Library (if available)
if [[ -d "/acl/build" ]]; then
echo "Adding ARM Compute Library for CPU"
DEPS_LIST+=(
"/acl/build/libarm_compute.so"
"/acl/build/libarm_compute_graph.so"
)
DEPS_SONAME+=(
"libarm_compute.so"
"libarm_compute_graph.so"
)
fi
# ARM system libraries
DEPS_LIST+=(
"/usr/lib64/libgfortran.so.5"
"/opt/OpenBLAS/lib/libopenblas.so.0"
)
DEPS_SONAME+=(
"libgfortran.so.5"
"libopenblas.so.0"
)
fi
rm -rf /usr/local/cuda*
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"

View File

@ -29,10 +29,6 @@ if [[ -z "$EXTRA_CAFFE2_CMAKE_FLAGS" ]]; then
EXTRA_CAFFE2_CMAKE_FLAGS=()
fi
# Detect architecture
ARCH=$(uname -m)
echo "Building for architecture: $ARCH"
# Determine CUDA version and architectures to build for
#
# NOTE: We should first check `DESIRED_CUDA` when determining `CUDA_VERSION`,
@ -57,60 +53,34 @@ fi
cuda_version_nodot=$(echo $CUDA_VERSION | tr -d '.')
EXTRA_CAFFE2_CMAKE_FLAGS+=("-DATEN_NO_TEST=ON")
# Function to remove architectures from a list
remove_archs() {
local result="$1"
shift
for arch in "$@"; do
result="${result//${arch};/}"
done
echo "$result"
}
# Function to filter CUDA architectures for aarch64
# aarch64 ARM GPUs only support certain compute capabilities
# Keep: 8.0 (A100), 9.0+ (Hopper, Grace Hopper, newer)
# Remove: < 8.0 (no ARM GPUs), 8.6 (x86_64 RTX 3090/A6000 only)
filter_aarch64_archs() {
local arch_list="$1"
# Explicitly remove architectures not needed on aarch64
arch_list=$(remove_archs "$arch_list" "5.0" "6.0" "7.0" "7.5" "8.6")
echo "$arch_list"
}
# Base: Common architectures across all modern CUDA versions
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6;9.0"
case ${CUDA_VERSION} in
12.6) TORCH_CUDA_ARCH_LIST="5.0;6.0;${TORCH_CUDA_ARCH_LIST}" ;; # Only 12.6 includes Legacy Maxwell/Pascal that will be removed in future releases
12.8) TORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST};10.0;12.0" ;; # +Hopper/Blackwell support
12.9) TORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST};10.0;12.0+PTX" # +Hopper/Blackwell support + PTX for forward compatibility
#removing sm_50-sm_60 as these architectures are deprecated in CUDA 12.8/9 and will be removed in future releases
#however we would like to keep sm_70 architecture see: https://github.com/pytorch/pytorch/issues/157517
12.8)
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6;9.0;10.0;12.0"
;;
12.9)
TORCH_CUDA_ARCH_LIST="7.0;7.5;8.0;8.6;9.0;10.0;12.0+PTX"
# WAR to resolve the ld error in libtorch build with CUDA 12.9
if [[ "$PACKAGE_TYPE" == "libtorch" ]]; then
TORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST//7.0;/}" # Remove 7.0 to resolve the ld error
TORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST//8.6;/}" # Remove 8.6 for libtorch
TORCH_CUDA_ARCH_LIST="7.5;8.0;9.0;10.0;12.0+PTX"
fi
;;
13.0)
TORCH_CUDA_ARCH_LIST="7.5;8.0;8.6;9.0;10.0;$([[ "$ARCH" == "aarch64" ]] && echo "11.0;" || echo "")12.0+PTX"
export TORCH_NVCC_FLAGS="-compress-mode=size"
export BUILD_BUNDLE_PTXAS=1
TORCH_CUDA_ARCH_LIST="7.5;8.0;8.6;9.0;10.0;12.0+PTX"
;;
12.6)
TORCH_CUDA_ARCH_LIST="5.0;6.0;7.0;7.5;8.0;8.6;9.0"
;;
*)
echo "unknown cuda version $CUDA_VERSION"
exit 1
;;
*) echo "unknown cuda version $CUDA_VERSION"; exit 1 ;;
esac
# Filter for aarch64: Remove < 8.0 and 8.6
[[ "$ARCH" == "aarch64" ]] && TORCH_CUDA_ARCH_LIST=$(filter_aarch64_archs "$TORCH_CUDA_ARCH_LIST")
echo "TORCH_CUDA_ARCH_LIST set to: $TORCH_CUDA_ARCH_LIST"
export TORCH_CUDA_ARCH_LIST=${TORCH_CUDA_ARCH_LIST}
echo "${TORCH_CUDA_ARCH_LIST}"
# Disable MAGMA for aarch64 as pre-built libraries are x86-64 only
if [[ "$ARCH" == "aarch64" ]]; then
echo "Disabling MAGMA for aarch64 architecture"
export USE_MAGMA=0
fi
# Package directories
WHEELHOUSE_DIR="wheelhouse$cuda_version_nodot"
LIBTORCH_HOUSE_DIR="libtorch_house$cuda_version_nodot"
@ -274,51 +244,6 @@ else
exit 1
fi
# Add ARM-specific library dependencies
if [[ "$ARCH" == "aarch64" ]]; then
echo "Adding ARM-specific library dependencies"
# ARM Compute Library (if available)
if [[ -d "/acl/build" ]]; then
echo "Adding ARM Compute Library"
DEPS_LIST+=(
"/acl/build/libarm_compute.so"
"/acl/build/libarm_compute_graph.so"
)
DEPS_SONAME+=(
"libarm_compute.so"
"libarm_compute_graph.so"
)
fi
# ARM system libraries
DEPS_LIST+=(
"/lib64/libgomp.so.1"
"/usr/lib64/libgfortran.so.5"
)
DEPS_SONAME+=(
"libgomp.so.1"
"libgfortran.so.5"
)
# NVPL libraries (ARM optimized BLAS/LAPACK)
if [[ -d "/usr/local/lib" && -f "/usr/local/lib/libnvpl_blas_lp64_gomp.so.0" ]]; then
echo "Adding NVPL libraries for ARM"
DEPS_LIST+=(
"/usr/local/lib/libnvpl_lapack_lp64_gomp.so.0"
"/usr/local/lib/libnvpl_blas_lp64_gomp.so.0"
"/usr/local/lib/libnvpl_lapack_core.so.0"
"/usr/local/lib/libnvpl_blas_core.so.0"
)
DEPS_SONAME+=(
"libnvpl_lapack_lp64_gomp.so.0"
"libnvpl_blas_lp64_gomp.so.0"
"libnvpl_lapack_core.so.0"
"libnvpl_blas_core.so.0"
)
fi
fi
# run_tests.sh requires DESIRED_CUDA to know what tests to exclude
export DESIRED_CUDA="$cuda_version_nodot"
@ -326,11 +251,9 @@ export DESIRED_CUDA="$cuda_version_nodot"
rm -rf /usr/local/cuda || true
ln -s "/usr/local/cuda-${CUDA_VERSION}" /usr/local/cuda
# Switch `/usr/local/magma` to the desired CUDA version (skip for aarch64)
if [[ "$ARCH" != "aarch64" ]]; then
rm -rf /usr/local/magma || true
ln -s /usr/local/cuda-${CUDA_VERSION}/magma /usr/local/magma
fi
# Switch `/usr/local/magma` to the desired CUDA version
rm -rf /usr/local/magma || true
ln -s /usr/local/cuda-${CUDA_VERSION}/magma /usr/local/magma
export CUDA_VERSION=$(ls /usr/local/cuda/lib64/libcudart.so.*|sort|tac | head -1 | rev | cut -d"." -f -3 | rev) # 10.0.130
export CUDA_VERSION_SHORT=$(ls /usr/local/cuda/lib64/libcudart.so.*|sort|tac | head -1 | rev | cut -d"." -f -3 | rev | cut -f1,2 -d".") # 10.0

View File

@ -86,20 +86,10 @@ else
fi
fi
# Enable MKLDNN with ARM Compute Library for ARM builds
if [[ "$BUILD_ENVIRONMENT" == *aarch64* ]]; then
export USE_MKLDNN=1
# ACL is required for aarch64 builds
if [[ ! -d "/acl" ]]; then
echo "ERROR: ARM Compute Library not found at /acl"
echo "ACL is required for aarch64 builds. Check Docker image setup."
exit 1
fi
export USE_MKLDNN_ACL=1
export ACL_ROOT_DIR=/acl
echo "ARM Compute Library enabled for MKLDNN: ACL_ROOT_DIR=/acl"
fi
if [[ "$BUILD_ENVIRONMENT" == *riscv64* ]]; then

View File

@ -260,8 +260,11 @@ jobs:
"${DOCKER_IMAGE}"
)
docker exec -t -w "${PYTORCH_ROOT}" "${container_name}" bash -c "bash .circleci/scripts/binary_populate_env.sh"
# Unified build script for all architectures (x86_64, aarch64, s390x)
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/${{ inputs.PACKAGE_TYPE }}/build.sh"
if [[ ${BUILD_ENVIRONMENT} == *"aarch64"* ]]; then
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/aarch64_linux/aarch64_ci_build.sh"
else
docker exec -t "${container_name}" bash -c "source ${BINARY_ENV_FILE} && bash /pytorch/.ci/${{ inputs.PACKAGE_TYPE }}/build.sh"
fi
- name: Chown artifacts
if: ${{ steps.filter.outputs.is-test-matrix-empty == 'False' && inputs.build_environment != 'linux-s390x-binary-manywheel' }}

View File

@ -144,7 +144,7 @@ inline std::bitset<kVmapNumLevels> createVmapLevelsBitset(BatchDimsRef bdims) {
}
inline std::ostream& operator<<(std::ostream& out, const BatchDim& bdim) {
out << "(lvl=" << bdim.level() << ", dim=" << bdim.dim() << ')';
out << "(lvl=" << bdim.level() << ", dim=" << bdim.dim() << ")";
return out;
}

View File

@ -9,7 +9,7 @@ namespace indexing {
const EllipsisIndexType Ellipsis = EllipsisIndexType();
std::ostream& operator<<(std::ostream& stream, const Slice& slice) {
stream << slice.start() << ':' << slice.stop() << ':' << slice.step();
stream << slice.start() << ":" << slice.stop() << ":" << slice.step();
return stream;
}
@ -31,12 +31,12 @@ std::ostream& operator<<(std::ostream& stream, const TensorIndex& tensor_index)
}
std::ostream& operator<<(std::ostream& stream, const std::vector<TensorIndex>& tensor_indices) {
stream << '(';
stream << "(";
for (const auto i : c10::irange(tensor_indices.size())) {
stream << tensor_indices[i];
if (i < tensor_indices.size() - 1) stream << ", ";
}
stream << ')';
stream << ")";
return stream;
}

View File

@ -113,7 +113,7 @@ void TensorNames::checkUnique(const char* op_name) const {
std::ostream& operator<<(std::ostream& out, const TensorName& tensorname) {
out << tensorname.name_ << " (index ";
out << tensorname.origin_idx_ << " of ";
out << tensorname.origin_ << ')';
out << tensorname.origin_ << ")";
return out;
}

View File

@ -13,9 +13,9 @@ std::ostream& operator<<(std::ostream & out, const TensorGeometryArg& t) {
if (t.pos == 0) {
// 0 is distinguished; it usually indicates 'self' or the return
// tensor
out << '\'' << t.name << '\'';
out << "'" << t.name << "'";
} else {
out << "argument #" << t.pos << " '" << t.name << '\'';
out << "argument #" << t.pos << " '" << t.name << "'";
}
return out;
}
@ -154,7 +154,7 @@ void checkSameGPU(CheckedFrom c, const TensorArg& t1, const TensorArg& t2) {
oss << "Tensor for " << t2 << " is on CPU, ";
}
oss << "but expected " << ((!t1->is_cpu() && !t2->is_cpu()) ? "them" : "it")
<< " to be on GPU (while checking arguments for " << c << ')';
<< " to be on GPU (while checking arguments for " << c << ")";
TORCH_CHECK(false, oss.str());
}
TORCH_CHECK(
@ -199,7 +199,7 @@ void checkScalarTypes(CheckedFrom c, const TensorArg& t,
i++;
}
oss << "; but got " << t->toString()
<< " instead (while checking arguments for " << c << ')';
<< " instead (while checking arguments for " << c << ")";
TORCH_CHECK(false, oss.str());
}
}

View File

@ -43,8 +43,8 @@ std::string get_mkldnn_version() {
// https://github.com/intel/ideep/issues/29
{
const dnnl_version_t* ver = dnnl_version();
ss << "Intel(R) MKL-DNN v" << ver->major << '.' << ver->minor << '.' << ver->patch
<< " (Git Hash " << ver->hash << ')';
ss << "Intel(R) MKL-DNN v" << ver->major << "." << ver->minor << "." << ver->patch
<< " (Git Hash " << ver->hash << ")";
}
#else
ss << "MKLDNN not found";
@ -81,7 +81,7 @@ std::string get_openmp_version() {
break;
}
if (ver_str) {
ss << " (a.k.a. OpenMP " << ver_str << ')';
ss << " (a.k.a. OpenMP " << ver_str << ")";
}
}
#else
@ -135,38 +135,38 @@ std::string show_config() {
#if defined(__GNUC__)
{
ss << " - GCC " << __GNUC__ << '.' << __GNUC_MINOR__ << '\n';
ss << " - GCC " << __GNUC__ << "." << __GNUC_MINOR__ << "\n";
}
#endif
#if defined(__cplusplus)
{
ss << " - C++ Version: " << __cplusplus << '\n';
ss << " - C++ Version: " << __cplusplus << "\n";
}
#endif
#if defined(__clang_major__)
{
ss << " - clang " << __clang_major__ << '.' << __clang_minor__ << '.' << __clang_patchlevel__ << '\n';
ss << " - clang " << __clang_major__ << "." << __clang_minor__ << "." << __clang_patchlevel__ << "\n";
}
#endif
#if defined(_MSC_VER)
{
ss << " - MSVC " << _MSC_FULL_VER << '\n';
ss << " - MSVC " << _MSC_FULL_VER << "\n";
}
#endif
#if AT_MKL_ENABLED()
ss << " - " << get_mkl_version() << '\n';
ss << " - " << get_mkl_version() << "\n";
#endif
#if AT_MKLDNN_ENABLED()
ss << " - " << get_mkldnn_version() << '\n';
ss << " - " << get_mkldnn_version() << "\n";
#endif
#ifdef _OPENMP
ss << " - " << get_openmp_version() << '\n';
ss << " - " << get_openmp_version() << "\n";
#endif
#if AT_BUILD_WITH_LAPACK()
@ -183,7 +183,7 @@ std::string show_config() {
ss << " - Cross compiling on MacOSX\n";
#endif
ss << " - "<< used_cpu_capability() << '\n';
ss << " - "<< used_cpu_capability() << "\n";
if (hasCUDA()) {
ss << detail::getCUDAHooks().showConfig();
@ -200,10 +200,10 @@ std::string show_config() {
ss << " - Build settings: ";
for (const auto& pair : caffe2::GetBuildOptions()) {
if (!pair.second.empty()) {
ss << pair.first << '=' << pair.second << ", ";
ss << pair.first << "=" << pair.second << ", ";
}
}
ss << '\n';
ss << "\n";
// TODO: do HIP
// TODO: do XLA

View File

@ -209,7 +209,7 @@ struct CodeTemplate {
// to indent correctly in the context.
void emitIndent(std::ostream& out, size_t indent) const {
for ([[maybe_unused]] const auto i : c10::irange(indent)) {
out << ' ';
out << " ";
}
}
void emitStringWithIndents(

View File

@ -10,7 +10,7 @@ std::ostream& operator<<(std::ostream& out, const Dimname& dimname) {
if (dimname.type() == NameType::WILDCARD) {
out << "None";
} else {
out << '\'' << dimname.symbol().toUnqualString() << '\'';
out << "'" << dimname.symbol().toUnqualString() << "'";
}
return out;
}

View File

@ -5,7 +5,7 @@
namespace at {
std::ostream& operator<<(std::ostream& out, const Range& range) {
out << "Range[" << range.begin << ", " << range.end << ']';
out << "Range[" << range.begin << ", " << range.end << "]";
return out;
}

View File

@ -71,7 +71,7 @@ void TensorBase::enforce_invariants() {
void TensorBase::print() const {
if (defined()) {
std::cerr << '[' << toString() << ' ' << sizes() << ']' << '\n';
std::cerr << "[" << toString() << " " << sizes() << "]" << '\n';
} else {
std::cerr << "[UndefinedTensor]" << '\n';
}

View File

@ -9,8 +9,8 @@ APIVitals VitalsAPI;
std::ostream& operator<<(std::ostream& os, TorchVital const& tv) {
for (const auto& m : tv.attrs) {
os << "[TORCH_VITAL] " << tv.name << '.' << m.first << "\t\t "
<< m.second.value << '\n';
os << "[TORCH_VITAL] " << tv.name << "." << m.first << "\t\t "
<< m.second.value << "\n";
}
return os;
}

View File

@ -100,18 +100,18 @@ inline bool operator==(const AliasInfo& lhs, const AliasInfo& rhs) {
// this does match the way things are represented in the schema
inline std::ostream& operator<<(std::ostream& out, const AliasInfo& aliasInfo) {
out << '(';
out << "(";
bool first = true;
for (const auto& set : aliasInfo.beforeSets()) {
if (first) {
first = false;
} else {
out << '|';
out << "|";
}
out << set.toUnqualString();
}
if (aliasInfo.isWrite()) {
out << '!';
out << "!";
}
if (aliasInfo.beforeSets() != aliasInfo.afterSets()) {
out << " -> ";
@ -120,12 +120,12 @@ inline std::ostream& operator<<(std::ostream& out, const AliasInfo& aliasInfo) {
if (first) {
first = false;
} else {
out << '|';
out << "|";
}
out << set.toUnqualString();
}
}
out << ')';
out << ")";
return out;
}
} // namespace c10

View File

@ -198,7 +198,7 @@ inline void swap(Blob& lhs, Blob& rhs) noexcept {
}
inline std::ostream& operator<<(std::ostream& out, const Blob& v) {
return out << "Blob[" << v.TypeName() << ']';
return out << "Blob[" << v.TypeName() << "]";
}
} // namespace caffe2

View File

@ -456,8 +456,8 @@ bool ClassType::isSubtypeOfExt(const Type& rhs, std::ostream* why_not) const {
*why_not << "Method on class '" << repr_str()
<< "' (1) is not compatible with interface '"
<< rhs.repr_str() << "' (2)\n"
<< " (1) " << self_method->getSchema() << '\n'
<< " (2) " << schema << '\n';
<< " (1) " << self_method->getSchema() << "\n"
<< " (2) " << schema << "\n";
}
return false;
}

View File

@ -100,7 +100,7 @@ struct TORCH_API ClassType : public NamedType {
std::string repr_str() const override {
std::stringstream ss;
ss << str()
<< " (of Python compilation unit at: " << compilation_unit().get() << ')';
<< " (of Python compilation unit at: " << compilation_unit().get() << ")";
return ss.str();
}

View File

@ -58,12 +58,12 @@ std::string DispatchKeyExtractor::dumpState() const {
std::ostringstream oss;
for (const auto i : c10::irange(c10::utils::bitset::NUM_BITS())) {
if (dispatch_arg_indices_reverse_.get(i)) {
oss << '1';
oss << "1";
} else {
oss << '0';
oss << "0";
}
}
oss << ' ' << nonFallthroughKeys_ << '\n';
oss << " " << nonFallthroughKeys_ << "\n";
return oss.str();
}

View File

@ -69,8 +69,8 @@ private:
void _print_dispatch_trace(const std::string& label, const std::string& op_name, const DispatchKeySet& dispatchKeySet) {
auto nesting_value = dispatch_trace_nesting_value();
for (int64_t i = 0; i < nesting_value; ++i) std::cerr << ' ';
std::cerr << label << " op=[" << op_name << "], key=[" << toString(dispatchKeySet.highestPriorityTypeId()) << ']' << std::endl;
for (int64_t i = 0; i < nesting_value; ++i) std::cerr << " ";
std::cerr << label << " op=[" << op_name << "], key=[" << toString(dispatchKeySet.highestPriorityTypeId()) << "]" << std::endl;
}
} // namespace detail

View File

@ -570,7 +570,7 @@ void OperatorEntry::checkInvariants() const {
std::string OperatorEntry::listAllDispatchKeys() const {
std::ostringstream str;
str << '[';
str << "[";
bool has_kernels = false;
for (auto k : allDispatchKeysInFullSet()) {
@ -584,7 +584,7 @@ std::string OperatorEntry::listAllDispatchKeys() const {
str << k;
has_kernels = true;
}
str << ']';
str << "]";
return str.str();
}
@ -683,12 +683,12 @@ void OperatorEntry::setReportErrorCallback_(std::unique_ptr<c10::SafePyObject> c
// This WON'T report backend fallbacks.
std::string OperatorEntry::dumpState() const {
std::ostringstream oss;
oss << "name: " << name_ << '\n';
oss << "name: " << name_ << "\n";
if (schema_) {
oss << "schema: " << schema_->schema << '\n';
oss << "debug: " << schema_->debug << '\n';
oss << "schema: " << schema_->schema << "\n";
oss << "debug: " << schema_->debug << "\n";
oss << "alias analysis kind: " << toString(schema_->schema.aliasAnalysis())
<< (schema_->schema.isDefaultAliasAnalysisKind() ? " (default)" : "") << '\n';
<< (schema_->schema.isDefaultAliasAnalysisKind() ? " (default)" : "") << "\n";
} else {
oss << "schema: (none)\n";
}

View File

@ -7,7 +7,7 @@
namespace c10 {
void FunctionSchema::dump() const {
std::cout << *this << '\n';
std::cout << *this << "\n";
}
const std::vector<Argument>& FunctionSchema::getCorrectList(SchemaArgType type) const {
@ -210,9 +210,9 @@ std::ostream& operator<<(std::ostream& out, const FunctionSchema& schema) {
out << schema.name();
if (!schema.overload_name().empty()) {
out << '.' << schema.overload_name();
out << "." << schema.overload_name();
}
out << '(';
out << "(";
bool seen_kwarg_only = false;
for (const auto i : c10::irange(schema.arguments().size())) {
@ -273,7 +273,7 @@ std::ostream& operator<<(std::ostream& out, const FunctionSchema& schema) {
}
if (need_paren) {
out << '(';
out << "(";
}
for (const auto i : c10::irange(returns.size())) {
if (i > 0) {
@ -288,7 +288,7 @@ std::ostream& operator<<(std::ostream& out, const FunctionSchema& schema) {
out << "...";
}
if (need_paren) {
out << ')';
out << ")";
}
return out;
}
@ -471,7 +471,7 @@ bool FunctionSchema::isForwardCompatibleWith(
if (!arguments().at(i).isForwardCompatibleWith(old.arguments().at(i))) {
if (why_not) {
why_not
<< '\'' << arguments().at(i).name() << '\''
<< "'" << arguments().at(i).name() << "'"
<< " is not forward compatible with the older version of the schema";
}
return false;
@ -511,7 +511,7 @@ bool FunctionSchema::isForwardCompatibleWith(
.isForwardCompatibleWith(old.arguments().at(i))) {
if (why_not) {
why_not << "Out argument '"
<< '\'' << arguments().at(i).name()
<< "'" << arguments().at(i).name()
<< " is not FC with the older version of the schema";
}
return false;

View File

@ -571,7 +571,7 @@ inline std::ostream& operator<<(std::ostream& out, const Argument& arg) {
if (arg.N()) {
N = std::to_string(*arg.N());
}
out << '[' << N << ']';
out << "[" << N << "]";
} else {
out << unopt_type->str();
}
@ -582,15 +582,15 @@ inline std::ostream& operator<<(std::ostream& out, const Argument& arg) {
}
if (is_opt) {
out << '?';
out << "?";
}
if (!arg.name().empty()) {
out << ' ' << arg.name();
out << " " << arg.name();
}
if (arg.default_value()) {
out << '=';
out << "=";
if ((type->kind() == c10::TypeKind::StringType ||
unopt_type->kind() == c10::TypeKind::StringType) &&
arg.default_value().value().isString()) {

View File

@ -66,7 +66,7 @@ bool operator==(const ivalue::Tuple& lhs, const ivalue::Tuple& rhs) {
}
std::ostream& operator<<(std::ostream& out, const ivalue::EnumHolder& v) {
out << v.qualifiedClassName() << '.' << v.name();
out << v.qualifiedClassName() << "." << v.name();
return out;
}
@ -526,7 +526,7 @@ std::ostream& printMaybeAnnotatedList(
!elementTypeCanBeInferredFromMembers(list_elem_type)) {
out << "annotate(" << the_list.type<c10::Type>()->annotation_str() << ", ";
printList(out, the_list.toListRef(), "[", "]", formatter);
out << ')';
out << ")";
return out;
} else {
return printList(out, the_list.toListRef(), "[", "]", formatter);
@ -538,7 +538,7 @@ std::ostream& printDict(
std::ostream& out,
const Dict& v,
const IValueFormatter& formatter) {
out << '{';
out << "{";
bool first = true;
for (const auto& pair : v) {
@ -552,7 +552,7 @@ std::ostream& printDict(
first = false;
}
out << '}';
out << "}";
return out;
}
}
@ -565,8 +565,8 @@ static std::ostream& printMaybeAnnotatedDict(
auto value_type = the_dict.type()->castRaw<DictType>()->getValueType();
if (the_dict.toGenericDict().empty() ||
!elementTypeCanBeInferredFromMembers(value_type)) {
out << "annotate(" << the_dict.type<c10::Type>()->annotation_str() << ',';
printDict(out, the_dict.toGenericDict(), formatter) << ')';
out << "annotate(" << the_dict.type<c10::Type>()->annotation_str() << ",";
printDict(out, the_dict.toGenericDict(), formatter) << ")";
} else {
return printDict(out, the_dict.toGenericDict(), formatter);
}
@ -577,7 +577,7 @@ static std::ostream& printComplex(std::ostream & out, const IValue & v) {
c10::complex<double> d = v.toComplexDouble();
IValue real(d.real()), imag(std::abs(d.imag()));
auto sign = d.imag() >= 0 ? '+' : '-';
return out << real << sign << imag << 'j';
return out << real << sign << imag << "j";
}
std::ostream& IValue::repr(
@ -605,9 +605,9 @@ std::ostream& IValue::repr(
if (static_cast<double>(i) == d) {
// -0.0 (signed zero) needs to be parsed as -0.
if (i == 0 && std::signbit(d)) {
return out << '-' << i << '.';
return out << "-" << i << ".";
}
return out << i << '.';
return out << i << ".";
}
}
auto orig_prec = out.precision();
@ -643,20 +643,20 @@ std::ostream& IValue::repr(
device_stream << v.toDevice();
out << "torch.device(";
c10::printQuotedString(out, device_stream.str());
return out << ')';
return out << ")";
}
case IValue::Tag::Generator: {
auto generator = v.toGenerator();
out << "torch.Generator(device=";
c10::printQuotedString(out, generator.device().str());
out << ", seed=" << generator.current_seed() << ')';
out << ", seed=" << generator.current_seed() << ")";
return out;
}
case IValue::Tag::GenericDict:
return printMaybeAnnotatedDict(out, v, formatter);
case IValue::Tag::Enum: {
auto enum_holder = v.toEnumHolder();
return out << enum_holder->qualifiedClassName() << '.' <<
return out << enum_holder->qualifiedClassName() << "." <<
enum_holder->name();
}
case IValue::Tag::Object: {
@ -801,7 +801,7 @@ std::ostream& operator<<(std::ostream & out, const IValue & v) {
if (c == FP_NORMAL || c == FP_ZERO) {
int64_t i = static_cast<int64_t>(d);
if (static_cast<double>(i) == d) {
return out << i << '.';
return out << i << ".";
}
}
auto orig_prec = out.precision();
@ -852,7 +852,7 @@ std::ostream& operator<<(std::ostream & out, const IValue & v) {
return printDict(out, v.toGenericDict(), formatter);
case IValue::Tag::PyObject: {
auto py_obj = v.toPyObject();
return out << "<PyObject at" << py_obj << '>';
return out << "<PyObject at" << py_obj << ">";
}
case IValue::Tag::Generator:
return out << "Generator";
@ -862,22 +862,22 @@ std::ostream& operator<<(std::ostream & out, const IValue & v) {
// TODO we should attempt to call __str__ if the object defines it.
auto obj = v.toObject();
// print this out the way python would do it
return out << '<' << obj->name() << " object at " << obj.get() << '>';
return out << "<" << obj->name() << " object at " << obj.get() << ">";
}
case IValue::Tag::Enum: {
auto enum_holder = v.toEnumHolder();
return out << "Enum<" << enum_holder->unqualifiedClassName() << '.' <<
enum_holder->name() << '>';
return out << "Enum<" << enum_holder->unqualifiedClassName() << "." <<
enum_holder->name() << ">";
}
}
return out << "<Invalid IValue tag=" << std::to_string(static_cast<uint32_t>(v.tag)) << '>';
return out << "<Invalid IValue tag=" << std::to_string(static_cast<uint32_t>(v.tag)) << ">";
}
#undef TORCH_FORALL_TAGS
void IValue::dump() const {
std::cout << *this << '\n';
std::cout << *this << "\n";
}
std::shared_ptr<ClassType> ivalue::Object::type() const {
@ -1050,7 +1050,7 @@ c10::intrusive_ptr<ivalue::Object> ivalue::Object::deepcopy(
std::stringstream err;
err << "Cannot serialize custom bound C++ class";
if (auto qualname = type()->name()) {
err << ' ' << qualname->qualifiedName();
err << " " << qualname->qualifiedName();
}
err << ". Please define serialization methods via def_pickle() for "
"this class.";

View File

@ -211,7 +211,7 @@ struct TORCH_API OptionalType : public UnionType {
std::string str() const override {
std::stringstream ss;
ss << getElementType()->str() << '?';
ss << getElementType()->str() << "?";
return ss.str();
}
@ -240,7 +240,7 @@ struct TORCH_API OptionalType : public UnionType {
std::string annotation_str_impl(const TypePrinter& printer = nullptr) const override {
std::stringstream ss;
ss << "Optional[" << getElementType()->annotation_str(printer) << ']';
ss << "Optional[" << getElementType()->annotation_str(printer) << "]";
return ss.str();
}
};
@ -906,7 +906,7 @@ struct TORCH_API ListType
std::string annotation_str_impl(const TypePrinter& printer = nullptr) const override {
std::stringstream ss;
ss << "List[" << getElementType()->annotation_str(printer) << ']';
ss << "List[" << getElementType()->annotation_str(printer) << "]";
return ss.str();
}
};
@ -946,7 +946,7 @@ struct TORCH_API DictType : public SharedType {
std::string str() const override {
std::stringstream ss;
ss << "Dict(" << getKeyType()->str() << ", " << getValueType()->str()
<< ')';
<< ")";
return ss.str();
}
@ -1018,7 +1018,7 @@ struct TORCH_API FutureType
std::string str() const override {
std::stringstream ss;
ss << "Future(" << getElementType()->str() << ')';
ss << "Future(" << getElementType()->str() << ")";
return ss.str();
}
TypePtr createWithContained(
@ -1041,7 +1041,7 @@ struct TORCH_API FutureType
std::string annotation_str_impl(const TypePrinter& printer = nullptr) const override {
std::stringstream ss;
ss << "Future[" << getElementType()->annotation_str(printer) << ']';
ss << "Future[" << getElementType()->annotation_str(printer) << "]";
return ss.str();
}
};
@ -1060,7 +1060,7 @@ struct TORCH_API AwaitType
std::string str() const override {
std::stringstream ss;
ss << "Await(" << getElementType()->str() << ')';
ss << "Await(" << getElementType()->str() << ")";
return ss.str();
}
TypePtr createWithContained(
@ -1083,7 +1083,7 @@ struct TORCH_API AwaitType
std::string annotation_str_impl(const TypePrinter& printer = nullptr) const override {
std::stringstream ss;
ss << "Await[" << getElementType()->annotation_str(printer) << ']';
ss << "Await[" << getElementType()->annotation_str(printer) << "]";
return ss.str();
}
};
@ -1102,7 +1102,7 @@ struct TORCH_API RRefType
std::string str() const override {
std::stringstream ss;
ss << "RRef(" << getElementType()->str() << ')';
ss << "RRef(" << getElementType()->str() << ")";
return ss.str();
}
TypePtr createWithContained(
@ -1115,7 +1115,7 @@ struct TORCH_API RRefType
std::string annotation_str_impl(const TypePrinter& printer = nullptr) const override {
std::stringstream ss;
ss << "RRef[" << getElementType()->annotation_str(printer) << ']';
ss << "RRef[" << getElementType()->annotation_str(printer) << "]";
return ss.str();
}
};

View File

@ -11,7 +11,7 @@ std::string toString(const OperatorName& opName) {
std::ostream& operator<<(std::ostream& os, const OperatorName& opName) {
os << opName.name;
if (!opName.overload_name.empty()) {
os << '.' << opName.overload_name;
os << "." << opName.overload_name;
}
return os;
}

View File

@ -65,7 +65,7 @@ VaryingShape<T> VaryingShape<T>::merge(const VaryingShape<T>& other) const {
template <typename T>
std::ostream& operator<<(std::ostream& out, const VaryingShape<T>& vs) {
out << '(';
out << "(";
if (!vs.size()) {
out << "*)";
return out;
@ -79,10 +79,10 @@ std::ostream& operator<<(std::ostream& out, const VaryingShape<T>& vs) {
if (v.has_value()) {
out << v.value();
} else {
out << '*';
out << "*";
}
}
out << ')';
out << ")";
return out;
}
@ -105,7 +105,7 @@ std::ostream& operator<<(
}
auto sizes_opt = ss.sizes();
os << '(';
os << "(";
for (size_t i = 0; i < rank_opt.value(); i++) {
if (i > 0) {
os << ", ";
@ -113,10 +113,10 @@ std::ostream& operator<<(
if(sizes_opt.has_value() && sizes_opt.value()[i].is_static()) {
os << sizes_opt.value()[i];
} else {
os << '*';
os << "*";
}
}
os << ')';
os << ")";
return os;
}
@ -131,17 +131,17 @@ std::ostream& operator<<(std::ostream& os, const ShapeSymbol& s) {
}
std::ostream& operator<<(std::ostream& os, const Stride& s) {
os << '{';
os << "{";
if (s.stride_index_.has_value()) {
os << *s.stride_index_;
} else {
os << '*';
os << "*";
}
os << ':';
os << ":";
if (s.stride_.has_value()) {
os << *s.stride_;
} else {
os << '*';
os << "*";
}
os << '}';
return os;

View File

@ -67,7 +67,7 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
bool has_valid_strides_info = ndim > 0 &&
value->strides().isComplete() && value->strides().size() == ndim;
out << '(';
out << "(";
size_t i = 0;
bool symbolic = type_verbosity() == TypeVerbosity::Symbolic;
for (i = 0; i < *ndim; ++i) {
@ -79,7 +79,7 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
} else if (symbolic) {
out << value->symbolic_sizes().at(i);
} else {
out << '*';
out << "*";
}
}
if (has_valid_strides_info &&
@ -91,7 +91,7 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
}
out << value->strides()[i].value();
}
out << ']';
out << "]";
}
if (type_verbosity() >= TypeVerbosity::Full) {
if (value->requiresGrad()) {
@ -107,12 +107,12 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
out << "device=" << *value->device();
}
}
out << ')';
out << ")";
} else {
if (type_verbosity() >= TypeVerbosity::Full) {
size_t i = 0;
if (value->requiresGrad()) {
out << '('
out << "("
<< "requires_grad=" << *value->requiresGrad();
i++;
}
@ -120,7 +120,7 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
out << ((i++ > 0) ? ", " : "(") << "device=" << *value->device();
}
if (i > 0) {
out << ')';
out << ")";
}
}
}
@ -133,18 +133,18 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
out << *prim << "[]";
} else if (t.kind() == TypeKind::OptionalType) {
auto prim = t.castRaw<OptionalType>()->getElementType();
out << *prim << '?';
out << *prim << "?";
} else if(t.kind() == TypeKind::FutureType) {
auto elem = t.castRaw<FutureType>()->getElementType();
out << "Future[" << *elem << ']';
out << "Future[" << *elem << "]";
} else if(t.kind() == TypeKind::RRefType) {
auto elem = t.castRaw<RRefType>()->getElementType();
out << "RRef[" << *elem << ']';
out << "RRef[" << *elem << "]";
} else if(auto tup = t.cast<TupleType>()) {
if (tup->schema()) {
out << "NamedTuple";
}
out << '(';
out << "(";
for(size_t i = 0; i < tup->elements().size(); ++i) {
if(i > 0)
out << ", ";
@ -160,7 +160,7 @@ std::ostream& operator<<(std::ostream & out, const Type & t) {
out << *(tup->elements()[i]);
}
}
out << ')';
out << ")";
} else if (t.kind() == TypeKind::FunctionType) {
out << "Function";
} else {
@ -475,7 +475,7 @@ std::optional<TypePtr> unifyTypeList(
why_not << "Could not unify type list since element " << i << " of type "
<< elements.at(i)->repr_str()
<< " did not match the types before it ("
<< ret_type->repr_str() << ')';
<< ret_type->repr_str() << ")";
return std::nullopt;
}
ret_type = *maybe_unified;
@ -907,13 +907,13 @@ std::string TupleType::str() const {
// NOLINTNEXTLINE(bugprone-unchecked-optional-access)
ss << name()->qualifiedName();
} else {
ss << '(';
ss << "(";
for(size_t i = 0; i < elements().size(); ++i) {
if(i > 0)
ss << ", ";
ss << elements()[i]->str();
}
ss << ')';
ss << ")";
}
return ss.str();
}
@ -1003,8 +1003,8 @@ bool InterfaceType::isSubTypeImpl(
*why_not << "Method on interface '" << lhs.repr_str()
<< "' (1) is not compatible with interface '"
<< rhs.repr_str() << "' (2)\n"
<< " (1) " << *self_schema << '\n'
<< " (2) " << schema << '\n';
<< " (1) " << *self_schema << "\n"
<< " (2) " << schema << "\n";
return false;
}
return false;
@ -1078,7 +1078,7 @@ SymbolicShape SymbolicShape::merge(const SymbolicShape& other) const {
}
void SymbolicShape::dump() const {
std::cout << *this << '\n';
std::cout << *this << "\n";
}
bool EnumType::isSubtypeOfExt(const Type& rhs, std::ostream* why_not) const {

View File

@ -205,9 +205,9 @@ UnionType::UnionType(std::vector<TypePtr> reference, TypeKind kind) : SharedType
for (const auto i : c10::irange(reference.size())) {
msg << reference[i]->repr_str();
if (i > 0) {
msg << ',';
msg << ",";
}
msg << ' ';
msg << " ";
}
msg << "} has the single type " << types_[0]->repr_str()
<< ". Use the common supertype instead of creating a Union"

View File

@ -80,7 +80,7 @@ std::ostream& operator<<(std::ostream& stream, const Vectorized<T>& vec) {
}
stream << buf[i];
}
stream << ']';
stream << "]";
return stream;
}

View File

@ -55,7 +55,7 @@ std::ostream& operator<<(std::ostream& stream, const Vectorized<T>& vec) {
}
stream << buf[i];
}
stream << ']';
stream << "]";
return stream;
}

View File

@ -411,16 +411,16 @@ std::string CUDAHooks::showConfig() const {
// HIP_VERSION value format was changed after ROCm v4.2 to include the patch number
if(v < 500) {
// If major=xx, minor=yy then format -> xxyy
oss << (v / 100) << '.' << (v % 10);
oss << (v / 100) << "." << (v % 10);
}
else {
// If major=xx, minor=yy & patch=zzzzz then format -> xxyyzzzzz
oss << (v / 10000000) << '.' << (v / 100000 % 100) << '.' << (v % 100000);
oss << (v / 10000000) << "." << (v / 100000 % 100) << "." << (v % 100000);
}
#else
oss << (v / 1000) << '.' << (v / 10 % 100);
oss << (v / 1000) << "." << (v / 10 % 100);
if (v % 10 != 0) {
oss << '.' << (v % 10);
oss << "." << (v % 10);
}
#endif
};
@ -431,16 +431,16 @@ std::string CUDAHooks::showConfig() const {
oss << " - HIP Runtime ";
#endif
printCudaStyleVersion(runtimeVersion);
oss << '\n';
oss << "\n";
// TODO: Make HIPIFY understand CUDART_VERSION macro
#if !defined(USE_ROCM)
if (runtimeVersion != CUDART_VERSION) {
oss << " - Built with CUDA Runtime ";
printCudaStyleVersion(CUDART_VERSION);
oss << '\n';
oss << "\n";
}
oss << " - NVCC architecture flags: " << NVCC_FLAGS_EXTRA << '\n';
oss << " - NVCC architecture flags: " << NVCC_FLAGS_EXTRA << "\n";
#endif
#if !defined(USE_ROCM)
@ -448,9 +448,9 @@ std::string CUDAHooks::showConfig() const {
auto printCudnnStyleVersion = [&](size_t v) {
oss << (v / 1000) << '.' << (v / 100 % 10);
oss << (v / 1000) << "." << (v / 100 % 10);
if (v % 100 != 0) {
oss << '.' << (v % 100);
oss << "." << (v % 100);
}
};
@ -461,22 +461,22 @@ std::string CUDAHooks::showConfig() const {
if (cudnnCudartVersion != CUDART_VERSION) {
oss << " (built against CUDA ";
printCudaStyleVersion(cudnnCudartVersion);
oss << ')';
oss << ")";
}
oss << '\n';
oss << "\n";
if (cudnnVersion != CUDNN_VERSION) {
oss << " - Built with CuDNN ";
printCudnnStyleVersion(CUDNN_VERSION);
oss << '\n';
oss << "\n";
}
#endif
#else
// TODO: Check if miopen has the functions above and unify
oss << " - MIOpen " << MIOPEN_VERSION_MAJOR << '.' << MIOPEN_VERSION_MINOR << '.' << MIOPEN_VERSION_PATCH << '\n';
oss << " - MIOpen " << MIOPEN_VERSION_MAJOR << "." << MIOPEN_VERSION_MINOR << "." << MIOPEN_VERSION_PATCH << "\n";
#endif
#if AT_MAGMA_ENABLED()
oss << " - Magma " << MAGMA_VERSION_MAJOR << '.' << MAGMA_VERSION_MINOR << '.' << MAGMA_VERSION_MICRO << '\n';
oss << " - Magma " << MAGMA_VERSION_MAJOR << "." << MAGMA_VERSION_MINOR << "." << MAGMA_VERSION_MICRO << "\n";
#endif
return oss.str();

View File

@ -42,7 +42,7 @@ static inline void launch_jitted_vectorized_kernel_dynamic(
// The cache key includes all the parameters to generate_code + vec_size + dev_idx
std::stringstream ss;
ss << nInputs << '_' << nOutputs << f;
ss << nInputs << "_" << nOutputs << f;
ss << f_inputs_type_str << compute_type_str << result_type_str;
ss << static_cast<int>(at::cuda::jit::BinaryFuncVariant::NoScalar);
ss << extra_args_types;
@ -144,7 +144,7 @@ static inline void launch_jitted_unrolled_kernel_dynamic(
// The cache key includes all the parameters to generate_code + dev_idx
std::stringstream ss;
ss << nInputs << '_' << nOutputs << f;
ss << nInputs << "_" << nOutputs << f;
ss << f_inputs_type_str << compute_type_str << result_type_str;
ss << contiguous << dynamic_casting;
ss << static_cast<int>(at::cuda::jit::BinaryFuncVariant::NoScalar);

View File

@ -52,10 +52,10 @@ TuningContext* getTuningContext() {
std::ostream& operator<<(std::ostream& stream, const ResultEntry& entry) {
static const bool blaslog = c10::utils::get_env("PYTORCH_TUNABLEOP_BLAS_LOG") == "1";
if (!blaslog) {
return stream << entry.key_ << ',' << entry.time_;
return stream << entry.key_ << "," << entry.time_;
}
else {
return stream << entry.key_ << ',' << entry.time_ << ",BLAS_PARAMS: " << entry.blas_sig_;
return stream << entry.key_ << "," << entry.time_ << ",BLAS_PARAMS: " << entry.blas_sig_;
}
}
@ -156,10 +156,10 @@ void TuningResultsManager::RecordUntuned( std::ofstream& untuned_file, const std
if (isNew) {
static const bool blaslog = c10::utils::get_env("PYTORCH_TUNABLEOP_BLAS_LOG") == "1";
if (!blaslog) {
untuned_file << op_signature << ',' << params_signature << std::endl;
untuned_file << op_signature << "," << params_signature << std::endl;
}
else {
untuned_file << op_signature << ',' << params_signature << ",BLAS_PARAMS: " << blas_signature << std::endl;
untuned_file << op_signature << "," << params_signature << ",BLAS_PARAMS: " << blas_signature << std::endl;
}
TUNABLE_LOG3("Untuned,", op_signature, ",", params_signature);
}
@ -201,7 +201,7 @@ void TuningResultsManager::InitRealtimeAppend(const std::string& filename, const
if(!file_exists || file_empty) {
for(const auto& [key, val] : validators) {
(*realtime_out_) << "Validator," << key << ',' << val << std::endl;
(*realtime_out_) << "Validator," << key << "," << val << std::endl;
realtime_out_->flush();
}
validators_written_ = true;
@ -219,7 +219,7 @@ void TuningResultsManager::AppendResultLine(const std::string& op_sig, const std
return;
}
(*realtime_out_) << op_sig << ',' << param_sig << ',' << result << std::endl;
(*realtime_out_) << op_sig << "," << param_sig << "," << result << std::endl;
realtime_out_->flush(); //ensure immediate write to disk
TUNABLE_LOG3("Realtime append: ", op_sig, "(", param_sig, ") -> ", result);

View File

@ -93,31 +93,31 @@ std::string cudnnTypeToString(cudnnDataType_t dtype) {
return "CUDNN_DATA_UINT8x4";
default:
std::ostringstream oss;
oss << "(unknown data-type " << static_cast<int>(dtype) << ')';
oss << "(unknown data-type " << static_cast<int>(dtype) << ")";
return oss.str();
}
}
std::ostream& operator<<(std::ostream & out, const TensorDescriptor& d) {
out << "TensorDescriptor " << static_cast<void*>(d.desc()) << '\n';
out << "TensorDescriptor " << static_cast<void*>(d.desc()) << "\n";
int nbDims = 0;
int dimA[CUDNN_DIM_MAX];
int strideA[CUDNN_DIM_MAX];
cudnnDataType_t dtype{};
cudnnGetTensorNdDescriptor(d.desc(), CUDNN_DIM_MAX, &dtype, &nbDims, dimA, strideA);
out << " type = " << cudnnTypeToString(dtype) << '\n';
out << " nbDims = " << nbDims << '\n';
out << " type = " << cudnnTypeToString(dtype) << "\n";
out << " nbDims = " << nbDims << "\n";
// Read out only nbDims of the arrays!
out << " dimA = ";
for (auto i : ArrayRef<int>{dimA, static_cast<size_t>(nbDims)}) {
out << i << ", ";
}
out << '\n';
out << "\n";
out << " strideA = ";
for (auto i : ArrayRef<int>{strideA, static_cast<size_t>(nbDims)}) {
out << i << ", ";
}
out << '\n';
out << "\n";
return out;
}
@ -168,27 +168,27 @@ std::string cudnnMemoryFormatToString(cudnnTensorFormat_t tformat) {
return "CUDNN_TENSOR_NHWC";
default:
std::ostringstream oss;
oss << "(unknown cudnn tensor format " << static_cast<int>(tformat) << ')';
oss << "(unknown cudnn tensor format " << static_cast<int>(tformat) << ")";
return oss.str();
}
}
std::ostream& operator<<(std::ostream & out, const FilterDescriptor& d) {
out << "FilterDescriptor " << static_cast<void*>(d.desc()) << '\n';
out << "FilterDescriptor " << static_cast<void*>(d.desc()) << "\n";
int nbDims = 0;
int dimA[CUDNN_DIM_MAX];
cudnnDataType_t dtype{};
cudnnTensorFormat_t tformat{};
cudnnGetFilterNdDescriptor(d.desc(), CUDNN_DIM_MAX, &dtype, &tformat, &nbDims, dimA);
out << " type = " << cudnnTypeToString(dtype) << '\n';
out << " tensor_format = " << cudnnMemoryFormatToString(tformat) << '\n';
out << " nbDims = " << nbDims << '\n';
out << " type = " << cudnnTypeToString(dtype) << "\n";
out << " tensor_format = " << cudnnMemoryFormatToString(tformat) << "\n";
out << " nbDims = " << nbDims << "\n";
// Read out only nbDims of the arrays!
out << " dimA = ";
for (auto i : ArrayRef<int>{dimA, static_cast<size_t>(nbDims)}) {
out << i << ", ";
}
out << '\n';
out << "\n";
return out;
}

View File

@ -346,15 +346,15 @@ void foreachTensorInplaceWithFlag(std::vector<IValue>& args, int64_t begin, int6
}
std::ostream& operator<< (std::ostream& os, const DynamicLayer& layer) {
os << layer.layerId() << ':' << layer.key();
os << layer.layerId() << ":" << layer.key();
return os;
}
std::ostream& operator<< (std::ostream& os, const std::vector<DynamicLayer>& dls) {
os << "DynamicLayerStack[ ";
for (const auto& layer : dls) {
os << layer << ' ';
os << layer << " ";
}
os << ']';
os << "]";
return os;
}

View File

@ -22,7 +22,7 @@ void dumpTensor(std::ostream& ss, const Tensor& tensor) {
if (batched) {
ss << "Batched[lvl=" << batched->level() << " dim=" << batched->bdim() << ", ";
dumpTensor(ss, batched->value());
ss << ']';
ss << "]";
return;
}
ss << "Tensor" << tensor.sizes();
@ -36,7 +36,7 @@ void dumpTensor(std::ostream& ss, const Tensor& tensor) {
ss << "dead, ";
}
dumpTensor(ss, wrapped->value());
ss << ']';
ss << "]";
}
void TensorWrapper::refreshMetadata() {

View File

@ -73,32 +73,32 @@ std::string miopenTypeToString(miopenDataType_t dtype) {
return "miopenBFloat16";
default:
std::ostringstream oss;
oss << "(unknown data-type " << static_cast<int>(dtype) << ')';
oss << "(unknown data-type " << static_cast<int>(dtype) << ")";
return oss.str();
}
}
std::ostream& operator<<(std::ostream & out, const TensorDescriptor& d) {
out << "TensorDescriptor " << static_cast<void*>(d.desc()) << '\n';
out << "TensorDescriptor " << static_cast<void*>(d.desc()) << "\n";
int nbDims = 0;
int dimA[MIOPEN_DIM_MAX];
int strideA[MIOPEN_DIM_MAX];
miopenDataType_t dtype;
miopenGetTensorDescriptorSize(d.desc(), &nbDims);
miopenGetTensorDescriptor(d.desc(), &dtype, dimA, strideA);
out << " type = " << miopenTypeToString(dtype) << '\n';
out << " nbDims = " << nbDims << '\n';
out << " type = " << miopenTypeToString(dtype) << "\n";
out << " nbDims = " << nbDims << "\n";
// Read out only nbDims of the arrays!
out << " dimA = ";
for (auto i : ArrayRef<int>{dimA, static_cast<size_t>(nbDims)}) {
out << i << ", ";
}
out << '\n';
out << "\n";
out << " strideA = ";
for (auto i : ArrayRef<int>{strideA, static_cast<size_t>(nbDims)}) {
out << i << ", ";
}
out << '\n';
out << "\n";
return out;
}

View File

@ -91,7 +91,7 @@ struct OperationInfo : BaseInfo {
std::stringstream kernelStr;
kernelStr << kernelName;
for (const Tensor& tensor : tensors) {
kernelStr << ':' << BaseInfo::buildTensorString(tensor, includeBufferId);
kernelStr << ":" << BaseInfo::buildTensorString(tensor, includeBufferId);
}
return kernelStr.str();
}

View File

@ -39,9 +39,9 @@ std::string BaseInfo::buildTensorString(const Tensor& tensor, bool includeBuffer
// see comments for INCLUDE_BUFFER_ID
if (includeBufferId && deviceType == at::kMPS) {
id<MTLBuffer> buffer = __builtin_bit_cast(id<MTLBuffer>, tensor.storage().data());
tensorStr << "(buf#" << (getIMPSAllocator()->getBufferId(buffer)) << ':' << buffer.retainCount << ')';
tensorStr << "(buf#" << (getIMPSAllocator()->getBufferId(buffer)) << ":" << buffer.retainCount << ")";
}
tensorStr << ':' << tensor.scalar_type() << tensor.sizes();
tensorStr << ":" << tensor.scalar_type() << tensor.sizes();
return tensorStr.str();
} else {
return "undefined";

View File

@ -167,7 +167,7 @@ static void check_args(CheckedFrom c, IntArrayRef args, size_t expected_size, co
std::stringstream ss;
ss << arg_name << " should be greater than zero but got (";
std::copy(args.begin(), args.end() - 1, std::ostream_iterator<int>(ss,", "));
ss << args.back() << ")" << " (while checking arguments for " << c << ')';
ss << args.back() << ")" << " (while checking arguments for " << c << ")";
TORCH_CHECK(false, ss.str());
}
}

View File

@ -639,7 +639,7 @@ static std::ostream& operator<<(std::ostream & out, const ConvParams<T>& params)
<< " deterministic = " << params.deterministic
<< " cudnn_enabled = " << params.cudnn_enabled
<< " allow_tf32 = " << params.allow_tf32
<< '}';
<< "}";
return out;
}

View File

@ -3541,9 +3541,9 @@ Tensor _dyn_quant_matmul_4bit_cpu(
const int64_t out_features) {
auto M = inp.size(0);
TORCH_CHECK(
inp.dtype() == kFloat || (inp.dtype() == kBFloat16 && block_size == in_features),
inp.dtype() == kFloat,
__func__,
" : expect input to be float32 or bfloat16 tensor.");
" : expect input to be 32-bit float tensor.");
TORCH_CHECK(
block_size == in_features ||
(!(block_size % 32) && !(in_features % block_size)),

View File

@ -847,7 +847,7 @@ Tensor stft(const Tensor& self, const int64_t n_fft, const std::optional<int64_t
<< ", hop_length=" << hop_length << ", win_length=" << win_length \
<< ", window="; \
if (window.defined()) { \
SS << window.toString() << '{' << window.sizes() << '}'; \
SS << window.toString() << "{" << window.sizes() << "}"; \
} else { \
SS << "None"; \
} \
@ -1046,7 +1046,7 @@ Tensor istft(const Tensor& self, const int64_t n_fft, const std::optional<int64_
<< ", hop_length=" << hop_length << ", win_length=" << win_length \
<< ", window="; \
if (window.defined()) { \
SS << window.toString() << '{' << window.sizes() << '}'; \
SS << window.toString() << "{" << window.sizes() << "}"; \
} else { \
SS << "None"; \
} \

View File

@ -523,7 +523,7 @@ Tensor _functional_assert_async_msg_cpu(
}
void _print(std::string_view s) {
std::cout << s << '\n';
std::cout << s << "\n";
}
// Sorting-based algorithm for isin(); used when the number of test elements is

View File

@ -8,7 +8,6 @@
#include <ATen/cpu/vec/vec.h>
#include <ATen/native/cpu/int_mm_kernel.h>
#include <ATen/native/cpu/utils.h>
#include <cmath>
#include <c10/util/Unroll.h>
#include <c10/util/irange.h>
@ -794,139 +793,6 @@ bool can_use_kleidiai(
}
#endif
static void ref_dyn_quant_matmul_4bit_channelwise_kernel_bf16(
size_t m,
size_t n,
size_t k,
const uint16_t* lhs_bf16,
const uint8_t* rhs_qs4cx,
const float* rhs_scales,
uint16_t* dst_bf16,
float scalar_min,
float scalar_max,
const float* bias) {
// Roundup lambda for internal stride calculations
auto roundup = [](size_t a, size_t b) { return ((a + b - 1) / b) * b; };
// Cast bfloat16 to float32 inline
auto cast_bf16_to_f32 = [](uint16_t bf16_val) {
uint32_t tmp = static_cast<uint32_t>(bf16_val) << 16;
float f;
std::memcpy(&f, &tmp, sizeof(f));
return f;
};
// Cast float32 to bfloat16 inline
auto cast_f32_to_bf16 = [](float f) {
uint32_t bits;
std::memcpy(&bits, &f, sizeof(bits));
return static_cast<uint16_t>(bits >> 16);
};
// Quantization pack lambda (channelwise QA8DX)
auto quant_pack_8bit_channelwise =
[&](size_t M, size_t K, const uint16_t* src_bf16, int8_t* dst_qa8dx) {
constexpr int8_t kI8Min = std::numeric_limits<std::int8_t>::lowest();
constexpr int8_t kI8Max = std::numeric_limits<std::int8_t>::max();
const size_t dst_stride =
K * sizeof(int8_t) + sizeof(float) + sizeof(int32_t);
for (size_t i = 0; i < M; ++i) {
const uint16_t* row_ptr = src_bf16 + i * K;
// find min/max
float mn = FLT_MAX, mx = -FLT_MAX;
for (size_t j = 0; j < K; ++j) {
float v = cast_bf16_to_f32(row_ptr[j]);
mn = std::min(mn, v);
mx = std::max(mx, v);
}
float rmin = std::min(0.0f, mn);
float rmax = std::max(0.0f, mx);
constexpr float qmin = static_cast<float>(kI8Min);
constexpr float qmax = static_cast<float>(kI8Max);
float scale = (rmin == rmax) ? 1.f : (qmax - qmin) / (rmax - rmin);
float recip = scale ? 1.0f / scale : 0.0f;
int32_t zp;
float des_min = rmin * scale;
float des_max = rmax * scale;
float err_min = qmin + des_min;
float err_max = qmax + des_max;
float zp_f =
(err_min + err_max) > 0 ? qmin - des_min : qmax - des_max;
zp_f = std::clamp(zp_f, qmin, qmax);
zp = std::lrintf(zp_f);
int8_t* out_ptr = dst_qa8dx + i * dst_stride;
// store header
*reinterpret_cast<float*>(out_ptr) = recip;
*reinterpret_cast<int32_t*>(out_ptr + sizeof(float)) = -zp;
out_ptr += sizeof(float) + sizeof(int32_t);
// quantize
for (size_t j = 0; j < K; ++j) {
float v = cast_bf16_to_f32(row_ptr[j]);
int32_t q = static_cast<int32_t>(std::round(v * scale)) + zp;
q = std::clamp(
q, static_cast<int32_t>(kI8Min), static_cast<int32_t>(kI8Max));
*out_ptr++ = static_cast<int8_t>(q);
}
}
};
// MatMul lambda (MXN x MXK -> MNXK BF16)
auto matmul_kernel = [&](size_t M,
size_t N,
size_t K,
const int8_t* lhs,
const uint8_t* rhs,
const float* scales,
uint16_t* dst,
float lo,
float hi) {
const size_t lhs_stride =
K * sizeof(int8_t) + sizeof(float) + sizeof(int32_t);
const size_t rhs_stride = roundup(K, 2) / 2;
for (size_t i = 0; i < M; ++i) {
const int8_t* lhs_row = lhs + i * lhs_stride;
for (size_t j = 0; j < N; ++j) {
int32_t acc = 0;
const int8_t* lptr = lhs_row;
const uint8_t* rptr = rhs + j * rhs_stride;
float lhs_scale = *reinterpret_cast<const float*>(lptr);
int32_t lhs_off =
*reinterpret_cast<const int32_t*>(lptr + sizeof(float));
lptr += sizeof(float) + sizeof(int32_t);
for (size_t t = 0; t < K; ++t) {
int32_t lv = static_cast<int32_t>(lptr[t]);
uint8_t bv = rptr[t / 2];
int32_t rv = ((t & 1) == 0) ? (static_cast<int32_t>(bv & 0xF) - 8)
: (static_cast<int32_t>(bv >> 4) - 8);
acc += lv * rv + lhs_off * rv;
}
float res = static_cast<float>(acc) * scales[j] * lhs_scale;
if (bias) {
res += bias[j];
}
res = std::clamp(res, lo, hi);
*dst++ = cast_f32_to_bf16(res);
}
}
};
// allocate and run
std::unique_ptr<int8_t[]> packed(
new int8_t[m * (k * sizeof(int8_t) + sizeof(float) + sizeof(int32_t))]);
quant_pack_8bit_channelwise(m, k, lhs_bf16, packed.get());
matmul_kernel(
m,
n,
k,
packed.get(),
rhs_qs4cx,
rhs_scales,
dst_bf16,
scalar_min,
scalar_max);
}
/**
* The Int4 quantized weights must be represented as a uint8 tensor
* For matrix multiplication with a weight shape of (N x K)
@ -953,21 +819,21 @@ void dyn_quant_pack_4bit_weight_kernel(
#if AT_KLEIDIAI_ENABLED()
if (can_use_kleidiai(scales_zeros, K, block_size)) {
const int64_t weight_packed_size =
kleidiai::kai_pack_rhs_int4_size(N, K, block_size, weights.scalar_type());
kleidiai::kai_pack_rhs_int4_size(N, K, block_size);
packed_weights.resize_({weight_packed_size});
kleidiai::kai_pack_int4_rhs(
packed_weights, weights, scales_zeros, bias, N, K, block_size);
} else
#endif
{
TORCH_CHECK(
bias.has_value() == 0,
__func__,
" : Bias is unsupported in reference implementation");
packed_weights = packed_weights.to(kFloat);
auto weight_reshaped = weights.reshape({-1}).to(kFloat);
auto scales_zeros_reshaped = scales_zeros.reshape({-1}).to(kFloat);
std::vector<at::Tensor> tensors_to_cat = {weight_reshaped, scales_zeros_reshaped};
if (bias.has_value()) {
tensors_to_cat.push_back(bias.value().view({-1}).to(kFloat));
}
auto res = at::cat(tensors_to_cat, 0);
auto weight_reshaped = weights.view({-1}).to(kFloat);
auto scales_zeros_reshaped = scales_zeros.view({-1}).to(kFloat);
auto res = at::cat({weight_reshaped, scales_zeros_reshaped}, 0);
packed_weights.resize_(res.sizes()).copy_(res);
}
}
@ -981,8 +847,7 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
const float* rhs_scales_f32,
float* dst_f32,
float scalar_min,
float scalar_max,
const float* bias) {
float scalar_max) {
const size_t input_size_8bit = m * (k + sizeof(int32_t) + sizeof(float));
auto lhs_qa8dx_buffer = std::make_unique<uint8_t[]>(input_size_8bit);
@ -992,9 +857,6 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
// required format for matmul
auto input_quant_pack_8bit_channelwise =
[&](size_t m, size_t k, const float* lhs_f32, int8_t* lhs_qa8dx) {
constexpr int8_t kI8Min = std::numeric_limits<std::int8_t>::lowest();
constexpr int8_t kI8Max = std::numeric_limits<std::int8_t>::max();
const size_t dst_stride =
(k * sizeof(int8_t) + sizeof(float) + sizeof(int32_t));
@ -1015,8 +877,8 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
}
// Maximum/minimum int8 values
constexpr float qmin = static_cast<float>(kI8Min);
constexpr float qmax = static_cast<float>(kI8Max);
const float qmin = (float)INT8_MIN;
const float qmax = (float)INT8_MAX;
const float rmin0 = std::min(0.0f, min0);
const float rmax0 = std::max(0.0f, max0);
@ -1042,7 +904,7 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
zero_point0 = std::min(zero_point0, qmax);
// Round to nearest integer
const int32_t nudged_zero_point0 = std::lrintf(zero_point0);
const int32_t nudged_zero_point0 = lrintf(zero_point0);
int8_t* dst_ptr = lhs_qa8dx + m_idx * dst_stride;
@ -1060,8 +922,8 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
int32_t v0_s32 = (int32_t)(std::round(src0_0 * scale0));
v0_s32 = v0_s32 + nudged_zero_point0;
v0_s32 = std::max(v0_s32, static_cast<int32_t>(kI8Min));
v0_s32 = std::min(v0_s32, static_cast<int32_t>(kI8Max));
v0_s32 = std::max(v0_s32, static_cast<int32_t>(INT8_MIN));
v0_s32 = std::min(v0_s32, static_cast<int32_t>(INT8_MAX));
dst_ptr[0] = (int8_t)v0_s32;
dst_ptr += sizeof(int8_t);
}
@ -1125,10 +987,6 @@ void ref_dyn_quant_matmul_4bit_channelwise_kernel(
main_acc = main_acc * lhs_scale;
if (bias) {
main_acc += bias[n_idx];
}
// Clamp (min-max) operation
main_acc = std::max(main_acc, scalar_min);
main_acc = std::min(main_acc, scalar_max);
@ -1149,16 +1007,12 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
const float* rhs_scales_fp32,
float* dst_f32,
float scalar_min,
float scalar_max,
const float* bias) {
float scalar_max) {
// Lambda for LHS quantization
auto lhs_quant_pack = [&](size_t m,
size_t k,
const float* lhs_f32,
int8_t* lhs_qa8dx) {
constexpr int8_t kI8Min = std::numeric_limits<std::int8_t>::lowest();
constexpr int8_t kI8Max = std::numeric_limits<std::int8_t>::max();
const size_t dst_stride =
(k * sizeof(int8_t) + sizeof(float) + sizeof(int32_t));
@ -1174,8 +1028,8 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
min0 = std::min(src0_0, min0);
}
constexpr float qmin = static_cast<float>(kI8Min);
constexpr float qmax = static_cast<float>(kI8Max);
const float qmin = (float)INT8_MIN;
const float qmax = (float)INT8_MAX;
const float rmin0 = std::min(0.0f, min0);
const float rmax0 = std::max(0.0f, max0);
@ -1192,7 +1046,7 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
zero_point0 = std::max(zero_point0, qmin);
zero_point0 = std::min(zero_point0, qmax);
const int32_t nudged_zero_point0 = std::lrintf(zero_point0);
const int32_t nudged_zero_point0 = lrintf(zero_point0);
int8_t* dst_ptr = lhs_qa8dx + row_idx * dst_stride;
@ -1205,8 +1059,9 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
const float src0_0 = src_ptr[k_idx];
int32_t v0_s32 = (int32_t)(std::round(src0_0 * scale0));
v0_s32 = std::max(
std::min(v0_s32 + nudged_zero_point0, static_cast<int32_t>(kI8Max)),
static_cast<int32_t>(kI8Min));
std::min(
v0_s32 + nudged_zero_point0, static_cast<int32_t>(INT8_MAX)),
static_cast<int32_t>(INT8_MIN));
dst_ptr[0] = (int8_t)v0_s32;
dst_ptr += sizeof(int8_t);
}
@ -1263,11 +1118,6 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
}
main_acc = main_acc * lhs_scale;
if (bias) {
main_acc += bias[col_idx];
}
main_acc = std::max(main_acc, scalar_min);
main_acc = std::min(main_acc, scalar_max);
@ -1278,27 +1128,28 @@ void ref_dyn_quant_matmul_4bit_groupwise_kernel(
}
/**
* Dynamic INT4 weight-only MatMul with per-row input quantization.
*
* Execution Flow:
*
* (INT4 Weights + FP Scales [+ optional Bias])
*
* Input (FP32 or BF16) Packed Weight Buffer
* | |
* Row-wise Quantization (INT8) |
* | |
* INT8 Input Activation INT4 Quantized Weights + Scales
* \ /
* \ /
* Quantized Matrix Multiply
* |
* Output Tensor (BF16 or FP32)
*
* Notes:
* - Groupwise kernels expect BF16 scales
* - Channelwise kernels expect FP32 scales
* - Bias is currently unsupported in fallback path
* Dynamic Input Quant 4 bit weights matmul execution flow
(INT4 Weights + FP scales + FP32 Bias)
FP32 Input Packed Buffer
| |
Quantize Cast
to INT8 to INT8
| |
v v
INT8 Input INT8 Weights
\ /
\ /
\ /
INT8 Matrix Multiplication
|
v
FP32 Dequantized and Accumulate in FP32
|
v
FP32 Final Output
* The Groupwise kernel requires BFloat16 Scales and Channelwise kernel requires
* Float32 Scales. If not provided, we will use fallback implementation.
*/
void dyn_quant_matmul_4bit_kernel(
const Tensor& output,
@ -1310,75 +1161,65 @@ void dyn_quant_matmul_4bit_kernel(
const int64_t block_size) {
#if AT_KLEIDIAI_ENABLED()
const int64_t weight_packed_size =
kleidiai::kai_pack_rhs_int4_size(N, K, block_size, inp.scalar_type());
kleidiai::kai_pack_rhs_int4_size(N, K, block_size);
if (weight_packed_size == packed_weights.numel()) {
// KleidiAI interface internally handles the Channelwise and groupwise
// distinction
kleidiai::kai_quant_pack_lhs_int4_mm(output, inp, packed_weights, M, N, K, block_size);
kleidiai::kai_quant_pack_lhs_int4_mm(
output, inp, packed_weights, M, N, K, block_size);
} else
#endif
{
{
void* input = inp.data_ptr();
void* dst = output.data_ptr();
// Extract weights, sclaes and biases form from packed tensor
const int weights_elements = N * K / 2;
const int scale_elements = N * (K / block_size);
TORCH_CHECK(packed_weights.numel() >= (weights_elements + scale_elements), "Invalid packed weight tensor size");
auto extracted_weights = packed_weights.narrow(0, 0, weights_elements).to(kByte);
auto extracted_scales_and_bias = packed_weights.narrow(0, weights_elements, packed_weights.size(0) - weights_elements).to(kFloat);
auto float32_scales = extracted_scales_and_bias.narrow(0, 0, scale_elements);
int bias_elements = packed_weights.numel() - (weights_elements + scale_elements);
float* weight_scales = float32_scales.data_ptr<float>();
void* bias_data = nullptr;
if (bias_elements) {
auto float32_bias = extracted_scales_and_bias.narrow(0, scale_elements, bias_elements);
TORCH_CHECK(float32_bias.size(0) == N, "Expected bias length to match output dimension");
bias_data = float32_bias.data_ptr();
}
// 2 elements of 4 bit weights are packed into 1 uint8 packet
uint8_t* weights_4bit = reinterpret_cast<uint8_t*>(extracted_weights.data_ptr());
// Dispatch to reference kernels
if (inp.scalar_type() == at::kBFloat16) {
// BF16 input, BF16 output
constexpr float BF16_MAX = 3.38953139e+38f;
constexpr float BF16_MIN = -BF16_MAX;
if (block_size == K) {
ref_dyn_quant_matmul_4bit_channelwise_kernel_bf16(
M, N, K,
(uint16_t*)input, weights_4bit, weight_scales,
(uint16_t*)dst, BF16_MIN, BF16_MAX, (float*)bias_data);
} else {
TORCH_CHECK(false, "Unsupported block size for BF16 fallback");
}
} else if (inp.scalar_type() == at::kFloat) {
// FP32 input, FP32 output
if (block_size == K) {
ref_dyn_quant_matmul_4bit_channelwise_kernel(
M, N, K,
(float*)input, weights_4bit, weight_scales,
(float*)dst, -FLT_MAX, FLT_MAX, (float*)bias_data);
} else if (!(block_size % 32) && !(K % block_size)) {
ref_dyn_quant_matmul_4bit_groupwise_kernel(
M, N, K, block_size,
(float*)input, weights_4bit, weight_scales,
(float*)dst, -FLT_MAX, FLT_MAX, (float*)bias_data);
} else {
TORCH_CHECK(false, "Unsupported block size for FP32 fallback");
}
float* lhs_f32 = reinterpret_cast<float*>(inp.data_ptr());
const auto weights_size = N * K / 2;
// The weights needs to be in uint8_t data type after quantization
auto extracted_weights =
(packed_weights.narrow(0, 0, weights_size)).to(kByte);
auto float32_scales =
(packed_weights.narrow(
0, weights_size, packed_weights.size(0) - weights_size))
.to(kFloat);
uint8_t* rhs_4bit =
reinterpret_cast<uint8_t*>(extracted_weights.data_ptr());
float* rhs_scales_f32 = reinterpret_cast<float*>(float32_scales.data_ptr());
float* dst_f32 = reinterpret_cast<float*>(output.data_ptr());
if (block_size == K) {
ref_dyn_quant_matmul_4bit_channelwise_kernel(
M,
N,
K,
lhs_f32,
rhs_4bit,
rhs_scales_f32,
dst_f32,
-FLT_MAX,
FLT_MAX);
} else if (!(block_size % 32) && !(K % block_size)) {
ref_dyn_quant_matmul_4bit_groupwise_kernel(
M,
N,
K,
block_size,
lhs_f32,
rhs_4bit,
rhs_scales_f32,
dst_f32,
-FLT_MAX,
FLT_MAX);
} else {
TORCH_CHECK(false, "Unsupported input/output dtype combination for int4mm kernel");
TORCH_CHECK(
block_size == K || (!(block_size % 32) && !(K % block_size)),
__func__,
": Group size should be multiple 32 or in_features [",
K,
"]. Provided ",
block_size);
}
}
}
}
} // anonymous namespace
}
ALSO_REGISTER_AVX512_DISPATCH(weight_to_int4pack_stub, &weight_to_int4pack_kernel)
ALSO_REGISTER_AVX512_DISPATCH(int4pack_mm_stub, &int4pack_mm_kernel)
REGISTER_DISPATCH(dyn_quant_pack_4bit_weight_stub, &dyn_quant_pack_4bit_weight_kernel)

View File

@ -296,7 +296,7 @@ template <typename scalar_t, typename res_scalar_t = scalar_t>
bool launchGemmAndBiasCublasLt(
// args contains result which is modified
cublasCommonArgs& args,
const Tensor& self,
const std::optional<Tensor>& self,
const Scalar& alpha,
Activation activation = Activation::None
) {
@ -304,12 +304,8 @@ bool launchGemmAndBiasCublasLt(
// or when it can be squeezed to 1D.
// self_ptr == nullptr implies ignore bias epilogue
// and use standard gemm-like API.
const auto* self_ptr = [&]() -> auto {
if (self.dim() == 1 || self.squeeze().dim() == 1) {
return self.const_data_ptr<scalar_t>();
}
return static_cast<const scalar_t*>(nullptr);
}();
const auto* self_ptr = self.has_value() ? self.value().const_data_ptr<scalar_t>() : static_cast<const scalar_t*>(nullptr);
const auto tuning_ctx = at::cuda::tunable::getTuningContext();
if (tuning_ctx->IsTunableOpEnabled()) {
@ -392,35 +388,30 @@ Tensor& addmm_out_cuda_impl(Tensor& result, const Tensor& self, const Tensor& ma
bool disable_addmm_cuda_lt = persistent_disable_addmm_cuda_lt || disable_addmm_cuda_lt_override;
#ifdef USE_ROCM
// Conditioned on the device index, which is not persistent
disable_addmm_cuda_lt = isGloballyDisabledAddmmCudaLt(self.device()) || disable_addmm_cuda_lt;
disable_addmm_cuda_lt = disable_addmm_cuda_lt || isGloballyDisabledAddmmCudaLt(self.device());
#endif
// Condition on the input
disable_addmm_cuda_lt = !isInputCompliesAddmmCudaLt(result, self, mat1, mat2, beta, alpha, activation) || disable_addmm_cuda_lt;
// }
disable_addmm_cuda_lt = disable_addmm_cuda_lt || !isInputCompliesAddmmCudaLt(result, self, mat1, mat2, beta, alpha, activation);
at::ScalarType scalar_type = mat1.scalar_type();
bool is_float_output_with_half_input = (scalar_type == at::ScalarType::Half || scalar_type == at::ScalarType::BFloat16) && result.scalar_type() == at::ScalarType::Float;
#ifdef USE_ROCM
disable_addmm_cuda_lt = disable_addmm_cuda_lt || is_float_output_with_half_input;
#endif
bool use_bias_ptr_lt = (self.dim() == 1) && !disable_addmm_cuda_lt;
// for float output with half input cublasLT with bias produces wrong results
use_bias_ptr_lt &= !is_float_output_with_half_input;
// Handle result/self shapes
if (!result.is_same(self)) {
at::native::resize_output(result, {mat1.sizes()[0], mat2.sizes()[1]});
// We use bias ptr in the Lt path only when bias is 1D
const auto use_bias_ptr_lt = (self.dim() == 1) && !disable_addmm_cuda_lt;
const auto self_maybe_expanded = [&]() -> c10::MaybeOwned<Tensor> {
if (!use_bias_ptr_lt) {
// We do expand self even before
// check for beta != 0.0 to make sure that
// test_sparse_csr.py::TestSparseCSRCUDA::test_addmm_errors_*
// runs green.
return expand_size(self, result.sizes(), "addmm");
}
return c10::MaybeOwned<Tensor>::borrowed(self);
}();
// We do not copy bias only when we need the bias ptr
// We do not copy bias only when we need the bias ptr
if (beta.toComplexDouble() != 0.0 && !use_bias_ptr_lt) {
// NOTE: self should broadcast over result
at::native::copy_(result, *self_maybe_expanded);
at::native::copy_(result, *expand_size(self, result.sizes(), "addmm"));
}
}
@ -468,7 +459,7 @@ Tensor& addmm_out_cuda_impl(Tensor& result, const Tensor& self, const Tensor& ma
scalar_type,
"addmm_cuda_lt",
[&] {
lt_success = launchGemmAndBiasCublasLt<scalar_t, float>(args, self, alpha, activation);
lt_success = launchGemmAndBiasCublasLt<scalar_t, float>(args, use_bias_ptr_lt ? std::make_optional(self) : std::nullopt, alpha, activation);
}
);
#endif
@ -480,7 +471,7 @@ Tensor& addmm_out_cuda_impl(Tensor& result, const Tensor& self, const Tensor& ma
scalar_type,
"addmm_cuda_lt",
[&] {
lt_success = launchGemmAndBiasCublasLt<scalar_t>(args, self, alpha, activation);
lt_success = launchGemmAndBiasCublasLt<scalar_t>(args, use_bias_ptr_lt ? std::make_optional(self) : std::nullopt, alpha, activation);
}
);
} // end is_float_output_with_half_input
@ -936,7 +927,7 @@ Tensor _int_mm_cuda(const Tensor& self, const Tensor& mat2) {
return _int_mm_out_cuda(self, mat2, result);
}
static void baddbmm_bmm_out_dtype_checks(const Tensor& batch1, const Tensor& batch2, const Scalar& beta, const Scalar& alpha, const at::ScalarType out_dtype, bool is_bmm, const std::optional<Tensor>& self_baddbmm = std::nullopt) {
static void baddbmm_bmm_out_dtype_checks(const Tensor& batch1, const Tensor& batch2, const Scalar& beta, const Scalar& alpha, const at::ScalarType out_dtype, const std::optional<Tensor>& self_baddbmm = std::nullopt) {
// ref ATen/native/LinearAlgebra.cpp common_checks_baddbmm_bmm
TORCH_CHECK(batch1.dim() == 3, "batch1 must be a 3D tensor");
TORCH_CHECK(batch2.dim() == 3, "batch2 must be a 3D tensor");
@ -960,7 +951,7 @@ static void baddbmm_bmm_out_dtype_checks(const Tensor& batch1, const Tensor& bat
(out_dtype == at::ScalarType::Float && (batch1.scalar_type() == at::ScalarType::Half || batch1.scalar_type() == at::ScalarType::BFloat16)),
"out_dtype must be the same as input dtype or fp32 for fp16/bf16 inputs");
if (!is_bmm && self_baddbmm.has_value()) {
if (self_baddbmm.has_value()) {
const auto& self = self_baddbmm.value();
TORCH_CHECK(self.dim() == 3, "self must be a 3D tensor");
TORCH_CHECK(self.sizes() == output_size, "self must have the same shape as the output");
@ -968,15 +959,12 @@ static void baddbmm_bmm_out_dtype_checks(const Tensor& batch1, const Tensor& bat
}
Tensor _bmm_dtype_cuda(const Tensor& batch1, const Tensor& batch2, const at::ScalarType out_dtype) {
IntArrayRef batch1_sizes = batch1.sizes();
IntArrayRef batch2_sizes = batch2.sizes();
Tensor out = at::empty({batch1_sizes[0], batch1_sizes[1], batch2_sizes[2]}, batch1.options().dtype(out_dtype));
Tensor out = at::empty({batch1.size(0), batch1.size(1), batch2.size(2)}, batch1.options().dtype(out_dtype));
return _bmm_out_dtype_cuda(batch1, batch2, out_dtype, out);
}
Tensor& _bmm_out_dtype_cuda(const Tensor& batch1, const Tensor& batch2, const at::ScalarType out_dtype, Tensor &out) {
baddbmm_bmm_out_dtype_checks(batch1, batch2, 0.0, 1.0, out_dtype, true);
baddbmm_bmm_out_dtype_checks(batch1, batch2, 0.0, 1.0, out_dtype);
Scalar beta(0.0);
Scalar alpha(1.0);
{
@ -988,14 +976,16 @@ Tensor& _bmm_out_dtype_cuda(const Tensor& batch1, const Tensor& batch2, const at
}
Tensor _baddbmm_dtype_cuda(const Tensor& self, const Tensor& batch1, const Tensor& batch2, const at::ScalarType out_dtype, const Scalar& beta, const Scalar& alpha) {
// We need to copy the tensor
Tensor out = self.clone().to(self.options().dtype(out_dtype));
return _baddbmm_out_dtype_cuda(out, batch1, batch2, out_dtype, beta, alpha, out);
TORCH_CHECK(self.scalar_type() == out_dtype || self.scalar_type() == batch1.dtype(),
"self dtype must match either out_dtype or batch1 dtype");
Tensor out = at::empty({batch1.size(0), batch1.size(1), batch2.size(2)}, batch1.options().dtype(out_dtype));
return _baddbmm_out_dtype_cuda(self, batch1, batch2, out_dtype, beta, alpha, out);
}
Tensor& _baddbmm_out_dtype_cuda(const Tensor& self, const Tensor& batch1, const Tensor& batch2, const at::ScalarType out_dtype, const Scalar& beta, const Scalar& alpha, Tensor &out) {
baddbmm_bmm_out_dtype_checks(batch1, batch2, beta, alpha, out_dtype, false, self);
baddbmm_bmm_out_dtype_checks(batch1, batch2, beta, alpha, out_dtype, out);
// We need to copy the tensor
out.copy_(self);
{
NoNamesGuard guard;
baddbmm_out_cuda_impl(out, out, batch1, batch2, beta, alpha);
@ -1030,24 +1020,27 @@ Tensor& _mm_dtype_out_cuda(const Tensor& self, const Tensor& mat2, const at::Sca
}
Tensor _addmm_dtype_cuda(const Tensor& self, const Tensor& mat1, const Tensor& mat2, const at::ScalarType out_dtype, const Scalar& beta, const Scalar& alpha) {
Tensor result = at::empty(self.sizes(), self.options().dtype(out_dtype));
TORCH_CHECK(mat1.dim() == 2, "mat1 must be a matrix, got ", mat1.dim(), "-D tensor");
TORCH_CHECK(mat2.dim() == 2, "mat2 must be a matrix, got ", mat2.dim(), "-D tensor");
Tensor result = at::empty({mat1.size(0), mat2.size(1)}, self.options().dtype(out_dtype));
return _addmm_dtype_out_cuda(self, mat1, mat2, out_dtype, beta, alpha, result);
}
Tensor& _addmm_dtype_out_cuda(const Tensor& self, const Tensor& mat1, const Tensor& mat2, const at::ScalarType out_dtype, const Scalar& beta, const Scalar& alpha, Tensor &out) {
TORCH_CHECK(self.scalar_type() == mat2.scalar_type(), "self and mat2 must have the same dtype, but got ", self.scalar_type(), " and ", mat2.scalar_type());
TORCH_CHECK(mat1.scalar_type() == mat2.scalar_type(), "mat1 and mat2 must have the same dtype, but got ", mat1.scalar_type(), " and ", mat2.scalar_type());
// repeat dimensionality checks for direct calls to `out` overload
TORCH_CHECK(mat1.dim() == 2, "mat1 must be a matrix, got ", mat1.dim(), "-D tensor");
TORCH_CHECK(mat2.dim() == 2, "mat2 must be a matrix, got ", mat2.dim(), "-D tensor");
TORCH_CHECK(
mat1.sizes()[1] == mat2.sizes()[0], "mat1 and mat2 shapes cannot be multiplied (",
mat1.sizes()[0], "x", mat1.sizes()[1], " and ", mat2.sizes()[0], "x", mat2.sizes()[1], ")");
TORCH_CHECK(mat1.scalar_type() == mat2.scalar_type(), "mat1 and mat2 must have the same dtype, but got ", mat1.scalar_type(), " and ", mat2.scalar_type());
TORCH_CHECK(out_dtype == mat1.scalar_type() ||
(out_dtype == at::ScalarType::Float && (mat1.scalar_type() == at::ScalarType::Half || mat1.scalar_type() == at::ScalarType::BFloat16)),
"out_dtype must be the same as input dtype or fp32 for fp16/bf16 inputs");
TORCH_CHECK(out_dtype == out.scalar_type(), "out_dtype must be the same as the dtype of the provided out tensor");
TORCH_CHECK(out_dtype == self.scalar_type() ||
(out_dtype == at::ScalarType::Float && (self.scalar_type() == at::ScalarType::Half || self.scalar_type() == at::ScalarType::BFloat16)),
"out_dtype must be the same as input dtype or fp32 for fp16/bf16 inputs");
TORCH_CHECK(out_dtype == out.scalar_type(), "out_dtype must be the same as the dtype of the provided out tensor");
TORCH_CHECK(out_dtype == self.scalar_type() || self.scalar_type() == mat1.scalar_type(),
"self dtype must match either out_dtype or mat1 dtype");
addmm_out_cuda_impl(out, self, mat1, mat2, beta, alpha);

View File

@ -2,18 +2,250 @@
#include <ATen/Dispatch.h>
#include <ATen/native/DispatchStub.h>
#include <ATen/native/cuda/Loops.cuh>
#include <ATen/native/cuda/JitLoops.cuh>
#include <ATen/native/cuda/jit_utils.h>
#include <ATen/native/cuda/ScanUtils.cuh>
#include <ATen/native/TensorIterator.h>
#include <ATen/native/BinaryOps.h>
#include <ATen/OpMathType.h>
#include <c10/util/MathConstants.h>
#include <c10/util/complex.h>
#include <cmath>
#include <limits>
// NOTE: CUDA on Windows requires that the enclosing function
// of a __device__ lambda not have internal linkage.
namespace at::native {
// custom min and max to be used in logaddexp for complex arguments
template <typename scalar_t, bool min>
__host__ __device__ c10::complex<scalar_t> _logaddexp_minmax(const c10::complex<scalar_t>& x, const c10::complex<scalar_t>& y) {
scalar_t xr = std::real(x);
scalar_t yr = std::real(y);
if (::isnan(yr) || (::isnan(std::imag(y)))) {
return y;
} else if (::isnan(xr) || (::isnan(std::imag(x)))) {
return x;
} else if (min) { // min
return (xr < yr) ? x : y;
} else { // max
return (xr >= yr) ? x : y;
}
}
template <typename scalar_t>
__host__ __device__ scalar_t _log_add_exp_helper(const scalar_t& x, const scalar_t& y) {
// Reference : https://www.tensorflow.org/api_docs/python/tf/math/cumulative_logsumexp
// Using the original expression: `at::_isnan(y) ? y : std::min(x, y)` causes an error in ROCM
const auto isnan_x = at::_isnan(x);
const auto isnan_y = at::_isnan(y);
scalar_t min = isnan_y ? y : (isnan_x ? x : std::min(x, y));
scalar_t max = isnan_y ? y : (isnan_x ? x : std::max(x, y));
if (min != max || ::isfinite(min)) {
// nan will be propagated here
return ::log1p(std::exp(min - max)) + max;
} else {
// special case to correctly handle infinite cases
return x;
}
}
template <typename scalar_t>
__host__ __device__ c10::complex<scalar_t> _fast_build_exp(const c10::complex<scalar_t>& x) {
// complex exponential function, but implemented manually to get fast compilation time
// this function only handles the case where the x is finite (not inf nor nan)
const auto xreal = std::real(x);
const auto ximag = std::imag(x);
const auto exp_x_abs = std::exp(xreal);
auto exp_x_real = exp_x_abs * std::cos(ximag);
auto exp_x_imag = exp_x_abs * std::sin(ximag);
return {exp_x_real, exp_x_imag};
}
template <typename scalar_t>
__host__ __device__ c10::complex<scalar_t> _fast_build_exp_inf(const c10::complex<scalar_t>& x) {
// complex exponential function, but implemented manually to get fast compilation time
// this function only handles the case where the real part of x is infinite
const auto ximag = std::imag(x);
constexpr auto exp_x_abs = std::numeric_limits<scalar_t>::infinity();
if (!::isfinite(ximag)) { // add this to make consitent with std::exp(x+yi)
return {exp_x_abs, std::numeric_limits<scalar_t>::quiet_NaN()};
}
const auto sin = std::sin(ximag);
const auto cos = std::cos(ximag);
// special case if the angle is exactly the multiple of pi/2
auto exp_x_real = (cos == 0) ? (scalar_t)0.0 : exp_x_abs * cos;
auto exp_x_imag = (sin == 0) ? (scalar_t)0.0 : exp_x_abs * sin;
return {exp_x_real, exp_x_imag};
}
template <typename scalar_t>
__host__ __device__ c10::complex<scalar_t> _log_add_exp_helper(const c10::complex<scalar_t>& x, const c10::complex<scalar_t>& y) {
c10::complex<scalar_t> min = _logaddexp_minmax<scalar_t, /*min=*/true>(x, y);
c10::complex<scalar_t> max = _logaddexp_minmax<scalar_t, /*min=*/false>(x, y);
scalar_t min_real = std::real(min);
scalar_t max_real = std::real(max);
if (::isnan(min_real) || ::isnan(std::imag(min))) {
// handling the "infectious" NaNs
return {std::numeric_limits<scalar_t>::quiet_NaN(), std::numeric_limits<scalar_t>::quiet_NaN()};
}
else if ((!::isfinite(min_real)) && (min_real == max_real)) {
if (min_real < 0) {
// handle the -inf case, the imaginary part here does not really matter as the exp(value)
// will be around 0.0 and the angle (i.e. the imaginary part) cannot be determined.
// It does not matter if we're taking the exp of this value
return min;
} else {
// handle the +inf case, we don't need the special precision for log1p for small values
// and to avoid producing nan in case of real(max) == real(min) == +inf
const auto exp_min = _fast_build_exp_inf(min);
const auto exp_max = _fast_build_exp_inf(max);
return ::log1p(exp_min + exp_max - 1); // log1p(x - 1) builds faster than log
}
} else {
const auto minmax = min - max;
c10::complex<scalar_t> exp_minmax;
if (!::isfinite(minmax.real())) {
exp_minmax = minmax.real() < 0 ? c10::complex<scalar_t>{0.0, 0.0} : _fast_build_exp_inf(minmax);
} else {
exp_minmax = _fast_build_exp(minmax);
}
return ::log1p(exp_minmax) + max;
}
}
// Complex logaddexp jiterator string
const auto logaddexp_complex_string = jiterator_stringify(
template<typename T>
std::complex<T> log1p(const std::complex<T>& z)
{
using complex_t = std::complex<T>;
T x = z.real();
T y = z.imag();
T zabs = abs(z);
T theta = atan2(y, x + T(1));
if (zabs < 0.5) {
T r = x * (T(2) + x) + y * y;
if (r == 0) { // handle underflow
return complex_t(x, theta);
}
return complex_t(T(0.5) * std::log1p(r), theta);
} else {
T z0 = std::hypot(x + 1, y);
return complex_t(log(z0), theta);
}
}
// separated _logaddexp_minmax into 2 different functions for jiterator_string
template <typename T>
std::complex<T> logaddexp_min(const std::complex<T>& x, const std::complex<T>& y) {
T xr = x.real();
T yr = y.real();
if (isnan(yr) || isnan(y.imag())) {
return y;
} else if (isnan(xr) || isnan(x.imag())) {
return x;
} else {
return (xr < yr) ? x : y;
}
}
template <typename T>
std::complex<T> logaddexp_max(const std::complex<T>& x, const std::complex<T>& y) {
T xr = x.real();
T yr = y.real();
if (isnan(yr) || isnan(y.imag())) {
return y;
} else if (isnan(xr) || isnan(x.imag())) {
return x;
} else {
return (xr >= yr) ? x : y;
}
}
template <typename T>
std::complex<T> fast_build_exp(const std::complex<T>& x) {
const auto xreal = x.real();
const auto ximag = x.imag();
const auto exp_x_abs = exp(xreal);
auto exp_x_real = exp_x_abs * cos(ximag);
auto exp_x_imag = exp_x_abs * sin(ximag);
return std::complex<T>(exp_x_real, exp_x_imag);
}
template <typename T>
std::complex<T> fast_build_exp_inf(const std::complex<T>& x) {
using complex_t = std::complex<T>;
const auto ximag = x.imag();
const T exp_x_abs = INFINITY;
if (!isfinite(ximag)) {
return complex_t(exp_x_abs, NAN);
}
const auto sin_val = sin(ximag);
const auto cos_val = cos(ximag);
auto exp_x_real = (cos_val == T(0)) ? T(0) : exp_x_abs * cos_val;
auto exp_x_imag = (sin_val == T(0)) ? T(0) : exp_x_abs * sin_val;
return complex_t(exp_x_real, exp_x_imag);
}
template <typename complex_t>
complex_t logaddexp_complex(complex_t x, complex_t y) {
using T = typename complex_t::value_type;
complex_t min_val = logaddexp_min(x, y);
complex_t max_val = logaddexp_max(x, y);
T min_real = min_val.real();
T max_real = max_val.real();
if (isnan(min_real) || isnan(min_val.imag())) {
return complex_t(NAN, NAN);
}
else if ((!isfinite(min_real)) && (min_real == max_real)) {
if (min_real < T(0)) {
return min_val;
} else {
const auto exp_min = fast_build_exp_inf<T>(min_val);
const auto exp_max = fast_build_exp_inf<T>(max_val);
return log1p(exp_min + exp_max - complex_t(1, 0));
}
} else {
const auto minmax = min_val - max_val;
complex_t exp_minmax;
if (!isfinite(minmax.real())) {
exp_minmax = (minmax.real() < T(0)) ? complex_t(0, 0) : fast_build_exp_inf<T>(minmax);
} else {
exp_minmax = fast_build_exp<T>(minmax);
}
return log1p(exp_minmax) + max_val;
}
}
);
constexpr char logaddexp_complex_name[] = "logaddexp_complex";
void logaddexp_kernel_cuda(TensorIteratorBase& iter) {
AT_DISPATCH_FLOATING_TYPES_AND2(
if (at::isComplexType(iter.dtype())) {
#if AT_USE_JITERATOR()
AT_DISPATCH_COMPLEX_TYPES_AND(at::ScalarType::ComplexHalf, iter.dtype(), "logaddexp_cuda", [&]() {
jitted_gpu_kernel<
/*name=*/logaddexp_complex_name,
/*return_dtype=*/scalar_t,
/*common_dtype=*/scalar_t,
/*arity=*/2>(iter, logaddexp_complex_string);
});
#else
AT_DISPATCH_COMPLEX_TYPES_AND(at::ScalarType::ComplexHalf, iter.dtype(), "logaddexp_cuda", [&]() {
using opmath_t = at::opmath_type<scalar_t>;
gpu_kernel(iter, [] GPU_LAMBDA (scalar_t a_, scalar_t b_) -> scalar_t {
const auto a = static_cast<opmath_t>(a_);
const auto b = static_cast<opmath_t>(b_);
return static_cast<scalar_t>(_log_add_exp_helper(a, b));
});
});
#endif
} else {
AT_DISPATCH_FLOATING_TYPES_AND2(
ScalarType::BFloat16, ScalarType::Half,
iter.dtype(), "logaddexp_cuda",
[&]() {
@ -29,6 +261,7 @@ void logaddexp_kernel_cuda(TensorIteratorBase& iter) {
}
});
});
}
}
void logaddexp2_kernel_cuda(TensorIteratorBase& iter) {

View File

@ -11,7 +11,7 @@ static inline std::ostream& operator<<(std::ostream& out, dim3 dim) {
if (dim.y == 1 && dim.z == 1) {
out << dim.x;
} else {
out << '[' << dim.x << ',' << dim.y << ',' << dim.z << ']';
out << "[" << dim.x << "," << dim.y << "," << dim.z << "]";
}
return out;
}
@ -27,7 +27,7 @@ std::ostream& operator<<(std::ostream& out, const ReduceConfig& config) {
out << "input_mult=[";
for (int i = 0; i < 3; i++) {
if (i != 0) {
out << ',';
out << ",";
}
out << config.input_mult[i];
}
@ -35,7 +35,7 @@ std::ostream& operator<<(std::ostream& out, const ReduceConfig& config) {
out << "output_mult=[";
for (int i = 0; i < 2; i++) {
if (i != 0) {
out << ',';
out << ",";
}
out << config.output_mult[i];
}
@ -49,7 +49,7 @@ std::ostream& operator<<(std::ostream& out, const ReduceConfig& config) {
out << "block=" << config.block() << ", ";
out << "grid=" << config.grid() << ", ";
out << "global_memory_size=" << config.global_memory_size();
out << ')';
out << ")";
return out;
}

View File

@ -1101,6 +1101,19 @@ _scaled_mxfp8_mxfp8(
return _scaled_gemm(mat_a, mat_b, scale_a, scale_b, scaling_choice_a, scaling_choice_b, bias, false /* use_fast_accum */, out);
}
void
_check_mxfp4_support() {
#ifndef USE_ROCM
auto dprops = at::cuda::getCurrentDeviceProperties();
// Only on B200 GPUs
TORCH_CHECK_NOT_IMPLEMENTED(
// B200 = 10.0, B300 = 10.3
dprops->major == 10,
"MXFP4 scaling only supported in CUDA for B200/B300"
);
#endif
}
Tensor&
_scaled_mxfp4_mxfp4(
@ -1113,6 +1126,7 @@ _scaled_mxfp4_mxfp4(
#if defined(_WIN32) || (!defined(USE_ROCM) && !defined(USE_FBGEMM_GENAI))
TORCH_CHECK_NOT_IMPLEMENTED(false, "MXFP4 scaling supported on ROCM and CUDA+FBGEMM_GENAI only");
#else
_check_mxfp4_support();
// Restrictions:
// A, B are FP4, scales are e8m0, A: shape K//32, B: K, N//32
TORCH_CHECK_VALUE(mat_a.scalar_type() == at::kFloat4_e2m1fn_x2 && mat_b.scalar_type() == at::kFloat4_e2m1fn_x2, "mat_a and mat_b must be fp4 types, got: ",

View File

@ -364,9 +364,9 @@ void f8f8bf16_grouped_gemm_impl_sm90(
// reinterpret_cast<ProblemShape::UnderlyingProblemShape*>(
// stride_output_h + group_count);
// std::cout << "PTRS " << mat_a.data_ptr() << ' ' << mat_b.data_ptr() << "
// std::cout << "PTRS " << mat_a.data_ptr() << " " << mat_b.data_ptr() << "
// "
// << out.data_ptr() << ' ' << scale_a.data_ptr() << ' '
// << out.data_ptr() << " " << scale_a.data_ptr() << " "
// << scale_b.data_ptr() << "\n";
// for (int i = 0; i < group_count; i++) {
// std::cout << "A " << (void*)inputA_ptrs_h[i] << "\n";

View File

@ -1057,14 +1057,14 @@ std::string generate_code(
// TODO these arrays are potentially of the different types, use function
// traits to determine the types
declare_load_arrays << f_inputs_type << " arg" << std::to_string(i)
<< '[' << std::to_string(thread_work_size) << "];\n";
<< "[" << std::to_string(thread_work_size) << "];\n";
}
env.s("declare_load_arrays", declare_load_arrays.str());
std::stringstream declare_store_arrays;
for (int i = 0; i < nOutputs; i++) {
declare_store_arrays << result_type << " out" << std::to_string(i)
<< '[' << std::to_string(thread_work_size) << "];\n";
<< "[" << std::to_string(thread_work_size) << "];\n";
}
env.s("declare_store_arrays", declare_store_arrays.str());
@ -1217,7 +1217,7 @@ std::string generate_code(
for (const auto i : c10::irange(nInputs)){
auto i_string = std::to_string(i);
vector_inputs << "auto * input" << i_string <<
" = reinterpret_cast<const scalar_t*>(data[" << i_string << '+' << nOutputs << "])" <<
" = reinterpret_cast<const scalar_t*>(data[" << i_string << "+" << nOutputs << "])" <<
" + block_work_size * idx;\n";
}
env.s("vector_inputs", vector_inputs.str());
@ -1543,17 +1543,17 @@ NvrtcFunction jit_pwise_function(
// Constructs file path by appending constructed cubin name to cache path
std::stringstream ss;
ss << *cache_dir << '/';
ss << *cache_dir << "/";
ss << kernel_name;
#ifdef USE_ROCM
ss << "_arch" << prop->gcnArchName;
#else
ss << "_arch" << cuda_major << '.' << cuda_minor;
ss << "_arch" << cuda_major << "." << cuda_minor;
#endif
ss << "_nvrtc" << nvrtc_major << '.' << nvrtc_minor;
ss << "_nvrtc" << nvrtc_major << "." << nvrtc_minor;
ss << (compile_to_sass ? "_sass" : "_ptx");
ss << '_' << code.length();
ss << '_' << hash_code;
ss << "_" << code.length();
ss << "_" << hash_code;
file_path = ss.str();
std::ifstream readin{file_path, std::ios::in | std::ifstream::binary};

View File

@ -82,15 +82,15 @@ namespace native {
std::ostream& operator<<(std::ostream& out, const ConvolutionParams& params) {
out << "ConvolutionParams \n"
<< " memory_format = " << params.memory_format << '\n'
<< " data_type = " << cudnnTypeToString(params.dataType) << '\n'
<< " padding = " << ArrayRef<int>{params.padding} << '\n'
<< " stride = " << ArrayRef<int>{params.stride} << '\n'
<< " dilation = " << ArrayRef<int>{params.dilation} << '\n'
<< " groups = " << params.groups << '\n'
<< " memory_format = " << params.memory_format << "\n"
<< " data_type = " << cudnnTypeToString(params.dataType) << "\n"
<< " padding = " << ArrayRef<int>{params.padding} << "\n"
<< " stride = " << ArrayRef<int>{params.stride} << "\n"
<< " dilation = " << ArrayRef<int>{params.dilation} << "\n"
<< " groups = " << params.groups << "\n"
<< " deterministic = " << (params.deterministic ? "true" : "false")
<< '\n'
<< " allow_tf32 = " << (params.allow_tf32 ? "true" : "false") << '\n';
<< "\n"
<< " allow_tf32 = " << (params.allow_tf32 ? "true" : "false") << "\n";
return out;
}
@ -173,16 +173,16 @@ std::string repro_from_args(const ConvolutionParams& params) {
at::globalContext().float32Precision(
at::Float32Backend::CUDA, at::Float32Op::MATMUL) ==
at::Float32Precision::TF32)
<< '\n';
<< "\n";
ss << "torch.backends.cudnn.benchmark = "
<< pybool(at::globalContext().benchmarkCuDNN()) << '\n';
<< pybool(at::globalContext().benchmarkCuDNN()) << "\n";
ss << "torch.backends.cudnn.deterministic = " << pybool(params.deterministic)
<< '\n';
<< "\n";
ss << "torch.backends.cudnn.allow_tf32 = " << pybool(params.allow_tf32)
<< '\n';
<< "\n";
ss << "data = torch.randn(" << ArrayRef<int>(params.input_size, dim)
<< ", dtype=" << full_dtype << ", ";
ss << "device='cuda', requires_grad=True)" << to_channels_last << '\n';
ss << "device='cuda', requires_grad=True)" << to_channels_last << "\n";
ss << "net = torch.nn.Conv" << dim - 2 << "d(" << in_channels << ", "
<< out_channels << ", ";
ss << "kernel_size=" << ArrayRef<int>(&params.weight_size[2], dim - 2)
@ -192,7 +192,7 @@ std::string repro_from_args(const ConvolutionParams& params) {
ss << "dilation=" << ArrayRef<int>(params.dilation, dim - 2) << ", ";
ss << "groups=" << params.groups << ")\n";
ss << "net = net.cuda()." << partial_dtype << "()" << to_channels_last
<< '\n';
<< "\n";
ss << "out = net(data)\n";
ss << "out.backward(torch.randn_like(out))\n";
ss << "torch.cuda.synchronize()\n\n";

View File

@ -93,10 +93,11 @@ std::ostream& operator<<(std::ostream& out, const ConvolutionArgs& args) {
<< "input: " << args.idesc // already has a trailing newline
<< "output: " << args.odesc // already has a trailing newline
<< "weight: " << args.wdesc // already has a trailing newline
<< "Pointer addresses: " << '\n'
<< " input: " << args.input.const_data_ptr() << '\n'
<< " output: " << args.output.const_data_ptr() << '\n'
<< " weight: " << args.weight.const_data_ptr() << '\n';
<< "Pointer addresses: "
<< "\n"
<< " input: " << args.input.const_data_ptr() << "\n"
<< " output: " << args.output.const_data_ptr() << "\n"
<< " weight: " << args.weight.const_data_ptr() << "\n";
return out;
}

View File

@ -21,27 +21,18 @@ void kai_pack_int4_rhs(
const int64_t n,
const int64_t k,
const int64_t bl) {
// Prefer Channelwise kernel over Groupwise kernel for conflicting cases
if (bl == k) {
// Channelwise
if (weight.scalar_type() == at::kBFloat16) {
auto kernel_packet = kai_select_bf16_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod);
auto& params = kernel_packet.rhs_pack_params;
params.lhs_zero_point = 1;
params.rhs_zero_point = 8;
kai_pack_rhs_channelwise_int4<kai_matmul_ukernel_bf16_qa8dxp_qs4cxp>(
kernel_packet, weight_packed, weight, scales, bias, n, k);
} else {
auto kernel_packet = kai_select_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod);
auto& params = kernel_packet.rhs_pack_params;
params.lhs_zero_point = 1;
params.rhs_zero_point = 8;
kai_pack_rhs_channelwise_int4<kai_matmul_ukernel_f32_qa8dxp_qs4cxp>(
kernel_packet, weight_packed, weight, scales, bias, n, k);
}
auto kernel_packet = kai_select_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod);
auto& params = kernel_packet.rhs_pack_params;
params.lhs_zero_point = 1;
params.rhs_zero_point = 8;
kai_pack_rhs_channelwise_int4<kai_matmul_ukernel_f32_qa8dxp_qs4cxp>(
kernel_packet, weight_packed, weight, scales, bias, n, k);
} else if (!(bl % 32) && !(k % bl)) {
// Groupwise
auto kernel_packet = kai_select_groupwise_matmul_ukernel(
@ -72,29 +63,19 @@ void kai_pack_int4_rhs(
size_t kai_pack_rhs_int4_size(
const int64_t n,
const int64_t k,
const int64_t bl,
at::ScalarType tensor_dtype) {
const int64_t bl) {
size_t packed_size = n * k;
// Prefer Channelwise kernel over Groupwise kernel for conflicting cases
if (bl == k) {
if (tensor_dtype == at::kBFloat16) {
auto kernel_packet = kai_select_bf16_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod);
const auto& ukernel = kernel_packet.ukernel;
const size_t nr = ukernel.get_nr();
const size_t kr = ukernel.get_kr();
const size_t sr = ukernel.get_sr();
packed_size = kernel_packet.kai_get_rhs_packed_size(n, k, nr, kr, sr);
} else {
auto kernel_packet = kai_select_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod);
const auto& ukernel = kernel_packet.ukernel;
const size_t nr = ukernel.get_nr();
const size_t kr = ukernel.get_kr();
const size_t sr = ukernel.get_sr();
packed_size = kernel_packet.kai_get_rhs_packed_size(n, k, nr, kr, sr);
}
// Channelwise
auto kernel_packet = kai_select_channelwise_matmul_ukernel(
kai_kernel_id::
matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod);
const auto& ukernel = kernel_packet.ukernel;
const size_t nr = ukernel.get_nr();
const size_t kr = ukernel.get_kr();
const size_t sr = ukernel.get_sr();
packed_size = kernel_packet.kai_get_rhs_packed_size(n, k, nr, kr, sr);
} else if (!(bl % 32) && !(k % bl)) {
// Groupwise
auto kernel_packet = kai_select_groupwise_matmul_ukernel(
@ -167,7 +148,8 @@ static void kai_quant_pack_lhs_int4_mm_groupwise(
const auto lhs_src_ptr = lhs_native_mtx_f32 + thread_id * src_stride;
const int64_t m_idx = thread_id * vec_per_thread;
auto lhs_packed_ptr = lhs_packed_base +
kernel_packet.kai_get_lhs_quant_pack_offset(m_idx, k, mr, kr, sr);
kai_get_lhs_packed_offset_lhs_quant_pack_qai8dxp_f32(
m_idx, k, mr, kr, sr);
const int64_t vec_num = (thread_id == num_threads - 1)
? (m - vec_per_thread * thread_id)
: vec_per_thread;
@ -277,7 +259,8 @@ static void kai_quant_pack_lhs_int4_mm_channelwise(
const auto lhs_src_ptr = lhs_native_mtx_f32 + thread_id * src_stride;
const int64_t m_idx = thread_id * vec_per_thread;
auto lhs_packed_ptr = lhs_packed_base +
kernel_packet.kai_get_lhs_quant_pack_offset(m_idx, k, mr, kr, sr);
kai_get_lhs_packed_offset_lhs_quant_pack_qai8dxp_f32(
m_idx, k, mr, kr, sr);
const int64_t vec_num = (thread_id == num_threads - 1)
? (m - vec_per_thread * thread_id)
: vec_per_thread;
@ -337,144 +320,19 @@ static void kai_quant_pack_lhs_int4_mm_channelwise(
});
}
static void kai_quant_pack_lhs_int4_mm_bf16_channelwise(
void kai_quant_pack_lhs_int4_mm(
const Tensor& output,
const Tensor& input,
const Tensor& weight,
const int64_t m,
const int64_t n,
const int64_t k) {
// Kernel IDs for GEMM and GEMV
constexpr kai_kernel_id gemm_id =
kai_kernel_id::matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm;
constexpr kai_kernel_id gemv_id =
kai_kernel_id::matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod;
// Get total threads and select kernel
const int64_t total_threads = at::get_num_threads();
auto kernel_packet = kai_select_bf16_channelwise_matmul_ukernel(gemv_id);
if (cpuinfo_has_arm_i8mm() && m > 1) {
kernel_packet = kai_select_bf16_channelwise_matmul_ukernel(gemm_id);
}
// Thread blocking parameters
const int64_t n_step = kernel_packet.ukernel.get_n_step();
const size_t mr = kernel_packet.ukernel.get_mr();
const size_t kr = kernel_packet.ukernel.get_kr();
const size_t sr = kernel_packet.ukernel.get_sr();
const size_t lhs_packed_size =
kernel_packet.kai_get_lhs_packed_size(m, k, mr, kr, sr);
auto lhs_packed = std::make_unique<uint8_t[]>(lhs_packed_size);
uint8_t* dst_act_mtx_bf16 = reinterpret_cast<uint8_t*>(output.data_ptr());
const uint8_t* lhs_native_mtx_bf16 =
reinterpret_cast<const uint8_t*>(input.data_ptr());
const uint8_t* rhs_packed_mtx_qs4cx =
reinterpret_cast<const uint8_t*>(weight.data_ptr());
uint8_t* lhs_packed_base = lhs_packed.get();
constexpr int32_t element_size = sizeof(uint16_t);
const size_t lhs_stride = k * element_size;
const size_t dst_stride = n * element_size;
// LHS quantization packing
int64_t vec_per_thread = get_vec_per_thread(m, total_threads, mr);
int64_t num_threads = (m + vec_per_thread - 1) / vec_per_thread;
const size_t src_stride = vec_per_thread * lhs_stride;
auto lhs_quant_pack = [=, &kernel_packet](int64_t thread_id) {
const auto lhs_src_ptr = lhs_native_mtx_bf16 + thread_id * src_stride;
const int64_t m_idx = thread_id * vec_per_thread;
auto lhs_packed_ptr = lhs_packed_base +
kernel_packet.kai_get_lhs_quant_pack_offset(m_idx, k, mr, kr, sr);
const int64_t vec_num = (thread_id == num_threads - 1)
? (m - vec_per_thread * thread_id)
: vec_per_thread;
kernel_packet.kai_run_lhs_quant_pack(
vec_num,
k,
mr,
kr,
sr,
0,
(const uint16_t*)lhs_src_ptr,
lhs_stride,
lhs_packed_ptr);
};
at::parallel_for(
0, num_threads, /*grain_size=*/1, [&](int64_t begin, int64_t end) {
for (int64_t thread_id = begin; thread_id < end; ++thread_id) {
lhs_quant_pack(thread_id);
}
});
// Matrix multiplication
vec_per_thread = get_vec_per_thread(n, total_threads, n_step);
num_threads = (n + vec_per_thread - 1) / vec_per_thread;
auto mm = [=, &kernel_packet](int64_t thread_id) {
const auto rhs_packed_ptr = rhs_packed_mtx_qs4cx +
kernel_packet.ukernel.get_rhs_packed_offset(
thread_id * vec_per_thread, k);
auto dst_ptr = dst_act_mtx_bf16 +
kernel_packet.ukernel.get_dst_offset(
0, thread_id * vec_per_thread, dst_stride);
const int64_t vec_num = (thread_id == num_threads - 1)
? (n - vec_per_thread * thread_id)
: vec_per_thread;
kernel_packet.ukernel.run_matmul(
m,
vec_num,
k,
lhs_packed_base,
rhs_packed_ptr,
(uint16_t*)dst_ptr,
dst_stride,
element_size, // dst_stride_col
-FLT_MAX,
FLT_MAX);
};
at::parallel_for(
0, num_threads, /*grain_size=*/1, [&](int64_t begin, int64_t end) {
for (int64_t thread_id = begin; thread_id < end; ++thread_id) {
mm(thread_id);
}
});
}
void kai_quant_pack_lhs_int4_mm(
const at::Tensor& output,
const at::Tensor& input,
const at::Tensor& weight,
const int64_t m,
const int64_t n,
const int64_t k,
const int64_t bl) {
// Prefer Channelwise kernel over Groupwise kernel for conflicting cases
if (bl == k) {
const auto input_dtype = input.dtype();
if (input_dtype == at::kBFloat16) {
if (cpuinfo_has_arm_bf16()) {
kleidiai::kai_quant_pack_lhs_int4_mm_bf16_channelwise(
output, input, weight, m, n, k);
} else {
TORCH_CHECK(
false,
"BF16 Unsupported: CPU does not support BF16. Please use a CPU with BF16 support.");
}
} else if (input_dtype == at::kFloat) {
kleidiai::kai_quant_pack_lhs_int4_mm_channelwise(
output, input, weight, m, n, k);
} else {
TORCH_CHECK(
false,
"Unsupported input data type: Only Bfloat16 and Float inputs are supported.");
}
} else if ((bl % 32 == 0) && (k % bl == 0)) {
kleidiai::kai_quant_pack_lhs_int4_mm_channelwise(
output, input, weight, m, n, k);
} else if (!(bl % 32) && !(k % bl)) {
kleidiai::kai_quant_pack_lhs_int4_mm_groupwise(
output, input, weight, m, n, k, bl);
}

View File

@ -25,8 +25,7 @@ void kai_pack_int4_rhs(
size_t kai_pack_rhs_int4_size(
const int64_t n,
const int64_t k,
const int64_t bl,
at::ScalarType tensor_dtype = at::kFloat);
const int64_t bl);
/**
* @brief Run 2 operations ( Input quantize and pack -> 4 bit Matmul )

View File

@ -36,8 +36,7 @@ void kai_pack_rhs_groupwise_int4(
AT_ERROR("kai_pack_rhs_channelwise_int4: Scales data pointer is null");
}
float* bias_ptr =
bias.has_value() ? bias.value().to(kFloat).data_ptr<float>() : NULL;
float* bias_ptr = bias.has_value() ? bias.value().data_ptr<float>() : NULL;
auto& params = kernel.rhs_pack_params;
kernel.kai_run_rhs_pack(
@ -74,8 +73,7 @@ void kai_pack_rhs_channelwise_int4(
auto weight_packed_data =
reinterpret_cast<uint8_t*>(weight_packed.data_ptr());
const auto weight_data = weight.data_ptr<uint8_t>();
const auto scales_data = scales.to(kFloat).data_ptr<float>();
const auto scales_data = scales.data_ptr<float>();
if (weight_data == nullptr) {
AT_ERROR("kai_pack_rhs_channelwise_int4: Weight data pointer is null");
@ -85,8 +83,7 @@ void kai_pack_rhs_channelwise_int4(
AT_ERROR("kai_pack_rhs_channelwise_int4: Scales data pointer is null");
}
float* bias_ptr =
bias.has_value() ? bias.value().to(kFloat).data_ptr<float>() : NULL;
float* bias_ptr = bias.has_value() ? bias.value().data_ptr<float>() : NULL;
auto& params = kernel.rhs_pack_params;
kernel.kai_run_rhs_pack(

View File

@ -68,39 +68,5 @@ kai_matmul_ukernel_f32_qa8dxp_qs4cxp kai_select_channelwise_matmul_ukernel(
const kai_kernel_id id) {
return channelwise_8bit_4bit_kernels.at(id);
}
// Kernel Mapping - BF16 Channelwise
std::unordered_map<kai_kernel_id, kai_matmul_ukernel_bf16_qa8dxp_qs4cxp>
bf16_channelwise_8bit_4bit_kernels = {
{kai_kernel_id::
matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
{{kai_get_m_step_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_n_step_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_mr_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_nr_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_kr_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_sr_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_lhs_packed_offset_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_rhs_packed_offset_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_dst_offset_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_get_dst_size_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod,
kai_run_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod}}},
{kai_kernel_id::matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
{{kai_get_m_step_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_n_step_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_mr_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_nr_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_kr_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_sr_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_lhs_packed_offset_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_rhs_packed_offset_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_dst_offset_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_get_dst_size_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm,
kai_run_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm}}}};
kai_matmul_ukernel_bf16_qa8dxp_qs4cxp kai_select_bf16_channelwise_matmul_ukernel(
const kai_kernel_id id) {
return bf16_channelwise_8bit_4bit_kernels.at(id);
}
} // namespace at::native::kleidiai
#endif

View File

@ -10,32 +10,21 @@
#include <kai/ukernels/matmul/matmul_clamp_f32_qai8dxp_qsi4cxp/kai_matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod.h>
#include <kai/ukernels/matmul/matmul_clamp_f32_qai8dxp_qsi4cxp/kai_matmul_clamp_f32_qai8dxp4x8_qsi4cxp8x8_8x8x32_neon_i8mm.h>
#include <kai/ukernels/matmul/matmul_clamp_f32_qai8dxp_qsi4cxp/kai_matmul_clamp_f32_qai8dxp_qsi4cxp_interface.h>
#include <kai/ukernels/matmul/matmul_clamp_bf16_qai8dxp_qsi4cxp/kai_matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod.h>
#include <kai/ukernels/matmul/matmul_clamp_bf16_qai8dxp_qsi4cxp/kai_matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm.h>
#include <kai/ukernels/matmul/matmul_clamp_bf16_qai8dxp_qsi4cxp/kai_matmul_clamp_bf16_qai8dxp_qsi4cxp_interface.h>
#include <kai/ukernels/matmul/pack/kai_lhs_quant_pack_qai8dxp_f32.h>
#include <kai/ukernels/matmul/pack/kai_lhs_quant_pack_qai8dxp_bf16_neon.h>
#include <kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0.h>
#include <kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4cxp_qs4cxs1s0.h>
namespace at::native::kleidiai {
enum class kai_kernel_id {
// FP32 inputs, 4-bit weights, FP32 output
matmul_clamp_f32_qai8dxp1x8_qsi4c32p8x8_1x8x32_neon_dotprod =
0, // Groupwise 4-bit GEMV (per-group scales, NEON DOTPROD)
0, // Groupwise 4 bit GEMV
matmul_clamp_f32_qai8dxp4x8_qsi4c32p4x8_4x8x32_neon_i8mm =
1, // Groupwise 4-bit GEMM (per-group scales, NEON I8MM)
1, // Groupwise 4 bit GEMM
matmul_clamp_f32_qai8dxp1x8_qsi4cxp8x8_1x8x32_neon_dotprod =
2, // Channelwise 4-bit GEMV (per-channel scales, NEON DOTPROD)
2, // Channelwise 4 bit GEMV
matmul_clamp_f32_qai8dxp4x8_qsi4cxp8x8_8x8x32_neon_i8mm =
3, // Channelwise 4-bit GEMM (per-channel scales, NEON I8MM)
// BF16 inputs, 4-bit weights, BF16 output
matmul_clamp_bf16_qai8dxp1x8_qsi4cxp8x8_1x8_neon_dotprod =
4, // Channelwise 4-bit GEMV with BF16 input/output
matmul_clamp_bf16_qai8dxp4x8_qsi4cxp8x8_8x8_neon_i8mm =
5 // Channelwise 4-bit GEMM with BF16 input/output
3 // Channelwise 4 bit GEMM
};
// Channelwise Kernel mapping
@ -77,9 +66,6 @@ struct kai_matmul_ukernel_f32_qa8dxp_qs4cxp {
void* rhs_packed,
size_t extra_bytes,
const struct kai_rhs_pack_nxk_qsi4cxp_qs4cxs1s0_params* params);
size_t(*kai_get_lhs_quant_pack_offset)(
size_t m_idx, size_t k, size_t mr, size_t kr, size_t sr
);
kai_matmul_ukernel_f32_qa8dxp_qs4cxp(
const kai_matmul_clamp_f32_qai8dxp_qsi4cxp_ukernel& kernel)
@ -89,71 +75,12 @@ struct kai_matmul_ukernel_f32_qa8dxp_qs4cxp {
kai_get_rhs_packed_size(
&kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qs4cxs1s0),
kai_run_lhs_quant_pack(&kai_run_lhs_quant_pack_qai8dxp_f32),
kai_run_rhs_pack(&kai_run_rhs_pack_nxk_qsi4cxp_qs4cxs1s0),
kai_get_lhs_quant_pack_offset(&kai_get_lhs_packed_offset_lhs_quant_pack_qai8dxp_f32){}
kai_run_rhs_pack(&kai_run_rhs_pack_nxk_qsi4cxp_qs4cxs1s0) {}
};
struct kai_matmul_ukernel_f32_qa8dxp_qs4cxp
kai_select_channelwise_matmul_ukernel(const kai_kernel_id id);
// bf16 Channelwise Kernel mapping
struct kai_matmul_ukernel_bf16_qa8dxp_qs4cxp {
struct kai_matmul_clamp_bf16_qai8dxp_qsi4cxp_ukernel ukernel;
struct kai_rhs_pack_nxk_qsi4cxp_qs4cxs1s0_params rhs_pack_params;
size_t (*kai_get_lhs_packed_size)(
size_t m,
size_t k,
size_t mr,
size_t kr,
size_t sr);
size_t (*kai_get_rhs_packed_size)(
size_t n,
size_t k,
size_t nr,
size_t kr,
size_t sr);
void (*kai_run_lhs_quant_pack)(
size_t m,
size_t k,
size_t mr,
size_t kr,
size_t sr,
size_t m_idx_start,
const void* lhs,
size_t lhs_stride,
void* lhs_packed);
void (*kai_run_rhs_pack)(
size_t num_groups,
size_t n,
size_t k,
size_t nr,
size_t kr,
size_t sr,
const uint8_t* rhs,
const float* bias,
const float* scale,
void* rhs_packed,
size_t extra_bytes,
const struct kai_rhs_pack_nxk_qsi4cxp_qs4cxs1s0_params* params);
size_t(*kai_get_lhs_quant_pack_offset)(
size_t m_idx, size_t k, size_t mr, size_t kr, size_t sr
);
kai_matmul_ukernel_bf16_qa8dxp_qs4cxp(
const kai_matmul_clamp_bf16_qai8dxp_qsi4cxp_ukernel& kernel)
: ukernel(kernel),
kai_get_lhs_packed_size(
&kai_get_lhs_packed_size_lhs_quant_pack_qai8dxp_bf16_neon),
kai_get_rhs_packed_size(
&kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qs4cxs1s0),
kai_run_lhs_quant_pack(&kai_run_lhs_quant_pack_qai8dxp_bf16_neon),
kai_run_rhs_pack(&kai_run_rhs_pack_nxk_qsi4cxp_qs4cxs1s0),
kai_get_lhs_quant_pack_offset(&kai_get_lhs_packed_offset_lhs_quant_pack_qai8dxp_bf16_neon){}
};
struct kai_matmul_ukernel_bf16_qa8dxp_qs4cxp
kai_select_bf16_channelwise_matmul_ukernel(const kai_kernel_id id);
// Groupwise Kernel mapping
struct kai_matmul_ukernel_f32_qa8dxp_qs4c32p {
struct kai_matmul_clamp_f32_qai8dxp_qsi4c32p_ukernel ukernel;
@ -198,9 +125,6 @@ struct kai_matmul_ukernel_f32_qa8dxp_qs4c32p {
void* rhs_packed,
size_t extra_bytes,
const struct kai_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0_params* params);
size_t(*kai_get_lhs_quant_pack_offset)(
size_t m_idx, size_t k, size_t mr, size_t kr, size_t sr
);
kai_matmul_ukernel_f32_qa8dxp_qs4c32p(
const kai_matmul_clamp_f32_qai8dxp_qsi4c32p_ukernel& kernel)
@ -210,8 +134,7 @@ struct kai_matmul_ukernel_f32_qa8dxp_qs4c32p {
kai_get_rhs_packed_size(
&kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0),
kai_run_lhs_quant_pack(&kai_run_lhs_quant_pack_qai8dxp_f32),
kai_run_rhs_pack(&kai_run_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0),
kai_get_lhs_quant_pack_offset(&kai_get_lhs_packed_offset_lhs_quant_pack_qai8dxp_f32) {}
kai_run_rhs_pack(&kai_run_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0) {}
};
struct kai_matmul_ukernel_f32_qa8dxp_qs4c32p kai_select_groupwise_matmul_ukernel(

View File

@ -115,7 +115,7 @@ std::ostream& operator<<(
std::copy(
strides.begin(), strides.end() - 1, std::ostream_iterator<int>(oss, ","));
oss << sizes.back();
output << oss.str() << '}';
output << oss.str() << "}";
return output;
}

View File

@ -53,7 +53,7 @@ std::ostream& operator<<(std::ostream& out, const ConvParams& params) {
<< " transposed = " << params.transposed
<< " output_padding = " << IntArrayRef{params.output_padding}
<< " groups = " << params.groups << " benchmark = " << params.benchmark
<< " deterministic = " << params.deterministic << '}';
<< " deterministic = " << params.deterministic << "}";
return out;
}

View File

@ -91,25 +91,30 @@ static auto& lib = mps::MetalShaderLibrary::getBundledLibrary();
#include <ATen/native/mps/Repeat_metallib.h>
#endif
template <typename index_t>
void computeRepeatIndices(const index_t* repeat_ptr,
const int64_t* cumsum_ptr,
index_t* result_ptr,
int64_t size,
int64_t result_size) {
id<MTLBuffer> repeatBuffer = reinterpret_cast<id<MTLBuffer>>(repeat_ptr);
id<MTLBuffer> cumsumBuffer = reinterpret_cast<id<MTLBuffer>>(cumsum_ptr);
id<MTLBuffer> resultBuffer = reinterpret_cast<id<MTLBuffer>>(result_ptr);
TORCH_CHECK(repeatBuffer && cumsumBuffer && resultBuffer);
Tensor repeat_interleave_mps(const Tensor& repeat, std::optional<int64_t> output_size) {
TORCH_CHECK(repeat.dim() == 1, "repeat_interleave only accept 1D vector as repeat");
std::string scalar_type;
if constexpr (std::is_same_v<index_t, int32_t>) {
if (repeat.scalar_type() == kInt) {
scalar_type = "int32_t";
} else if constexpr (std::is_same_v<index_t, int64_t>) {
} else if (repeat.scalar_type() == kLong) {
scalar_type = "int64_t";
} else {
TORCH_CHECK(false, "repeat_interleave: unsupported indexing data type");
TORCH_CHECK(false, "repeats has to be Long or Int tensor");
}
if (repeat.size(0) == 0) {
return at::empty_like(repeat, LEGACY_CONTIGUOUS_MEMORY_FORMAT);
}
Tensor repeat_ = repeat.contiguous();
Tensor cumsum = repeat.cumsum(0);
int64_t total = 0;
if (output_size.has_value()) {
total = output_size.value();
} else {
total = cumsum[-1].item<int64_t>();
TORCH_CHECK((repeat >= 0).all().item<uint8_t>(), "repeats can not be negative");
}
auto result = at::empty({total}, repeat.options());
MPSStream* mpsStream = getCurrentMPSStream();
dispatch_sync(mpsStream->queue(), ^() {
@ -121,20 +126,13 @@ void computeRepeatIndices(const index_t* repeat_ptr,
getMPSProfiler().beginProfileKernel(pipelineState, "repeat_interleave:" + scalar_type, false);
[computeEncoder setComputePipelineState:pipelineState];
mps::mtl_setArgs(computeEncoder, repeatBuffer, cumsumBuffer, resultBuffer, size);
mps::mtl_dispatch1DJob(computeEncoder, pipelineState, size);
mps::mtl_setArgs(computeEncoder, repeat_, cumsum, result, repeat.size(0));
mps::mtl_dispatch1DJob(computeEncoder, pipelineState, repeat.size(0));
getMPSProfiler().endProfileKernel(pipelineState);
}
});
}
Tensor repeat_interleave_mps(const Tensor& repeat, std::optional<int64_t> output_size) {
Tensor output;
AT_DISPATCH_INDEX_TYPES(repeat.scalar_type(), "repeat_interleave_mps", [&]() {
output = repeat_interleave_common<index_t, computeRepeatIndices<index_t>>(repeat, output_size);
});
return output;
return result;
}
} // namespace at::native

View File

@ -4225,7 +4225,7 @@
MTIA: mm_out_mtia
MPS: mm_out_mps
XPU: mm_out_xpu
SparseCPU, SparseCUDA: _sparse_mm_out
SparseCPU, SparseCUDA, SparseMPS: _sparse_mm_out
SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: _sparse_csr_mm_out
- func: mm.dtype(Tensor self, Tensor mat2, ScalarType out_dtype) -> Tensor

View File

@ -301,12 +301,12 @@ class AvgPoolMicrokernelTester {
ASSERT_NEAR(
float(int32_t(y[i * yStride() + k])), yFP[i * kc() + k], 0.5001f)
<< "at pixel " << i << ", channel " << k << ", n = " << n()
<< ", ks = " << kh() << 'x' << kw() << " (" << ks()
<< ", ks = " << kh() << "x" << kw() << " (" << ks()
<< "), kc = " << kc() << ", acc = " << yAcc[i * kc() + k];
ASSERT_EQ(
uint32_t(yRef[i * kc() + k]), uint32_t(y[i * yStride() + k]))
<< "at pixel " << i << ", channel " << k << ", n = " << n()
<< ", ks = " << kh() << 'x' << kw() << " (" << ks()
<< ", ks = " << kh() << "x" << kw() << " (" << ks()
<< "), kc = " << kc() << ", acc = " << yAcc[i * kc() + k];
}
}
@ -396,12 +396,12 @@ class AvgPoolMicrokernelTester {
ASSERT_NEAR(
float(int32_t(y[i * yStride() + k])), yFP[i * kc() + k], 0.5001f)
<< "at pixel " << i << ", channel " << k << ", n = " << n()
<< ", ks = " << kh() << 'x' << kw() << " (" << ks()
<< ", ks = " << kh() << "x" << kw() << " (" << ks()
<< "), kc = " << kc() << ", acc = " << yAcc[i * kc() + k];
ASSERT_EQ(
uint32_t(yRef[i * kc() + k]), uint32_t(y[i * yStride() + k]))
<< "at pixel " << i << ", channel " << k << ", n = " << n()
<< ", ks = " << kh() << 'x' << kw() << " (" << ks()
<< ", ks = " << kh() << "x" << kw() << " (" << ks()
<< "), kc = " << kc() << ", acc = " << yAcc[i * kc() + k];
}
}

View File

@ -232,7 +232,7 @@ class MaxPoolMicrokernelTester {
ASSERT_EQ(
uint32_t(yRef[i * kc() + k]), uint32_t(y[i * yStride() + k]))
<< "at pixel " << i << ", channel " << k << ", n = " << n()
<< ", ks = " << kh() << 'x' << kw() << " (" << ks()
<< ", ks = " << kh() << "x" << kw() << " (" << ks()
<< "), kc = " << kc();
}
}

View File

@ -17,7 +17,7 @@ inline std::vector<T> _expand_param_if_needed(
std::ostringstream ss;
ss << "expected " << param_name << " to be a single integer value or a "
<< "list of " << expected_dim << " values to match the convolution "
<< "dimensions, but got " << param_name << '=' << list_param;
<< "dimensions, but got " << param_name << "=" << list_param;
TORCH_CHECK(false, ss.str());
} else {
return list_param.vec();

View File

@ -358,9 +358,9 @@ std::string Adapter::stringize() const {
std::string device_type = get_device_type_str(properties.deviceType);
VkPhysicalDeviceLimits limits = properties.limits;
ss << '{' << std::endl;
ss << "{" << std::endl;
ss << " Physical Device Info {" << std::endl;
ss << " apiVersion: " << v_major << '.' << v_minor << std::endl;
ss << " apiVersion: " << v_major << "." << v_minor << std::endl;
ss << " driverversion: " << properties.driverVersion << std::endl;
ss << " deviceType: " << device_type << std::endl;
ss << " deviceName: " << properties.deviceName << std::endl;
@ -371,7 +371,7 @@ std::string Adapter::stringize() const {
#define PRINT_LIMIT_PROP_VEC3(name) \
ss << " " << std::left << std::setw(36) << #name << limits.name[0] \
<< ',' << limits.name[1] << ',' << limits.name[2] << std::endl;
<< "," << limits.name[1] << "," << limits.name[2] << std::endl;
ss << " Physical Device Limits {" << std::endl;
PRINT_LIMIT_PROP(maxImageDimension1D);
@ -425,7 +425,7 @@ std::string Adapter::stringize() const {
;
}
ss << " ]" << std::endl;
ss << '}';
ss << "}";
return ss.str();
}

View File

@ -33,7 +33,7 @@ std::ostream& operator<<(std::ostream& out, const VkResult result) {
VK_RESULT_CASE(VK_ERROR_FORMAT_NOT_SUPPORTED)
VK_RESULT_CASE(VK_ERROR_FRAGMENTED_POOL)
default:
out << "VK_ERROR_UNKNOWN (VkResult " << result << ')';
out << "VK_ERROR_UNKNOWN (VkResult " << result << ")";
break;
}
return out;
@ -46,7 +46,7 @@ std::ostream& operator<<(std::ostream& out, const VkResult result) {
//
std::ostream& operator<<(std::ostream& out, const SourceLocation& loc) {
out << loc.function << " at " << loc.file << ':' << loc.line;
out << loc.function << " at " << loc.file << ":" << loc.line;
return out;
}
@ -66,7 +66,7 @@ Error::Error(SourceLocation source_location, const char* cond, std::string msg)
: msg_(std::move(msg)), source_location_{source_location} {
std::ostringstream oss;
oss << "Exception raised from " << source_location_ << ": ";
oss << '(' << cond << ") is false! ";
oss << "(" << cond << ") is false! ";
oss << msg_;
what_ = oss.str();
}

View File

@ -173,8 +173,8 @@ void QueryPool::extract_results() {
static std::string stringize(const VkExtent3D& extents) {
std::stringstream ss;
ss << '{' << extents.width << ", " << extents.height << ", " << extents.depth
<< '}';
ss << "{" << extents.width << ", " << extents.height << ", " << extents.depth
<< "}";
return ss.str();
}

View File

@ -149,7 +149,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL debug_report_callback_fn(
(void)flags;
std::stringstream stream;
stream << layer_prefix << ' ' << message_code << ' ' << message << std::endl;
stream << layer_prefix << " " << message_code << " " << message << std::endl;
const std::string log = stream.str();
std::cout << log;

View File

@ -253,7 +253,7 @@ using vec4 = vec<4u>;
// uvec3 is the type representing tensor extents. Useful for debugging.
inline std::ostream& operator<<(std::ostream& os, const uvec3& v) {
os << '(' << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ')';
os << "(" << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ")";
return os;
}

View File

@ -246,7 +246,7 @@ void TestToCFloat() {
void TestToString() {
Tensor b = ones({3, 7}) * .0000001f;
std::stringstream s;
s << b << '\n';
s << b << "\n";
std::string expect = "1e-07 *";
ASSERT_EQ_RESOLVED(s.str().substr(0, expect.size()), expect);
}

View File

@ -33,7 +33,7 @@ struct Foo {
static void apply(Tensor a, Tensor b) {
scalar_type s = 1;
std::stringstream ss;
ss << "hello, dispatch: " << a.toString() << s << '\n';
ss << "hello, dispatch: " << a.toString() << s << "\n";
auto data = (scalar_type*)a.data_ptr();
(void)data;
}
@ -73,8 +73,8 @@ TEST(TestScalar, TestScalar) {
Scalar bar = 3.0;
Half h = bar.toHalf();
Scalar h2 = h;
cout << "H2: " << h2.toDouble() << ' ' << what.toFloat() << ' '
<< bar.toDouble() << ' ' << what.isIntegral(false) << '\n';
cout << "H2: " << h2.toDouble() << " " << what.toFloat() << " "
<< bar.toDouble() << " " << what.isIntegral(false) << "\n";
auto gen = at::detail::getDefaultCPUGenerator();
{
// See Note [Acquire lock when using random generators]
@ -84,7 +84,7 @@ TEST(TestScalar, TestScalar) {
}
if (at::hasCUDA()) {
auto t2 = zeros({4, 4}, at::kCUDA);
cout << &t2 << '\n';
cout << &t2 << "\n";
}
auto t = ones({4, 4});
@ -129,7 +129,7 @@ TEST(TestScalar, TestScalar) {
std::stringstream ss;
// NOLINTNEXTLINE(cppcoreguidelines-avoid-goto,hicpp-avoid-goto)
ASSERT_NO_THROW(
ss << "hello, dispatch" << x.toString() << s << '\n');
ss << "hello, dispatch" << x.toString() << s << "\n");
auto data = (scalar_t*)x.data_ptr();
(void)data;
});

View File

@ -1,5 +1,5 @@
#include <ATen/ATen.h>
int main() {
std::cout << at::ones({3,4}, at::CPU(at::kFloat)) << '\n';
std::cout << at::ones({3,4}, at::CPU(at::kFloat)) << "\n";
}

View File

@ -1828,9 +1828,9 @@ namespace {
#endif
EXPECT_EQ(u16, c10::detail::fp16_ieee_from_fp32_value(f32s[i]))
<< "Test failed for float to uint16 " << f32s[i] << '\n';
<< "Test failed for float to uint16 " << f32s[i] << "\n";
EXPECT_EQ(x, c10::detail::fp16_ieee_to_fp32_value(u16))
<< "Test failed for uint16 to float " << u16 << '\n';
<< "Test failed for uint16 to float " << u16 << "\n";
}
}
TEST(FP8E4M3Test, FP8E4M3ConversionFloat) {
@ -1848,10 +1848,10 @@ namespace {
EXPECT_TRUE(std::isnan(f32));
} else {
EXPECT_EQ(f32, c10::detail::fp8e4m3fn_to_fp32_value(input))
<< "Test failed for u8 to float " << input << '\n';
<< "Test failed for u8 to float " << input << "\n";
}
EXPECT_EQ(u8, c10::detail::fp8e4m3fn_from_fp32_value(f32))
<< "Test failed for float to u8 " << f32 << '\n';
<< "Test failed for float to u8 " << f32 << "\n";
}
}
TEST(FP8E4M3Test, FP8E4M3BinaryAdd) {
@ -2015,10 +2015,10 @@ namespace {
EXPECT_TRUE(std::isnan(f32));
} else {
EXPECT_EQ(f32, c10::detail::fp8e5m2_to_fp32_value(input))
<< "Test failed for u8 to float " << input << '\n';
<< "Test failed for u8 to float " << input << "\n";
}
EXPECT_EQ(u8, c10::detail::fp8e5m2_from_fp32_value(f32))
<< "Test failed for float to u8 " << f32 << '\n';
<< "Test failed for float to u8 " << f32 << "\n";
}
}
TEST(FP8E5M2Test, FP8E5M2BinaryAdd) {

View File

@ -19,7 +19,7 @@ TEST(Vitals, Basic) {
c10::utils::set_env("TORCH_VITAL", "1");
TORCH_VITAL_DEFINE(Testing);
TORCH_VITAL(Testing, Attribute0) << 1;
TORCH_VITAL(Testing, Attribute1) << '1';
TORCH_VITAL(Testing, Attribute1) << "1";
TORCH_VITAL(Testing, Attribute2) << 1.0f;
TORCH_VITAL(Testing, Attribute3) << 1.0;
auto t = at::ones({1, 1});

View File

@ -129,14 +129,14 @@ void showRtol(const at::Tensor& a, const at::Tensor& b) {
std::cout << "Max Diff allowed: " << maxDiff << std::endl;
if (diff.sizes().size() == 2) {
for (const auto y : c10::irange(diff.sizes()[0])) {
std::cout << y << ':';
std::cout << y << ":";
for (const auto x : c10::irange(diff.sizes()[1])) {
float diff_xy = diff[y][x].item<float>();
if (diff_xy > maxDiff) {
std::cout << std::setw(5) << x;
}
else {
std::cout << std::setw(5) << ' ';
std::cout << std::setw(5) << " ";
}
}
std::cout << std::endl;
@ -3276,7 +3276,7 @@ TEST_F(VulkanAPITest, masked_fill_invalidinputs_exceptions) {
void print_shape(const std::vector<int64_t>& shape) {
for (const auto& num : shape) {
std::cout << num << ' ';
std::cout << num << " ";
}
}
@ -3367,7 +3367,7 @@ void test_masked_fill_scalar(
print_shape(tmp_curr_input_shape);
std::cout << "], and mask of shape [";
print_shape(tmp_curr_mask_shape);
std::cout << ']' << std::endl;
std::cout << "]" << std::endl;
}
ASSERT_TRUE(check);
@ -4542,9 +4542,9 @@ void test_softmax(const at::IntArrayRef shape, bool log_softmax = false) {
if (!check) {
std::cout << "Softmax test failed on axis " << dim << "for tensor dims {";
for (uint32_t place = 0; place < shape.size() - 1; place++) {
std::cout << shape[place] << ' ';
std::cout << shape[place] << " ";
}
std::cout << shape.back() << '}' << std::endl;
std::cout << shape.back() << "}" << std::endl;
showRtol(out_cpu, out_vulkan.cpu());
}
ASSERT_TRUE(check);

View File

@ -95,7 +95,7 @@ void showRtol(
std::cout << "Max Diff found is: " << diff.max().item<double>() << std::endl;
if (diff.sizes().size() == 2) {
for (const auto y : c10::irange(diff.sizes()[0])) {
std::cout << y << ':';
std::cout << y << ":";
for (const auto x : c10::irange(diff.sizes()[1])) {
double diff_xy = diff[y][x].item<double>();
if (diff_xy > maxDiff) {
@ -109,7 +109,7 @@ void showRtol(
}
}
} else {
std::cout << std::setw(5) << ' ';
std::cout << std::setw(5) << " ";
}
}
std::cout << std::endl;
@ -148,19 +148,19 @@ using at::native::vulkan::api::utils::ivec4;
using at::native::vulkan::api::utils::vec4;
std::ostream& operator<<(std::ostream& os, const vec4& v) {
os << '(' << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ", "
<< v.data[3u] << ')';
os << "(" << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ", "
<< v.data[3u] << ")";
return os;
}
std::ostream& operator<<(std::ostream& os, const ivec3& v) {
os << '(' << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ')';
os << "(" << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ")";
return os;
}
std::ostream& operator<<(std::ostream& os, const ivec4& v) {
os << '(' << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ", "
<< v.data[3u] << ')';
os << "(" << v.data[0u] << ", " << v.data[1u] << ", " << v.data[2u] << ", "
<< v.data[3u] << ")";
return os;
}
@ -3379,51 +3379,51 @@ bool _test_quantized_linear(
showRtol(out_cpu_dequant, out_vk_to_cpu_dequant);
}
if (xpos != -1 && ypos != -1) {
std::cout << "\nFailure caused on row/col: " << ypos << '/' << xpos
<< '\n';
std::cout << "\nFailure caused on row/col: " << ypos << "/" << xpos
<< "\n";
std::cout << "Input tensor scale: " << scale << " zerop: " << zero_point
<< '\n';
std::cout << "Input tensor row " << ypos << '\n';
<< "\n";
std::cout << "Input tensor row " << ypos << "\n";
for (int i = 0; i < input_cpu.sizes()[1]; i++) {
std::cout << input_cpu[ypos][i].item<double>() << ", ";
}
std::cout << '\n';
std::cout << "\n";
std::cout << "Weight tensor scale: " << w_scale
<< " zerop: " << w_zero_point << '\n';
std::cout << "Weight tensor col " << xpos << '\n';
<< " zerop: " << w_zero_point << "\n";
std::cout << "Weight tensor col " << xpos << "\n";
for (int i = 0; i < weight.sizes()[1]; i++) {
std::cout << weight[xpos][i].item<double>() << ", ";
}
std::cout << '\n';
std::cout << "\n";
std::cout << "Input tensor quantized row " << ypos << " with dtype "
<< (input_quant_dtype_int8 ? "QInt8" : "QUInt8") << '\n';
<< (input_quant_dtype_int8 ? "QInt8" : "QUInt8") << "\n";
for (int i = 0; i < input_cpu.sizes()[1]; i++) {
std::cout << input_cpu_quantized[ypos][i].item<double>() << ", ";
}
std::cout << '\n';
std::cout << "\n";
std::cout << "Weight tensor quantized col " << xpos << " with dtype "
<< (weight_quant_dtype_int8 ? "QInt8" : "QUInt8") << '\n';
<< (weight_quant_dtype_int8 ? "QInt8" : "QUInt8") << "\n";
for (int i = 0; i < weight.sizes()[1]; i++) {
std::cout << weight_cpu_quantized[xpos][i].item<double>() << ", ";
}
std::cout << '\n';
std::cout << "\n";
std::cout << "bias tensor\n";
for (int i = 0; i < bias.sizes()[0]; i++) {
std::cout << bias[i].item<double>() << ", ";
}
std::cout << '\n';
std::cout << "\n";
std::cout << "out_scale: " << out_scale
<< " out_zero_point: " << out_zero_point << '\n';
<< " out_zero_point: " << out_zero_point << "\n";
std::cout << "cpu unmatched output: "
<< out_cpu_dequant[ypos][xpos].item<double>() << '\n';
<< out_cpu_dequant[ypos][xpos].item<double>() << "\n";
std::cout << "vk unmatched output: "
<< out_vk_to_cpu_dequant[ypos][xpos].item<double>() << '\n';
<< out_vk_to_cpu_dequant[ypos][xpos].item<double>() << "\n";
}
}
return check;

View File

@ -9,28 +9,61 @@ def check_perf_csv(filename, threshold, threshold_scale):
"""
Basic performance checking.
"""
try:
df = pd.read_csv(filename)
except FileNotFoundError:
print(f"Error: File {filename} not found")
sys.exit(1)
df = pd.read_csv(filename)
effective_threshold = threshold * threshold_scale
print(f"Checking {filename} (speedup threshold >= {effective_threshold:.2f}x)\n")
failed = []
for _, row in df.iterrows():
model_name = row["name"]
speedup = row["speedup"]
if speedup < threshold * threshold_scale:
failed.append(model_name)
speedup = float(row["speedup"])
abs_latency = float(row["abs_latency"])
compilation_latency = float(row["compilation_latency"])
compression_ratio = float(row["compression_ratio"])
eager_peak_mem = float(row["eager_peak_mem"])
dynamo_peak_mem = float(row["dynamo_peak_mem"])
print(f"{model_name:34} {speedup}")
perf_summary = f"{model_name:34} speedup={speedup:.3f}x"
if pd.notna(abs_latency):
perf_summary += f", latency={abs_latency:.1f} ms/iter"
if pd.notna(compilation_latency):
perf_summary += f", compile={compilation_latency:.3f}s"
if pd.notna(compression_ratio):
perf_summary += f", mem_ratio={1 / compression_ratio:.2f}x"
if pd.notna(eager_peak_mem) and pd.notna(dynamo_peak_mem):
perf_summary += (
f" (eager={eager_peak_mem:.1f} GB, dynamo={dynamo_peak_mem:.1f} GB)"
)
if speedup < effective_threshold:
failed.append((model_name, speedup))
print(perf_summary)
if failed:
print(
textwrap.dedent(
f"""
Error {len(failed)} models performance regressed
{" ".join(failed)}
Error {len(failed)} model(s) performance regressed
{" ".join([name for name, _ in failed])}
"""
)
)
for name, sp in sorted(failed, key=lambda x: x[1]):
pct_from_target = (sp / effective_threshold - 1.0) * 100.0
print(
f" - {name}: {sp:.3f}x (< {effective_threshold:.2f}x; {pct_from_target:.1f}% from target)"
)
sys.exit(1)
else:
print(
f"\nAll {len(df)} model(s) passed threshold check (>= {effective_threshold:.2f}x)"
)
if __name__ == "__main__":
@ -44,7 +77,7 @@ if __name__ == "__main__":
"-s",
type=float,
default=1.0,
help="multiple threshold by this value to relax the check",
help="multiply threshold by this value to relax the check",
)
args = parser.parse_args()
check_perf_csv(args.file, args.threshold, args.threshold_scale)

View File

@ -2379,7 +2379,9 @@ class BenchmarkRunner:
print(
f"Load model outputs from {self.args.compare_model_outputs_with} to compare"
)
saved_result = torch.load(self.args.compare_model_outputs_with)
saved_result = torch.load(
self.args.compare_model_outputs_with, weights_only=False
)
is_bitwise_same = bitwise_same(saved_result, new_result)
if not is_bitwise_same:
print(

View File

@ -176,7 +176,7 @@ std::ostream& operator<<(std::ostream& os, DispatchKeySet ts) {
os << k;
first = false;
}
os << ')';
os << ")";
return os;
}

View File

@ -92,13 +92,6 @@ inline bool isComplexType(ScalarType t) {
t == ScalarType::ComplexDouble);
}
inline bool isQIntType(ScalarType t) {
// Don't forget to extend this when adding new QInt types
return t == ScalarType::QInt8 || t == ScalarType::QUInt8 ||
t == ScalarType::QInt32 || t == ScalarType::QUInt4x2 ||
t == ScalarType::QUInt2x4;
}
inline bool isBitsType(ScalarType t) {
return t == ScalarType::Bits1x8 || t == ScalarType::Bits2x4 ||
t == ScalarType::Bits4x2 || t == ScalarType::Bits8 ||

View File

@ -33,7 +33,7 @@ std::ostream& operator<<(std::ostream& stream, const TensorOptions& options) {
} else {
stream << "(nullopt)";
}
stream << ')';
stream << ")";
return stream;
}

View File

@ -136,7 +136,7 @@ std::string c10_retrieve_device_side_assertion_info() {
// Something failed, let's talk about that
oss << failures_found
<< " CUDA device-side assertion failures were found on GPU #"
<< device_num << '!' << std::endl;
<< device_num << "!" << std::endl;
if (assertion_data_for_device.assertion_count >
C10_CUDA_DSA_ASSERTION_COUNT) {
oss << "But at least " << assertion_data_for_device.assertion_count
@ -151,17 +151,17 @@ std::string c10_retrieve_device_side_assertion_info() {
oss << "Assertion failure " << i << std::endl;
oss << " GPU assertion failure message = " << self.assertion_msg
<< std::endl;
oss << " File containing assertion = " << self.filename << ':'
oss << " File containing assertion = " << self.filename << ":"
<< self.line_number << std::endl;
oss << " Device function containing assertion = " << self.function_name
<< std::endl;
oss << " Thread ID that failed assertion = [" << self.thread_id[0] << ','
<< self.thread_id[1] << ',' << self.thread_id[2] << ']' << std::endl;
oss << " Block ID that failed assertion = [" << self.block_id[0] << ','
<< self.block_id[1] << ',' << self.block_id[2] << ']' << std::endl;
oss << " Thread ID that failed assertion = [" << self.thread_id[0] << ","
<< self.thread_id[1] << "," << self.thread_id[2] << "]" << std::endl;
oss << " Block ID that failed assertion = [" << self.block_id[0] << ","
<< self.block_id[1] << "," << self.block_id[2] << "]" << std::endl;
if (launch_info.generation_number == self.caller) {
oss << " File containing kernel launch = "
<< launch_info.launch_filename << ':' << launch_info.launch_linenum
<< launch_info.launch_filename << ":" << launch_info.launch_linenum
<< std::endl;
oss << " Function containing kernel launch = "
<< launch_info.launch_function << std::endl;
@ -175,7 +175,7 @@ std::string c10_retrieve_device_side_assertion_info() {
if (launch_registry.gather_launch_stacktrace) {
oss << "Launch stacktracing disabled." << std::endl;
} else {
oss << '\n' << launch_info.launch_stacktrace << std::endl;
oss << "\n" << launch_info.launch_stacktrace << std::endl;
}
} else {
oss << " CPU launch site info: Unavailable, the circular queue wrapped around. Increase `CUDAKernelLaunchRegistry::max_size`."

View File

@ -20,22 +20,6 @@
} \
} while (0)
#define C10_CUDA_DRIVER_CHECK_GOTO(EXPR, NEXT) \
do { \
CUresult __err = EXPR; \
if (__err != CUDA_SUCCESS) { \
const char* err_str; \
CUresult get_error_str_err [[maybe_unused]] = \
c10::cuda::DriverAPI::get()->cuGetErrorString_(__err, &err_str); \
if (get_error_str_err != CUDA_SUCCESS) { \
TORCH_WARN("CUDA driver error: unknown error"); \
} else { \
TORCH_WARN("CUDA driver error: ", err_str); \
} \
goto NEXT; \
} \
} while (0)
// The integer in the second column specifies the requested CUDA Driver API
// version. The dynamic loader will accept a driver with a newer version, but it
// ensures that the requested symbol exists in *at least* the specified version

View File

@ -435,7 +435,7 @@ TEST(DispatchKeySet, TestFunctionalityDispatchKeyToString) {
if (i > 0) {
ASSERT_TRUE(res.find("Unknown") == std::string::npos)
<< i << " (before is " << toString(static_cast<DispatchKey>(i - 1))
<< ')';
<< ")";
} else {
ASSERT_TRUE(res.find("Unknown") == std::string::npos) << i;
}

View File

@ -96,10 +96,10 @@ TEST(HalfConversionTest, TestPorableConversion) {
for (auto x : inputs) {
auto target = c10::detail::fp16_ieee_to_fp32_value(x);
EXPECT_EQ(halfbits2float(x), target)
<< "Test failed for uint16 to float " << x << '\n';
<< "Test failed for uint16 to float " << x << "\n";
EXPECT_EQ(
float2halfbits(target), c10::detail::fp16_ieee_from_fp32_value(target))
<< "Test failed for float to uint16" << target << '\n';
<< "Test failed for float to uint16" << target << "\n";
}
}

View File

@ -98,7 +98,7 @@ struct Noncopyable {
};
std::ostream& operator<<(std::ostream& out, const Noncopyable& nc) {
out << "Noncopyable(" << nc.x << ')';
out << "Noncopyable(" << nc.x << ")";
return out;
}
} // namespace

View File

@ -204,13 +204,13 @@ ArrayRef(const std::initializer_list<T>&) -> ArrayRef<T>;
template <typename T>
std::ostream& operator<<(std::ostream& out, ArrayRef<T> list) {
int i = 0;
out << '[';
out << "[";
for (const auto& e : list) {
if (i++ > 0)
out << ", ";
out << e;
}
out << ']';
out << "]";
return out;
}

View File

@ -106,8 +106,8 @@ class GetBacktraceImpl {
/*length*/ &length,
/*status*/ &status);
os << " frame #" << idx++ << '\t'
<< ((demangled != NULL && status == 0) ? demangled : symbol) << '['
os << " frame #" << idx++ << "\t"
<< ((demangled != NULL && status == 0) ? demangled : symbol) << "["
<< addr << "]\t" << std::endl;
}
free(demangled);
@ -274,7 +274,7 @@ class GetBacktraceImpl {
} else {
// In the edge-case where we couldn't parse the frame string, we can
// just use it directly (it may have a different format).
stream << symbols[frame_number] << '\n';
stream << symbols[frame_number] << "\n";
}
}
@ -413,8 +413,8 @@ class GetBacktraceImpl {
<< back_trace_[i_frame] << std::dec;
if (with_symbol) {
stream << std::setfill('0') << std::setw(16) << std::uppercase
<< std::hex << p_symbol->Address << std::dec << ' ' << module
<< '!' << p_symbol->Name;
<< std::hex << p_symbol->Address << std::dec << " " << module
<< "!" << p_symbol->Name;
} else {
stream << " <unknown symbol address> " << module << "!<unknown symbol>";
}
@ -424,7 +424,7 @@ class GetBacktraceImpl {
} else {
stream << "<unknown file> @ <unknown line number>";
}
stream << ']' << std::endl;
stream << "]" << std::endl;
}
return stream.str();

View File

@ -1,5 +1,4 @@
#include <c10/util/Exception.h>
#include <c10/util/FileSystem.h>
#include <c10/util/Logging.h>
#include <c10/util/Type.h>
@ -28,7 +27,7 @@ Error::Error(
const void* caller)
: Error(
str("[enforce fail at ",
c10::filesystem::path(file).filename(),
detail::StripBasename(file),
":",
line,
"] ",
@ -45,7 +44,7 @@ std::string Error::compute_what(bool include_backtrace) const {
if (context_.size() == 1) {
// Fold error and context in one line
oss << " (" << context_[0] << ')';
oss << " (" << context_[0] << ")";
} else {
for (const auto& c : context_) {
oss << "\n " << c;
@ -53,7 +52,7 @@ std::string Error::compute_what(bool include_backtrace) const {
}
if (include_backtrace && backtrace_) {
oss << '\n' << backtrace_->get();
oss << "\n" << backtrace_->get();
}
return oss.str();
@ -248,7 +247,7 @@ void WarningHandler::process(const Warning& warning) {
LOG_AT_FILE_LINE(
WARNING, warning.source_location().file, warning.source_location().line)
<< "Warning: " << warning.msg() << " (function "
<< warning.source_location().function << ')';
<< warning.source_location().function << ")";
}
std::string GetExceptionString(const std::exception& e) {

View File

@ -1,5 +1,4 @@
#include <c10/util/Backtrace.h>
#include <c10/util/FileSystem.h>
#include <c10/util/Flags.h>
#include <c10/util/Lazy.h>
#include <c10/util/Logging.h>
@ -474,12 +473,13 @@ MessageLogger::MessageLogger(
if (GLOBAL_RANK != -1) {
stream_ << "[rank" << GLOBAL_RANK << "]:";
}
stream_ << '[' << CAFFE2_SEVERITY_PREFIX[std::min(4, GLOG_FATAL - severity_)]
stream_ << "[" << CAFFE2_SEVERITY_PREFIX[std::min(4, GLOG_FATAL - severity_)]
<< (timeinfo->tm_mon + 1) * 100 + timeinfo->tm_mday
<< std::setfill('0') << ' ' << std::setw(2) << timeinfo->tm_hour
<< ':' << std::setw(2) << timeinfo->tm_min << ':' << std::setw(2)
<< timeinfo->tm_sec << '.' << std::setw(9) << ns << ' '
<< c10::filesystem::path(file).filename() << ':' << line << "] ";
<< std::setfill('0') << " " << std::setw(2) << timeinfo->tm_hour
<< ":" << std::setw(2) << timeinfo->tm_min << ":" << std::setw(2)
<< timeinfo->tm_sec << "." << std::setw(9) << ns << " "
<< c10::detail::StripBasename(std::string(file)) << ":" << line
<< "] ";
}
// Output the contents of the stream to the proper channel on destruction.
@ -488,7 +488,7 @@ MessageLogger::~MessageLogger() noexcept(false) {
// Nothing needs to be logged.
return;
}
stream_ << '\n';
stream_ << "\n";
#ifdef ANDROID
static const int android_log_levels[] = {
ANDROID_LOG_FATAL, // LOG_FATAL

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