Skip to content

Commit c7412d4

Browse files
authored
Merge pull request #2154 from BishopFox/go/v1.25.6
Go/v1.25.6
2 parents 110658e + c3817dc commit c7412d4

34 files changed

Lines changed: 3737 additions & 5364 deletions

File tree

.github/workflows/autorelease.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- name: Go 1.25
4545
uses: actions/setup-go@v6
4646
with:
47-
go-version: "^1.25"
47+
go-version: "1.25.6"
4848

4949
- name: Install Minisign
5050
run: sudo apt-get update --fix-missing && sudo apt-get -y install minisign

.github/workflows/codeql-scanning.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Go 1.25
2020
uses: actions/setup-go@v6
2121
with:
22-
go-version: "^1.25"
22+
go-version: "1.25.6"
2323

2424
- name: Checkout repository
2525
uses: actions/checkout@v6

.github/workflows/unit-tests.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Go 1.25
2727
uses: actions/setup-go@v6
2828
with:
29-
go-version: "^1.25"
29+
go-version: "1.25.6"
3030

3131
- name: OS Packages
3232
run: |
@@ -73,7 +73,7 @@ jobs:
7373
- name: Go 1.25
7474
uses: actions/setup-go@v6
7575
with:
76-
go-version: "^1.25"
76+
go-version: "1.25.6"
7777

7878
- name: Check Out Code
7979
uses: actions/checkout@v6
@@ -111,7 +111,7 @@ jobs:
111111
- name: Go 1.25
112112
uses: actions/setup-go@v6
113113
with:
114-
go-version: "^1.25"
114+
go-version: "1.25.6"
115115

116116
- name: Check Out Code
117117
uses: actions/checkout@v6

client/command/alias/load.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,9 @@ func LoadAlias(manifestPath string, cmd *cobra.Command, con *console.SliverClien
239239
f.StringP("app-domain", "d", "", "AppDomain name to create for .NET assembly. Generated randomly if not set.")
240240
f.StringP("arch", "a", "x84", "Assembly target architecture: x86, x64, x84 (x86+x64)")
241241
f.BoolP("in-process", "i", false, "Run in the current sliver process")
242-
f.StringP("runtime", "r", "", "Runtime to use for running the assembly (only supported when used with --in-process)")
243-
f.BoolP("amsi-bypass", "M", false, "Bypass AMSI on Windows (only supported when used with --in-process)")
244-
f.BoolP("etw-bypass", "E", false, "Bypass ETW on Windows (only supported when used with --in-process)")
242+
f.StringP("runtime", "r", "v4.0.30319", "Runtime to use for running the assembly")
243+
f.BoolP("amsi-bypass", "M", false, "Bypass AMSI on Windows")
244+
f.BoolP("etw-bypass", "E", false, "Bypass ETW on Windows")
245245
addAliasCmd.Flags().AddFlagSet(f)
246246
}
247247

@@ -374,7 +374,7 @@ func runAliasCommand(cmd *cobra.Command, con *console.SliverClient, args []strin
374374
}
375375
con.PrintWarnf("%s", msgStr)
376376
confirm := false
377-
_ = forms.Confirm("Do you want to continue?", &confirm)
377+
forms.Confirm("Do you want to continue?", &confirm)
378378
if !confirm {
379379
return
380380
}

client/command/generate/commands.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,14 @@ func coreImplantFlags(name string, cmd *cobra.Command) {
342342
f.StringP("limit-locale", "L", "", "limit execution to hosts that match this locale")
343343

344344
f.StringP("format", "f", "exe", "Specifies the output formats, valid values are: 'exe', 'shared' (for dynamic libraries), 'service' (see: `psexec` for more info) and 'shellcode' (windows only)")
345+
f.Uint32("donut-entropy", 1, "Donut entropy (1=none, 2=random names, 3=random+encrypt) (windows shellcode only)")
346+
f.Bool("donut-compress", false, "Enable Donut compression (aplib) (windows shellcode only)")
347+
f.Uint32("donut-exitopt", 1, "Donut exit option (1=exit thread, 2=exit process, 3=block) (windows shellcode only)")
348+
f.Uint32("donut-bypass", 3, "Donut bypass mode (1=none, 2=abort, 3=continue) (windows shellcode only)")
349+
f.Uint32("donut-headers", 1, "Donut headers handling (1=overwrite, 2=keep) (windows shellcode only)")
350+
f.Bool("donut-thread", false, "Run unmanaged EXE entrypoint as a new thread (windows shellcode only)")
351+
f.Bool("donut-unicode", false, "Use Unicode command line for unmanaged DLL entrypoints (windows shellcode only)")
352+
f.Uint32("donut-oep", 0, "Donut original entry point override (0=default) (windows shellcode only)")
345353
})
346354
}
347355

client/command/generate/generate.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,12 @@ func parseCompileFlags(cmd *cobra.Command, con *console.SliverClient) (string, *
409409
return "", nil
410410
}
411411

412+
donutConfig, err := parseDonutFlags(cmd, targetOS, configFormat, con)
413+
if err != nil {
414+
con.PrintErrorf("%s\n", err)
415+
return "", nil
416+
}
417+
412418
var tunIP net.IP
413419
if wg, _ := cmd.Flags().GetString("wg"); wg != "" {
414420
uniqueWGIP, err := con.Rpc.GenerateUniqueIP(context.Background(), &commonpb.Empty{})
@@ -480,11 +486,68 @@ func parseCompileFlags(cmd *cobra.Command, con *console.SliverClient) (string, *
480486

481487
DebugFile: debugFile,
482488
HTTPC2ConfigName: c2Profile,
489+
DonutConfig: donutConfig,
483490
}
484491

485492
return name, config
486493
}
487494

495+
func parseDonutFlags(cmd *cobra.Command, targetOS string, configFormat clientpb.OutputFormat, con *console.SliverClient) (*clientpb.DonutConfig, error) {
496+
donutEntropy, _ := cmd.Flags().GetUint32("donut-entropy")
497+
donutCompressEnabled, _ := cmd.Flags().GetBool("donut-compress")
498+
donutExitOpt, _ := cmd.Flags().GetUint32("donut-exitopt")
499+
donutBypass, _ := cmd.Flags().GetUint32("donut-bypass")
500+
donutHeaders, _ := cmd.Flags().GetUint32("donut-headers")
501+
donutThread, _ := cmd.Flags().GetBool("donut-thread")
502+
donutUnicode, _ := cmd.Flags().GetBool("donut-unicode")
503+
donutOEP, _ := cmd.Flags().GetUint32("donut-oep")
504+
505+
anyChanged := cmd.Flags().Changed("donut-entropy") ||
506+
cmd.Flags().Changed("donut-compress") ||
507+
cmd.Flags().Changed("donut-exitopt") ||
508+
cmd.Flags().Changed("donut-bypass") ||
509+
cmd.Flags().Changed("donut-headers") ||
510+
cmd.Flags().Changed("donut-thread") ||
511+
cmd.Flags().Changed("donut-unicode") ||
512+
cmd.Flags().Changed("donut-oep")
513+
514+
if targetOS != "windows" || configFormat != clientpb.OutputFormat_SHELLCODE {
515+
if anyChanged {
516+
con.PrintWarnf("Donut options only apply to Windows shellcode, ignoring.\n")
517+
}
518+
return nil, nil
519+
}
520+
521+
if donutEntropy < 1 || donutEntropy > 3 {
522+
return nil, fmt.Errorf("donut-entropy must be between 1 and 3")
523+
}
524+
if donutExitOpt < 1 || donutExitOpt > 3 {
525+
return nil, fmt.Errorf("donut-exitopt must be between 1 and 3")
526+
}
527+
if donutBypass < 1 || donutBypass > 3 {
528+
return nil, fmt.Errorf("donut-bypass must be between 1 and 3")
529+
}
530+
if donutHeaders < 1 || donutHeaders > 2 {
531+
return nil, fmt.Errorf("donut-headers must be 1 or 2")
532+
}
533+
534+
donutCompress := uint32(1)
535+
if donutCompressEnabled {
536+
donutCompress = 2
537+
}
538+
539+
return &clientpb.DonutConfig{
540+
Entropy: donutEntropy,
541+
Compress: donutCompress,
542+
ExitOpt: donutExitOpt,
543+
Bypass: donutBypass,
544+
Headers: donutHeaders,
545+
Thread: donutThread,
546+
Unicode: donutUnicode,
547+
OEP: donutOEP,
548+
}, nil
549+
}
550+
488551
// parseTrafficEncoderArgs - parses the traffic encoder args and returns a bool indicating if traffic encoders are enabled.
489552
func parseTrafficEncoderArgs(cmd *cobra.Command, httpC2Enabled bool, con *console.SliverClient) (bool, []*commonpb.File) {
490553
trafficEncoders, _ := cmd.Flags().GetString("traffic-encoders")

client/command/help/long-help.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,18 @@ To output a Linux ELF executable file, the following command would be used:
199199
generate --os linux --mtls foo.example.com
200200
201201
202+
[[.Bold]][[.Underline]]++ Donut Shellcode Options ++[[.Normal]]
203+
When generating Windows shellcode (--format shellcode), you can tune Donut:
204+
--donut-entropy 1|2|3 # Entropy: 1=none (default), 2=random names, 3=random+encrypt
205+
--donut-compress 0|1 # Compression: 0=off (default), 1=aplib
206+
--donut-exitopt 1|2|3 # Exit behavior: 1=exit thread (default), 2=exit process, 3=block
207+
--donut-bypass 1|2|3 # Bypass: 1=none, 2=abort on failure, 3=continue (default)
208+
--donut-headers 1|2 # PE headers: 1=overwrite (default), 2=keep
209+
--donut-thread 0|1 # Unmanaged EXE: run entrypoint as a new thread (default 0)
210+
--donut-unicode 0|1 # Unmanaged DLL: pass Unicode command line (default 0)
211+
--donut-oep <uint32> # Override original entry point (0=default)
212+
213+
202214
[[.Bold]][[.Underline]]++ DNS Canaries ++[[.Normal]]
203215
DNS canaries are unique per-binary domains that are deliberately NOT obfuscated during the compilation process.
204216
This is done so that these unique domains show up if someone runs 'strings' on the binary, if they then attempt

docs/sliver-docs/pages/docs/md/Stagers.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,23 @@ Name Platform Command & Control Debug Format
3333
win-shellcode windows/amd64 [1] mtls://192.168.122.1:8888 false SHELLCODE enabled
3434
```
3535

36+
You can tune Donut options for Windows shellcode profiles:
37+
38+
- `--donut-entropy`: 1=none, 2=random names, 3=random+encrypt
39+
- `--donut-compress`: enable/disable aplib compression (boolean)
40+
- `--donut-exitopt`: 1=exit thread, 2=exit process, 3=block
41+
- `--donut-bypass`: 1=none, 2=abort on failure, 3=continue
42+
- `--donut-headers`: 1=overwrite, 2=keep
43+
- `--donut-thread`: run unmanaged EXE entrypoint as a new thread (boolean)
44+
- `--donut-unicode`: pass Unicode command line to unmanaged DLL entrypoints (boolean)
45+
- `--donut-oep`: override original entry point (uint32, 0=default)
46+
47+
Example:
48+
49+
```
50+
sliver > profiles new --mtls 192.168.122.1 --format shellcode --donut-entropy 2 --donut-compress --donut-exitopt 3 win-shellcode
51+
```
52+
3653
We can now create a staging listener and link it to the profile:
3754

3855
```

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/bishopfox/sliver
22

3-
go 1.25.5
3+
go 1.25.6
44

55
replace github.com/rsteube/carapace v0.36.3 => github.com/reeflective/carapace v0.46.3-0.20231214181515-27e49f3c3b69
66

@@ -12,11 +12,11 @@ require (
1212
filippo.io/age v1.3.1
1313
github.com/Binject/binjection v0.0.0-20210701074423-605d46e35deb
1414
github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a
15-
github.com/Binject/go-donut v0.0.0-20210701074227-67a31e2d883e
1615
github.com/Binject/universal v0.0.0-20220519011857-bea739e758c0
1716
github.com/Ne0nd0g/go-clr v1.0.3
1817
github.com/SherClockHolmes/webpush-go v1.4.0
1918
github.com/alecthomas/chroma v0.10.0
19+
github.com/alecthomas/chroma/v2 v2.23.1
2020
github.com/charmbracelet/huh v0.8.0
2121
github.com/charmbracelet/huh/spinner v0.0.0-20251215014908-6f7d32faaff3
2222
github.com/charmbracelet/lipgloss v1.1.0
@@ -46,6 +46,7 @@ require (
4646
github.com/reeflective/readline v1.1.4
4747
github.com/rsteube/carapace v0.50.2
4848
github.com/sirupsen/logrus v1.9.3
49+
github.com/sliverarmory/wasm-donut v0.0.3
4950
github.com/spf13/cobra v1.10.2
5051
github.com/spf13/pflag v1.0.10
5152
github.com/stretchr/testify v1.11.1
@@ -94,7 +95,6 @@ require (
9495
github.com/MicahParks/keyfunc v1.9.0 // indirect
9596
github.com/PagerDuty/go-pagerduty v1.8.0 // indirect
9697
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20250718055228-285ecf400b48 // indirect
97-
github.com/alecthomas/chroma/v2 v2.23.1 // indirect
9898
github.com/appleboy/go-fcm v1.2.6 // indirect
9999
github.com/atc0005/go-teams-notify/v2 v2.14.0 // indirect
100100
github.com/aws/aws-sdk-go-v2/credentials v1.19.5 // indirect
@@ -220,9 +220,9 @@ require (
220220
github.com/carapace-sh/carapace-shlex v1.1.1 // indirect
221221
github.com/catppuccin/go v0.3.0 // indirect
222222
github.com/charmbracelet/bubbles v0.21.1-0.20250623103423-23b8fd6302d7 // indirect
223-
github.com/charmbracelet/bubbletea v1.3.10 // indirect
223+
github.com/charmbracelet/bubbletea v1.3.10
224224
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
225-
github.com/charmbracelet/x/ansi v0.10.1 // indirect
225+
github.com/charmbracelet/x/ansi v0.10.1
226226
github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
227227
github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 // indirect
228228
github.com/charmbracelet/x/term v0.2.1 // indirect
@@ -301,7 +301,7 @@ require (
301301
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
302302
golang.org/x/oauth2 v0.34.0 // indirect
303303
golang.org/x/sync v0.19.0 // indirect
304-
golang.org/x/time v0.14.0 // indirect
304+
golang.org/x/time v0.14.0
305305
golang.org/x/tools v0.40.0 // indirect
306306
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
307307
golang.zx2c4.com/wireguard/windows v0.5.3 // indirect

go.sum

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ github.com/Binject/debug v0.0.0-20210225042342-c9b8b45728d2/go.mod h1:QzgxDLY/qd
4343
github.com/Binject/debug v0.0.0-20210312092933-6277045c2fdf/go.mod h1:QzgxDLY/qdKlvnbnb65eqTedhvQPbaSP2NqIbcuKvsQ=
4444
github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a h1:4c0nc0krv8eh7gD809n+swLaCuFyHpxdrxwx0ZmHvBw=
4545
github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a/go.mod h1:QzgxDLY/qdKlvnbnb65eqTedhvQPbaSP2NqIbcuKvsQ=
46-
github.com/Binject/go-donut v0.0.0-20210701074227-67a31e2d883e h1:ytVmxGQuS7ELO/WpvH6iuY1hVcJ6iOTw3VLOOIFlo8o=
47-
github.com/Binject/go-donut v0.0.0-20210701074227-67a31e2d883e/go.mod h1:dc3mUnr4KTKcFKVq7BVbHGF0xAHrIyooQ+VTO7/bIZw=
4846
github.com/Binject/shellcode v0.0.0-20191101084904-a8a90e7d4563 h1:T8z8Wz/fqaPPANF8Unv4LjWLoa0TAvsjYAsRpvSkOqs=
4947
github.com/Binject/shellcode v0.0.0-20191101084904-a8a90e7d4563/go.mod h1:HMbzsKPz1sF7H4Hmeovh+d2PH2iKPYpAB4XMOVz8wmM=
5048
github.com/Binject/universal v0.0.0-20220519011857-bea739e758c0 h1:1sdnMvqxxlMXsu8ku/Xrh6gi3V40ykksst5fd0lfWnc=
@@ -84,10 +82,14 @@ github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAU
8482
github.com/akamensky/argparse v1.3.0/go.mod h1:S5kwC7IuDcEr5VeXtGPRVZ5o/FdhcMlQz4IZQuw64xA=
8583
github.com/akutz/memconn v0.1.0 h1:NawI0TORU4hcOMsMr11g7vwlCdkYeLKXBcxWu2W/P8A=
8684
github.com/akutz/memconn v0.1.0/go.mod h1:Jo8rI7m0NieZyLI5e2CDlRdRqRRB4S7Xp77ukDjH+Fw=
85+
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
86+
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
8787
github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
8888
github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
8989
github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY=
9090
github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
91+
github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
92+
github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
9193
github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e h1:4dAU9FXIyQktpoUAgOJK3OTFc/xug0PCXYCqU0FgDKI=
9294
github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
9395
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk=
@@ -399,7 +401,6 @@ github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC
399401
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
400402
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
401403
github.com/google/uuid v0.0.0-20171113160352-8c31c18f31ed/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
402-
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
403404
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
404405
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
405406
github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ=
@@ -424,6 +425,8 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C
424425
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
425426
github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=
426427
github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=
428+
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
429+
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
427430
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
428431
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
429432
github.com/illarion/gonotify/v3 v3.0.2 h1:O7S6vcopHexutmpObkeWsnzMJt/r1hONIEogeVNmJMk=
@@ -658,6 +661,10 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
658661
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
659662
github.com/slack-go/slack v0.17.3 h1:zV5qO3Q+WJAQ/XwbGfNFrRMaJ5T/naqaonyPV/1TP4g=
660663
github.com/slack-go/slack v0.17.3/go.mod h1:X+UqOufi3LYQHDnMG1vxf0J8asC6+WllXrVrhl8/Prk=
664+
github.com/sliverarmory/wasm-donut v0.0.2 h1:XAiV5MxDhSqnq4J45dZEM4u9JIN5aI1enhqNjiFGdtM=
665+
github.com/sliverarmory/wasm-donut v0.0.2/go.mod h1:D6OLBZBfFm2Tk857vqGqFS9uUi4CXqnqHxKqtONllVk=
666+
github.com/sliverarmory/wasm-donut v0.0.3 h1:sldbfAsz1YziULlhDKpU3DY/+/dAfv5gl26qSqHIpzE=
667+
github.com/sliverarmory/wasm-donut v0.0.3/go.mod h1:D6OLBZBfFm2Tk857vqGqFS9uUi4CXqnqHxKqtONllVk=
661668
github.com/sony/sonyflake v1.0.0 h1:MpU6Ro7tfXwgn2l5eluf9xQvQJDROTBImNCfRXn/YeM=
662669
github.com/sony/sonyflake v1.0.0/go.mod h1:Jv3cfhf/UFtolOTTRd3q4Nl6ENqM+KfyZ5PseKfZGF4=
663670
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=

0 commit comments

Comments
 (0)