Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files- build/torch211-cxx11-cu128-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so} +2 -2
- build/torch211-cxx11-cu128-aarch64-linux/_ops.py +3 -3
- build/torch211-cxx11-cu128-aarch64-linux/metadata.json +3 -3
- build/torch211-cxx11-cu128-aarch64-linux/metadata.json.sigstore +1 -1
- build/torch211-cxx11-cu130-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so} +2 -2
- build/torch211-cxx11-cu130-aarch64-linux/_ops.py +3 -3
- build/torch211-cxx11-cu130-aarch64-linux/metadata.json +3 -3
- build/torch211-cxx11-cu130-aarch64-linux/metadata.json.sigstore +1 -1
- build/torch212-cxx11-cu130-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so} +2 -2
- build/torch212-cxx11-cu130-aarch64-linux/_ops.py +3 -3
- build/torch212-cxx11-cu130-aarch64-linux/metadata.json +3 -3
- build/torch212-cxx11-cu130-aarch64-linux/metadata.json.sigstore +1 -1
- build/torch212-cxx11-cu132-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so} +2 -2
- build/torch212-cxx11-cu132-aarch64-linux/_ops.py +3 -3
- build/torch212-cxx11-cu132-aarch64-linux/metadata.json +3 -3
- build/torch212-cxx11-cu132-aarch64-linux/metadata.json.sigstore +1 -1
- build/torch213-cxx11-cu130-aarch64-linux/__init__.py +163 -0
- build/torch213-cxx11-cu130-aarch64-linux/_flash_mla_cuda_2e4b976.abi3.so +3 -0
- build/torch213-cxx11-cu130-aarch64-linux/_ops.py +9 -0
- build/torch213-cxx11-cu130-aarch64-linux/flash_mla/__init__.py +26 -0
- build/torch213-cxx11-cu130-aarch64-linux/flash_mla_interface.py +435 -0
- build/torch213-cxx11-cu130-aarch64-linux/metadata.json +24 -0
- build/torch213-cxx11-cu130-aarch64-linux/metadata.json.sigstore +1 -0
- build/torch213-cxx11-cu132-aarch64-linux/__init__.py +163 -0
- build/torch213-cxx11-cu132-aarch64-linux/_flash_mla_cuda_2e4b976.abi3.so +3 -0
- build/torch213-cxx11-cu132-aarch64-linux/_ops.py +9 -0
- build/torch213-cxx11-cu132-aarch64-linux/flash_mla/__init__.py +26 -0
- build/torch213-cxx11-cu132-aarch64-linux/flash_mla_interface.py +435 -0
- build/torch213-cxx11-cu132-aarch64-linux/metadata.json +24 -0
- build/torch213-cxx11-cu132-aarch64-linux/metadata.json.sigstore +1 -0
build/torch211-cxx11-cu128-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d0571149294fa7f77208a3180550032df103e09a77de1084adeb9865be32270f
|
| 3 |
+
size 1659488
|
build/torch211-cxx11-cu128-aarch64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch211-cxx11-cu128-aarch64-linux/metadata.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
@@ -14,8 +14,8 @@
|
|
| 14 |
"algorithm": "sha256",
|
| 15 |
"files": {
|
| 16 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 17 |
-
"
|
| 18 |
-
"_ops.py": "
|
| 19 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 20 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 21 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 14 |
"algorithm": "sha256",
|
| 15 |
"files": {
|
| 16 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 17 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "0FcRSSlPp/dyCKMYBVADLfED4Jp33hCEreuYZb4yJw8=",
|
| 18 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 19 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 20 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 21 |
}
|
build/torch211-cxx11-cu128-aarch64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHczCCBvmgAwIBAgIUfho/JvaGSx8JjugF8P0Z2T2z0sYwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNjE4MDY1NTQ5WhcNMjYwNjE4MDcwNTQ5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjmWujLBjPhpXHQ3OGQFbG0/JxC6H2ZesfX+PeM4hXDOs4hHL1Oww8s5xpIiPkzEjrxFOCNSWQ/7ErKICqDBNAKOCBhgwggYUMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUwwfh4qRitZ6rL9HPQyNcpRaOvh8wHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wdQYDVR0RAQH/BGswaYZnaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL3NpZ24tb2xkLWJ1aWxkcy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDhhNmJlN2JjNzc1NjVhZDY1YzhhZTJkZWI0NTY0ODJmZjZhYTUwZWQwHQYKKwYBBAGDvzABBAQPU2lnbiBvbGQgYnVpbGRzMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wdwYKKwYBBAGDvzABCQRpDGdodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1vbGQtYnVpbGRzLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzB3BgorBgEEAYO/MAESBGkMZ2h0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9zaWduLW9sZC1idWlsZHMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg4YTZiZTdiYzc3NTY1YWQ2NWM4YWUyZGViNDU2NDgyZmY2YWE1MGVkMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzI3NzQxNDY0ODQyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYoGCisGAQQB1nkCBAIEfAR6AHgAdgDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAZ7Zg7tMAAAEAwBHMEUCIQDez3SW8vxx/ybWpNDOEPxsXzkFHHnKWNP9ohUiDoH7jgIgT4/oXbyqgfG5sL1flNzch7TbcPseNKF/u4YTVw4KriUwCgYIKoZIzj0EAwMDaAAwZQIxAJgfqt9ag08mYjgCx8Ab7mNC+jscYzIFmoN/fMlNApvfeM7SXfROiJ4ltB/HZudiYgIwHHKqeTOeFZrEyqb6Du53rvbdwjsZYAMhXBNLIHMNhhAU3/gFV5YQE9W0iTW4UPyr"},"tlogEntries":[{"logIndex":"1857837130","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1781765749","inclusionPromise":{"signedEntryTimestamp":"MEUCICarXZO0UVPsIRJ86/T9IfWi/mELkJThd6MfQZJwt3ZUAiEA2Ly01dcUJJuuvrB0HAfwPUwDmvwlsPTjKvP53Jvgs+A="},"inclusionProof":{"logIndex":"1735932868","rootHash":"GV2VjAVhalvbiI/j27UJwCHVv9x68h5kbZoLp4Wwnh0=","treeSize":"1735932880","hashes":["TpkVHv71tKfPodd+MCU8ucnFEQpSxJcyDV6MCZMpaUM=","br7kKlHl6KYcYwwvHnTYhmlplPFokwNib/3hhgkw9YM=","IS1zm9Y8MgK4w9urUMYOtQ7INGvMbFB/dGfYB2ocotw=","2ZXyVN5eLg73DMQ5BnctKDf4vWq9Y5aVZxUoskNJ8BE=","E4wMBPz22erRHAoqwxyu4HGt+BEJP8zNunKnb1YSD+o=","kybk3WubxHhcMt93UodxPlnjrsqB+MZJhHkpgcpbNeo=","9lrNQdv4/pZPvg1jfcr2AwJPYYGyk2HjMX4qdcuwNz4=","OaqFqwnlTFV530PnGHbl0tZCuV6STyhyguCll0pqR/o=","eTWRazxk25OLLgWzA4XIgFtjkVp25o1NykOamizebtI=","uMjlW8ZYxFHFISKF1gqKEB4T/pfjDh7vzUC1E7W0/xU=","Ore1A2Ceavap3m5U3ZAHLkUinE8F4IgttCeJDxxaK98=","95goX8Iw4H4P6V4eHvRqTdVdViLbhEhsF6i7ICnz/+A=","sWDh7SjDHbJf3HWKGRxiURh6iIYrOzn4Zs37yIij6OA=","x7kXd4VRJvVmTHoSla2KyPQdKvGKDX26/7ST9OONR78=","U8wMiVDzFlmyqT7Nw1RSZYU9+fftsSkRhjpbyXnXUk8=","mqM7J+i75IpuD09QejiUBjeH85AZa+fSm4RXXFmj3lI=","72FC5FYLhxB4a4iiC956o0B/fT54ip4R41vsw2QBKtU=","lYGQ9ibwC8+smMkPQ6TchJm3H9Nc/aTYLfdRacGFChw=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1735932880\nGV2VjAVhalvbiI/j27UJwCHVv9x68h5kbZoLp4Wwnh0=\n\n— rekor.sigstore.dev wNI9ajBEAiAsQiXnKxGnrT0Xg4lH6/URuJVj5VnHKqQxf/Nj4y2nlwIgPzRm/H3RrURxV02O3LaZEBO5YX0YJPk3VKB8ALrLmzU=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwNWQwZjdmZDNiNzU0NTk0ZDBjZjg2NzM5ZDMyN2QwMGI2NjljNDliZDYyZjU1YTA1ZWExNTVlZmY4NzdjOTI0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJR1dtOFlwRGFhdmpLMmh1Q3lJaDVzNzRjbEhVUFZpZHBQK044MlYxUm13ekFpRUEwM0psc1Z6OTN4cGJRTW1qMTlTVndQMFBKTmZwTmtJNkZqdlNQNG9TaG93PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaGpla05EUW5adFowRjNTVUpCWjBsVlptaHZMMHAyWVVkVGVEaEthblZuUmpoUU1Gb3lWREo2TUhOWmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDVxUlRSTlJGa3hUbFJSTlZkb1kwNU5hbGwzVG1wRk5FMUVZM2RPVkZFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZxYlZkMWFreENhbEJvY0ZoSVVUTlBSMUZHWWtjd0wwcDRRelpJTWxwbGMyWllLMUFLWlUwMGFGaEVUM00wYUVoTU1VOTNkemh6Tlhod1NXbFFhM3BGYW5KNFJrOURUbE5YVVM4M1JYSkxTVU54UkVKT1FVdFBRMEpvWjNkbloxbFZUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlYzZDJab0NqUnhVbWwwV2paeVREbElVRkY1VG1Od1VtRlBkbWc0ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJSUldVUldVakJTUVZGSUwwSkhjM2RoV1ZwdVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wNXdXakkwZEdJeWVHdE1WMG94Q21GWGVHdGplVFUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTlVKbmIzSkNaMFZGUVZsUEwwMUJSVUpDUTNSdlpFaFNkMk42YjNZS1RETlNkbUV5Vm5WTWJVWnFaRWRzZG1KdVRYVmFNbXd3WVVoV2FXUllUbXhqYlU1MlltNVNiR0p1VVhWWk1qbDBUVUk0UjBOcGMwZEJVVkZDWnpjNGR3cEJVVWxGUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVVJaUjBOcGMwZEJVVkZDWnpjNGQwRlJUVVZMUkdob1RtMUtiRTR5U21wT2VtTXhDazVxVm1oYVJGa3hXWHBvYUZwVVNtdGFWMGt3VGxSWk1FOUVTbTFhYWxwb1dWUlZkMXBYVVhkSVVWbExTM2RaUWtKQlIwUjJla0ZDUWtGUlVGVXliRzRLWW1sQ2RtSkhVV2RaYmxad1lrZFNlazFEYzBkRGFYTkhRVkZSUW1jM09IZEJVVlZGU0Zkb01Wb3laSEJpYldSdFdWZE9iRXd5ZEd4amJUVnNZa2hOZEFwWk1qbDBZbGhXZFdGWVVqVk5RakJIUTJselIwRlJVVUpuTnpoM1FWRlpSVVF6U214YWJrMTJZVWRXYUZwSVRYWmlWMFp3WW1wQk4wSm5iM0pDWjBWRkNrRlpUeTlOUVVWSlFrTXdUVXN5YURCa1NFSjZUMms0ZG1SSE9YSmFWelIxV1ZkT01HRlhPWFZqZVRWdVlWaFNiMlJYU2pGak1sWjVXVEk1ZFdSSFZuVUtaRU0xYW1JeU1IZGtkMWxMUzNkWlFrSkJSMFIyZWtGQ1ExRlNjRVJIWkc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFpoU0ZadVdqSnNkUXBhTWxwb1dUSlZkbUV5Vm5saWJWWnpZM2t4YW1JeU1YUmtWelZ3WkVocmRreHRaSEJrUjJneFdXazVNMkl6U25KYWJYaDJaRE5OZG1NeWJHNWlhVEYyQ21KSFVYUlpibFp3WWtkU2VreHViR2hpVjNoQlkyMVdiV041T1c5YVYwWnJZM2s1ZEZsWGJIVk5SR2RIUTJselIwRlJVVUpuTnpoM1FWRnZSVXRuZDI4S1QwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkZwRVFXSkNaMjl5UW1kRlJRcEJXVTh2VFVGRlRFSkJNRTFETTA1c1lrZFpkR0ZIT1hwa1IxWnJUVVZCUjBOcGMwZEJVVkZDWnpjNGQwRlJkMFZOWjNkM1lVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk5SR2RIUTJselIwRlJVVUlLWnpjNGQwRlJNRVZMWjNkdlQwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkFwYVJFRm1RbWR2Y2tKblJVVkJXVTh2VFVGRlQwSkNSVTFFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVFXRkNaMjl5UW1kRlJVRlpUeTlOUVVWUUNrSkJkMDFEYWtWM1RucEZNRTU2VlRGTmFtdDNUR2RaUzB0M1dVSkNRVWRFZG5wQlFrVkJVV2RFUWpWdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNSVkZSUzBSQlozbE9WR041VFVSak1FMTZRak5DWjI5eVFtZEZSUXBCV1U4dlRVRkZVMEpIYTAxYU1tZ3daRWhDZWs5cE9IWmFNbXd3WVVoV2FVeHRUblppVXpsdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2Q2t4WFRuWmlWekV4WW0xc01HVlRPSFZhTW13d1lVaFdhVXd6WkhaamJYUnRZa2M1TTJONU9YcGhWMlIxVEZjNWMxcERNV2xrVjJ4eldraE5kV1ZYUm5RS1lrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzVDBGWlMwdDNXVUpDUVVkRWRucEJRa1YzVVhGRVEyYzBXVlJhYVZwVVpHbFplbU16VGxSWk1RcFpWMUV5VGxkTk5GbFhWWGxhUjFacFRrUlZNazVFWjNsYWJWa3lXVmRGTVUxSFZtdE5RMFZIUTJselIwRlJVVUpuTnpoM1FWSlJSVVYzZDFKa01qbDVDbUV5V25OaU0yUm1Xa2RzZW1OSFJqQlpNbWQzV2tGWlMwdDNXVUpDUVVkRWRucEJRa1pSVWxkRVJsSnZaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV29LWWpJd2RtRklWbTVhTW14MVdqSmFhRmt5VlhaaE1sWjVZbTFXYzJONU1XcGlNakYwWkZjMWNHUklhM1paVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBKTXdwT2VsRjRUa1JaTUU5RVVYbE1Na1l3WkVkV2RHTklVbnBNZWtWM1JtZFpTMHQzV1VKQ1FVZEVkbnBCUWtablVVbEVRVnAzWkZkS2MyRlhUWGRTWjFsTENrdDNXVUpDUVVkRWRucEJRa2RCVVRSRVJGcDVXbGhDZGs5dGFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVUtUMjVLYkZwcWNIbGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMmRaYjBkRGFYTkhRVkZSUWpGdWEwTkNRVWxGWmtGU05rRklaMEZrWjBSa1VGUkNjUXA0YzJOU1RXMU5Xa2hvZVZwYWVtTkRiMnR3WlhWT05EaHlaaXRJYVc1TFFVeDViblZxWjBGQlFWbzNXbWMzZEUxQlFVRkZRWGRDU0UxRlZVTkpVVVJsQ25velUxYzRkbmg0TDNsaVYzQk9SRTlGVUhoeldIcHJSa2hJYmt0WFRsQTViMmhWYVVSdlNEZHFaMGxuVkRRdmIxaGllWEZuWmtjMWMwd3habXhPZW1NS2FEZFVZbU5RYzJWT1MwWXZkVFJaVkZaM05FdHlhVlYzUTJkWlNVdHZXa2w2YWpCRlFYZE5SR0ZCUVhkYVVVbDRRVXBuWm5GME9XRm5NRGh0V1dwblF3cDRPRUZpTjIxT1F5dHFjMk5aZWtsR2JXOU9MMlpOYkU1QmNIWm1aVTAzVTFobVVrOXBTalJzZEVJdlNGcDFaR2xaWjBsM1NFaExjV1ZVVDJWR1duSkZDbmx4WWpaRWRUVXpjblppWkhkcWMxcFpRVTFvV0VKT1RFbElUVTVvYUVGVk15OW5SbFkxV1ZGRk9WY3dhVlJYTkZWUWVYSUtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0ifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgy6AI1vjpL44kyNmU4wPBVv5N7jVBYXJbhZFqip0eitkCFQC1uBazcc51BUc/LYuQrEiwQSWbvBgPMjAyNjA2MTgwNjU1NDlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDYxODA2NTU0OVowLwYJKoZIhvcNAQkEMSIEIOkNsQCrk+O5m31xxECz4Y4EVQVOz8gqyU0+w9oM5DLoMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQD9ZNSqNfb5fV03ospRVMY06VAJt9Ma9m4VYXTz9kne29kGGFNTprzN249IYg9avtsCMDBBeQP2tW03cMc7Sxflccok//goZmtuXjl57NU+Sa6Sf4XLdkvYUfMtg7etTeDGwA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"BdD3/Tt1RZTQz4ZznTJ9ALZpxJvWL1WgXqFV7/h3ySQ="},"signature":"MEUCIGWm8YpDaavjK2huCyIh5s74clHUPVidpP+N82V1RmwzAiEA03JlsVz93xpbQMmj19SVwP0PJNfpNkI6FjvSP4oShow="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHTDCCBtGgAwIBAgIUQ08nNKgTS6ai6kduegfWWNLD/ykwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzI1WhcNMjYwNzAzMTQyMzI1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+r1ny1Wx2F3OUbIZ5yv5Q60L5VijNWFhqRGj2+XjwggDs9IXU0tHEWZrqYGBlcmnU+qVV7Fs155hyD/MY+rBqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUHB5Ok7aWHHMialC1MKxJyBpgGY0wHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhTwg4AAAQDAEcwRQIgIe8YLaM21ohPQRiQX9/HKviNPI3fD0RYGouL4aPxR9QCIQCxP6/GyFlGUE2YfbuFyaFR9uQ5IOzfd4nTUBfWzkJpHDAKBggqhkjOPQQDAwNpADBmAjEA6fDSI/UQWqmOqdjNnoTKcUCGrC1kP4dItQhVgFsea7rlyNA1qGnzIgd1QGGQFywoAjEAsaSoPRwxo33y6mSz9mzU/nbRwrGUuQLyFwvZeOKgb+30JkxTK8+328CSVLAadTMZ"}, "tlogEntries":[{"logIndex":"2061664440", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088005", "inclusionPromise":{"signedEntryTimestamp":"MEQCIH14jlujWbTbYvZ7MdDbrYFpeVoW6xuPo6pBcQ+nuihnAiBTLJSsyVdAztkTvlnoF7Ew9UpxO+DCt5thEaUQNFTRrw=="}, "inclusionProof":{"logIndex":"1939760178", "rootHash":"TmylW6XdHT3bpDF7UDLfPk/R6iXQuQyXR8n7rsDeXmo=", "treeSize":"1939760188", "hashes":["siH1taYmxFfkVIbxFoiOs4Uo/diqOMT8oWIYjX9Qr5M=", "cgy2CLinXmrYQWUFRHF9/Vy2vSL/4BNeFzF3ghfzw+g=", "YFMZpVkScfUpaYAW8Pg1PYNuQdjoQE4T16/DdLkh93w=", "uSFlfXcOjkZSRdromumGGmoJdfwZjpQMD5oZK7JJO/Q=", "6UqRaPcy6HQDRN7llEPStGsTlRnvrGJ3Tv80ZUEM85Y=", "0F+TlxTYRKJKZ60rNO/42ONVr0kZAO0geozUSDYPJFE=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760188\nTmylW6XdHT3bpDF7UDLfPk/R6iXQuQyXR8n7rsDeXmo=\n\n— rekor.sigstore.dev wNI9ajBFAiBidfs80i+s4hpcmHTo8xOalEz3BaZQOmJRlBdwUmjfYwIhAKQtFDsaZd+NyH+5YBeXILPJOUu1DYVz6DlA2xz69tpu\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0ZWNmMzNjNDZmMmZhYzA0ODRlZDFlMjVkODlkZWU1ZGM3MzA3YWY0Y2NmMDNiMDU3Y2QyMjg2ODQ4OWVjMjQ2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQ3RtRWtPeXNRa0FNcnNXUmNQcjRkbmM5bVVzRmRxQ2xGZDlRdUJnUk1rSEFpQUphOFcxRSsxeXU0bXdHSkJoalk1S2QxR2RKVytBRHdoQyttMUQ3SkJzZUE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5SSFowRjNTVUpCWjBsVlVUQTRiazVMWjFSVE5tRnBObXRrZFdWblpsZFhUa3hFTDNscmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBKTVZkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWtreFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZrSzNJeGJua3hWM2d5UmpOUFZXSkpXalY1ZGpWUk5qQk1OVlpwYWs1WFJtaHhVa2NLYWpJcldHcDNaMmRFY3psSldGVXdkRWhGVjFweWNWbEhRbXhqYlc1VkszRldWamRHY3pFMU5XaDVSQzlOV1N0eVFuRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZJUWpWUENtczNZVmRJU0UxcFlXeERNVTFMZUVwNVFuQm5SMWt3ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlIzWnpSQlFVRlJSQXBCUldOM1VsRkpaMGxsT0ZsTVlVMHlNVzlvVUZGU2FWRllPUzlJUzNacFRsQkpNMlpFTUZKWlIyOTFURFJoVUhoU09WRkRTVkZEZUZBMkwwZDVSbXhIQ2xWRk1sbG1ZblZHZVdGR1VqbDFVVFZKVDNwbVpEUnVWRlZDWmxkNmEwcHdTRVJCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRVFptUkZNS1NTOVZVVmR4YlU5eFpHcE9ibTlVUzJOVlEwZHlRekZyVURSa1NYUlJhRlpuUm5ObFlUZHliSGxPUVRGeFIyNTZTV2RrTVZGSFIxRkdlWGR2UVdwRlFRcHpZVk52VUZKM2VHOHpNM2syYlZONk9XMTZWUzl1WWxKM2NrZFZkVkZNZVVaM2RscGxUMHRuWWlzek1FcHJlRlJMT0Nzek1qaERVMVpNUVdGa1ZFMWFDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgnJWCkrU41bLLuWE+G9G5ZPLnCM9T7QWSHF95tN+Mu8ICFQDKi+wzvLtrgvUKgeMR7+exdQykXBgPMjAyNjA3MDMxNDEzMjVaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwMzE0MTMyNVowLwYJKoZIhvcNAQkEMSIEIF3LXJynhlUu2/4ItlIMUm6jR1B798EPvXk5txvxrd5UMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQD007HYuICxWO82BFzbTQaoTzO/mG5FI6UBPnAo5oFvzKHxFODcqeeMdh0qtOoXXZgCMQCrtBrY3LXu6IYdgmus84JJFKuR1W0M822jMcrmjHrHSUjKdAioVRm+6txlXDC9HJQ="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"Ts8zxG8vrASE7R4l2J3uXccwevTM8DsFfNIoaEiewkY="}, "signature":"MEQCICtmEkOysQkAMrsWRcPr4dnc9mUsFdqClFd9QuBgRMkHAiAJa8W1E+1yu4mwGJBhjY5Kd1GdJW+ADwhC+m1D7JBseA=="}}
|
build/torch211-cxx11-cu130-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:599984be598069595f029d89bf835218434cef41d5c0fe3bb60e7e31aba48a71
|
| 3 |
+
size 7433168
|
build/torch211-cxx11-cu130-aarch64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch211-cxx11-cu130-aarch64-linux/metadata.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
@@ -15,8 +15,8 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "WZmEvlmAaVlfAp2Jv4NSGENM70HVwP47tg5+MaukinE=",
|
| 19 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
build/torch211-cxx11-cu130-aarch64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHdDCCBvqgAwIBAgIUBcDBm4IA0GUgVOe9KvyP31DfV+AwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNjE4MDY1NTUxWhcNMjYwNjE4MDcwNTUxWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxC9goAWhxexpVs0pnB7yLcCc5wpAVZzp+jkSYCLB6GLbVtGZYP4gRGVgB9R/HcwELjBtTZ2fBdZwai8ZG0ocaOCBhkwggYVMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUQLvF0YBZPsc8e8A19P0twD9UsYwwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wdQYDVR0RAQH/BGswaYZnaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL3NpZ24tb2xkLWJ1aWxkcy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDhhNmJlN2JjNzc1NjVhZDY1YzhhZTJkZWI0NTY0ODJmZjZhYTUwZWQwHQYKKwYBBAGDvzABBAQPU2lnbiBvbGQgYnVpbGRzMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wdwYKKwYBBAGDvzABCQRpDGdodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1vbGQtYnVpbGRzLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzB3BgorBgEEAYO/MAESBGkMZ2h0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9zaWduLW9sZC1idWlsZHMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg4YTZiZTdiYzc3NTY1YWQ2NWM4YWUyZGViNDU2NDgyZmY2YWE1MGVkMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzI3NzQxNDY0ODQyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYsGCisGAQQB1nkCBAIEfQR7AHkAdwDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAZ7Zg8FZAAAEAwBIMEYCIQDQKBbB1isrykycMCC8hGAV8C8VzMRjRHCniixS/NsNpgIhAPxUCucGae1moUiko57AVHH9ciAaGnPTlF2wcDKLrNd0MAoGCCqGSM49BAMDA2gAMGUCMEmEhdcbkCy4oFkmjzCO36f2e/qtjuB5YTzw/kbQGc3MdEXUoTzn7r7eUDeAm4jCZAIxALkJOgPrDLK90NiYLlTuYZXB//Ne5Ln5tSyCigOzqVFuH6Iyn4M8cHnOYCjeuLWv1g=="},"tlogEntries":[{"logIndex":"1857837177","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1781765751","inclusionPromise":{"signedEntryTimestamp":"MEYCIQC2DOKD2CmJUfUahf8MtP6MOXF862Mte3joA8Zw2MX7WAIhANI2+hM3SPCQo4jRUgAAJYS5/m4Tw2bxzTXDNQ9bcAI4"},"inclusionProof":{"logIndex":"1735932915","rootHash":"Er39HhEW5P/qdoOx4q50rSIerVjDtqdS4b8PpMkPweA=","treeSize":"1735932919","hashes":["YAlP2AeMH2kH0LSbyg5XI0AWnet5NlG2gEIZM12jLrY=","kZm+0diGG6fhZfiLPzUtEl8PvTTaS6SGCyUclM9LLWo=","QCN+Zf53/unX/3oASlBucj9l7ewNYkP1hkg/N9RzKME=","3R78x7XkjjsuMRHchHkZljwn33OJK+5GqTW0nNJIOxk=","sdYPzesDRkEZL3VHEqH4NK55Z67bcbIfp3rKfw15aC0=","E4wMBPz22erRHAoqwxyu4HGt+BEJP8zNunKnb1YSD+o=","kybk3WubxHhcMt93UodxPlnjrsqB+MZJhHkpgcpbNeo=","9lrNQdv4/pZPvg1jfcr2AwJPYYGyk2HjMX4qdcuwNz4=","OaqFqwnlTFV530PnGHbl0tZCuV6STyhyguCll0pqR/o=","eTWRazxk25OLLgWzA4XIgFtjkVp25o1NykOamizebtI=","uMjlW8ZYxFHFISKF1gqKEB4T/pfjDh7vzUC1E7W0/xU=","Ore1A2Ceavap3m5U3ZAHLkUinE8F4IgttCeJDxxaK98=","95goX8Iw4H4P6V4eHvRqTdVdViLbhEhsF6i7ICnz/+A=","sWDh7SjDHbJf3HWKGRxiURh6iIYrOzn4Zs37yIij6OA=","x7kXd4VRJvVmTHoSla2KyPQdKvGKDX26/7ST9OONR78=","U8wMiVDzFlmyqT7Nw1RSZYU9+fftsSkRhjpbyXnXUk8=","mqM7J+i75IpuD09QejiUBjeH85AZa+fSm4RXXFmj3lI=","72FC5FYLhxB4a4iiC956o0B/fT54ip4R41vsw2QBKtU=","lYGQ9ibwC8+smMkPQ6TchJm3H9Nc/aTYLfdRacGFChw=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1735932919\nEr39HhEW5P/qdoOx4q50rSIerVjDtqdS4b8PpMkPweA=\n\n— rekor.sigstore.dev wNI9ajBEAiAO7eUIU+zZ0ZF1MvgBIE5JzvOy5bugEAPKNO/Truo5JgIgAOQEbfJGvIkj7z2XfAntnnUdWhZvXX8s6DafgutZges=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4ZjhjMDdjMTVmYjI5N2Q1Y2FmMDYzMTc5NTJiMjRkMTlmNGIwZTBlM2RhZjRmODNmNWY4YzA5ZDhiYTU2NDY1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNOaG5CbENVUDI5aVBvQTQxNUpqb1NHUHI2R3BPa2tHNlFRWEJsU1JybkRnSWhBTkZ4YkpXeS9SNkxVa1BSTXMzQVJVMFlmSUxpVGlKZ1VVUUZrNkpDaVRJdSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaGtSRU5EUW5aeFowRjNTVUpCWjBsVlFtTkVRbTAwU1VFd1IxVm5WazlsT1V0MmVWQXpNVVJtVml0QmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDVxUlRSTlJGa3hUbFJWZUZkb1kwNU5hbGwzVG1wRk5FMUVZM2RPVkZWNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZpZUVNNVoyOUJWMmg0Wlhod1ZuTXdjRzVDTjNsTVkwTmpOWGR3UVZaYWVuQXJhbXNLVTFsRFRFSTJSMHhpVm5SSFdsbFFOR2RTUjFablFqbFNMMGhqZDBWTWFrSjBWRm95WmtKa1duZGhhVGhhUnpCdlkyRlBRMEpvYTNkbloxbFdUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZSVEhaR0NqQlpRbHBRYzJNNFpUaEJNVGxRTUhSM1JEbFZjMWwzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJSUldVUldVakJTUVZGSUwwSkhjM2RoV1ZwdVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wNXdXakkwZEdJeWVHdE1WMG94Q21GWGVHdGplVFUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTlVKbmIzSkNaMFZGUVZsUEwwMUJSVUpDUTNSdlpFaFNkMk42YjNZS1RETlNkbUV5Vm5WTWJVWnFaRWRzZG1KdVRYVmFNbXd3WVVoV2FXUllUbXhqYlU1MlltNVNiR0p1VVhWWk1qbDBUVUk0UjBOcGMwZEJVVkZDWnpjNGR3cEJVVWxGUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVVJaUjBOcGMwZEJVVkZDWnpjNGQwRlJUVVZMUkdob1RtMUtiRTR5U21wT2VtTXhDazVxVm1oYVJGa3hXWHBvYUZwVVNtdGFWMGt3VGxSWk1FOUVTbTFhYWxwb1dWUlZkMXBYVVhkSVVWbExTM2RaUWtKQlIwUjJla0ZDUWtGUlVGVXliRzRLWW1sQ2RtSkhVV2RaYmxad1lrZFNlazFEYzBkRGFYTkhRVkZSUW1jM09IZEJVVlZGU0Zkb01Wb3laSEJpYldSdFdWZE9iRXd5ZEd4amJUVnNZa2hOZEFwWk1qbDBZbGhXZFdGWVVqVk5RakJIUTJselIwRlJVVUpuTnpoM1FWRlpSVVF6U214YWJrMTJZVWRXYUZwSVRYWmlWMFp3WW1wQk4wSm5iM0pDWjBWRkNrRlpUeTlOUVVWSlFrTXdUVXN5YURCa1NFSjZUMms0ZG1SSE9YSmFWelIxV1ZkT01HRlhPWFZqZVRWdVlWaFNiMlJYU2pGak1sWjVXVEk1ZFdSSFZuVUtaRU0xYW1JeU1IZGtkMWxMUzNkWlFrSkJSMFIyZWtGQ1ExRlNjRVJIWkc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFpoU0ZadVdqSnNkUXBhTWxwb1dUSlZkbUV5Vm5saWJWWnpZM2t4YW1JeU1YUmtWelZ3WkVocmRreHRaSEJrUjJneFdXazVNMkl6U25KYWJYaDJaRE5OZG1NeWJHNWlhVEYyQ21KSFVYUlpibFp3WWtkU2VreHViR2hpVjNoQlkyMVdiV041T1c5YVYwWnJZM2s1ZEZsWGJIVk5SR2RIUTJselIwRlJVVUpuTnpoM1FWRnZSVXRuZDI4S1QwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkZwRVFXSkNaMjl5UW1kRlJRcEJXVTh2VFVGRlRFSkJNRTFETTA1c1lrZFpkR0ZIT1hwa1IxWnJUVVZCUjBOcGMwZEJVVkZDWnpjNGQwRlJkMFZOWjNkM1lVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk5SR2RIUTJselIwRlJVVUlLWnpjNGQwRlJNRVZMWjNkdlQwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkFwYVJFRm1RbWR2Y2tKblJVVkJXVTh2VFVGRlQwSkNSVTFFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVFXRkNaMjl5UW1kRlJVRlpUeTlOUVVWUUNrSkJkMDFEYWtWM1RucEZNRTU2VlRGTmFtdDNUR2RaUzB0M1dVSkNRVWRFZG5wQlFrVkJVV2RFUWpWdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNSVkZSUzBSQlozbE9WR041VFVSak1FMTZRak5DWjI5eVFtZEZSUXBCV1U4dlRVRkZVMEpIYTAxYU1tZ3daRWhDZWs5cE9IWmFNbXd3WVVoV2FVeHRUblppVXpsdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2Q2t4WFRuWmlWekV4WW0xc01HVlRPSFZhTW13d1lVaFdhVXd6WkhaamJYUnRZa2M1TTJONU9YcGhWMlIxVEZjNWMxcERNV2xrVjJ4eldraE5kV1ZYUm5RS1lrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzVDBGWlMwdDNXVUpDUVVkRWRucEJRa1YzVVhGRVEyYzBXVlJhYVZwVVpHbFplbU16VGxSWk1RcFpWMUV5VGxkTk5GbFhWWGxhUjFacFRrUlZNazVFWjNsYWJWa3lXVmRGTVUxSFZtdE5RMFZIUTJselIwRlJVVUpuTnpoM1FWSlJSVVYzZDFKa01qbDVDbUV5V25OaU0yUm1Xa2RzZW1OSFJqQlpNbWQzV2tGWlMwdDNXVUpDUVVkRWRucEJRa1pSVWxkRVJsSnZaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV29LWWpJd2RtRklWbTVhTW14MVdqSmFhRmt5VlhaaE1sWjVZbTFXYzJONU1XcGlNakYwWkZjMWNHUklhM1paVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBKTXdwT2VsRjRUa1JaTUU5RVVYbE1Na1l3WkVkV2RHTklVbnBNZWtWM1JtZFpTMHQzV1VKQ1FVZEVkbnBCUWtablVVbEVRVnAzWkZkS2MyRlhUWGRTWjFsTENrdDNXVUpDUVVkRWRucEJRa2RCVVRSRVJGcDVXbGhDZGs5dGFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVUtUMjVLYkZwcWNIbGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMmRaYzBkRGFYTkhRVkZSUWpGdWEwTkNRVWxGWmxGU04wRklhMEZrZDBSa1VGUkNjUXA0YzJOU1RXMU5Xa2hvZVZwYWVtTkRiMnR3WlhWT05EaHlaaXRJYVc1TFFVeDViblZxWjBGQlFWbzNXbWM0UmxwQlFVRkZRWGRDU1UxRldVTkpVVVJSQ2t0Q1lrSXhhWE55ZVd0NVkwMURRemhvUjBGV09FTTRWbnBOVW1wU1NFTnVhV2w0VXk5T2MwNXdaMGxvUVZCNFZVTjFZMGRoWlRGdGIxVnBhMjgxTjBFS1ZraElPV05wUVdGSGJsQlViRVl5ZDJORVMweHlUbVF3VFVGdlIwTkRjVWRUVFRRNVFrRk5SRUV5WjBGTlIxVkRUVVZ0Uldoa1kySnJRM2swYjBacmJRcHFla05QTXpabU1tVXZjWFJxZFVJMVdWUjZkeTlyWWxGSFl6Tk5aRVZZVlc5VWVtNDNjamRsVlVSbFFXMDBha05hUVVsNFFVeHJTazluVUhKRVRFczVDakJPYVZsTWJGUjFXVnBZUWk4dlRtVTFURzQxZEZONVEybG5UM3B4VmtaMVNEWkplVzQwVFRoalNHNVBXVU5xWlhWTVYzWXhaejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgFCtHtZtIUdZdZtjTGRlfAPnqCzxpafQ6VtI843O71jMCFB4Kh17otuaW66g4A+lB0xkMbf7OGA8yMDI2MDYxODA2NTU1MVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNjE4MDY1NTUxWjAvBgkqhkiG9w0BCQQxIgQgba+Kjw1oZ5QEFCUVrVII1bFsGaK2s435uiBNUreuNlkwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwat4NnRWniQ09oNqRdCYQTFH4r7Xr+fYcKOS2YC3zBUk7p/pDIxTu1eRp8KaMUJuQAjEAq+23W0W7zCveYGWUNfIwKMECuOnhBqZdjvSGInaY45avg7bazAul6ZSahVtN0PlZ"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"j4wHwV+yl9XK8GMXlSsk0Z9LDg49r0+D9fjAnYulZGU="},"signature":"MEYCIQCNhnBlCUP29iPoA415JjoSGPr6GpOkkG6QQXBlSRrnDgIhANFxbJWy/R6LUkPRMs3ARU0YfILiTiJgUUQFk6JCiTIu"}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtGgAwIBAgIUfNbAzZ+Tt9fRYSDOHww2/sfzWaAwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzI2WhcNMjYwNzAzMTQyMzI2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/Y2rBADze/bKFnRfKWcUbO81/WmHaTcPZnVihsgDPudxvsbmHadDtQ3DT+9HD3XJlMSKoZ9GKGZrPjO+nNAVKKOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU6PqNP80fclcDCVbTi1jIrPiu9VYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhTxYMAAAQDAEcwRQIgWZDdAgLD5n+ADT/4GPiCFupaWgZ4T/DWyh987erC+aQCIQD8wwQ3pAJxn5Iv91ccI/vqdMkIgAay0UxtmIdUlx68vDAKBggqhkjOPQQDAwNnADBkAjBwvIVHo8gb3Vnfo4/05/ZoBj4haR9UslNY3nHiX8r0dKGgxHkCIlcwLcPLKAC5/JkCMCUFpxomiLIGY5e/vx2yP5y05bL1OQuXwmorwB5sigUeePL8EyZm5BhXF7NLmxUW0w=="}, "tlogEntries":[{"logIndex":"2061664561", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088006", "inclusionPromise":{"signedEntryTimestamp":"MEUCIQCCeg3HwxP8ZwPUIRIok/sQ1Cyhmhl7xvuE1mAr7rzUZwIgZnIFSvFym2xNfzW8GPWnLD7QnZlx6arxw659dS/kbLI="}, "inclusionProof":{"logIndex":"1939760299", "rootHash":"yb11eB+QeouKrDOUCF0I5Q9K4tVSAazWOHBeOIZr4hA=", "treeSize":"1939760317", "hashes":["kRw9FJ1tviOr6a/oa7UzDEdtYc1lNhkxolzC9FPOUXE=", "hsOe0p5XgUo+Wi4TcdOHOGENPcqsb3xa0jBYNCwBctw=", "FDyMOEt2/gmM8X4Zw8hlDnI/BlAYu2ClegQrvDPRbqM=", "3Hz73H8rFmd9yswoly3g9tGOAl04dBob4vwXnRpgSxY=", "H6xf529CnDma6BjnByM6yWB4PgVWVxLW4dIelEG4B1U=", "XEw1O0hn6nyOIy9q8w8SMypu/jXawuvLJrIIYX4MygQ=", "Suv3i+08hXNaICaC64nBIVsJN3dRRoXb1S4HqqYqp+s=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760317\nyb11eB+QeouKrDOUCF0I5Q9K4tVSAazWOHBeOIZr4hA=\n\n— rekor.sigstore.dev wNI9ajBFAiAMRTaiVP0GyNiPxEPX7jcmjvuO+/bmaFzwmiLSVXtP3wIhAJ9y5bNJhzIw70Weq4ewGLZA73+iyobGQcZjIjopsEKm\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI5ZDMyZDc1ZDAwM2VlNWQ5NjIyMTdkMGE4MTc3MTIxOGFjNmYxMjBkNDkxMmI4MDFhY2M5YmFkYjYwNzE5NTQ3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRzA3MWxvOU1MVjUrSktvWkF4NDJWNnFwdEJOSGtxb1NSNEhtY3B3SFhsSEFpQVFiTTBMcjhFckxIVkRMeWhWc3BIRUhxbDl5SmpsUFc5SmMrN1VNNWNKM2c9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SSFowRjNTVUpCWjBsVlprNWlRWHBhSzFSME9XWlNXVk5FVDBoM2R6SXZjMlo2VjJGQmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBKTWxkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWtreVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVV2V1RKeVFrRkVlbVV2WWt0R2JsSm1TMWRqVldKUE9ERXZWMjFJWVZSalVGcHVWbWtLYUhOblJGQjFaSGgyYzJKdFNHRmtSSFJSTTBSVUt6bElSRE5ZU214TlUwdHZXamxIUzBkYWNsQnFUeXR1VGtGV1MwdFBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlUyVUhGT0NsQTRNR1pqYkdORVExWmlWR2t4YWtseVVHbDFPVlpaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlI0V1UxQlFVRlJSQXBCUldOM1VsRkpaMWRhUkdSQloweEVOVzRyUVVSVUx6UkhVR2xEUm5Wd1lWZG5XalJVTDBSWGVXZzVPRGRsY2tNcllWRkRTVkZFT0hkM1VUTndRVXA0Q200MVNYWTVNV05qU1M5MmNXUk5hMGxuUVdGNU1GVjRkRzFKWkZWc2VEWTRka1JCUzBKblozRm9hMnBQVUZGUlJFRjNUbTVCUkVKclFXcENkM1pKVmtnS2J6aG5Zak5XYm1adk5DOHdOUzlhYjBKcU5HaGhVamxWYzJ4T1dUTnVTR2xZT0hJd1pFdEhaM2hJYTBOSmJHTjNUR05RVEV0QlF6VXZTbXREVFVOVlJncHdlRzl0YVV4SlIxazFaUzkyZURKNVVEVjVNRFZpVERGUFVYVllkMjF2Y25kQ05YTnBaMVZsWlZCTU9FVjVXbTAxUW1oWVJqZE9URzE0VlZjd2R6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgDjS4Ca020moG+zC8/XcCNnFNvCikb5I0LV6Qx+03GMwCFQDQk6XzzTZQH7b5pfH9tvxRy5hO3xgPMjAyNjA3MDMxNDEzMjZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwMzE0MTMyNlowLwYJKoZIhvcNAQkEMSIEIL28MhstJgq/IKmcmVYp9xXs66pTt2IdRFMuzhGbOwPuMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCX6bSXwwHC4s4JDoamhEp7yvbgyAOArB/f+sRUHe9mMCytHD+Cl4cel8OeYhkvMnACMQDuakmEqrnY9niL8C2IM7i5R/PgvLSKHFPq/tKbitUYtLfjf1Fh5ZCap+QJHvKy5hs="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"nTLXXQA+5dliIX0KgXcSGKxvEg1JErgBrMm622BxlUc="}, "signature":"MEQCIG071lo9MLV5+JKoZAx42V6qptBNHkqoSR4HmcpwHXlHAiAQbM0Lr8ErLHVDLyhVspHEHql9yJjlPW9Jc+7UM5cJ3g=="}}
|
build/torch212-cxx11-cu130-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9d06dda6394c68d3af0c04428e616b2b2ae27442a1f05aa8103a3f3257ae2b1a
|
| 3 |
+
size 7423032
|
build/torch212-cxx11-cu130-aarch64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch212-cxx11-cu130-aarch64-linux/metadata.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
@@ -15,8 +15,8 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "nQbdpjlMaNOvDARCjmFrKyridEKh8FqoEDo/MleuKxo=",
|
| 19 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
build/torch212-cxx11-cu130-aarch64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHczCCBvmgAwIBAgIUDDddy48u7Hu55k/Im/35jOGWUgowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNjE4MDY1NTUyWhcNMjYwNjE4MDcwNTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEz1iYF+9/fmLVuhykerml2lwvVzxJslo6skJcvQOClVABVAm0Jr5tAmKXyixTEpZPa6p1DraY1gQg6YzGHkUGlqOCBhgwggYUMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU03QBUIzgN3gX6s/bp5teP83qpVAwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wdQYDVR0RAQH/BGswaYZnaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL3NpZ24tb2xkLWJ1aWxkcy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDhhNmJlN2JjNzc1NjVhZDY1YzhhZTJkZWI0NTY0ODJmZjZhYTUwZWQwHQYKKwYBBAGDvzABBAQPU2lnbiBvbGQgYnVpbGRzMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wdwYKKwYBBAGDvzABCQRpDGdodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1vbGQtYnVpbGRzLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzB3BgorBgEEAYO/MAESBGkMZ2h0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9zaWduLW9sZC1idWlsZHMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg4YTZiZTdiYzc3NTY1YWQ2NWM4YWUyZGViNDU2NDgyZmY2YWE1MGVkMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzI3NzQxNDY0ODQyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYoGCisGAQQB1nkCBAIEfAR6AHgAdgDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAZ7Zg8bpAAAEAwBHMEUCIQDge649qsB5mS01JGfvCnHiKMG8jqq7C2j+CYjonS+gEgIgDT8OHN4RGpMGDTld+yDW/kkq+0AlfzVriNiOFkf5nS4wCgYIKoZIzj0EAwMDaAAwZQIxAJ8Aj3QAsTsdxisnvQCA2SV8TG8sohJFliFUT3RIdTeJjydXXZXQgbKWVV1dr3zytQIwdZ1rXPO4n8bBuaSym6bzFGpR97sg45JESE4+DlGp251nlRITz5TTBuNAi2XvqKCC"},"tlogEntries":[{"logIndex":"1857837221","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1781765752","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDjHHTUQoWNHVwohzipRQEY35zgXeORNvAbzCnsfOe41AIgU8Z5liDjiznu61pPWH+y7REiO+1W1YwzI7UwUjJlg+s="},"inclusionProof":{"logIndex":"1735932959","rootHash":"nMGHgL4IBK8N08w/gl8+igR0tuT34yQRvYY44T0Eh5g=","treeSize":"1735932960","hashes":["G4933Ugo6o7ogHPNtxnYXhMuoirjXHmjjgeOE09Sfu4=","ExvxO2h1a9sigOZa1v8xOVqwNo2MvTuqxUTUV22fCKg=","RPZ8U1TP6YG8IkurTYk8iJifOUrksmrO2NVb8kkRFNc=","0fWsxgT8TbVHGROV/VuCNG4hfRzBf90HYd0R+PY/4Gk=","NsyKxmk8CJ/KSxgdEIDYuK1UoRl4jXYacsp5efOUBJA=","dJXuMSDek+62mcjWCUYXgp40qFmpwBsgjLYGp92qOak=","eTWRazxk25OLLgWzA4XIgFtjkVp25o1NykOamizebtI=","uMjlW8ZYxFHFISKF1gqKEB4T/pfjDh7vzUC1E7W0/xU=","Ore1A2Ceavap3m5U3ZAHLkUinE8F4IgttCeJDxxaK98=","95goX8Iw4H4P6V4eHvRqTdVdViLbhEhsF6i7ICnz/+A=","sWDh7SjDHbJf3HWKGRxiURh6iIYrOzn4Zs37yIij6OA=","x7kXd4VRJvVmTHoSla2KyPQdKvGKDX26/7ST9OONR78=","U8wMiVDzFlmyqT7Nw1RSZYU9+fftsSkRhjpbyXnXUk8=","mqM7J+i75IpuD09QejiUBjeH85AZa+fSm4RXXFmj3lI=","72FC5FYLhxB4a4iiC956o0B/fT54ip4R41vsw2QBKtU=","lYGQ9ibwC8+smMkPQ6TchJm3H9Nc/aTYLfdRacGFChw=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1735932960\nnMGHgL4IBK8N08w/gl8+igR0tuT34yQRvYY44T0Eh5g=\n\n— rekor.sigstore.dev wNI9ajBFAiADi2TBGDoWJyRRJ0DnKMOyfPbv83tMgEzb1cdNZObL6gIhAMeBF072CyFPWjK6DoP/UYbZvit4RWvJz6mUDiLOJwB2\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlNjhkMTBkNGU2YzYxZTY3MzVlNzM0MzQ2OTM4ZWM1ZTg3MDNhYTA5ZjQ2MmMyYjI4MDA3ZWVhMmRhZGEyNDEzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUM2TVBSRnlUVHFCc0F6b3h0VndONlVIWjRGeE1NRE44YUxNWGtCVEdOVzVBSWhBTmVNRElKTlBCcUZlZTQ0cW1rYThxUVF6YVR2cHBVRExBQkhadnJzQmhURSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaGpla05EUW5adFowRjNTVUpCWjBsVlJFUmtaSGswT0hVM1NIVTFOV3N2U1cwdk16VnFUMGRYVldkdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDVxUlRSTlJGa3hUbFJWZVZkb1kwNU5hbGwzVG1wRk5FMUVZM2RPVkZWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY2TVdsWlJpczVMMlp0VEZaMWFIbHJaWEp0YkRKc2QzWldlbmhLYzJ4dk5uTnJTbU1LZGxGUFEyeFdRVUpXUVcwd1NuSTFkRUZ0UzFoNWFYaFVSWEJhVUdFMmNERkVjbUZaTVdkUlp6Wlpla2RJYTFWSGJIRlBRMEpvWjNkbloxbFZUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlV3TTFGQ0NsVkplbWRPTTJkWU5uTXZZbkExZEdWUU9ETnhjRlpCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJSUldVUldVakJTUVZGSUwwSkhjM2RoV1ZwdVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wNXdXakkwZEdJeWVHdE1WMG94Q21GWGVHdGplVFUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTlVKbmIzSkNaMFZGUVZsUEwwMUJSVUpDUTNSdlpFaFNkMk42YjNZS1RETlNkbUV5Vm5WTWJVWnFaRWRzZG1KdVRYVmFNbXd3WVVoV2FXUllUbXhqYlU1MlltNVNiR0p1VVhWWk1qbDBUVUk0UjBOcGMwZEJVVkZDWnpjNGR3cEJVVWxGUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVVJaUjBOcGMwZEJVVkZDWnpjNGQwRlJUVVZMUkdob1RtMUtiRTR5U21wT2VtTXhDazVxVm1oYVJGa3hXWHBvYUZwVVNtdGFWMGt3VGxSWk1FOUVTbTFhYWxwb1dWUlZkMXBYVVhkSVVWbExTM2RaUWtKQlIwUjJla0ZDUWtGUlVGVXliRzRLWW1sQ2RtSkhVV2RaYmxad1lrZFNlazFEYzBkRGFYTkhRVkZSUW1jM09IZEJVVlZGU0Zkb01Wb3laSEJpYldSdFdWZE9iRXd5ZEd4amJUVnNZa2hOZEFwWk1qbDBZbGhXZFdGWVVqVk5RakJIUTJselIwRlJVVUpuTnpoM1FWRlpSVVF6U214YWJrMTJZVWRXYUZwSVRYWmlWMFp3WW1wQk4wSm5iM0pDWjBWRkNrRlpUeTlOUVVWSlFrTXdUVXN5YURCa1NFSjZUMms0ZG1SSE9YSmFWelIxV1ZkT01HRlhPWFZqZVRWdVlWaFNiMlJYU2pGak1sWjVXVEk1ZFdSSFZuVUtaRU0xYW1JeU1IZGtkMWxMUzNkWlFrSkJSMFIyZWtGQ1ExRlNjRVJIWkc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFpoU0ZadVdqSnNkUXBhTWxwb1dUSlZkbUV5Vm5saWJWWnpZM2t4YW1JeU1YUmtWelZ3WkVocmRreHRaSEJrUjJneFdXazVNMkl6U25KYWJYaDJaRE5OZG1NeWJHNWlhVEYyQ21KSFVYUlpibFp3WWtkU2VreHViR2hpVjNoQlkyMVdiV041T1c5YVYwWnJZM2s1ZEZsWGJIVk5SR2RIUTJselIwRlJVVUpuTnpoM1FWRnZSVXRuZDI4S1QwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkZwRVFXSkNaMjl5UW1kRlJRcEJXVTh2VFVGRlRFSkJNRTFETTA1c1lrZFpkR0ZIT1hwa1IxWnJUVVZCUjBOcGMwZEJVVkZDWnpjNGQwRlJkMFZOWjNkM1lVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk5SR2RIUTJselIwRlJVVUlLWnpjNGQwRlJNRVZMWjNkdlQwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkFwYVJFRm1RbWR2Y2tKblJVVkJXVTh2VFVGRlQwSkNSVTFFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVFXRkNaMjl5UW1kRlJVRlpUeTlOUVVWUUNrSkJkMDFEYWtWM1RucEZNRTU2VlRGTmFtdDNUR2RaUzB0M1dVSkNRVWRFZG5wQlFrVkJVV2RFUWpWdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNSVkZSUzBSQlozbE9WR041VFVSak1FMTZRak5DWjI5eVFtZEZSUXBCV1U4dlRVRkZVMEpIYTAxYU1tZ3daRWhDZWs5cE9IWmFNbXd3WVVoV2FVeHRUblppVXpsdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2Q2t4WFRuWmlWekV4WW0xc01HVlRPSFZhTW13d1lVaFdhVXd6WkhaamJYUnRZa2M1TTJONU9YcGhWMlIxVEZjNWMxcERNV2xrVjJ4eldraE5kV1ZYUm5RS1lrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzVDBGWlMwdDNXVUpDUVVkRWRucEJRa1YzVVhGRVEyYzBXVlJhYVZwVVpHbFplbU16VGxSWk1RcFpWMUV5VGxkTk5GbFhWWGxhUjFacFRrUlZNazVFWjNsYWJWa3lXVmRGTVUxSFZtdE5RMFZIUTJselIwRlJVVUpuTnpoM1FWSlJSVVYzZDFKa01qbDVDbUV5V25OaU0yUm1Xa2RzZW1OSFJqQlpNbWQzV2tGWlMwdDNXVUpDUVVkRWRucEJRa1pSVWxkRVJsSnZaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV29LWWpJd2RtRklWbTVhTW14MVdqSmFhRmt5VlhaaE1sWjVZbTFXYzJONU1XcGlNakYwWkZjMWNHUklhM1paVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBKTXdwT2VsRjRUa1JaTUU5RVVYbE1Na1l3WkVkV2RHTklVbnBNZWtWM1JtZFpTMHQzV1VKQ1FVZEVkbnBCUWtablVVbEVRVnAzWkZkS2MyRlhUWGRTWjFsTENrdDNXVUpDUVVkRWRucEJRa2RCVVRSRVJGcDVXbGhDZGs5dGFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVUtUMjVLYkZwcWNIbGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMmRaYjBkRGFYTkhRVkZSUWpGdWEwTkNRVWxGWmtGU05rRklaMEZrWjBSa1VGUkNjUXA0YzJOU1RXMU5Xa2hvZVZwYWVtTkRiMnR3WlhWT05EaHlaaXRJYVc1TFFVeDViblZxWjBGQlFWbzNXbWM0WW5CQlFVRkZRWGRDU0UxRlZVTkpVVVJuQ21VMk5EbHhjMEkxYlZNd01VcEhablpEYmtocFMwMUhPR3B4Y1RkRE1tb3JRMWxxYjI1VEsyZEZaMGxuUkZRNFQwaE9ORkpIY0UxSFJGUnNaQ3Q1UkZjS0wydHJjU3N3UVd4bWVsWnlhVTVwVDBaclpqVnVVelIzUTJkWlNVdHZXa2w2YWpCRlFYZE5SR0ZCUVhkYVVVbDRRVW80UVdvelVVRnpWSE5rZUdsemJncDJVVU5CTWxOV09GUkhPSE52YUVwR2JHbEdWVlF6VWtsa1ZHVkthbmxrV0ZoYVdGRm5Za3RYVmxZeFpISXplbmwwVVVsM1pGb3hjbGhRVHpSdU9HSkNDblZoVTNsdE5tSjZSa2R3VWprM2MyYzBOVXBGVTBVMEswUnNSM0F5TlRGdWJGSkpWSG8xVkZSQ2RVNUJhVEpZZG5GTFEwTUtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0ifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgOCyUCmg/xf7In14MZfPK9VYVgk8S27/mLWXvKQqM5c4CFQDaxg5Oo18+Ss+OMe3WrfcNDy4BGRgPMjAyNjA2MTgwNjU1NTJaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDYxODA2NTU1MlowLwYJKoZIhvcNAQkEMSIEIM/xdSDQ5qh6aeaDJmEzbhynvbYyCm1058PV5f3dKI2pMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMFMM/JU5bpiaLgpC7tOoskE1imp1jv5qeCaLHdyuZcUlDX+VUVbVzyMZFfXwe9i6cgIwKlKlnB+SuqWsbaY+GWPLK2fFBvXjT3ZLpXFO5wLbyewugxSVJBLcqmh+6Ghwedp1"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"5o0Q1ObGHmc15zQ0aTjsXocDqgn0YsKygAfuotraJBM="},"signature":"MEYCIQC6MPRFyTTqBsAzoxtVwN6UHZ4FxMMDN8aLMXkBTGNW5AIhANeMDIJNPBqFee44qmka8qQQzaTvppUDLABHZvrsBhTE"}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSTCCBtCgAwIBAgIUIJDKpQocizjwQoh8BNeoAQM62rEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzI3WhcNMjYwNzAzMTQyMzI3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQxEOpqlct1mQzWzsspdzhkuxzFJl8WJml0iSkcxhPEoW8cLheuwcwExlIb8i/hpBhM6SmVbK/zZzBx6oBGa1SKOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUb4dDRYctW8UjkugxPnaVwj6mTOcwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhTyT4AAAQDAEYwRAIgVFHOyKWcp2oKfZ4carh3ZixovfmZRl4jDoXERSeD0awCICSWuHrknFb0VVuyFlLPtuDmHFpSfXhwV/wICjY4UcSfMAoGCCqGSM49BAMDA2cAMGQCMA99IeaRldkoPRL6Lo6dNcAltX5p2NNwmBLyY2pSWs3Vnzq+unjGbGgFzIhO99F/cAIwQQx3uVgyWx2qE48AtjI30XJ6PndQhHT4UVg4ktAqC5zh4NRi9P243X40ObyfPriT"}, "tlogEntries":[{"logIndex":"2061664692", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088007", "inclusionPromise":{"signedEntryTimestamp":"MEUCIQDOAvEjvX7r4dEBsupMzQiRV5FnOIzhMQsTPGRvU/btPQIgOJYZTVKjiU+Lg7i1nnmw7LluwMzwi8sTdqDQsMYVuMo="}, "inclusionProof":{"logIndex":"1939760430", "rootHash":"D7up749UIZVfoLS3KiN129Psh5/9jpZbgLTXWHAnX2s=", "treeSize":"1939760446", "hashes":["JPdEixABYoZyPbtHUl8L9MPyQ0wP2n/rRMh+Q2VoXVQ=", "u6C3iPNnZU19SmXQcxNU0ZfLaupm4/PSp60nk/dbVq4=", "PHMXgiaUqsiQ+V/gq9L/GpF82IeoGLpKk3X+Un/RdrY=", "ALjZJA3gHwF14RHUtLVc3HlmFwOVSk6OkesDM7Kzi8s=", "Gj+Bu3HlgVNCJ3/+WJmboeT17ZRWeIP0LivdK7YOyYE=", "zWapG8sojdcNU8sXLGeFqxLFM45JPRcjCL8gChOKO0U=", "nYLK8JQyIB21AL0vzAJF7vlc3U2uuzPKmG/PekTf0FM=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760446\nD7up749UIZVfoLS3KiN129Psh5/9jpZbgLTXWHAnX2s=\n\n— rekor.sigstore.dev wNI9ajBFAiEA0Bifo31VV+qzyJSlQjSby2se0UiLo7iPGZXgbeORRj4CIBB14UoFwhB47ShzCWeJOhMlsiZm4CMXCseikIBR9QuM\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0M2U5MDk1MmY2NWRiYTM0ZTc0NzE2NTAxNDQ4OTNkYWYzNDBjYmJiYWNkOWY0ZWM4YjNiZjVkOGZjZGRiMWQ0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRHlESDlIank2MkhqdXJ3MWt5djFpNU44TG1Tb1J1NHEySkk1cGNVNlpMY0FpRUF2b3FmK1NaU1JWb1AvbUkzTnBqSDdJR3FwZ0IyMkR5ZEdXOXJSVzQzcUFFPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRWRU5EUW5SRFowRjNTVUpCWjBsVlNVcEVTM0JSYjJOcGVtcDNVVzlvT0VKT1pXOUJVVTAyTW5KRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBKTTFkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWtrelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZSZUVWUGNIRnNZM1F4YlZGNlYzcHpjM0JrZW1ocmRYaDZSa3BzT0ZkS2JXd3dhVk1LYTJONGFGQkZiMWM0WTB4b1pYVjNZM2RGZUd4SllqaHBMMmh3UW1oTk5sTnRWbUpMTDNwYWVrSjRObTlDUjJFeFUwdFBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZpTkdSRUNsSlpZM1JYT0ZWcWEzVm5lRkJ1WVZaM2FqWnRWRTlqZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlI1VkRSQlFVRlJSQXBCUlZsM1VrRkpaMVpHU0U5NVMxZGpjREp2UzJaYU5HTmhjbWd6V21sNGIzWm1iVnBTYkRScVJHOVlSVkpUWlVRd1lYZERTVU5UVjNWSWNtdHVSbUl3Q2xaV2RYbEdiRXhRZEhWRWJVaEdjRk5tV0doM1ZpOTNTVU5xV1RSVlkxTm1UVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlZMEZOUjFGRFRVRTVPVWxsWVZJS2JHUnJiMUJTVERaTWJ6WmtUbU5CYkhSWU5YQXlUazUzYlVKTWVWa3ljRk5YY3pOV2JucHhLM1Z1YWtkaVIyZEdla2xvVHprNVJpOWpRVWwzVVZGNE13cDFWbWQ1VjNneWNVVTBPRUYwYWtrek1GaEtObEJ1WkZGb1NGUTBWVlpuTkd0MFFYRkROWHBvTkU1U2FUbFFNalF6V0RRd1QySjVabEJ5YVZRS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgSXv7weFUv7xYeABeum44M8+k+FrK2ueQO2MkuLEcQRICFADLzAf6L7HGBa+/zJ87YcsORtMDGA8yMDI2MDcwMzE0MTMyN1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzAzMTQxMzI3WjAvBgkqhkiG9w0BCQQxIgQgsA2wcTRyC7vsNxddVLH5nDAzYXPmoOpParyHCFxytyMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwf4qP8IwwEZdGEKHLS+YwrfafX7CXwqwlzQs6MujJROdUSWSKllpXLDxbIUtHd4sEAjBqNMRVsnMT8ZLTdLek3/QAfKbeoiSLKHc/674+RSXkorpkzgzVLcMcB6AtMf9ZNa4="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"Q+kJUvZdujTnRxZQFEiT2vNAy7us2fTsizv12PzdsdQ="}, "signature":"MEUCIDyDH9Hjy62Hjurw1kyv1i5N8LmSoRu4q2JI5pcU6ZLcAiEAvoqf+SZSRVoP/mI3NpjH7IGqpgB22DydGW9rRW43qAE="}}
|
build/torch212-cxx11-cu132-aarch64-linux/{_flash_mla_cuda_eb909e4.abi3.so → _flash_mla_cuda_2e4b976.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:400653bf9bcd1c7a07964778502fa0724163699b44fe30fd4db580d2c8d587b3
|
| 3 |
+
size 7361952
|
build/torch212-cxx11-cu132-aarch64-linux/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch212-cxx11-cu132-aarch64-linux/metadata.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
@@ -15,8 +15,8 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
-
"
|
| 19 |
-
"_ops.py": "
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
"version": 1,
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "QAZTv5vNHHoHlkd4UC+gckFjaZtE/jD9TbWA0sjVh7M=",
|
| 19 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 20 |
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
}
|
build/torch212-cxx11-cu132-aarch64-linux/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHdDCCBvqgAwIBAgIUWMIYBxsprQqoeFD9eIckZ1aQkcEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNjE4MDY1NTUzWhcNMjYwNjE4MDcwNTUzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+/l9ufVV1Rl5rz7hqtDZ3P9YsLRxVuuaORdu7wLohVwXVWEHbd8Avw+aGKkIpvVt1wdSkDjJeC6dwq1HJo+GjKOCBhkwggYVMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUO5UCdi5xWvV6vvspQo56S7mrxx0wHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wdQYDVR0RAQH/BGswaYZnaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL3NpZ24tb2xkLWJ1aWxkcy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDhhNmJlN2JjNzc1NjVhZDY1YzhhZTJkZWI0NTY0ODJmZjZhYTUwZWQwHQYKKwYBBAGDvzABBAQPU2lnbiBvbGQgYnVpbGRzMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wdwYKKwYBBAGDvzABCQRpDGdodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3Mvc2lnbi1vbGQtYnVpbGRzLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoOGE2YmU3YmM3NzU2NWFkNjVjOGFlMmRlYjQ1NjQ4MmZmNmFhNTBlZDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzB3BgorBgEEAYO/MAESBGkMZ2h0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9zaWduLW9sZC1idWlsZHMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg4YTZiZTdiYzc3NTY1YWQ2NWM4YWUyZGViNDU2NDgyZmY2YWE1MGVkMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzI3NzQxNDY0ODQyL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYsGCisGAQQB1nkCBAIEfQR7AHkAdwDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAZ7Zg8uxAAAEAwBIMEYCIQC92UBJU0RKqh8um5qrIl5XqYqO8gV9KZsb/Z+97MUReAIhAPzxIyRT8xiFYqCNgi2Cf1owPp+/11aio6as3O0ROAF3MAoGCCqGSM49BAMDA2gAMGUCMQDSZs5TbIUvXCFgUokq7a9PWm2eBkSLCFze48snAxRpSc7EYhXwN3xunuKdsDP6NRUCMAbstSpBGWmAe1w/G4YLigkgkt8wgfD8MaCjMjhrJ/j4AJQxzIVjTAtytCN84LiBqg=="},"tlogEntries":[{"logIndex":"1857837255","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1781765754","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDtALqLRHdmQERm5IaHt+LqAXpZ0CdcuNqVTWRzR94cdwIhAImLK60wlITG413LQ3zU+8nlToGDetOTw+mja/PaU8+/"},"inclusionProof":{"logIndex":"1735932993","rootHash":"LVfyrCogaVSoG6jD6VovQAPatGlc/j+MhVj6wkSPIjY=","treeSize":"1735932999","hashes":["C9EEL/rWETqHolIdT9bfMQk7n2zxWKBO4KsldL8bnK8=","Mhd2dfR9qynP9PYXvKx0U2pJ+FUBxOFLOcdzBc9pAxc=","WF/nSSX52qtYrgTiXAZk6CIMtEPC69IdY+at4yeHbE0=","V7RsnbZ2ZE9PG6nECxoSU+klUAMMptIK9QsgqahFKbc=","dJXuMSDek+62mcjWCUYXgp40qFmpwBsgjLYGp92qOak=","eTWRazxk25OLLgWzA4XIgFtjkVp25o1NykOamizebtI=","uMjlW8ZYxFHFISKF1gqKEB4T/pfjDh7vzUC1E7W0/xU=","Ore1A2Ceavap3m5U3ZAHLkUinE8F4IgttCeJDxxaK98=","95goX8Iw4H4P6V4eHvRqTdVdViLbhEhsF6i7ICnz/+A=","sWDh7SjDHbJf3HWKGRxiURh6iIYrOzn4Zs37yIij6OA=","x7kXd4VRJvVmTHoSla2KyPQdKvGKDX26/7ST9OONR78=","U8wMiVDzFlmyqT7Nw1RSZYU9+fftsSkRhjpbyXnXUk8=","mqM7J+i75IpuD09QejiUBjeH85AZa+fSm4RXXFmj3lI=","72FC5FYLhxB4a4iiC956o0B/fT54ip4R41vsw2QBKtU=","lYGQ9ibwC8+smMkPQ6TchJm3H9Nc/aTYLfdRacGFChw=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1735932999\nLVfyrCogaVSoG6jD6VovQAPatGlc/j+MhVj6wkSPIjY=\n\n— rekor.sigstore.dev wNI9ajBFAiBebWC8+zNab1i5A8PtDyhemSQ4ZF47mp0SmLccniR22gIhANElxRKbD2TLlYbwrMJ+sfWJoUEq2fkVEEAaQhR+Zjgu\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1MzIxNjUxZDI1ODkxNDBhNTQ1MjgzMDkxMmE5ODIxMTc3MDExMjUyNzZmNjNmYmQ0MTlmMDE0MDgzMDBlODg3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNmeGYyMmVidVI4VlRkWFdlUUlVYmlQRVFudnRQb2dGcjFZNnB5a0tHS3J3SWhBT1R6ZzFZUWx6a1dnbS9mQzJVcnBpZ0QraGNjZGllZ2tLWVJyOHZpUUQxbSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaGtSRU5EUW5aeFowRjNTVUpCWjBsVlYwMUpXVUo0YzNCeVVYRnZaVVpFT1dWSlkydGFNV0ZSYTJORmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDVxUlRSTlJGa3hUbFJWZWxkb1kwNU5hbGwzVG1wRk5FMUVZM2RPVkZWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVVyTDJ3NWRXWldWakZTYkRWeWVqZG9jWFJFV2pOUU9WbHpURko0Vm5WMVlVOVNaSFVLTjNkTWIyaFdkMWhXVjBWSVltUTRRWFozSzJGSFMydEpjSFpXZERGM1pGTnJSR3BLWlVNMlpIZHhNVWhLYnl0SGFrdFBRMEpvYTNkbloxbFdUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZQTlZWRENtUnBOWGhYZGxZMmRuWnpjRkZ2TlRaVE4yMXllSGd3ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJSUldVUldVakJTUVZGSUwwSkhjM2RoV1ZwdVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU0wNXdXakkwZEdJeWVHdE1WMG94Q21GWGVHdGplVFUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTlVKbmIzSkNaMFZGUVZsUEwwMUJSVUpDUTNSdlpFaFNkMk42YjNZS1RETlNkbUV5Vm5WTWJVWnFaRWRzZG1KdVRYVmFNbXd3WVVoV2FXUllUbXhqYlU1MlltNVNiR0p1VVhWWk1qbDBUVUk0UjBOcGMwZEJVVkZDWnpjNGR3cEJVVWxGUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVVJaUjBOcGMwZEJVVkZDWnpjNGQwRlJUVVZMUkdob1RtMUtiRTR5U21wT2VtTXhDazVxVm1oYVJGa3hXWHBvYUZwVVNtdGFWMGt3VGxSWk1FOUVTbTFhYWxwb1dWUlZkMXBYVVhkSVVWbExTM2RaUWtKQlIwUjJla0ZDUWtGUlVGVXliRzRLWW1sQ2RtSkhVV2RaYmxad1lrZFNlazFEYzBkRGFYTkhRVkZSUW1jM09IZEJVVlZGU0Zkb01Wb3laSEJpYldSdFdWZE9iRXd5ZEd4amJUVnNZa2hOZEFwWk1qbDBZbGhXZFdGWVVqVk5RakJIUTJselIwRlJVVUpuTnpoM1FWRlpSVVF6U214YWJrMTJZVWRXYUZwSVRYWmlWMFp3WW1wQk4wSm5iM0pDWjBWRkNrRlpUeTlOUVVWSlFrTXdUVXN5YURCa1NFSjZUMms0ZG1SSE9YSmFWelIxV1ZkT01HRlhPWFZqZVRWdVlWaFNiMlJYU2pGak1sWjVXVEk1ZFdSSFZuVUtaRU0xYW1JeU1IZGtkMWxMUzNkWlFrSkJSMFIyZWtGQ1ExRlNjRVJIWkc5a1NGSjNZM3B2ZGt3eVpIQmtSMmd4V1drMWFtSXlNSFpoU0ZadVdqSnNkUXBhTWxwb1dUSlZkbUV5Vm5saWJWWnpZM2t4YW1JeU1YUmtWelZ3WkVocmRreHRaSEJrUjJneFdXazVNMkl6U25KYWJYaDJaRE5OZG1NeWJHNWlhVEYyQ21KSFVYUlpibFp3WWtkU2VreHViR2hpVjNoQlkyMVdiV041T1c5YVYwWnJZM2s1ZEZsWGJIVk5SR2RIUTJselIwRlJVVUpuTnpoM1FWRnZSVXRuZDI4S1QwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkZwRVFXSkNaMjl5UW1kRlJRcEJXVTh2VFVGRlRFSkJNRTFETTA1c1lrZFpkR0ZIT1hwa1IxWnJUVVZCUjBOcGMwZEJVVkZDWnpjNGQwRlJkMFZOWjNkM1lVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk5SR2RIUTJselIwRlJVVUlLWnpjNGQwRlJNRVZMWjNkdlQwZEZNbGx0VlROWmJVMHpUbnBWTWs1WFJtdE9hbFpxVDBkR2JFMXRVbXhaYWxFeFRtcFJORTF0V20xT2JVWm9UbFJDYkFwYVJFRm1RbWR2Y2tKblJVVkJXVTh2VFVGRlQwSkNSVTFFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVFXRkNaMjl5UW1kRlJVRlpUeTlOUVVWUUNrSkJkMDFEYWtWM1RucEZNRTU2VlRGTmFtdDNUR2RaUzB0M1dVSkNRVWRFZG5wQlFrVkJVV2RFUWpWdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNSVkZSUzBSQlozbE9WR041VFVSak1FMTZRak5DWjI5eVFtZEZSUXBCV1U4dlRVRkZVMEpIYTAxYU1tZ3daRWhDZWs5cE9IWmFNbXd3WVVoV2FVeHRUblppVXpsdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2Q2t4WFRuWmlWekV4WW0xc01HVlRPSFZhTW13d1lVaFdhVXd6WkhaamJYUnRZa2M1TTJONU9YcGhWMlIxVEZjNWMxcERNV2xrVjJ4eldraE5kV1ZYUm5RS1lrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzVDBGWlMwdDNXVUpDUVVkRWRucEJRa1YzVVhGRVEyYzBXVlJhYVZwVVpHbFplbU16VGxSWk1RcFpWMUV5VGxkTk5GbFhWWGxhUjFacFRrUlZNazVFWjNsYWJWa3lXVmRGTVUxSFZtdE5RMFZIUTJselIwRlJVVUpuTnpoM1FWSlJSVVYzZDFKa01qbDVDbUV5V25OaU0yUm1Xa2RzZW1OSFJqQlpNbWQzV2tGWlMwdDNXVUpDUVVkRWRucEJRa1pSVWxkRVJsSnZaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV29LWWpJd2RtRklWbTVhTW14MVdqSmFhRmt5VlhaaE1sWjVZbTFXYzJONU1XcGlNakYwWkZjMWNHUklhM1paVjA0d1lWYzVkV041T1hsa1Z6VjZUSHBKTXdwT2VsRjRUa1JaTUU5RVVYbE1Na1l3WkVkV2RHTklVbnBNZWtWM1JtZFpTMHQzV1VKQ1FVZEVkbnBCUWtablVVbEVRVnAzWkZkS2MyRlhUWGRTWjFsTENrdDNXVUpDUVVkRWRucEJRa2RCVVRSRVJGcDVXbGhDZGs5dGFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVUtUMjVLYkZwcWNIbGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMmRaYzBkRGFYTkhRVkZSUWpGdWEwTkNRVWxGWmxGU04wRklhMEZrZDBSa1VGUkNjUXA0YzJOU1RXMU5Xa2hvZVZwYWVtTkRiMnR3WlhWT05EaHlaaXRJYVc1TFFVeDViblZxWjBGQlFWbzNXbWM0ZFhoQlFVRkZRWGRDU1UxRldVTkpVVU01Q2pKVlFrcFZNRkpMY1dnNGRXMDFjWEpKYkRWWWNWbHhUemhuVmpsTFduTmlMMW9yT1RkTlZWSmxRVWxvUVZCNmVFbDVVbFE0ZUdsR1dYRkRUbWRwTWtNS1pqRnZkMUJ3S3k4eE1XRnBielpoY3pOUE1GSlBRVVl6VFVGdlIwTkRjVWRUVFRRNVFrRk5SRUV5WjBGTlIxVkRUVkZFVTFwek5WUmlTVlYyV0VOR1p3cFZiMnR4TjJFNVVGZHRNbVZDYTFOTVEwWjZaVFE0YzI1QmVGSndVMk0zUlZsb1dIZE9NM2gxYm5WTFpITkVVRFpPVWxWRFRVRmljM1JUY0VKSFYyMUJDbVV4ZHk5SE5GbE1hV2RyWjJ0ME9IZG5aa1E0VFdGRGFrMXFhSEpLTDJvMFFVcFJlSHBKVm1wVVFYUjVkRU5PT0RSTWFVSnhaejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg/UcR39J0eubw3K6ll8+Ud8Ct4Jqn/IyuJ7VcTVdVoucCFG8p/xEs17l6+AdbI8WyI6BnDUgMGA8yMDI2MDYxODA2NTU1M1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNjE4MDY1NTUzWjAvBgkqhkiG9w0BCQQxIgQgdMAVTUsbrFRKDvbrt8BQK3MSB2Y0y2QSoSb3YvGoJcswgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwCn4GqmRfFIsaq4mgh/6wo4nAWhcP7tRa1AvmF/MfZSTLWACGlaDNXTF/s99emsUXAjEAxn0xMWph23yA890d3XxU/ctNpYu8nqPLGHuQOPw3H+WfTSTH8BL8P6ocZ05jTaVz"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"UyFlHSWJFApUUoMJEqmCEXcBElJ29j+9QZ8BQIMA6Ic="},"signature":"MEYCIQCfxf22ebuR8VTdXWeQIUbiPEQnvtPogFr1Y6pykKGKrwIhAOTzg1YQlzkWgm/fC2UrpigD+hccdiegkKYRr8viQD1m"}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHTDCCBtGgAwIBAgIUY8An4n3lZfehi23mx3QcQesj1twwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzI4WhcNMjYwNzAzMTQyMzI4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Lglw91DmzYPNNIICOpn0RQhMUMu3T/Y8cMv+/g20SSzks7PTMfaUGh1UvNrA6urkBBCVXGzgIy8Yv4qrZyDEqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUgiTnKu9EUU7K8ntobjAstwYj8t4wHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhTzKcAAAQDAEcwRQIgduolGndk3tmJSfU9bvYkONscpqDtAcy+LWppCsJfGVUCIQDY4qpAH49fMSklyvyeEImMWDyyX8eolQlL1ceWxh3IgzAKBggqhkjOPQQDAwNpADBmAjEA1YBMpUGVsr6fUcKpjJ4Vj1GUkC3uUoKPlBzX2ysJYfNo1pzw98sP8YuuyCNrzyiSAjEAo+6xJzMYU16XPUXSvp/xXs58cbHOvtjZPDmPdgIIeHsdyGCYYw16wL99syykXeuq"}, "tlogEntries":[{"logIndex":"2061664784", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088008", "inclusionPromise":{"signedEntryTimestamp":"MEQCIHNNSmF5gVnaOsYi27K07BWpBJmPzNFx1J6LlWd5TA/rAiAw3mizRlL0GV0g4u/74qpozpA9F42vrBw+dV8TC0FqGQ=="}, "inclusionProof":{"logIndex":"1939760522", "rootHash":"PLXRmVLyr96omEKLD38uJXuESLRKTxhW6iUNZRcOd0Q=", "treeSize":"1939760527", "hashes":["KObhxoiGphjJkbeZ7Yok7Qs2WP0YnESj2Ikg/H7W6js=", "DkpJJ1BeQNrSI+Y7falhGNVfuOQE98NbXHbha8rHS6A=", "s6YJRKn0pg7Tj1E218/f0uFUqEgd/zCro4coPNNnIqE=", "W377Kdci0lawANfKjBqtfwwZcEx7l4KkxBGfN8pJDs8=", "ofQHofhEoTLzUfs1+OpYWu7oyJrIPUTuc0DfmE95IXA=", "nYLK8JQyIB21AL0vzAJF7vlc3U2uuzPKmG/PekTf0FM=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760527\nPLXRmVLyr96omEKLD38uJXuESLRKTxhW6iUNZRcOd0Q=\n\n— rekor.sigstore.dev wNI9ajBFAiEAhmznBtKx8qJp7MtFoTsVb8wL1I/49Y0PHmNxTfa6vO8CIGmzdVhbFk6Ujv4ErEHlvzBEfwLDcilwGcJv/91ZFmaO\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzZjM2ZDAyMGYzMTU2NzRiNzUxMjI4ZGM5M2RiNzE0ZjAzZGJmMGFlYjA5YTYwNGU5NmJjMmZlYzg3MjA5NjE5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQ2NNRW1EYzUxS21najJlSUpuTTB4NmpWaGhCMjVsSGVEa2VTbG9scTlGQkFpQkRzVXB2SzJIWmRQWUZlUmdENktvZ2w3M1YybmVxU25XNGNkYUpoR3diTHc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5SSFowRjNTVUpCWjBsVldUaEJialJ1TTJ4YVptVm9hVEl6YlhnelVXTlJaWE5xTVhSM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBKTkZkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWtrMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVU0VEdkc2R6a3hSRzE2V1ZCT1RrbEpRMDl3YmpCU1VXaE5WVTExTTFRdldUaGpUWFlLS3k5bk1qQlRVM3ByY3pkUVZFMW1ZVlZIYURGVmRrNXlRVFoxY210Q1FrTldXRWQ2WjBsNU9GbDJOSEZ5V25sRVJYRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZuYVZSdUNrdDFPVVZWVlRkTE9HNTBiMkpxUVhOMGQxbHFPSFEwZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlI2UzJOQlFVRlJSQXBCUldOM1VsRkpaMlIxYjJ4SGJtUnJNM1J0U2xObVZUbGlkbGxyVDA1elkzQnhSSFJCWTNrclRGZHdjRU56U21aSFZsVkRTVkZFV1RSeGNFRklORGxtQ2sxVGEyeDVkbmxsUlVsdFRWZEVlWGxZT0dWdmJGRnNUREZqWlZkNGFETkpaM3BCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRVEZaUWswS2NGVkhWbk55Tm1aVlkwdHdha28wVm1veFIxVnJRek4xVlc5TFVHeENlbGd5ZVhOS1dXWk9iekZ3ZW5jNU9ITlFPRmwxZFhsRFRuSjZlV2xUUVdwRlFRcHZLelo0U25wTldWVXhObGhRVlZoVGRuQXZlRmh6TlRoallraFBkblJxV2xCRWJWQmtaMGxKWlVoelpIbEhRMWxaZHpFMmQwdzVPWE41ZVd0WVpYVnhDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgRwYL9riuoepjoqo91TyPr3ONdbOUhh2CtsQxY9x2XocCFQCJBta0eGdKt6BC/GoxXk2VcolOiBgPMjAyNjA3MDMxNDEzMjhaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwMzE0MTMyOFowLwYJKoZIhvcNAQkEMSIEIB0IhEFZbGAYAh24Eg608vNNAPhwmL/1/XeVzKYvj7bGMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMEpGZR4BJFy2gmXPVdwsIGhTcqUhB1ymqII5kueWGnB+GRr5ouZ+zW3ndS8uN3NbxwIwLXSormsE9c8iWkM5ylimsutyvdfyFNxKw5Z7paIz61VUfIPrpafS1LYLngJ3gpyN"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"PzbQIPMVZ0t1Eijck9txTwPb8K6wmmBOlrwv7Icglhk="}, "signature":"MEQCICcMEmDc51Kmgj2eIJnM0x6jVhhB25lHeDkeSlolq9FBAiBDsUpvK2HZdPYFeRgD6Kogl73V2neqSnW4cdaJhGwbLw=="}}
|
build/torch213-cxx11-cu130-aarch64-linux/__init__.py
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import torch
|
| 3 |
+
|
| 4 |
+
from .flash_mla_interface import FlashMLASchedMeta
|
| 5 |
+
from . import flash_mla_interface as _impl
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def get_mla_metadata(*args, **kwargs) -> Tuple[FlashMLASchedMeta, None]:
|
| 9 |
+
return _impl.get_mla_metadata(*args, **kwargs)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def flash_mla_with_kvcache(
|
| 13 |
+
q: torch.Tensor,
|
| 14 |
+
k_cache: torch.Tensor,
|
| 15 |
+
block_table: Optional[torch.Tensor],
|
| 16 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 17 |
+
head_dim_v: int,
|
| 18 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 19 |
+
num_splits: None = None,
|
| 20 |
+
softmax_scale: Optional[float] = None,
|
| 21 |
+
causal: bool = False,
|
| 22 |
+
is_fp8_kvcache: bool = False,
|
| 23 |
+
indices: Optional[torch.Tensor] = None,
|
| 24 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 25 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 26 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 27 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 28 |
+
extra_topk_length: Optional[torch.Tensor] = None,
|
| 29 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 30 |
+
return _impl.flash_mla_with_kvcache(
|
| 31 |
+
q=q,
|
| 32 |
+
k_cache=k_cache,
|
| 33 |
+
block_table=block_table,
|
| 34 |
+
cache_seqlens=cache_seqlens,
|
| 35 |
+
head_dim_v=head_dim_v,
|
| 36 |
+
tile_scheduler_metadata=tile_scheduler_metadata,
|
| 37 |
+
num_splits=num_splits,
|
| 38 |
+
softmax_scale=softmax_scale,
|
| 39 |
+
causal=causal,
|
| 40 |
+
is_fp8_kvcache=is_fp8_kvcache,
|
| 41 |
+
indices=indices,
|
| 42 |
+
attn_sink=attn_sink,
|
| 43 |
+
extra_k_cache=extra_k_cache,
|
| 44 |
+
extra_indices_in_kvcache=extra_indices_in_kvcache,
|
| 45 |
+
topk_length=topk_length,
|
| 46 |
+
extra_topk_length=extra_topk_length,
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def flash_mla_sparse_fwd(
|
| 51 |
+
q: torch.Tensor,
|
| 52 |
+
kv: torch.Tensor,
|
| 53 |
+
indices: torch.Tensor,
|
| 54 |
+
sm_scale: float,
|
| 55 |
+
d_v: int = 512,
|
| 56 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 57 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 58 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 59 |
+
return _impl.flash_mla_sparse_fwd(
|
| 60 |
+
q=q,
|
| 61 |
+
kv=kv,
|
| 62 |
+
indices=indices,
|
| 63 |
+
sm_scale=sm_scale,
|
| 64 |
+
d_v=d_v,
|
| 65 |
+
attn_sink=attn_sink,
|
| 66 |
+
topk_length=topk_length,
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
def flash_attn_varlen_func(
|
| 71 |
+
q: torch.Tensor,
|
| 72 |
+
k: torch.Tensor,
|
| 73 |
+
v: torch.Tensor,
|
| 74 |
+
cu_seqlens_qo: torch.Tensor,
|
| 75 |
+
cu_seqlens_kv: torch.Tensor,
|
| 76 |
+
max_seqlen_qo: int,
|
| 77 |
+
max_seqlen_kv: int,
|
| 78 |
+
dropout_p: float = 0.0,
|
| 79 |
+
softmax_scale: Optional[float] = None,
|
| 80 |
+
causal: bool = False,
|
| 81 |
+
deterministic: bool = False,
|
| 82 |
+
is_varlen: bool = True,
|
| 83 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 84 |
+
return _impl.flash_attn_varlen_func(
|
| 85 |
+
q=q,
|
| 86 |
+
k=k,
|
| 87 |
+
v=v,
|
| 88 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 89 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 90 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 91 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 92 |
+
dropout_p=dropout_p,
|
| 93 |
+
softmax_scale=softmax_scale,
|
| 94 |
+
causal=causal,
|
| 95 |
+
deterministic=deterministic,
|
| 96 |
+
is_varlen=is_varlen,
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 101 |
+
qkv: torch.Tensor,
|
| 102 |
+
cu_seqlens: torch.Tensor,
|
| 103 |
+
max_seqlen: int,
|
| 104 |
+
head_dim_qk: int,
|
| 105 |
+
dropout_p: float = 0.0,
|
| 106 |
+
softmax_scale: Optional[float] = None,
|
| 107 |
+
causal: bool = False,
|
| 108 |
+
deterministic: bool = False,
|
| 109 |
+
is_varlen: bool = True,
|
| 110 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 111 |
+
return _impl.flash_attn_varlen_qkvpacked_func(
|
| 112 |
+
qkv=qkv,
|
| 113 |
+
cu_seqlens=cu_seqlens,
|
| 114 |
+
max_seqlen=max_seqlen,
|
| 115 |
+
head_dim_qk=head_dim_qk,
|
| 116 |
+
dropout_p=dropout_p,
|
| 117 |
+
softmax_scale=softmax_scale,
|
| 118 |
+
causal=causal,
|
| 119 |
+
deterministic=deterministic,
|
| 120 |
+
is_varlen=is_varlen,
|
| 121 |
+
)
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
def flash_attn_varlen_kvpacked_func(
|
| 125 |
+
q: torch.Tensor,
|
| 126 |
+
kv: torch.Tensor,
|
| 127 |
+
cu_seqlens_qo: torch.Tensor,
|
| 128 |
+
cu_seqlens_kv: torch.Tensor,
|
| 129 |
+
max_seqlen_qo: int,
|
| 130 |
+
max_seqlen_kv: int,
|
| 131 |
+
head_dim_qk: int,
|
| 132 |
+
dropout_p: float = 0.0,
|
| 133 |
+
softmax_scale: Optional[float] = None,
|
| 134 |
+
causal: bool = False,
|
| 135 |
+
deterministic: bool = False,
|
| 136 |
+
is_varlen: bool = True,
|
| 137 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 138 |
+
return _impl.flash_attn_varlen_kvpacked_func(
|
| 139 |
+
q=q,
|
| 140 |
+
kv=kv,
|
| 141 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 142 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 143 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 144 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 145 |
+
head_dim_qk=head_dim_qk,
|
| 146 |
+
dropout_p=dropout_p,
|
| 147 |
+
softmax_scale=softmax_scale,
|
| 148 |
+
causal=causal,
|
| 149 |
+
deterministic=deterministic,
|
| 150 |
+
is_varlen=is_varlen,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
__all__ = [
|
| 155 |
+
"__version__",
|
| 156 |
+
"FlashMLASchedMeta",
|
| 157 |
+
"get_mla_metadata",
|
| 158 |
+
"flash_mla_with_kvcache",
|
| 159 |
+
"flash_attn_varlen_func",
|
| 160 |
+
"flash_attn_varlen_qkvpacked_func",
|
| 161 |
+
"flash_attn_varlen_kvpacked_func",
|
| 162 |
+
"flash_mla_sparse_fwd",
|
| 163 |
+
]
|
build/torch213-cxx11-cu130-aarch64-linux/_flash_mla_cuda_2e4b976.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ee832cca901245dcd43c74d7f9eb958c9af66a3f41f36613d63b5e229a906522
|
| 3 |
+
size 7423368
|
build/torch213-cxx11-cu130-aarch64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch213-cxx11-cu130-aarch64-linux/flash_mla/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch213-cxx11-cu130-aarch64-linux/flash_mla_interface.py
ADDED
|
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import dataclasses
|
| 3 |
+
|
| 4 |
+
import torch
|
| 5 |
+
|
| 6 |
+
from ._ops import ops as flash_mla_cuda
|
| 7 |
+
|
| 8 |
+
@dataclasses.dataclass
|
| 9 |
+
class FlashMLASchedMeta:
|
| 10 |
+
"""
|
| 11 |
+
A class that stores the tile scheduler metadata of FlashMLA
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
@dataclasses.dataclass
|
| 15 |
+
class Config:
|
| 16 |
+
b: int
|
| 17 |
+
s_q: int
|
| 18 |
+
h_q: int
|
| 19 |
+
page_block_size: int
|
| 20 |
+
h_k: int
|
| 21 |
+
|
| 22 |
+
causal: bool
|
| 23 |
+
is_fp8_kvcache: bool
|
| 24 |
+
topk: Optional[int]
|
| 25 |
+
|
| 26 |
+
extra_page_block_size: Optional[int]
|
| 27 |
+
extra_topk: Optional[int]
|
| 28 |
+
|
| 29 |
+
have_initialized: bool = False
|
| 30 |
+
|
| 31 |
+
config: Optional[Config] = None
|
| 32 |
+
|
| 33 |
+
tile_scheduler_metadata: Optional[torch.Tensor] = None # (num_sm_parts, TileSchedulerMetaDataSize), dtype torch.int32.
|
| 34 |
+
num_splits: Optional[torch.Tensor] = None # (1), dtype torch.int32.
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def get_mla_metadata(
|
| 38 |
+
*args,
|
| 39 |
+
**kwargs
|
| 40 |
+
) -> Tuple[FlashMLASchedMeta, None]:
|
| 41 |
+
"""
|
| 42 |
+
Returns an empty instance of FlashMLASchedMeta. The actual scheduling metadata will be generated during the first invocation of flash_mla_with_kvcache.
|
| 43 |
+
|
| 44 |
+
Arguments:
|
| 45 |
+
This function does not need any arguments, but we keep *args and **kwargs to be compatible with the old interface.
|
| 46 |
+
|
| 47 |
+
Return:
|
| 48 |
+
A tuple. Due to historical reasons, we return a tuple of (FlashMLASchedMeta, None) now. Only the first element is useful.
|
| 49 |
+
"""
|
| 50 |
+
return FlashMLASchedMeta(), None
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def flash_mla_with_kvcache(
|
| 54 |
+
q: torch.Tensor,
|
| 55 |
+
k_cache: torch.Tensor,
|
| 56 |
+
block_table: Optional[torch.Tensor],
|
| 57 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 58 |
+
head_dim_v: int,
|
| 59 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 60 |
+
num_splits: None = None,
|
| 61 |
+
softmax_scale: Optional[float] = None,
|
| 62 |
+
causal: bool = False,
|
| 63 |
+
is_fp8_kvcache: bool = False,
|
| 64 |
+
indices: Optional[torch.Tensor] = None,
|
| 65 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 66 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 67 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 68 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 69 |
+
extra_topk_length: Optional[torch.Tensor] = None
|
| 70 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 71 |
+
"""
|
| 72 |
+
Arguments:
|
| 73 |
+
q: (batch_size, seq_len_q, num_heads_q, head_dim).
|
| 74 |
+
k_cache: (num_blocks, page_block_size, num_heads_k, head_dim).
|
| 75 |
+
Different modes (including fp8/bf16, and sparsity) has different KV cache layouts. See comments below for details.
|
| 76 |
+
The KV cache must be contiguously valid for sparse attention on sm100. Here "contiguously valid" means that every byte, from the very beginning of the KV cache, till the last byte in the KV cache, is valid memory address to visit (i.e. won't IMA). In other words, the KV cache could be a slice of a larger array, but cannot be a list of disjoint memory blocks.
|
| 77 |
+
block_table: (batch_size, max_num_blocks_per_seq), torch.int32. Can be None when sparse attention is used.
|
| 78 |
+
cache_seqlens: (batch_size), torch.int32. Can be None when sparse attention is used.
|
| 79 |
+
head_dim_v: Head_dim of v. Must be 512
|
| 80 |
+
sched_meta: FlashMLASchedMeta, return by get_mla_metadata. You may reuse the same sched_meta across different invocations, but only when the tensor shapes and the values of cache_seqlens, topk_length, and extra_topk_length remain the same.
|
| 81 |
+
num_splits_placeholder: must be "None" (to be compatible with the old interface).
|
| 82 |
+
softmax_scale: float. The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim_k).
|
| 83 |
+
causal: bool. Whether to apply causal attention mask. Only valid for dense attention
|
| 84 |
+
is_fp8_kvcache: bool.
|
| 85 |
+
indices: (batch_size, seq_len_q, topk). KV indices when sparse attention is enabled.
|
| 86 |
+
Pay attention that indices_in_kvcache[i][j][k] = (the index of the page block where token t resides) * block_size + (the offset of token t among the page block),
|
| 87 |
+
where t is the k-th token of the j-th q-sequence in the i-th batch.
|
| 88 |
+
attn_sink: Optional[torch.Tensor], (num_heads_q, ), torch.float32. If presented, the final output will be scaled by exp(lse) / (exp(lse) + exp(attn_sink)). Have no affect on the returned softmax_lse. +inf will cause the result to become 0.
|
| 89 |
+
extra_k_cache and extra_indices_in_kvcache: If provided, will attend to these extra tokens in addition to those in k_cache and indices_in_kvcache. Their format requirements are the same as k_cache and indices_in_kvcache respectively.
|
| 90 |
+
topk_length/extra_topk_length: (batch_size, ), torch.int32. If provided, only the leftmost topk_length indices will be processed. Useful when the actual topk for different queries are different so that we can save some computation, compared to masking.
|
| 91 |
+
|
| 92 |
+
For DeepSeek V3, DeepSeek V3.1, and DeepSeek V3.2:
|
| 93 |
+
head_dim should be 576 while head_dim_v should be 512.
|
| 94 |
+
In FP8+sparse mode, each token's KV cache is 656 Bytes, structured as:
|
| 95 |
+
- The shape of the tensor `k_cache` is (num_blocks, page_block_size, num_heads_k, head_dim), and num_heads_k must be 1.
|
| 96 |
+
- First 512 bytes: The "quantized NoPE" part, containing 512 float8_e4m3 values.
|
| 97 |
+
- Next 16 bytes: Scale factors, containing 4 float32 values. The first float32 is the scale for the first 128 float8_e4m3 values, the second for the next 128, and so on.
|
| 98 |
+
- Last 128 bytes: The "RoPE" part, containing 64 bfloat16 values. This part is not quantized for accuracy.
|
| 99 |
+
|
| 100 |
+
Return:
|
| 101 |
+
out: (batch_size, seq_len_q, num_heads_q, head_dim_v).
|
| 102 |
+
softmax_lse: (batch_size, num_heads_q, seq_len_q), torch.float32.
|
| 103 |
+
"""
|
| 104 |
+
sched_meta = tile_scheduler_metadata
|
| 105 |
+
indices_in_kvcache = indices
|
| 106 |
+
assert isinstance(sched_meta, FlashMLASchedMeta), "tile_scheduler_metadata must be of type FlashMLASchedMeta"
|
| 107 |
+
assert num_splits is None, "num_splits must be None"
|
| 108 |
+
|
| 109 |
+
topk = indices_in_kvcache.shape[-1] if indices_in_kvcache is not None else None
|
| 110 |
+
extra_k_page_block_size = extra_k_cache.shape[1] if extra_k_cache is not None else None
|
| 111 |
+
extra_topk = extra_indices_in_kvcache.shape[-1] if extra_indices_in_kvcache is not None else None
|
| 112 |
+
if softmax_scale is None:
|
| 113 |
+
softmax_scale = q.shape[-1] ** (-0.5)
|
| 114 |
+
|
| 115 |
+
if not sched_meta.have_initialized:
|
| 116 |
+
# Sanity check. We only perform sanity check during the first invocation to save CPU time.
|
| 117 |
+
if indices_in_kvcache is not None:
|
| 118 |
+
assert not causal, "causal must be False when indices_in_kvcache is not None (i.e. sparse attention is enabled)"
|
| 119 |
+
|
| 120 |
+
# Initialize the tile scheduler metadata during the first invocation.
|
| 121 |
+
sched_meta.have_initialized = True
|
| 122 |
+
sched_meta.config = FlashMLASchedMeta.Config(
|
| 123 |
+
q.shape[0],
|
| 124 |
+
q.shape[1],
|
| 125 |
+
q.shape[2],
|
| 126 |
+
k_cache.shape[1],
|
| 127 |
+
k_cache.shape[2],
|
| 128 |
+
|
| 129 |
+
causal,
|
| 130 |
+
is_fp8_kvcache,
|
| 131 |
+
topk,
|
| 132 |
+
|
| 133 |
+
extra_k_page_block_size,
|
| 134 |
+
extra_topk,
|
| 135 |
+
)
|
| 136 |
+
else:
|
| 137 |
+
# Check whether the input arguments are consistent with sched_meta
|
| 138 |
+
helper_msg = " Your input arguments are inconsistent with sched_meta. Please make sure the input arguments are consistent across different invocations of flash_mla_with_kvcache on the same sched_meta."
|
| 139 |
+
assert sched_meta.config is not None
|
| 140 |
+
assert sched_meta.config.b == q.shape[0], "sched_meta.config.b must be equal to batch_size." + helper_msg
|
| 141 |
+
assert sched_meta.config.s_q == q.shape[1], "sched_meta.config.s_q must be equal to seq_len_q." + helper_msg
|
| 142 |
+
assert sched_meta.config.h_q == q.shape[2], "sched_meta.config.h_q must be equal to num_heads_q." + helper_msg
|
| 143 |
+
assert sched_meta.config.page_block_size == k_cache.shape[1], "sched_meta.config.page_block_size must be equal to page_block_size." + helper_msg
|
| 144 |
+
assert sched_meta.config.h_k == k_cache.shape[2], "sched_meta.config.h_k must be equal to num_heads_k." + helper_msg
|
| 145 |
+
assert sched_meta.config.causal == causal, "sched_meta.config.causal must be equal to causal." + helper_msg
|
| 146 |
+
assert sched_meta.config.is_fp8_kvcache == is_fp8_kvcache, "sched_meta.config.is_fp8_kvcache must be equal to is_fp8_kvcache." + helper_msg
|
| 147 |
+
assert sched_meta.config.topk == topk, "sched_meta.config.topk must be equal to the last dim of indices_in_kvcache." + helper_msg
|
| 148 |
+
assert sched_meta.config.extra_page_block_size == extra_k_page_block_size, "sched_meta.config.extra_page_block_size must be equal to the page_block_size of extra_k_cache." + helper_msg
|
| 149 |
+
assert sched_meta.config.extra_topk == extra_topk, "sched_meta.config.extra_topk must be equal to the last dim of extra_indices_in_kvcache." + helper_msg
|
| 150 |
+
|
| 151 |
+
if topk is not None:
|
| 152 |
+
# Sparse attention
|
| 153 |
+
assert not causal, "causal must be False when sparse attention is enabled"
|
| 154 |
+
assert is_fp8_kvcache, "is_fp8_kvcache must be True when sparse attention is enabled"
|
| 155 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.sparse_decode_fwd(
|
| 156 |
+
q, k_cache, indices_in_kvcache, topk_length, attn_sink,
|
| 157 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits,
|
| 158 |
+
extra_k_cache, extra_indices_in_kvcache, extra_topk_length,
|
| 159 |
+
head_dim_v, softmax_scale
|
| 160 |
+
)
|
| 161 |
+
else:
|
| 162 |
+
# Dense attention
|
| 163 |
+
assert indices_in_kvcache is None and attn_sink is None and extra_k_cache is None and extra_indices_in_kvcache is None and topk_length is None and extra_topk_length is None, "indices_in_kvcache, attn_sink, extra_k_cache, extra_indices_in_kvcache, topk_length and extra_topk_length must be None when dense attention is used."
|
| 164 |
+
assert block_table is not None and cache_seqlens is not None, "block_table and cache_seqlens must be provided when dense attention is used."
|
| 165 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.dense_decode_fwd(
|
| 166 |
+
q, k_cache, head_dim_v,
|
| 167 |
+
cache_seqlens, block_table,
|
| 168 |
+
softmax_scale, causal,
|
| 169 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits
|
| 170 |
+
)
|
| 171 |
+
sched_meta.tile_scheduler_metadata = new_tile_scheduler_metadata
|
| 172 |
+
sched_meta.num_splits = new_num_splits
|
| 173 |
+
return (out, lse)
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
def flash_mla_sparse_fwd(
|
| 177 |
+
q: torch.Tensor,
|
| 178 |
+
kv: torch.Tensor,
|
| 179 |
+
indices: torch.Tensor,
|
| 180 |
+
sm_scale: float,
|
| 181 |
+
d_v: int = 512,
|
| 182 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 183 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 184 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 185 |
+
"""
|
| 186 |
+
Sparse attention prefill kernel
|
| 187 |
+
|
| 188 |
+
Args:
|
| 189 |
+
q: [s_q, h_q, d_qk], bfloat16
|
| 190 |
+
kv: [s_kv, h_kv, d_qk], bfloat16
|
| 191 |
+
indices: [s_q, h_kv, topk], int32. Invalid indices should be set to -1 or numbers >= s_kv
|
| 192 |
+
sm_scale: float
|
| 193 |
+
d_v: The dimension of value vectors. Can only be 512
|
| 194 |
+
attn_sink: optional, [h_q], float32.
|
| 195 |
+
If attn_sink is provided, when computing output, output will be additionally multiplied by exp(lse) / (exp(lse) + exp(attn_sink)).
|
| 196 |
+
+-inf in attn_sink will be handled normally (i.e., -inf has no effect, +inf will make corresponding output all zeros).
|
| 197 |
+
This argument has no effect on lse and max_logits.
|
| 198 |
+
topk_length: optional, [s_q], int32. If provided, the i-th q token will only attend to k tokens specified by indices[i, :, :topk_length[i]], ignoring later k/v tokens (even if provided in indices).
|
| 199 |
+
In extremely rare cases (topk_length provided, there is a valid topk index between topk_length[i] ~ s_kv, and that topk index points to a k token containing NaN), operator output will contain NaN, so please avoid this situation.
|
| 200 |
+
|
| 201 |
+
Returns:
|
| 202 |
+
(output, max_logits, lse)
|
| 203 |
+
Please refer to tests/ref.py for the precise definitions of these parameters.
|
| 204 |
+
- output: [s_q, h_q, d_v], bfloat16
|
| 205 |
+
- max_logits: [s_q, h_q], float
|
| 206 |
+
- lse: [s_q, h_q], float, log-sum-exp of attention scores
|
| 207 |
+
"""
|
| 208 |
+
results = flash_mla_cuda.sparse_prefill_fwd(
|
| 209 |
+
q, kv, indices, sm_scale, d_v, attn_sink, topk_length
|
| 210 |
+
)
|
| 211 |
+
return results
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def _flash_attn_varlen_forward(
|
| 215 |
+
q: torch.Tensor,
|
| 216 |
+
k: torch.Tensor,
|
| 217 |
+
v: torch.Tensor,
|
| 218 |
+
cu_seqlens_qo: torch.Tensor,
|
| 219 |
+
cu_seqlens_kv: torch.Tensor,
|
| 220 |
+
max_seqlen_qo: int,
|
| 221 |
+
max_seqlen_kv: int,
|
| 222 |
+
out: Optional[torch.Tensor] = None,
|
| 223 |
+
lse: Optional[torch.Tensor] = None,
|
| 224 |
+
causal: bool = False,
|
| 225 |
+
softmax_scale: Optional[float] = None,
|
| 226 |
+
is_varlen: bool = True,
|
| 227 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 228 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 229 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 230 |
+
|
| 231 |
+
mask_mode_code = 1 if causal else 0
|
| 232 |
+
if softmax_scale is None:
|
| 233 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 234 |
+
|
| 235 |
+
if out is None:
|
| 236 |
+
out = torch.empty(qo_total_len, num_qo_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 237 |
+
if lse is None:
|
| 238 |
+
# Make lse contiguous on seqlen dim
|
| 239 |
+
lse = torch.empty(num_qo_heads, qo_total_len, device=q.device, dtype=torch.float32).T
|
| 240 |
+
|
| 241 |
+
workspace_buffer = torch.empty(32 * 1024 * 1024, dtype=torch.uint8, device=q.device)
|
| 242 |
+
flash_mla_cuda.dense_prefill_fwd(
|
| 243 |
+
workspace_buffer,
|
| 244 |
+
q,
|
| 245 |
+
k,
|
| 246 |
+
v,
|
| 247 |
+
cu_seqlens_qo,
|
| 248 |
+
cu_seqlens_kv,
|
| 249 |
+
out,
|
| 250 |
+
lse,
|
| 251 |
+
mask_mode_code,
|
| 252 |
+
softmax_scale,
|
| 253 |
+
max_seqlen_qo,
|
| 254 |
+
max_seqlen_kv,
|
| 255 |
+
is_varlen,
|
| 256 |
+
)
|
| 257 |
+
|
| 258 |
+
return out, lse
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
def _flash_attn_varlen_backward(
|
| 262 |
+
do: torch.Tensor,
|
| 263 |
+
q: torch.Tensor,
|
| 264 |
+
k: torch.Tensor,
|
| 265 |
+
v: torch.Tensor,
|
| 266 |
+
out: torch.Tensor,
|
| 267 |
+
lse: torch.Tensor,
|
| 268 |
+
cu_seqlens_qo: torch.Tensor,
|
| 269 |
+
cu_seqlens_kv: torch.Tensor,
|
| 270 |
+
max_seqlen_qo: int,
|
| 271 |
+
max_seqlen_kv: int,
|
| 272 |
+
dq: Optional[torch.Tensor] = None,
|
| 273 |
+
dk: Optional[torch.Tensor] = None,
|
| 274 |
+
dv: Optional[torch.Tensor] = None,
|
| 275 |
+
causal: bool = False,
|
| 276 |
+
softmax_scale: Optional[float] = None,
|
| 277 |
+
is_varlen: bool = True,
|
| 278 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 279 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 280 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 281 |
+
|
| 282 |
+
# TODO: fix bwd GQA
|
| 283 |
+
if num_qo_heads != num_kv_heads:
|
| 284 |
+
raise ValueError(f"SM100 bwd doesn't support GQA now. num_qo_heads: {num_qo_heads}, num_kv_heads: {num_kv_heads}.")
|
| 285 |
+
|
| 286 |
+
mask_mode_code = 1 if causal else 0
|
| 287 |
+
if softmax_scale is None:
|
| 288 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 289 |
+
|
| 290 |
+
if dq is None:
|
| 291 |
+
dq = torch.empty(qo_total_len, num_qo_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 292 |
+
if dk is None:
|
| 293 |
+
dk = torch.empty(kv_total_len, num_kv_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 294 |
+
if dv is None:
|
| 295 |
+
dv = torch.empty(kv_total_len, num_kv_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 296 |
+
|
| 297 |
+
max_seqlen_qo_aligned = (max_seqlen_qo + 7) // 8 * 8
|
| 298 |
+
bs = cu_seqlens_qo.shape[0] - 1
|
| 299 |
+
workspace_bytes = 0
|
| 300 |
+
workspace_bytes += 4 * bs * max_seqlen_qo_aligned * num_qo_heads * head_dim_qk # dQ_acc
|
| 301 |
+
workspace_bytes += 4 * max_seqlen_qo_aligned * bs * num_qo_heads * 2 # sum_OdO and scaled_lse
|
| 302 |
+
if num_qo_heads != num_kv_heads:
|
| 303 |
+
workspace_bytes += 2 * kv_total_len * num_qo_heads * (head_dim_qk + head_dim_vo) # dKV_acc
|
| 304 |
+
workspace_buffer = torch.empty(workspace_bytes, dtype=torch.uint8, device=q.device)
|
| 305 |
+
flash_mla_cuda.dense_prefill_bwd(
|
| 306 |
+
workspace_buffer,
|
| 307 |
+
do,
|
| 308 |
+
q,
|
| 309 |
+
k,
|
| 310 |
+
v,
|
| 311 |
+
out,
|
| 312 |
+
lse,
|
| 313 |
+
cu_seqlens_qo,
|
| 314 |
+
cu_seqlens_kv,
|
| 315 |
+
dq,
|
| 316 |
+
dk,
|
| 317 |
+
dv,
|
| 318 |
+
mask_mode_code,
|
| 319 |
+
softmax_scale,
|
| 320 |
+
max_seqlen_qo,
|
| 321 |
+
max_seqlen_kv,
|
| 322 |
+
is_varlen,
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
return dq, dk, dv
|
| 326 |
+
|
| 327 |
+
|
| 328 |
+
class FlashAttnVarlenFunc(torch.autograd.Function):
|
| 329 |
+
def forward(
|
| 330 |
+
ctx,
|
| 331 |
+
q: torch.Tensor,
|
| 332 |
+
k: torch.Tensor,
|
| 333 |
+
v: torch.Tensor,
|
| 334 |
+
cu_seqlens_qo: torch.Tensor,
|
| 335 |
+
cu_seqlens_kv: torch.Tensor,
|
| 336 |
+
max_seqlen_qo: int,
|
| 337 |
+
max_seqlen_kv: int,
|
| 338 |
+
causal: bool = False,
|
| 339 |
+
softmax_scale: Optional[float] = None,
|
| 340 |
+
is_varlen: bool = True,
|
| 341 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 342 |
+
out, lse = _flash_attn_varlen_forward(
|
| 343 |
+
q, k, v,
|
| 344 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 345 |
+
causal=causal, softmax_scale=softmax_scale,
|
| 346 |
+
is_varlen=is_varlen,
|
| 347 |
+
)
|
| 348 |
+
ctx.save_for_backward(q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv)
|
| 349 |
+
ctx.max_seqlen_qo = max_seqlen_qo
|
| 350 |
+
ctx.max_seqlen_kv = max_seqlen_kv
|
| 351 |
+
ctx.causal = causal
|
| 352 |
+
ctx.softmax_scale = softmax_scale
|
| 353 |
+
ctx.is_varlen = is_varlen
|
| 354 |
+
return out, lse
|
| 355 |
+
|
| 356 |
+
def backward(
|
| 357 |
+
ctx,
|
| 358 |
+
do: torch.Tensor,
|
| 359 |
+
dlse: torch.Tensor,
|
| 360 |
+
):
|
| 361 |
+
del dlse # LSE doesn't support backward currently
|
| 362 |
+
q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv = ctx.saved_tensors
|
| 363 |
+
dq, dk, dv = _flash_attn_varlen_backward(
|
| 364 |
+
do, q, k, v, out, lse,
|
| 365 |
+
cu_seqlens_qo, cu_seqlens_kv, ctx.max_seqlen_qo, ctx.max_seqlen_kv,
|
| 366 |
+
causal=ctx.causal, softmax_scale=ctx.softmax_scale,
|
| 367 |
+
is_varlen=ctx.is_varlen,
|
| 368 |
+
)
|
| 369 |
+
return dq, dk, dv, None, None, None, None, None, None, None
|
| 370 |
+
|
| 371 |
+
|
| 372 |
+
def flash_attn_varlen_func(
|
| 373 |
+
q: torch.Tensor,
|
| 374 |
+
k: torch.Tensor,
|
| 375 |
+
v: torch.Tensor,
|
| 376 |
+
cu_seqlens_qo: torch.Tensor,
|
| 377 |
+
cu_seqlens_kv: torch.Tensor,
|
| 378 |
+
max_seqlen_qo: int,
|
| 379 |
+
max_seqlen_kv: int,
|
| 380 |
+
dropout_p: float = 0.0,
|
| 381 |
+
softmax_scale: Optional[float] = None,
|
| 382 |
+
causal: bool = False,
|
| 383 |
+
deterministic: bool = False,
|
| 384 |
+
is_varlen: bool = True,
|
| 385 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 386 |
+
assert dropout_p == 0.0
|
| 387 |
+
assert not deterministic
|
| 388 |
+
return FlashAttnVarlenFunc.apply(
|
| 389 |
+
q, k, v,
|
| 390 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 391 |
+
causal, softmax_scale, is_varlen,
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 396 |
+
qkv: torch.Tensor,
|
| 397 |
+
cu_seqlens: torch.Tensor,
|
| 398 |
+
max_seqlen: int,
|
| 399 |
+
head_dim_qk: int,
|
| 400 |
+
dropout_p: float = 0.0,
|
| 401 |
+
softmax_scale: Optional[float] = None,
|
| 402 |
+
causal: bool = False,
|
| 403 |
+
deterministic: bool = False,
|
| 404 |
+
is_varlen: bool = True,
|
| 405 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 406 |
+
assert dropout_p == 0.0
|
| 407 |
+
assert not deterministic
|
| 408 |
+
return FlashAttnVarlenFunc.apply(
|
| 409 |
+
qkv[:, :, :head_dim_qk], qkv[:, :, head_dim_qk:head_dim_qk * 2], qkv[:, :, head_dim_qk * 2:],
|
| 410 |
+
cu_seqlens, cu_seqlens, max_seqlen, max_seqlen,
|
| 411 |
+
causal, softmax_scale, is_varlen,
|
| 412 |
+
)
|
| 413 |
+
|
| 414 |
+
|
| 415 |
+
def flash_attn_varlen_kvpacked_func(
|
| 416 |
+
q: torch.Tensor,
|
| 417 |
+
kv: torch.Tensor,
|
| 418 |
+
cu_seqlens_qo: torch.Tensor,
|
| 419 |
+
cu_seqlens_kv: torch.Tensor,
|
| 420 |
+
max_seqlen_qo: int,
|
| 421 |
+
max_seqlen_kv: int,
|
| 422 |
+
head_dim_qk: int,
|
| 423 |
+
dropout_p: float = 0.0,
|
| 424 |
+
softmax_scale: Optional[float] = None,
|
| 425 |
+
causal: bool = False,
|
| 426 |
+
deterministic: bool = False,
|
| 427 |
+
is_varlen: bool = True,
|
| 428 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 429 |
+
assert dropout_p == 0.0
|
| 430 |
+
assert not deterministic
|
| 431 |
+
return FlashAttnVarlenFunc.apply(
|
| 432 |
+
q, kv[:, :, :head_dim_qk], kv[:, :, head_dim_qk:],
|
| 433 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 434 |
+
causal, softmax_scale, is_varlen,
|
| 435 |
+
)
|
build/torch213-cxx11-cu130-aarch64-linux/metadata.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"10.0f",
|
| 11 |
+
"9.0a"
|
| 12 |
+
]
|
| 13 |
+
},
|
| 14 |
+
"digest": {
|
| 15 |
+
"algorithm": "sha256",
|
| 16 |
+
"files": {
|
| 17 |
+
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "7oMsypASRdzUPHTX+euVjJr2aj9B82YT1jteIpqQZSI=",
|
| 19 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 20 |
+
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
+
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
+
}
|
| 23 |
+
}
|
| 24 |
+
}
|
build/torch213-cxx11-cu130-aarch64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtGgAwIBAgIUZ6pmPXDFg3oqfoUIXYdly4De9MwwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzI5WhcNMjYwNzAzMTQyMzI5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoLIp4N8vbhgCpTf3vXb8IdFRl0GWZAOi8v6PTOrkTTm/czRX0eKWMjnoDDkASnDDtlDw+I2xF6nJkkh8jbtNjaOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUIE8lJPPDssdFIg5kEwZzxEyS3GYwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhTz70AAAQDAEcwRQIgG82z3B4VXPclXjCEWoKLofYoSKLH6kBomWFS/V4ek94CIQCeoPwgJX/if5OPIsLZauESkG+OtU1IBPHA7G5eA9H9vTAKBggqhkjOPQQDAwNoADBlAjBfukmcjkSGK+TnU90tjS84fyhOjeOpIpd6fI2BPvsPK1jTkzHhM6Au+k4cthR1O1ACMQD9d1JcB6KCPsf0olMftE59t9wymVIX5dtyUoOCY9Ooo1juupTUCWZ1NIjhkGThtWk="}, "tlogEntries":[{"logIndex":"2061664883", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088009", "inclusionPromise":{"signedEntryTimestamp":"MEUCICrIu3nqCwak/Ss3OcpiEJ9McBQvoD2GBTZbH7F8uK65AiEA+8jvLA4lsJGLWHc1oR7Oyhs0kmn7jxqGSxV8gQyn4HA="}, "inclusionProof":{"logIndex":"1939760621", "rootHash":"GkEJn21wp8Dd3w4v+gYZGsz98mBy8t8ZfW5hrrwVzYQ=", "treeSize":"1939760633", "hashes":["fK8A1U19tvBhsl/Llacw15JaoyHWAibl0zzkilF7Nrw=", "cObb55I2ziojQMWT2IUazuEPoSyBQbr30AH16ClpaMA=", "rQJ4mp8/3LdgyrfqS5kWod3RUSDSqrBqmD8AMP6xVsI=", "ticy84aTzaISCRc2d/lTwHrZTv51qtmSkdbG25l/aDc=", "3nN89Mq09Y2yuqVeMexLTdV34bx1QTZKicKkbYVNy4k=", "oqh1vcY/P5TeSfBjeLwc/OaMwv+e8FGYnkhMuWqLKrk=", "z03264iMXCMpNPp+BWbLKZhg53j5ix0LbpC4ANTMigk=", "ofQHofhEoTLzUfs1+OpYWu7oyJrIPUTuc0DfmE95IXA=", "nYLK8JQyIB21AL0vzAJF7vlc3U2uuzPKmG/PekTf0FM=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760633\nGkEJn21wp8Dd3w4v+gYZGsz98mBy8t8ZfW5hrrwVzYQ=\n\n— rekor.sigstore.dev wNI9ajBGAiEAugXRLdGIL60GEzxvrJFu2Sboc6R/s24nu5IbgfLfmlgCIQC2vuHgiI7i5cpGt5bbLu7OopdhfE0iHgxwom9TcALSXQ==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhYmNkYTA1MmJkMWE1ODA1YzMwOGQ1ZTdlNzZhMGViMWNlNTIyOTZkNjkxZDRmYzRjOTY3NGIwNjQ3NjY3NzM0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNnQ2E4U3ZzKzFpM1lPOTdkcTQ3Ymd6VmN5bDZKZTc0N09mdTR2WEREcmJRSWhBUG8ySndnanVaYTVPT0xFcmtVWVljaW9IdHBRc1VYNkZuSnpKUng0bnVIQSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SSFowRjNTVUpCWjBsVldqWndiVkJZUkVabk0yOXhabTlWU1ZoWlpHeDVORVJsT1UxM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBKTlZkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWtrMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ2VEVsd05FNDRkbUpvWjBOd1ZHWXpkbGhpT0Vsa1JsSnNNRWRYV2tGUGFUaDJObEFLVkU5eWExUlViUzlqZWxKWU1HVkxWMDFxYm05RVJHdEJVMjVFUkhSc1JIY3JTVEo0UmpadVNtdHJhRGhxWW5ST2FtRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZKUlRoc0NrcFFVRVJ6YzJSR1NXYzFhMFYzV25wNFJYbFRNMGRaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlI2TnpCQlFVRlJSQXBCUldOM1VsRkpaMGM0TW5velFqUldXRkJqYkZocVEwVlhiMHRNYjJaWmIxTkxURWcyYTBKdmJWZEdVeTlXTkdWck9UUkRTVkZEWlc5UWQyZEtXQzlwQ21ZMVQxQkpjMHhhWVhWRlUydEhLMDkwVlRGSlFsQklRVGRITldWQk9VZzVkbFJCUzBKblozRm9hMnBQVUZGUlJFRjNUbTlCUkVKc1FXcENablZyYldNS2FtdFRSMHNyVkc1Vk9UQjBhbE00TkdaNWFFOXFaVTl3U1hCa05tWkpNa0pRZG5OUVN6RnFWR3Q2U0doTk5rRjFLMnMwWTNSb1VqRlBNVUZEVFZGRU9RcGtNVXBqUWpaTFExQnpaakJ2YkUxbWRFVTFPWFE1ZDNsdFZrbFlOV1IwZVZWdlQwTlpPVTl2YnpGcWRYVndWRlZEVjFveFRrbHFhR3RIVkdoMFYyczlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQguF+wvZ/9dRp+XejcOWkZrm6HJqwKT5JkPacKKdhuDoUCFF0hBTycElJXXalnBILITBPDp+R9GA8yMDI2MDcwMzE0MTMyOVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzAzMTQxMzI5WjAvBgkqhkiG9w0BCQQxIgQgsL2pOiJO/hZNW5Vn8SlVQw3RDumt80f/fAJlp6z0PogwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAPCVF4WKmHjwwRIi3AGWO2MYxYYigm0ioOF/aP4lbjMdIPf2qqUarb73GdMyP70HDgIwVAMn2BFmj+H1tuv1bBpCJacydocNRIg/vhgc2ekCifmRAcNLbvE9mPTS2DyLLW4g"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"q82gUr0aWAXDCNXn52oOsc5SKW1pHU/EyWdLBkdmdzQ="}, "signature":"MEYCIQCgCa8Svs+1i3YO97dq47bgzVcyl6Je747Ofu4vXDDrbQIhAPo2JwgjuZa5OOLErkUYYcioHtpQsUX6FnJzJRx4nuHA"}}
|
build/torch213-cxx11-cu132-aarch64-linux/__init__.py
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import torch
|
| 3 |
+
|
| 4 |
+
from .flash_mla_interface import FlashMLASchedMeta
|
| 5 |
+
from . import flash_mla_interface as _impl
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def get_mla_metadata(*args, **kwargs) -> Tuple[FlashMLASchedMeta, None]:
|
| 9 |
+
return _impl.get_mla_metadata(*args, **kwargs)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def flash_mla_with_kvcache(
|
| 13 |
+
q: torch.Tensor,
|
| 14 |
+
k_cache: torch.Tensor,
|
| 15 |
+
block_table: Optional[torch.Tensor],
|
| 16 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 17 |
+
head_dim_v: int,
|
| 18 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 19 |
+
num_splits: None = None,
|
| 20 |
+
softmax_scale: Optional[float] = None,
|
| 21 |
+
causal: bool = False,
|
| 22 |
+
is_fp8_kvcache: bool = False,
|
| 23 |
+
indices: Optional[torch.Tensor] = None,
|
| 24 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 25 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 26 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 27 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 28 |
+
extra_topk_length: Optional[torch.Tensor] = None,
|
| 29 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 30 |
+
return _impl.flash_mla_with_kvcache(
|
| 31 |
+
q=q,
|
| 32 |
+
k_cache=k_cache,
|
| 33 |
+
block_table=block_table,
|
| 34 |
+
cache_seqlens=cache_seqlens,
|
| 35 |
+
head_dim_v=head_dim_v,
|
| 36 |
+
tile_scheduler_metadata=tile_scheduler_metadata,
|
| 37 |
+
num_splits=num_splits,
|
| 38 |
+
softmax_scale=softmax_scale,
|
| 39 |
+
causal=causal,
|
| 40 |
+
is_fp8_kvcache=is_fp8_kvcache,
|
| 41 |
+
indices=indices,
|
| 42 |
+
attn_sink=attn_sink,
|
| 43 |
+
extra_k_cache=extra_k_cache,
|
| 44 |
+
extra_indices_in_kvcache=extra_indices_in_kvcache,
|
| 45 |
+
topk_length=topk_length,
|
| 46 |
+
extra_topk_length=extra_topk_length,
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def flash_mla_sparse_fwd(
|
| 51 |
+
q: torch.Tensor,
|
| 52 |
+
kv: torch.Tensor,
|
| 53 |
+
indices: torch.Tensor,
|
| 54 |
+
sm_scale: float,
|
| 55 |
+
d_v: int = 512,
|
| 56 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 57 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 58 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 59 |
+
return _impl.flash_mla_sparse_fwd(
|
| 60 |
+
q=q,
|
| 61 |
+
kv=kv,
|
| 62 |
+
indices=indices,
|
| 63 |
+
sm_scale=sm_scale,
|
| 64 |
+
d_v=d_v,
|
| 65 |
+
attn_sink=attn_sink,
|
| 66 |
+
topk_length=topk_length,
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
def flash_attn_varlen_func(
|
| 71 |
+
q: torch.Tensor,
|
| 72 |
+
k: torch.Tensor,
|
| 73 |
+
v: torch.Tensor,
|
| 74 |
+
cu_seqlens_qo: torch.Tensor,
|
| 75 |
+
cu_seqlens_kv: torch.Tensor,
|
| 76 |
+
max_seqlen_qo: int,
|
| 77 |
+
max_seqlen_kv: int,
|
| 78 |
+
dropout_p: float = 0.0,
|
| 79 |
+
softmax_scale: Optional[float] = None,
|
| 80 |
+
causal: bool = False,
|
| 81 |
+
deterministic: bool = False,
|
| 82 |
+
is_varlen: bool = True,
|
| 83 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 84 |
+
return _impl.flash_attn_varlen_func(
|
| 85 |
+
q=q,
|
| 86 |
+
k=k,
|
| 87 |
+
v=v,
|
| 88 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 89 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 90 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 91 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 92 |
+
dropout_p=dropout_p,
|
| 93 |
+
softmax_scale=softmax_scale,
|
| 94 |
+
causal=causal,
|
| 95 |
+
deterministic=deterministic,
|
| 96 |
+
is_varlen=is_varlen,
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 101 |
+
qkv: torch.Tensor,
|
| 102 |
+
cu_seqlens: torch.Tensor,
|
| 103 |
+
max_seqlen: int,
|
| 104 |
+
head_dim_qk: int,
|
| 105 |
+
dropout_p: float = 0.0,
|
| 106 |
+
softmax_scale: Optional[float] = None,
|
| 107 |
+
causal: bool = False,
|
| 108 |
+
deterministic: bool = False,
|
| 109 |
+
is_varlen: bool = True,
|
| 110 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 111 |
+
return _impl.flash_attn_varlen_qkvpacked_func(
|
| 112 |
+
qkv=qkv,
|
| 113 |
+
cu_seqlens=cu_seqlens,
|
| 114 |
+
max_seqlen=max_seqlen,
|
| 115 |
+
head_dim_qk=head_dim_qk,
|
| 116 |
+
dropout_p=dropout_p,
|
| 117 |
+
softmax_scale=softmax_scale,
|
| 118 |
+
causal=causal,
|
| 119 |
+
deterministic=deterministic,
|
| 120 |
+
is_varlen=is_varlen,
|
| 121 |
+
)
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
def flash_attn_varlen_kvpacked_func(
|
| 125 |
+
q: torch.Tensor,
|
| 126 |
+
kv: torch.Tensor,
|
| 127 |
+
cu_seqlens_qo: torch.Tensor,
|
| 128 |
+
cu_seqlens_kv: torch.Tensor,
|
| 129 |
+
max_seqlen_qo: int,
|
| 130 |
+
max_seqlen_kv: int,
|
| 131 |
+
head_dim_qk: int,
|
| 132 |
+
dropout_p: float = 0.0,
|
| 133 |
+
softmax_scale: Optional[float] = None,
|
| 134 |
+
causal: bool = False,
|
| 135 |
+
deterministic: bool = False,
|
| 136 |
+
is_varlen: bool = True,
|
| 137 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 138 |
+
return _impl.flash_attn_varlen_kvpacked_func(
|
| 139 |
+
q=q,
|
| 140 |
+
kv=kv,
|
| 141 |
+
cu_seqlens_qo=cu_seqlens_qo,
|
| 142 |
+
cu_seqlens_kv=cu_seqlens_kv,
|
| 143 |
+
max_seqlen_qo=max_seqlen_qo,
|
| 144 |
+
max_seqlen_kv=max_seqlen_kv,
|
| 145 |
+
head_dim_qk=head_dim_qk,
|
| 146 |
+
dropout_p=dropout_p,
|
| 147 |
+
softmax_scale=softmax_scale,
|
| 148 |
+
causal=causal,
|
| 149 |
+
deterministic=deterministic,
|
| 150 |
+
is_varlen=is_varlen,
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
|
| 154 |
+
__all__ = [
|
| 155 |
+
"__version__",
|
| 156 |
+
"FlashMLASchedMeta",
|
| 157 |
+
"get_mla_metadata",
|
| 158 |
+
"flash_mla_with_kvcache",
|
| 159 |
+
"flash_attn_varlen_func",
|
| 160 |
+
"flash_attn_varlen_qkvpacked_func",
|
| 161 |
+
"flash_attn_varlen_kvpacked_func",
|
| 162 |
+
"flash_mla_sparse_fwd",
|
| 163 |
+
]
|
build/torch213-cxx11-cu132-aarch64-linux/_flash_mla_cuda_2e4b976.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6a5ac1263ebd8345cab4ac1770ac0e2b53cf33ac5fabdd645f3a237382a6f42d
|
| 3 |
+
size 7361952
|
build/torch213-cxx11-cu132-aarch64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _flash_mla_cuda_2e4b976
|
| 3 |
+
ops = torch.ops._flash_mla_cuda_2e4b976
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_flash_mla_cuda_2e4b976::{op_name}"
|
build/torch213-cxx11-cu132-aarch64-linux/flash_mla/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch213-cxx11-cu132-aarch64-linux/flash_mla_interface.py
ADDED
|
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Optional, Tuple
|
| 2 |
+
import dataclasses
|
| 3 |
+
|
| 4 |
+
import torch
|
| 5 |
+
|
| 6 |
+
from ._ops import ops as flash_mla_cuda
|
| 7 |
+
|
| 8 |
+
@dataclasses.dataclass
|
| 9 |
+
class FlashMLASchedMeta:
|
| 10 |
+
"""
|
| 11 |
+
A class that stores the tile scheduler metadata of FlashMLA
|
| 12 |
+
"""
|
| 13 |
+
|
| 14 |
+
@dataclasses.dataclass
|
| 15 |
+
class Config:
|
| 16 |
+
b: int
|
| 17 |
+
s_q: int
|
| 18 |
+
h_q: int
|
| 19 |
+
page_block_size: int
|
| 20 |
+
h_k: int
|
| 21 |
+
|
| 22 |
+
causal: bool
|
| 23 |
+
is_fp8_kvcache: bool
|
| 24 |
+
topk: Optional[int]
|
| 25 |
+
|
| 26 |
+
extra_page_block_size: Optional[int]
|
| 27 |
+
extra_topk: Optional[int]
|
| 28 |
+
|
| 29 |
+
have_initialized: bool = False
|
| 30 |
+
|
| 31 |
+
config: Optional[Config] = None
|
| 32 |
+
|
| 33 |
+
tile_scheduler_metadata: Optional[torch.Tensor] = None # (num_sm_parts, TileSchedulerMetaDataSize), dtype torch.int32.
|
| 34 |
+
num_splits: Optional[torch.Tensor] = None # (1), dtype torch.int32.
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def get_mla_metadata(
|
| 38 |
+
*args,
|
| 39 |
+
**kwargs
|
| 40 |
+
) -> Tuple[FlashMLASchedMeta, None]:
|
| 41 |
+
"""
|
| 42 |
+
Returns an empty instance of FlashMLASchedMeta. The actual scheduling metadata will be generated during the first invocation of flash_mla_with_kvcache.
|
| 43 |
+
|
| 44 |
+
Arguments:
|
| 45 |
+
This function does not need any arguments, but we keep *args and **kwargs to be compatible with the old interface.
|
| 46 |
+
|
| 47 |
+
Return:
|
| 48 |
+
A tuple. Due to historical reasons, we return a tuple of (FlashMLASchedMeta, None) now. Only the first element is useful.
|
| 49 |
+
"""
|
| 50 |
+
return FlashMLASchedMeta(), None
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def flash_mla_with_kvcache(
|
| 54 |
+
q: torch.Tensor,
|
| 55 |
+
k_cache: torch.Tensor,
|
| 56 |
+
block_table: Optional[torch.Tensor],
|
| 57 |
+
cache_seqlens: Optional[torch.Tensor],
|
| 58 |
+
head_dim_v: int,
|
| 59 |
+
tile_scheduler_metadata: FlashMLASchedMeta,
|
| 60 |
+
num_splits: None = None,
|
| 61 |
+
softmax_scale: Optional[float] = None,
|
| 62 |
+
causal: bool = False,
|
| 63 |
+
is_fp8_kvcache: bool = False,
|
| 64 |
+
indices: Optional[torch.Tensor] = None,
|
| 65 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 66 |
+
extra_k_cache: Optional[torch.Tensor] = None,
|
| 67 |
+
extra_indices_in_kvcache: Optional[torch.Tensor] = None,
|
| 68 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 69 |
+
extra_topk_length: Optional[torch.Tensor] = None
|
| 70 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 71 |
+
"""
|
| 72 |
+
Arguments:
|
| 73 |
+
q: (batch_size, seq_len_q, num_heads_q, head_dim).
|
| 74 |
+
k_cache: (num_blocks, page_block_size, num_heads_k, head_dim).
|
| 75 |
+
Different modes (including fp8/bf16, and sparsity) has different KV cache layouts. See comments below for details.
|
| 76 |
+
The KV cache must be contiguously valid for sparse attention on sm100. Here "contiguously valid" means that every byte, from the very beginning of the KV cache, till the last byte in the KV cache, is valid memory address to visit (i.e. won't IMA). In other words, the KV cache could be a slice of a larger array, but cannot be a list of disjoint memory blocks.
|
| 77 |
+
block_table: (batch_size, max_num_blocks_per_seq), torch.int32. Can be None when sparse attention is used.
|
| 78 |
+
cache_seqlens: (batch_size), torch.int32. Can be None when sparse attention is used.
|
| 79 |
+
head_dim_v: Head_dim of v. Must be 512
|
| 80 |
+
sched_meta: FlashMLASchedMeta, return by get_mla_metadata. You may reuse the same sched_meta across different invocations, but only when the tensor shapes and the values of cache_seqlens, topk_length, and extra_topk_length remain the same.
|
| 81 |
+
num_splits_placeholder: must be "None" (to be compatible with the old interface).
|
| 82 |
+
softmax_scale: float. The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim_k).
|
| 83 |
+
causal: bool. Whether to apply causal attention mask. Only valid for dense attention
|
| 84 |
+
is_fp8_kvcache: bool.
|
| 85 |
+
indices: (batch_size, seq_len_q, topk). KV indices when sparse attention is enabled.
|
| 86 |
+
Pay attention that indices_in_kvcache[i][j][k] = (the index of the page block where token t resides) * block_size + (the offset of token t among the page block),
|
| 87 |
+
where t is the k-th token of the j-th q-sequence in the i-th batch.
|
| 88 |
+
attn_sink: Optional[torch.Tensor], (num_heads_q, ), torch.float32. If presented, the final output will be scaled by exp(lse) / (exp(lse) + exp(attn_sink)). Have no affect on the returned softmax_lse. +inf will cause the result to become 0.
|
| 89 |
+
extra_k_cache and extra_indices_in_kvcache: If provided, will attend to these extra tokens in addition to those in k_cache and indices_in_kvcache. Their format requirements are the same as k_cache and indices_in_kvcache respectively.
|
| 90 |
+
topk_length/extra_topk_length: (batch_size, ), torch.int32. If provided, only the leftmost topk_length indices will be processed. Useful when the actual topk for different queries are different so that we can save some computation, compared to masking.
|
| 91 |
+
|
| 92 |
+
For DeepSeek V3, DeepSeek V3.1, and DeepSeek V3.2:
|
| 93 |
+
head_dim should be 576 while head_dim_v should be 512.
|
| 94 |
+
In FP8+sparse mode, each token's KV cache is 656 Bytes, structured as:
|
| 95 |
+
- The shape of the tensor `k_cache` is (num_blocks, page_block_size, num_heads_k, head_dim), and num_heads_k must be 1.
|
| 96 |
+
- First 512 bytes: The "quantized NoPE" part, containing 512 float8_e4m3 values.
|
| 97 |
+
- Next 16 bytes: Scale factors, containing 4 float32 values. The first float32 is the scale for the first 128 float8_e4m3 values, the second for the next 128, and so on.
|
| 98 |
+
- Last 128 bytes: The "RoPE" part, containing 64 bfloat16 values. This part is not quantized for accuracy.
|
| 99 |
+
|
| 100 |
+
Return:
|
| 101 |
+
out: (batch_size, seq_len_q, num_heads_q, head_dim_v).
|
| 102 |
+
softmax_lse: (batch_size, num_heads_q, seq_len_q), torch.float32.
|
| 103 |
+
"""
|
| 104 |
+
sched_meta = tile_scheduler_metadata
|
| 105 |
+
indices_in_kvcache = indices
|
| 106 |
+
assert isinstance(sched_meta, FlashMLASchedMeta), "tile_scheduler_metadata must be of type FlashMLASchedMeta"
|
| 107 |
+
assert num_splits is None, "num_splits must be None"
|
| 108 |
+
|
| 109 |
+
topk = indices_in_kvcache.shape[-1] if indices_in_kvcache is not None else None
|
| 110 |
+
extra_k_page_block_size = extra_k_cache.shape[1] if extra_k_cache is not None else None
|
| 111 |
+
extra_topk = extra_indices_in_kvcache.shape[-1] if extra_indices_in_kvcache is not None else None
|
| 112 |
+
if softmax_scale is None:
|
| 113 |
+
softmax_scale = q.shape[-1] ** (-0.5)
|
| 114 |
+
|
| 115 |
+
if not sched_meta.have_initialized:
|
| 116 |
+
# Sanity check. We only perform sanity check during the first invocation to save CPU time.
|
| 117 |
+
if indices_in_kvcache is not None:
|
| 118 |
+
assert not causal, "causal must be False when indices_in_kvcache is not None (i.e. sparse attention is enabled)"
|
| 119 |
+
|
| 120 |
+
# Initialize the tile scheduler metadata during the first invocation.
|
| 121 |
+
sched_meta.have_initialized = True
|
| 122 |
+
sched_meta.config = FlashMLASchedMeta.Config(
|
| 123 |
+
q.shape[0],
|
| 124 |
+
q.shape[1],
|
| 125 |
+
q.shape[2],
|
| 126 |
+
k_cache.shape[1],
|
| 127 |
+
k_cache.shape[2],
|
| 128 |
+
|
| 129 |
+
causal,
|
| 130 |
+
is_fp8_kvcache,
|
| 131 |
+
topk,
|
| 132 |
+
|
| 133 |
+
extra_k_page_block_size,
|
| 134 |
+
extra_topk,
|
| 135 |
+
)
|
| 136 |
+
else:
|
| 137 |
+
# Check whether the input arguments are consistent with sched_meta
|
| 138 |
+
helper_msg = " Your input arguments are inconsistent with sched_meta. Please make sure the input arguments are consistent across different invocations of flash_mla_with_kvcache on the same sched_meta."
|
| 139 |
+
assert sched_meta.config is not None
|
| 140 |
+
assert sched_meta.config.b == q.shape[0], "sched_meta.config.b must be equal to batch_size." + helper_msg
|
| 141 |
+
assert sched_meta.config.s_q == q.shape[1], "sched_meta.config.s_q must be equal to seq_len_q." + helper_msg
|
| 142 |
+
assert sched_meta.config.h_q == q.shape[2], "sched_meta.config.h_q must be equal to num_heads_q." + helper_msg
|
| 143 |
+
assert sched_meta.config.page_block_size == k_cache.shape[1], "sched_meta.config.page_block_size must be equal to page_block_size." + helper_msg
|
| 144 |
+
assert sched_meta.config.h_k == k_cache.shape[2], "sched_meta.config.h_k must be equal to num_heads_k." + helper_msg
|
| 145 |
+
assert sched_meta.config.causal == causal, "sched_meta.config.causal must be equal to causal." + helper_msg
|
| 146 |
+
assert sched_meta.config.is_fp8_kvcache == is_fp8_kvcache, "sched_meta.config.is_fp8_kvcache must be equal to is_fp8_kvcache." + helper_msg
|
| 147 |
+
assert sched_meta.config.topk == topk, "sched_meta.config.topk must be equal to the last dim of indices_in_kvcache." + helper_msg
|
| 148 |
+
assert sched_meta.config.extra_page_block_size == extra_k_page_block_size, "sched_meta.config.extra_page_block_size must be equal to the page_block_size of extra_k_cache." + helper_msg
|
| 149 |
+
assert sched_meta.config.extra_topk == extra_topk, "sched_meta.config.extra_topk must be equal to the last dim of extra_indices_in_kvcache." + helper_msg
|
| 150 |
+
|
| 151 |
+
if topk is not None:
|
| 152 |
+
# Sparse attention
|
| 153 |
+
assert not causal, "causal must be False when sparse attention is enabled"
|
| 154 |
+
assert is_fp8_kvcache, "is_fp8_kvcache must be True when sparse attention is enabled"
|
| 155 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.sparse_decode_fwd(
|
| 156 |
+
q, k_cache, indices_in_kvcache, topk_length, attn_sink,
|
| 157 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits,
|
| 158 |
+
extra_k_cache, extra_indices_in_kvcache, extra_topk_length,
|
| 159 |
+
head_dim_v, softmax_scale
|
| 160 |
+
)
|
| 161 |
+
else:
|
| 162 |
+
# Dense attention
|
| 163 |
+
assert indices_in_kvcache is None and attn_sink is None and extra_k_cache is None and extra_indices_in_kvcache is None and topk_length is None and extra_topk_length is None, "indices_in_kvcache, attn_sink, extra_k_cache, extra_indices_in_kvcache, topk_length and extra_topk_length must be None when dense attention is used."
|
| 164 |
+
assert block_table is not None and cache_seqlens is not None, "block_table and cache_seqlens must be provided when dense attention is used."
|
| 165 |
+
out, lse, new_tile_scheduler_metadata, new_num_splits = flash_mla_cuda.dense_decode_fwd(
|
| 166 |
+
q, k_cache, head_dim_v,
|
| 167 |
+
cache_seqlens, block_table,
|
| 168 |
+
softmax_scale, causal,
|
| 169 |
+
sched_meta.tile_scheduler_metadata, sched_meta.num_splits
|
| 170 |
+
)
|
| 171 |
+
sched_meta.tile_scheduler_metadata = new_tile_scheduler_metadata
|
| 172 |
+
sched_meta.num_splits = new_num_splits
|
| 173 |
+
return (out, lse)
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
def flash_mla_sparse_fwd(
|
| 177 |
+
q: torch.Tensor,
|
| 178 |
+
kv: torch.Tensor,
|
| 179 |
+
indices: torch.Tensor,
|
| 180 |
+
sm_scale: float,
|
| 181 |
+
d_v: int = 512,
|
| 182 |
+
attn_sink: Optional[torch.Tensor] = None,
|
| 183 |
+
topk_length: Optional[torch.Tensor] = None,
|
| 184 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 185 |
+
"""
|
| 186 |
+
Sparse attention prefill kernel
|
| 187 |
+
|
| 188 |
+
Args:
|
| 189 |
+
q: [s_q, h_q, d_qk], bfloat16
|
| 190 |
+
kv: [s_kv, h_kv, d_qk], bfloat16
|
| 191 |
+
indices: [s_q, h_kv, topk], int32. Invalid indices should be set to -1 or numbers >= s_kv
|
| 192 |
+
sm_scale: float
|
| 193 |
+
d_v: The dimension of value vectors. Can only be 512
|
| 194 |
+
attn_sink: optional, [h_q], float32.
|
| 195 |
+
If attn_sink is provided, when computing output, output will be additionally multiplied by exp(lse) / (exp(lse) + exp(attn_sink)).
|
| 196 |
+
+-inf in attn_sink will be handled normally (i.e., -inf has no effect, +inf will make corresponding output all zeros).
|
| 197 |
+
This argument has no effect on lse and max_logits.
|
| 198 |
+
topk_length: optional, [s_q], int32. If provided, the i-th q token will only attend to k tokens specified by indices[i, :, :topk_length[i]], ignoring later k/v tokens (even if provided in indices).
|
| 199 |
+
In extremely rare cases (topk_length provided, there is a valid topk index between topk_length[i] ~ s_kv, and that topk index points to a k token containing NaN), operator output will contain NaN, so please avoid this situation.
|
| 200 |
+
|
| 201 |
+
Returns:
|
| 202 |
+
(output, max_logits, lse)
|
| 203 |
+
Please refer to tests/ref.py for the precise definitions of these parameters.
|
| 204 |
+
- output: [s_q, h_q, d_v], bfloat16
|
| 205 |
+
- max_logits: [s_q, h_q], float
|
| 206 |
+
- lse: [s_q, h_q], float, log-sum-exp of attention scores
|
| 207 |
+
"""
|
| 208 |
+
results = flash_mla_cuda.sparse_prefill_fwd(
|
| 209 |
+
q, kv, indices, sm_scale, d_v, attn_sink, topk_length
|
| 210 |
+
)
|
| 211 |
+
return results
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def _flash_attn_varlen_forward(
|
| 215 |
+
q: torch.Tensor,
|
| 216 |
+
k: torch.Tensor,
|
| 217 |
+
v: torch.Tensor,
|
| 218 |
+
cu_seqlens_qo: torch.Tensor,
|
| 219 |
+
cu_seqlens_kv: torch.Tensor,
|
| 220 |
+
max_seqlen_qo: int,
|
| 221 |
+
max_seqlen_kv: int,
|
| 222 |
+
out: Optional[torch.Tensor] = None,
|
| 223 |
+
lse: Optional[torch.Tensor] = None,
|
| 224 |
+
causal: bool = False,
|
| 225 |
+
softmax_scale: Optional[float] = None,
|
| 226 |
+
is_varlen: bool = True,
|
| 227 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 228 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 229 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 230 |
+
|
| 231 |
+
mask_mode_code = 1 if causal else 0
|
| 232 |
+
if softmax_scale is None:
|
| 233 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 234 |
+
|
| 235 |
+
if out is None:
|
| 236 |
+
out = torch.empty(qo_total_len, num_qo_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 237 |
+
if lse is None:
|
| 238 |
+
# Make lse contiguous on seqlen dim
|
| 239 |
+
lse = torch.empty(num_qo_heads, qo_total_len, device=q.device, dtype=torch.float32).T
|
| 240 |
+
|
| 241 |
+
workspace_buffer = torch.empty(32 * 1024 * 1024, dtype=torch.uint8, device=q.device)
|
| 242 |
+
flash_mla_cuda.dense_prefill_fwd(
|
| 243 |
+
workspace_buffer,
|
| 244 |
+
q,
|
| 245 |
+
k,
|
| 246 |
+
v,
|
| 247 |
+
cu_seqlens_qo,
|
| 248 |
+
cu_seqlens_kv,
|
| 249 |
+
out,
|
| 250 |
+
lse,
|
| 251 |
+
mask_mode_code,
|
| 252 |
+
softmax_scale,
|
| 253 |
+
max_seqlen_qo,
|
| 254 |
+
max_seqlen_kv,
|
| 255 |
+
is_varlen,
|
| 256 |
+
)
|
| 257 |
+
|
| 258 |
+
return out, lse
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
def _flash_attn_varlen_backward(
|
| 262 |
+
do: torch.Tensor,
|
| 263 |
+
q: torch.Tensor,
|
| 264 |
+
k: torch.Tensor,
|
| 265 |
+
v: torch.Tensor,
|
| 266 |
+
out: torch.Tensor,
|
| 267 |
+
lse: torch.Tensor,
|
| 268 |
+
cu_seqlens_qo: torch.Tensor,
|
| 269 |
+
cu_seqlens_kv: torch.Tensor,
|
| 270 |
+
max_seqlen_qo: int,
|
| 271 |
+
max_seqlen_kv: int,
|
| 272 |
+
dq: Optional[torch.Tensor] = None,
|
| 273 |
+
dk: Optional[torch.Tensor] = None,
|
| 274 |
+
dv: Optional[torch.Tensor] = None,
|
| 275 |
+
causal: bool = False,
|
| 276 |
+
softmax_scale: Optional[float] = None,
|
| 277 |
+
is_varlen: bool = True,
|
| 278 |
+
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
| 279 |
+
qo_total_len, num_qo_heads, head_dim_qk = q.shape
|
| 280 |
+
kv_total_len, num_kv_heads, head_dim_vo = v.shape
|
| 281 |
+
|
| 282 |
+
# TODO: fix bwd GQA
|
| 283 |
+
if num_qo_heads != num_kv_heads:
|
| 284 |
+
raise ValueError(f"SM100 bwd doesn't support GQA now. num_qo_heads: {num_qo_heads}, num_kv_heads: {num_kv_heads}.")
|
| 285 |
+
|
| 286 |
+
mask_mode_code = 1 if causal else 0
|
| 287 |
+
if softmax_scale is None:
|
| 288 |
+
softmax_scale = head_dim_qk ** (-0.5)
|
| 289 |
+
|
| 290 |
+
if dq is None:
|
| 291 |
+
dq = torch.empty(qo_total_len, num_qo_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 292 |
+
if dk is None:
|
| 293 |
+
dk = torch.empty(kv_total_len, num_kv_heads, head_dim_qk, device=q.device, dtype=q.dtype)
|
| 294 |
+
if dv is None:
|
| 295 |
+
dv = torch.empty(kv_total_len, num_kv_heads, head_dim_vo, device=q.device, dtype=q.dtype)
|
| 296 |
+
|
| 297 |
+
max_seqlen_qo_aligned = (max_seqlen_qo + 7) // 8 * 8
|
| 298 |
+
bs = cu_seqlens_qo.shape[0] - 1
|
| 299 |
+
workspace_bytes = 0
|
| 300 |
+
workspace_bytes += 4 * bs * max_seqlen_qo_aligned * num_qo_heads * head_dim_qk # dQ_acc
|
| 301 |
+
workspace_bytes += 4 * max_seqlen_qo_aligned * bs * num_qo_heads * 2 # sum_OdO and scaled_lse
|
| 302 |
+
if num_qo_heads != num_kv_heads:
|
| 303 |
+
workspace_bytes += 2 * kv_total_len * num_qo_heads * (head_dim_qk + head_dim_vo) # dKV_acc
|
| 304 |
+
workspace_buffer = torch.empty(workspace_bytes, dtype=torch.uint8, device=q.device)
|
| 305 |
+
flash_mla_cuda.dense_prefill_bwd(
|
| 306 |
+
workspace_buffer,
|
| 307 |
+
do,
|
| 308 |
+
q,
|
| 309 |
+
k,
|
| 310 |
+
v,
|
| 311 |
+
out,
|
| 312 |
+
lse,
|
| 313 |
+
cu_seqlens_qo,
|
| 314 |
+
cu_seqlens_kv,
|
| 315 |
+
dq,
|
| 316 |
+
dk,
|
| 317 |
+
dv,
|
| 318 |
+
mask_mode_code,
|
| 319 |
+
softmax_scale,
|
| 320 |
+
max_seqlen_qo,
|
| 321 |
+
max_seqlen_kv,
|
| 322 |
+
is_varlen,
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
return dq, dk, dv
|
| 326 |
+
|
| 327 |
+
|
| 328 |
+
class FlashAttnVarlenFunc(torch.autograd.Function):
|
| 329 |
+
def forward(
|
| 330 |
+
ctx,
|
| 331 |
+
q: torch.Tensor,
|
| 332 |
+
k: torch.Tensor,
|
| 333 |
+
v: torch.Tensor,
|
| 334 |
+
cu_seqlens_qo: torch.Tensor,
|
| 335 |
+
cu_seqlens_kv: torch.Tensor,
|
| 336 |
+
max_seqlen_qo: int,
|
| 337 |
+
max_seqlen_kv: int,
|
| 338 |
+
causal: bool = False,
|
| 339 |
+
softmax_scale: Optional[float] = None,
|
| 340 |
+
is_varlen: bool = True,
|
| 341 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 342 |
+
out, lse = _flash_attn_varlen_forward(
|
| 343 |
+
q, k, v,
|
| 344 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 345 |
+
causal=causal, softmax_scale=softmax_scale,
|
| 346 |
+
is_varlen=is_varlen,
|
| 347 |
+
)
|
| 348 |
+
ctx.save_for_backward(q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv)
|
| 349 |
+
ctx.max_seqlen_qo = max_seqlen_qo
|
| 350 |
+
ctx.max_seqlen_kv = max_seqlen_kv
|
| 351 |
+
ctx.causal = causal
|
| 352 |
+
ctx.softmax_scale = softmax_scale
|
| 353 |
+
ctx.is_varlen = is_varlen
|
| 354 |
+
return out, lse
|
| 355 |
+
|
| 356 |
+
def backward(
|
| 357 |
+
ctx,
|
| 358 |
+
do: torch.Tensor,
|
| 359 |
+
dlse: torch.Tensor,
|
| 360 |
+
):
|
| 361 |
+
del dlse # LSE doesn't support backward currently
|
| 362 |
+
q, k, v, out, lse, cu_seqlens_qo, cu_seqlens_kv = ctx.saved_tensors
|
| 363 |
+
dq, dk, dv = _flash_attn_varlen_backward(
|
| 364 |
+
do, q, k, v, out, lse,
|
| 365 |
+
cu_seqlens_qo, cu_seqlens_kv, ctx.max_seqlen_qo, ctx.max_seqlen_kv,
|
| 366 |
+
causal=ctx.causal, softmax_scale=ctx.softmax_scale,
|
| 367 |
+
is_varlen=ctx.is_varlen,
|
| 368 |
+
)
|
| 369 |
+
return dq, dk, dv, None, None, None, None, None, None, None
|
| 370 |
+
|
| 371 |
+
|
| 372 |
+
def flash_attn_varlen_func(
|
| 373 |
+
q: torch.Tensor,
|
| 374 |
+
k: torch.Tensor,
|
| 375 |
+
v: torch.Tensor,
|
| 376 |
+
cu_seqlens_qo: torch.Tensor,
|
| 377 |
+
cu_seqlens_kv: torch.Tensor,
|
| 378 |
+
max_seqlen_qo: int,
|
| 379 |
+
max_seqlen_kv: int,
|
| 380 |
+
dropout_p: float = 0.0,
|
| 381 |
+
softmax_scale: Optional[float] = None,
|
| 382 |
+
causal: bool = False,
|
| 383 |
+
deterministic: bool = False,
|
| 384 |
+
is_varlen: bool = True,
|
| 385 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 386 |
+
assert dropout_p == 0.0
|
| 387 |
+
assert not deterministic
|
| 388 |
+
return FlashAttnVarlenFunc.apply(
|
| 389 |
+
q, k, v,
|
| 390 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 391 |
+
causal, softmax_scale, is_varlen,
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
def flash_attn_varlen_qkvpacked_func(
|
| 396 |
+
qkv: torch.Tensor,
|
| 397 |
+
cu_seqlens: torch.Tensor,
|
| 398 |
+
max_seqlen: int,
|
| 399 |
+
head_dim_qk: int,
|
| 400 |
+
dropout_p: float = 0.0,
|
| 401 |
+
softmax_scale: Optional[float] = None,
|
| 402 |
+
causal: bool = False,
|
| 403 |
+
deterministic: bool = False,
|
| 404 |
+
is_varlen: bool = True,
|
| 405 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 406 |
+
assert dropout_p == 0.0
|
| 407 |
+
assert not deterministic
|
| 408 |
+
return FlashAttnVarlenFunc.apply(
|
| 409 |
+
qkv[:, :, :head_dim_qk], qkv[:, :, head_dim_qk:head_dim_qk * 2], qkv[:, :, head_dim_qk * 2:],
|
| 410 |
+
cu_seqlens, cu_seqlens, max_seqlen, max_seqlen,
|
| 411 |
+
causal, softmax_scale, is_varlen,
|
| 412 |
+
)
|
| 413 |
+
|
| 414 |
+
|
| 415 |
+
def flash_attn_varlen_kvpacked_func(
|
| 416 |
+
q: torch.Tensor,
|
| 417 |
+
kv: torch.Tensor,
|
| 418 |
+
cu_seqlens_qo: torch.Tensor,
|
| 419 |
+
cu_seqlens_kv: torch.Tensor,
|
| 420 |
+
max_seqlen_qo: int,
|
| 421 |
+
max_seqlen_kv: int,
|
| 422 |
+
head_dim_qk: int,
|
| 423 |
+
dropout_p: float = 0.0,
|
| 424 |
+
softmax_scale: Optional[float] = None,
|
| 425 |
+
causal: bool = False,
|
| 426 |
+
deterministic: bool = False,
|
| 427 |
+
is_varlen: bool = True,
|
| 428 |
+
) -> Tuple[torch.Tensor, torch.Tensor]:
|
| 429 |
+
assert dropout_p == 0.0
|
| 430 |
+
assert not deterministic
|
| 431 |
+
return FlashAttnVarlenFunc.apply(
|
| 432 |
+
q, kv[:, :, :head_dim_qk], kv[:, :, head_dim_qk:],
|
| 433 |
+
cu_seqlens_qo, cu_seqlens_kv, max_seqlen_qo, max_seqlen_kv,
|
| 434 |
+
causal, softmax_scale, is_varlen,
|
| 435 |
+
)
|
build/torch213-cxx11-cu132-aarch64-linux/metadata.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "flash-mla",
|
| 3 |
+
"id": "_flash_mla_cuda_2e4b976",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"10.0f",
|
| 11 |
+
"9.0a"
|
| 12 |
+
]
|
| 13 |
+
},
|
| 14 |
+
"digest": {
|
| 15 |
+
"algorithm": "sha256",
|
| 16 |
+
"files": {
|
| 17 |
+
"__init__.py": "qaD9fHTAcsdT7PjiWtQX+XI/ItcID0OIBEBb+VvH9sI=",
|
| 18 |
+
"_flash_mla_cuda_2e4b976.abi3.so": "alrBJj69g0XKtKwXcKwOK1PPM6xfq91kXzojc4Km9C0=",
|
| 19 |
+
"_ops.py": "C1ER1novaqKCKSrvMUUM5TAmKZpukpNUUvOvgdMpXY0=",
|
| 20 |
+
"flash_mla/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 21 |
+
"flash_mla_interface.py": "E+IJ58Y1BAPHrrbQuuje4/NO5C3R1mhSK9/UCYiZwLU="
|
| 22 |
+
}
|
| 23 |
+
}
|
| 24 |
+
}
|
build/torch213-cxx11-cu132-aarch64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUaVdkev08rxDaph1hH0UUoyo5IcowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzAzMTQxMzMwWhcNMjYwNzAzMTQyMzMwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqaW3fL1aZPxtBcQafexV8i2utDOM6kHLPVjvWzgYiQ4K5lgG2WZ6oE86ktwQqramgN2qrfb3FJJ3vE/lSrE+m6OCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUH8+wHMLrcandie7LR33kJKxA85QwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmU0Yjk3NjIxZTkzNzk3NDEzMmY1NDNkYjI1MTEyNjgwNmY5NGJiZTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJlNGI5NzYyMWU5Mzc5NzQxMzJmNTQzZGIyNTExMjY4MDZmOTRiYmUwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjg2NTg3NTM1MDQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABnyhT0zwAAAQDAEYwRAIgI1v3lhdhxWfNepVBQTpsCmbFapQDFV2MdQ4dKPrEaKgCIDLNYqyw1r0B1IY8bPuidwaWIOyxOJbmCUlkSavxHgFlMAoGCCqGSM49BAMDA2gAMGUCMQCuzfauirrv/l7TGXf6h2NI7yGC/tOPVbUaV5/nyBAb1lWO5faEzACLs41zvLWaNPQCMDn8+3gfPvpwywFYkZmfe6O65ybEvAa3kIX4qZLXYp1k54TrEiLgjOHzWPtSxjng5A=="}, "tlogEntries":[{"logIndex":"2061664982", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1783088010", "inclusionPromise":{"signedEntryTimestamp":"MEQCIAdai/ukQ8gjRxWNJ99nyuigvPdgw3s/wjaOPTSZM/pgAiAP2doidISyhtJGr1RTG5+ljJN6Y1UVMuukxlr45oDtxw=="}, "inclusionProof":{"logIndex":"1939760720", "rootHash":"3w0WmnzJ4BiuylvIHqppXL+r+8TcfOqtg6fNa3jf/co=", "treeSize":"1939760724", "hashes":["+nw+gVkw/RXdfVJTymhNniPWBXnJ5GzJDm8PhfTDr8A=", "vX+9cSF0bSihGiPex3XJei+FZ+YKh9uxhvA7JX8TLw0=", "9ER/I4GLkuklDARgHoKMtJeeriDuKFdQJsIpFFIYYws=", "FUP95lM1HUXi6dm9nM/0NztVgFF2NsBrVkfGQTo3xhY=", "HfGgIcZn6uf03QgnYQGIEsndpOSq0ii0y2+8tTPYxLE=", "tzTFKmzdx3ACBcoLZF7H5g2THuBzxQSYrg9gYg00sQc=", "wT0coe6dHsM/7/papW+lvePJzWfjPC+5Ye66Oc9NRzA=", "egXbD+wcW+U4o/749SFz+bBpgcLMwzkyQAkPXSF4jtM=", "QP7g6pjvdntQFpwNdBxgCQOWOSX8J7WYIuk1si3IUyE=", "YvhCAsMzOmOVNVs5nw2fO+1qMpHheQ4F1UDJvGQ8sIA=", "/vt6tmr6MIaHEEjFQL4ZtC4w8MUS0IYmmA6KCizVad0=", "I+dZvIwhBcmylTZ5mLoVIKIapQHRH789ramiw5T/osA=", "RIZjwQJv61lwM5JOP8iNT/RxKPr522/etVqxVBWn7KA=", "b69YlhA5qlDwN70us4bq9ysnikE1ulA7EwKBTb+atY0=", "LM7F5iwbk8jG29X4FwpkCN6BqDCfuNQTlz5CyQWt87s=", "+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=", "daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=", "DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n1939760724\n3w0WmnzJ4BiuylvIHqppXL+r+8TcfOqtg6fNa3jf/co=\n\n— rekor.sigstore.dev wNI9ajBFAiAxTxGN8k0xnNbRgnpme6xFpHLWL2Z3JQyqW+AH6x4ymwIhAJ002QgKdgFug8ndhIl+AJkJPmNO0ziykv/1LXgtqEks\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxYTI5ZGI5MWQ0N2Q5NmVmNDgwOGJjYTRkYTgyZDJhODA5MTMzZjUxZWI2N2YyMmRhYzhiOTk0YTNjZWU2ZTFjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQ2syT0tCelBGdHo1LzMyUk9RZURLaW1VdEp5QWpRdkdUMVlOZElYNGdiekFpRUEzS2EvUStjSmROZ3dFM21ReVJ2NDN0Qitqa0daR3UzczlCNG1BNjIzbko0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVllWWmthMlYyTURoeWVFUmhjR2d4YUVnd1ZWVnZlVzgxU1dOdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVhwTlZGRjRUWHBOZDFkb1kwNU5hbGwzVG5wQmVrMVVVWGxOZWsxM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ4WVZjelprd3hZVnBRZUhSQ1kxRmhabVY0VmpocE1uVjBSRTlOTm10SVRGQldhbllLVjNwbldXbFJORXMxYkdkSE1sZGFObTlGT0RacmRIZFJjWEpoYldkT01uRnlabUl6UmtwS00zWkZMMnhUY2tVcmJUWlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZJT0N0M0NraE5USEpqWVc1a2FXVTNURkl6TTJ0S1MzaEJPRFZSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVlV3V1dwck0wNXFTWGhhVkd0NlRucHJNMDVFUlhwTmJWa3hDazVFVG10WmFra3hUVlJGZVU1cVozZE9iVmsxVGtkS2FWcFVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEZPUkU1cldXcEpNVTFVUlhrS1RtcG5kMDV0V1RWT1IwcHBXbFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0VlRCWmFtc3pUbXBKZUZwVWEzcE9lbXN6VGtSRmVrMXRXVEVLVGtST2ExbHFTVEZOVkVWNVRtcG5kMDV0V1RWT1IwcHBXbFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiRTVIU1RVS1RucFplVTFYVlRWTmVtTTFUbnBSZUUxNlNtMU9WRkY2V2tkSmVVNVVSWGhOYWxrMFRVUmFiVTlVVW1sWmJWVjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW1jeVRsUm5NMDVVVFRGTlJGRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNTVhRlF3ZW5kQlFVRlJSQXBCUlZsM1VrRkpaMGt4ZGpOc2FHUm9lRmRtVG1Wd1ZrSlJWSEJ6UTIxaVJtRndVVVJHVmpKTlpGRTBaRXRRY2tWaFMyZERTVVJNVGxseGVYY3hjakJDQ2pGSldUaGlVSFZwWkhkaFYwbFBlWGhQU21KdFExVnNhMU5oZG5oSVowWnNUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRWRkRkWHBtWVhVS2FYSnlkaTlzTjFSSFdHWTJhREpPU1RkNVIwTXZkRTlRVm1KVllWWTFMMjU1UWtGaU1XeFhUelZtWVVWNlFVTk1jelF4ZW5aTVYyRk9VRkZEVFVSdU9Bb3JNMmRtVUhad2QzbDNSbGxyV20xbVpUWlBOalY1WWtWMlFXRXphMGxZTkhGYVRGaFpjREZyTlRSVWNrVnBUR2RxVDBoNlYxQjBVM2hxYm1jMVFUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgjuzzfwn19evg4GWKj/3cotlwUh1uEWmxBDyOoj/o0oECFBCVoo4aHvkqtxO9jVzrexoICYnoGA8yMDI2MDcwMzE0MTMzMFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzAzMTQxMzMwWjAvBgkqhkiG9w0BCQQxIgQgZl0uxMc/bjPd7igaN1Koh9ahw17Shus0IVLj3hC0ZLgwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAMn+0Y6ESNTRidfy0faJ6Zk08xwlac2wWXYoqjXqFmGibgt/fro3C8cSKX+6JWX4JAIwZwKNswEn5DWU5rXPjkA3dkgRcx2Q0ISEs1SVKKRL/HTlysYb/VY3r2rJMWC8BWSb"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"GinbkdR9lu9ICLyk2oLSqAkTP1HrZ/ItrIuZSjzubhw="}, "signature":"MEUCICk2OKBzPFtz5/32ROQeDKimUtJyAjQvGT1YNdIX4gbzAiEA3Ka/Q+cJdNgwE3mQyRv43tB+jkGZGu3s9B4mA623nJ4="}}
|